test(wave-4): sybil-flood cohort #1 — coordinated-broadcast (W4.1, #196)#201
Merged
Dewinator merged 1 commit intoMay 3, 2026
Merged
Conversation
Third row of the W4.1 adversarial corpus, stacked on **#198** (plagiarism row). A canonical M=10 §10.4 cross-peer concentration cohort: ten signature-valid envelopes from ten distinct sock-puppet fixture-key node IDs, near-identical embeddings (cosine > 0.95), identical content + evidence_root, signed within a 5-minute window. Each envelope individually passes validateWireRecord. The test asserts scoreFinding clamps local_weight strictly below MIN_LOCAL_WEIGHT_FOR_BROADCAST (0.3) at M=10 cohort size, for both: - Saturation: over_concentration=1.0 -> new_weight=0 - Boundary: over_concentration=0.8 -> new_weight=0.2 ≤ 0.3 Asserting at M=10 (vs plagiarism's M=3) proves §10.4 has no M-dependent escape hatch — the firebreak is purely a function of over_concentration. The §10.2 quarantine arm of "§10.2 quarantine + §10.4" is operator-driven multi-node escalation (§10.2 only fires on rejected lessons under §5 rules 1-20; signature-valid sybil envelopes pass those rules). Per the issue #196 deferral rule, the §10.2 dimension is flagged in metadata + comments and deferred to W4.2/W4.3, never silently weakened. This closes row 3 of issue #196's 8-row table. 5 categories remain (echo-chamber, slow-poisoning, truth-by-repetition, polarity-inversion-pair, chain-rewrite). Each will land as a separate one-PR-per-row. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dewinator
added a commit
that referenced
this pull request
May 3, 2026
…eep queue Doc was written at the 132nd tick when only rows 1-2 had shipped and the queue was 11 PRs deep. Tick 151 shipped row 3 (sybil-flood, PR #201) and tick 152 posted the explicit "paused at 3/8" checkpoint with resumption trigger ("once any of the queue's 14 PRs merges"). Three call-sites in the doc still claimed "all 6 remaining rows", "9 native-app-track PRs", and "paused at 2/8 until the 11-deep PR queue" — pure drift. Updates: title, TL;DR, the row-3 table cell (now ✅ shipped + PR link), the queue-drain trigger quote, the fixture-key prerequisite section (rows 4-8 reuse the key; sybil-flood was the only row needing extras), and the form-break footer's PR-count snapshot. No behavior claims changed — the per-row §10-test correspondence stays intact; this is pure number-and-link refresh so the next agent picking W4.1 back up reads ground truth instead of stale state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dewinator
added a commit
that referenced
this pull request
May 3, 2026
…split) The Native-App Track section claimed "Alle 9 PRs sind green und MERGEABLE" and "9-PR-Queue", but the actual open-PR count has been 14 since PR #201 landed (151st tick). The 9-only framing under-stated the drain workload Reed is sitting on and obscured the orthogonal cohorts — 3 W4.1 anti-echo PRs (#197, #198, #201) and 2 W2 federation PRs (#199, #200) merge fully independent of the native-app stack (143rd-tick file- overlap audit, 148th-tick 3-order commute proof on 13 PRs; #201 is additive on top with no shared files). Now CLAUDE.md states the 14-PR total with the cohort split and the empirical commute evidence, so the next agent tick reads the correct drain workload and the next "queue full → analyse, don't add" decision is grounded in current state, not in the 2026-05-02 9-PR snapshot. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dewinator
added a commit
that referenced
this pull request
May 3, 2026
…rain) Reed merged 10 PRs today: all 3 W4.1 anti-echo (#197/#198/#201), both W2 federation (#199/#200), 5 native-app (#190/#191/#192/#193/#194). Only the linear 4-PR #178-stack remains open (#185 independent + #187 → #188 → #189 strictly stacked). Three-cohort split collapsed to one cohort — old order- independence proofs (143rd/148th tick) now obsolete. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks
Dewinator
added a commit
that referenced
this pull request
May 4, 2026
…212 Doc was last refreshed 2026-05-03 when only row 3 (sybil-flood) was shipped. Since then PRs #197 (forgery) and #198 (plagiarism) also merged on 2026-05-03, and PR #212 (echo-chamber, row 4) is now in flight behind the Wave-1 stack. The footer's "14-deep queue" reference is also stale (queue is currently 5). Changes: - header: "row 3 shipped, 5 remaining" → "rows 1-3 merged, row 4 in PR queue, 4 remaining" - TL;DR: enumerate PRs #197/#198/#201 as shipped and #212 as in-flight - table: add rows 1 and 2 with their shipped-PR pointers; row 4 verdict is now "in PR #212 — test green, awaiting Reed merge" - "What this means" section: drop the stale "queue's 14 PRs" wording - fixture-key section: rows 5-8 (was 4-8) reuse the row-1 key; note plagiarism + echo-chamber both mint cohort keys following the same pattern as sybil-flood - footer: "paused at 4/8 in flight" (was 3/8 against a 14-deep queue) Direct-to-main, zero queue growth — saves the next W4.1 tick from re-deriving shipped/in-flight state from gh + git log. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dewinator
added a commit
that referenced
this pull request
May 4, 2026
…sks 1/2/3-most/4/5/7-core landed The 09024a2 (tick 103) snapshot is two days stale: 9 of the 9 PRs in its "recommended merge order" have merged, plus #197/#198/#201/#202/#203/#204/ #205/#206/#207 landed in the same window. Refresh the doc that "is the canonical entry point for the native-app initiative" so a fresh reader does not get a 79-tick-old picture. Concrete changes: - Phase line: "spike phase complete · gated on PR-queue drain" → "implementation underway · sub-tasks 1, 2, 3 (most), 4, 5, 7 (core) landed; 5 PRs open, ~26 h Reed-lag since #202–#207". - End-state installer list: ".dmg / .msi / .AppImage" → ".pkg / .msi / .AppImage", with the 2026-05-04 epic-body decision (.pkg, not .dmg) cited. - Sub-task table: legend (✅ landed, 🔄 PR open, ⏳ spike-only) plus per-row PR status reflecting the current main: - Row 1 picks up #204 (79-migration walk as CI gate). - Row 3 picks up #202, #203, #206, #207 as landed and #208–#211 as open. Row was "_none yet_". - Row 4 / 5 reframed as "inherent" (PGlite is one WASM binary; node-llama-cpp ships per-platform bindings). - Row 7 picks up #205 (Docker → PGlite migration helpers core). - New "DbClient sub-story" subsection: 22 services touch Supabase directly on main; 2 in flight (Skills, SwarmPin); 20 remain after the open stack lands. Pattern: one service per PR. - "Recommended merge order — open PR queue (9 deep)" section replaced with "Open PR queue (5 deep, all CLEAN+MERGEABLE)" — the 9 it documented have all merged. - "Post-drain implementation gate" → "Post-stack implementation gate": parallel tracks (DbClient long-tail of 20 services + the sub-tasks 6/8/9 release-pipeline triangle on tauri-plugin-updater per #207). Doc-only, zero risk, direct-to-main per the standing rule for this file shape. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Third row of the W4.1 adversarial corpus, stacked on #198 (plagiarism row).
A canonical M=10 §10.4 cross-peer concentration cohort: ten signature-valid envelopes from ten distinct sock-puppet fixture-key node IDs, near-identical embeddings (cosine > 0.95), identical content +
evidence_root, signed within a 5-minute window. Each envelope individually passesvalidateWireRecord— §10.4 is post-admission, REM-cycle, not admission-time.The test asserts
scoreFindingclampslocal_weightstrictly belowMIN_LOCAL_WEIGHT_FOR_BROADCAST(0.3) at M=10 cohort size for both:over_concentration=1.0→new_weight=0over_concentration=0.8(the §10.4 trigger threshold) →new_weight=0.2 ≤ 0.3Asserting at M=10 (vs plagiarism's M=3) proves §10.4 has no M-dependent escape hatch — the firebreak is purely a function of
over_concentration, not of cohort size.§10.2 quarantine arm — flagged, not silently weakened
The spec lists this row as "§10.2 quarantine + §10.4". §10.2 quarantines an origin only after N=5 consecutive rejections under §5 rules 1-20 (or single-strike on rules 5/16/19/20). A signature-valid well-formed sybil envelope passes those rules, so admission-time §10.2 does not fire on the cohort.
The §10.2 dimension of sybil-flood is therefore operator-driven multi-node escalation (the operator quarantines the M flagged origins after a §10.4 finding) and is deferred to W4.2 (HTTP corpus runner) and W4.3 (multi-node campaign report) per the issue #196 deferral rule. The deferral is captured in:
metadata.owns_mechanism = "§10.2 quarantine + §10.4 diversity filter"so the spec linkage stays greppablemetadata.comment— explicit text identifying the §10.2 arm as W4.2/W4.3owns_mechanismThis satisfies the issue #196 acceptance criterion: "If a §10 mechanism cannot be made to fire from a unit test (because it requires real federation or a multi-node cohort), that fixture is deferred to W4.2 — flag it with a comment, do not weaken the assertion."
Stacking
agent/wave-4-plagiarism-fixture(PR test(wave-4): plagiarism cohort #1 — identical-broadcast (W4.1, #196) #198) → which is stacked on test(wave-4): forgery fixture #1 — evidence-root-mismatch (W4.1, #196) #197mainFiles
cohort-keys-sybil-flood.json— 10× Ed25519 fixture-only keys (write-once, same discipline asfixture-key.jsonandcohort-keys-plagiarism.json)sybil-flood/coordinated-broadcast-cohort.json— the M=10 cohort fixtureanti-echo-sybil-flood.test.ts— 10 assertions across metadata, distinct-origin invariant, Pillar-6 signatures, wire-validator admission, §10.4 trigger conditions (cosine + signed_at window + sharedevidence_root), and thescoreFindingdecision layerTest plan
npx tsx --test src/__tests__/anti-echo-sybil-flood.test.ts— 10/10 greennpm test— 963 pass / 0 fail (10 new sybil-flood tests + 953 prior)npm run buildcleannode scripts/build-anti-echo-fixtures.mjsis idempotent (re-run produces byte-identical fixtures, no working-tree drift)Decomposition status
This closes row 3 of issue #196's 8-row table. 5 categories remain (echo-chamber, slow-poisoning, truth-by-repetition, polarity-inversion-pair, chain-rewrite). Each will land as a separate one-PR-per-row.
🤖 Generated with Claude Code