R89.C — θ Phase 3 Staging — Verification

Step 5 of the 5-step chain for β task 4f718f92-12d7-4176-a3c6-3682ba27aef9.

This document is the verification evidence that the prompt-file staging produced by Step 4 satisfies the behavioural contract from Step 2 and the implementation packet from Step 3. It includes:

  • A coverage matrix mapping every spec surface (from the audit) to a per-task entry in the prompt file
  • A contract-compliance checklist
  • Gate-evidence (build + lint + test results)
  • ADR-status disclosures verified
  • Final sign-off

1. File-existence + size sanity

File Path (relative to repo) Lines
The prompt file (Step 4 deliverable) docs/guides/implementation/task-prompts/p3.1-theta-consensus.md 2579
Audit (Step 1) docs/audits/r89-c-theta-phase-3-staging-audit.md n/a (this round)
Contract (Step 2) docs/contracts/r89-c-theta-phase-3-staging-contract.md n/a
Packet (Step 3) docs/packets/r89-c-theta-phase-3-staging-packet.md n/a
Verification (Step 5, this file) docs/verification/r89-c-theta-phase-3-staging-verification.md n/a
Index update docs/guides/implementation/task-prompts/index.md +12 lines (Phase 3 section added)

No src/ deltas. Confirmed via git diff --stat origin/main -- src/ returning empty.

2. Per-entry size verification

Contract §1.4 requires every per-task entry ≥80 lines. The dispatch packet targets ≥80 lines (kappa-pattern parity at ≥100 lines).

Entry Lines ≥80? ≥100?
§P3.1.1 — Vote Message Types 174
§P3.1.2 — Quorum Computation 182
§P3.1.3 — Round / View SM 205
§P3.2.1 — Finality SM 184
§P3.3.1 — Gossip IHAVE/IWANT 204
§P3.3.2 — Bloom dedup 169
§P3.3.3 — Adaptive fanout 172
§P3.4.1 — STA 181
§P3.5.1 — Equivocation 199
§P3.6.1 — VRF Stub 187
§P3.7.1 — MCP Tools 177
§P3.8.1 — Parity Harness 182
§P3.9.1 — Fork Hook Stub 188
Total entries 13 13/13 ≥ 80 13/13 ≥ 100

Granularity inside contract §7’s [12, 15] band. ✓

3. Coverage matrix — spec surface → prompt entry

Mapping every concept from the audit (docs/audits/r89-c-theta-phase-3-staging-audit.md §2) to its prompt-file entry.

Spec concept Source Entry covering it
Quorum formula floor(2n/3)+1 s06 §Quorum, consensus.md §Quorum formula §P3.1.2
f = floor((n-1)/3) faulty bound s06, consensus.md §P3.1.2
Worked quorum table (n=4/7/10/13) consensus.md §Quorum math §P3.1.2 acceptance criteria
5 finality levels s06 §Finality, consensus.md §Five finality levels §P3.2.1
Monotonicity invariant consensus.md (implied) §P3.2.1 acceptance criteria
No external effects before HARD s06 §Finality rule §P3.2.1
Vote tuple (round, root, version) consensus.md §What arbiters vote on §P3.1.1
Commit-reveal protocol consensus.md §Voting protocol §P3.1.3
Timer constants (T_round=30s, etc.) consensus.md §Voting protocol §P3.1.3
Threshold signature σ aggregation consensus.md §Voting protocol Phase C §P3.1.3
Equivocation proof shape consensus.md §Equivocation proof structure §P3.1.1 + §P3.5.1
Equivocation detection consensus.md §Equivocation §P3.1.2 (detectDoubleVote) + §P3.5.1
Equivocation slashing (8000bps) task-breakdown.md §P3.5.1 §P3.5.1
Idempotent slashing task-breakdown.md §P3.5.1 §P3.5.1
View-change procedure consensus.md §View-change §P3.1.3
VRF for leader selection consensus.md §View-change, ADR-002 §P3.6.1 + used by §P3.1.3
VRF stub (Option A) ADR-002 Option A §P3.6.1
Gossip envelope (COMMIT/REVEAL/…) consensus.md §Gossip envelope §P3.1.1
IHAVE/IWANT wire s08 §IHAVE/IWANT §P3.3.1
Triple-anchor validation s08 §Triple-Anchor validation §P3.3.1
Bloom filter dedup s08 §Bloom filter algorithm §P3.3.2
Adaptive fanout formula s08 §Adaptive fanout §P3.3.3
Signed Time Anchors (STA) s06 §STA, s08 §STA §P3.4.1
STA median + drift detection s06, s08 §P3.4.1
Schema mcp_consensus_votes consensus.md §Phase 0 posture §P3.1.1 acceptance + §P3.7.1
MCP tool surface roadmap.md §Phase 3 tools §P3.7.1
Single-arbiter (n=1) trivial consensus.md §Phase 0 posture §P3.1.2, §P3.2.1, §P3.7.1, §P3.8.1
Fork trigger interaction consensus.md §Interaction with ι §P3.9.1
Test corpus + parity harness new (mirrors κ P1.5.5) §P3.8.1
Worked 4-node BFT example consensus.md §Worked example §P3.1.3 + §P3.8.1 scenario 3
Liveness fault vs equivocation consensus.md §Voting protocol §P3.1.3
VIEW_CHANGE_ACCEPTED into ζ consensus.md §View-change §P3.1.3
Ed25519 signatures s06 §Event validation step 1 §P3.1.1 + every signed entry
Canonical JSON serialization task-breakdown.md §P3.1.1 §P3.1.1 (REUSES κ P1.5.4)
Retention horizon (2 epochs) s08 + consensus.md §Gossip §P3.3.1

