test(wave-4): plagiarism cohort #1 — identical-broadcast (W4.1, #196)#198
Merged
Dewinator merged 2 commits intoMay 3, 2026
Merged
Conversation
Second row of the W4.1 adversarial corpus. Three signature-valid
envelopes from three distinct fixture-key node IDs, near-identical
embeddings (cosine > 0.95), identical content + evidence_root, signed
within a 3-second window — the canonical §10.4 cross-peer near-duplicate
concentration case.
Each envelope individually passes validateWireRecord (§10.4 is a
post-admission, REM-cycle defense, not an admission-time hard rule).
The test asserts the §10.4 decision layer (`scoreFinding`) clamps
`local_weight` strictly below `MIN_LOCAL_WEIGHT_FOR_BROADCAST` (0.3) for
both the saturation case (over_concentration=1.0 → 0) and the boundary
trigger (over_concentration=0.8 → 0.2 ≤ 0.3).
Adds:
- cohort-keys-plagiarism.json: 3× Ed25519 fixture-only keys, sibling
file (not inline) so future cohort fixtures can reuse them
- plagiarism/identical-broadcast-cohort.json: the cohort fixture
- anti-echo-plagiarism.test.ts: 9 assertions across metadata, Pillar-6
signatures, wire-validator admission, §10.4 trigger conditions
(cosine + signed_at window + shared evidence_root), and the
scoreFinding decision layer (saturation + boundary)
- extends ExpectedOutcome with `broadcast_suppressed` enum value —
second arm of the broadcast firebreak (the first is `tier_b`)
Build script extended with cohort key generation (write-once, same
discipline as fixture-key.json) and deterministic cohort builder
(seed-perturbed embedding ramp keeps cosine > 0.95 while differing
per-envelope so JCS canonicalization yields distinct signatures).
Tests: 9/9 plagiarism + 5/5 forgery green; build clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 3, 2026
Dewinator
added a commit
that referenced
this pull request
May 3, 2026
Three docs claimed W4.1 lands a "Vitest harness", but the actual harness uses node:test (the Node.js built-in test runner — `npm test` runs `node --test "dist/__tests__/**/*.test.js"`) and Vitest is not even a dependency. The two W4.1 PRs already in the queue (#197 forgery, #198 plagiarism) ship `import { test } from "node:test"`, confirming the code side. Drift was in: - mcp-server/src/__tests__/fixtures/anti-echo/README.md step 6 ("How to add a new fixture" instructions) - docs/wave-4-anti-echo.md §"What can land before Wave 2 finishes" and §"Sub-task decomposition" item 1 - docs/waves.md §"Wave 4" first paragraph Each spot now names the runner explicitly and notes Vitest is intentionally absent, so the next contributor (and #196's remaining 6 fixtures) does not pull in an unwanted dep. No code change. Pure docs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4 tasks
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
Second row of the W4.1 adversarial corpus, stacked on #197 (forgery row).
A canonical §10.4 cross-peer near-duplicate cohort: three signature-valid envelopes from three distinct fixture-key node IDs, near-identical embeddings (cosine > 0.95), identical content +
evidence_root, signed within a 3-second window. Each envelope individually passesvalidateWireRecord— §10.4 is post-admission, REM-cycle, not admission-time.The test asserts
scoreFinding(the pure §10.4 decision layer the production REM cycle calls) clampslocal_weightstrictly belowMIN_LOCAL_WEIGHT_FOR_BROADCAST(0.3) for both:over_concentration=1.0→new_weight=0over_concentration=0.8(the §10.4 trigger threshold) →new_weight=0.2 ≤ 0.3That second case is the load-bearing claim of §10.4: even at the minimum-trigger over_concentration value, the cohort fails the broadcast firebreak.
Stacking
agent/wave-4-forgery-fixture(PR test(wave-4): forgery fixture #1 — evidence-root-mismatch (W4.1, #196) #197)mainFiles
cohort-keys-plagiarism.json— 3× Ed25519 fixture-only keys, sibling file (write-once, same discipline asfixture-key.json) so future cohort fixtures can reuse themplagiarism/identical-broadcast-cohort.json— the cohort fixtureanti-echo-plagiarism.test.ts— 9 assertions across metadata, Pillar-6 signatures, wire-validator admission, §10.4 trigger conditions (cosine + signed_at window + sharedevidence_root), and thescoreFindingdecision layerExpectedOutcomewithbroadcast_suppressedenum value — second arm of the broadcast firebreak (the first istier_b)Test plan
npx tsx --test src/__tests__/anti-echo-plagiarism.test.ts— 9/9 greennpx tsx --test src/__tests__/anti-echo-forgery.test.ts— 5/5 green (corpus-types extension is backward-compatible)npm run buildcleannode scripts/build-anti-echo-fixtures.mjsis idempotent (re-run produces byte-identical fixtures)🤖 Generated with Claude Code