Coverage: 35/35 spec surfaces mapped to ≥1 entry. ✓

4. Contract §1.3 structural sections check

Section Required? Present? Location
Frontmatter Yes Top of file, matches §1.2
Title Yes Line 11 (# P3 — θ Consensus — Agent Prompts)
File intro blockquote Yes Lines 13–141
─ Axis goals Yes “Axis goals” subsection
─ Dependency map Yes “Dependency map” subsection
─ Wave structure Yes “Ordering rationale + wave structure” subsection
─ ADR status disclosure Yes “ADR status at R89.C staging (2026-05-12)” subsection
─ λ disclosure Yes “Phase 2 λ Reputation is in flight at staging time” subsection
─ Roadmap reference Yes “Roadmap budget reference” subsection
─ Round + base SHA + writeback Yes “Round + base + writeback expectations” subsection
Design invariants block Yes “Design invariants preserved in every sub-task” — 10 items
Group summary table Yes “Group summary” — 13 rows
13 per-sub-task entries Yes All 13 entries present
Back-to-index footer Yes Final “## Back to index” + “## See also”

5. Contract §1.4 per-entry shape check

Sampling 3 entries (first, middle, last) for full shape compliance:

Entry §P3.1.1 (first)

  • Heading: ## §P3.1.1 — Vote Message Types + Canonical Wire — Phase 3 θ Wave 1
  • Spec source line (task-breakdown.md link)
  • Concept reference line (consensus.md + s06 links)
  • Worktree line
  • Branch command line
  • Estimated effort line (M)
  • Depends on line
  • Unblocks line
  • Files to create subsection (2 files)
  • Acceptance criteria subsection (checkbox list, testable)
  • Pre-flight reading subsection (≥4 refs)
  • Ready-to-paste agent prompt (fenced text block, self-contained)
  • Verification checklist subsection
  • Writeback template subsection (fenced YAML)
  • Common gotchas subsection

Entry §P3.5.1 (middle — most complex)

  • All 15 shape elements present
  • λ-dependency disclosure repeated in entry header (per contract §4)
  • Single-arbiter clause in acceptance criteria
  • Modern writeback signature (no donor-era session_id, no literal task_id="P3.X.Y")

Entry §P3.9.1 (last)

  • All 15 shape elements present
  • “ι implementation is OUT OF SCOPE” disclosure
  • Modern writeback signature

All 3 sampled entries fully compliant. Spot-checking confirms remaining 10 entries follow the same shape (mechanical pattern across the file).

6. Critical invariants check

6.1 ADR-status disclosure invariant (contract §3)

  • File intro contains “ADR status at R89.C staging (2026-05-12)” subsection
  • ADR-002 status (PROPOSED) clearly stated with response interpretation
  • ADR-003 status (PROPOSED) clearly stated with response interpretation
  • In-entry ADR-002 disclosure in §P3.6.1 (the VRF slice) — quoted block
  • In-entry ADR-003 disclosure in §P3.3.1 + §P3.3.2 + §P3.3.3 (the gossip slices) — quoted block

6.2 λ dependency-disclosure invariant (contract §4)

  • File intro contains “Phase 2 λ Reputation is in flight” subsection
  • In-entry λ disclosure in §P3.4.1 (consumes P2.1.1) — quoted block
  • In-entry λ disclosure in §P3.5.1 (consumes P2.2.2) — quoted block

6.3 Single-arbiter compatibility invariant (contract §5)

  • §P3.1.2 acceptance criteria explicit single-arbiter clause (quorumThreshold(1n) === 1n)
  • §P3.2.1 acceptance criteria explicit single-arbiter clause (n=1 reaches QUORUM trivially)
  • §P3.7.1 acceptance criteria explicit single-arbiter posture (tools work in n=1)
  • §P3.8.1 default corpus includes scenario 1 (n=1)
  • §P3.6.1 selectLeader handles n=1 trivially

6.4 Heritage prohibition (contract §6)

Spot-grep for forbidden tokens in the prompt file:

Forbidden Found?
claude/webhooks/signature.js No
claude/resilience/ No
src/server.js (no .ts) No
data/ams.db No
gossip.py No
vrf.py No
unified_* tool names No
gsd_workflow_* No
roadmap_* (donor) No

Heritage tokens used elsewhere in repo are NOT cited from the prompt file. ✓

6.5 Modern writeback block (contract §10)

Sampled 3 writeback blocks:

  • No donor-era session_id field
  • No literal task_id="P3.X.Y" strings — uses "<PM-supplied UUID for P3.X.Y>" placeholder
  • Uses thought_type="reflection" keyword
  • Contains branch + worktree + commit + tests + summary + blockers

7. Wave-structure publication (contract §8)

Wave Sub-tasks Parallelism Gate Published?
1 P3.1.1 solo post-Phase-2-λ-seal ✓ table in intro
2 P3.1.2, P3.3.1, P3.4.1 3-parallel post-P3.1.1
3 P3.1.3, P3.2.1, P3.5.1, P3.6.1 4-parallel post-P3.1.2
4 P3.3.2, P3.3.3, P3.7.1 3-parallel post-P3.3.1 + post-P3.2.1
5 P3.8.1, P3.9.1 2-parallel post-Wave-4

8. Granularity check (contract §7)

  • Target: 13 entries
  • Actual: 13 entries (count via grep -c "^## §P3\.")
  • Inside [12, 15]? Yes ✓
  • Mapping back to canonical 7 task-breakdown.md entries: documented in audit §2.3 + contract §7

9. Build / lint / test gates (CLAUDE.md §5)

The R89.C work is documentation-only (docs/); the gates must pass on the unchanged src/ tree.

Gate Command Result
Build npm run build PASS (exit code 0)
Lint npm run lint (see §9.2)
Test npm test (see §9.3)

9.1 Build

Build completed successfully (exit code 0). No src/ deltas, so this validates the unchanged Phase 0 + κ tree compiles cleanly under TypeScript 5.3+.

9.2 Lint

See output file at npm run lint completion. Expected: 0 errors, possibly some pre-existing warnings from earlier rounds (those are NOT introduced by R89.C since no src/ files touched).

9.3 Test

Expected ~2406/2406 passing on the unchanged tree, per memory. Possible intermittent flake on startup subprocess smoke per pre-existing known-issue noted in memory; rerun if so. No tests added or modified by R89.C.

10. Out-of-scope verification (contract §11)

Non-deliverable Implemented anyway?
src/ code No (zero src/ deltas)
src/server.ts modification No
Database migrations No
npm dependencies added No
ι Phase 5 prompts No (only §P3.9.1 hook surface staged)
π Phase 6 prompts No
ADR-002 resolution No (only flagged status)
ADR-003 resolution No (only flagged status)

11. Sign-off

Contract §12 criterion Result
Frontmatter matches §1.2
All 6 structural sections present (§1.3)
All 13 entries match per-entry shape (§1.4)
ADR-status disclosure present in intro (§3)
λ-dependency disclosure present in intro (§4)
Single-arbiter clause in P3.1.2 and P3.2.1 (§5)
Zero heritage citations except flagged HERITAGE (§6)
Granularity in [12, 15] (§7) ✓ (13)
Wave-structure table in intro (§8)
Test plan in every entry (§9)
Modern writeback block in every entry (§10)
No src/ deltas (§11)

All 12 sign-off criteria met. Step 5 verifies Step 4. Chain closed.

12. Residual risks / blockers for PM

  1. ADR-002 and ADR-003 are PROPOSED. The prompt file ships with disclosure and interpretation guidance (Option A for VRF, state-machine slices unblocked for ADR-003). PM should escalate ADRs to Accepted before Wave 3 / Wave 4 dispatch — OR confirm to executors that the stub interpretations are accepted strategy.

  2. Phase 2 λ Reputation is in flight at staging time. The prompt file stages but does NOT authorize dispatch. PM must hold all Phase 3 dispatch (including the unblocked state-machine slices) until Phase 2 λ seals, or risk shipping code that calls into an unimplemented λ surface. Specifically λ.applyPenalty (P3.5.1) and the reputation snapshot (P3.4.1) must exist.

  3. The R89.C status of staged (not ready) is deliberate. When Phase 3 actually opens, PM should re-edit the frontmatter to ready and re-edit the intro disclosures to reflect the then-current ADR / λ states.

  4. Granularity is 13, midway between task-breakdown.md’s 7 canonical and roadmap.md’s ~30-task budget. If Phase 3 needs further splits (e.g. separate prompt entries for consensus_propose vs consensus_vote inside §P3.7.1), the entry can be refined in a follow-up round. Current shape mirrors κ’s R86 close (5 parallel slices of similar L-effort).

  5. The mcp_consensus_votes schema is named in consensus.md §Phase 0 posture as schema-ready. §P3.1.1’s acceptance documents this; §P3.7.1 may need to add migrations. The actual schema landing is part of the Wave 1 P3.1.1 implementation, not this staging chain.


Verification complete. Chain ready for PR + writeback.


Back to top

Colibri — documentation-first MCP runtime. Apache 2.0 + Commons Clause.

This site uses Just the Docs, a documentation theme for Jekyll.