Contract — R89 Phase B seal: θ Phase 3 graduation
Task: R89 Phase B narrative seal: θ Phase 3 graduation + §10 maturity claim 10/15 → 11/15 + MCP surface narrative 18 → 23
What “θ shipped” means (graduation conditions)
θ graduates from colibri_code: none to colibri_code: partial per
ADR-006 §Graduation.
The “partial” classification is the correct graduation for a shipped
phase (here Phase 3) when the concept’s full phased spec spans
multiple phases. complete is reserved for when every phase of a
concept’s spec has shipped.
Substantive conditions (all must hold)
-
Phase 3 sub-tasks shipped. Thirteen sub-tasks landed in R89 between
e63a8bcf(#234, P3.1.1 vote messages) and367c9595(#246, P3.8.1 parity harness). All thirteen PRs are squash-merged intoorigin/main. Specifically:Sub-task Description PR SHA P3.1.1 Vote message types (5 shapes + Ed25519 + κ-canonical) #234 e63a8bcfP3.1.2 Quorum + honest-majority intersection #237 498e6ea5P3.1.3 Round-state machine (commit-reveal FSM + view-change) #241 9c7165d5P3.2.1 Finality state machine (5-level monotonic) #238 b01edb65P3.3.1 Gossip wire (IHAVE/IWANT + triple-anchor) #236 1ba613cbP3.3.2 Bloom dedup (sized filter, per-round) #243 592c51a4P3.3.3 Adaptive fanout (connectivity-scaled [3,10])#242 08933d20P3.4.1 Time anchors (STA broadcast + median + drift) #235 a9539269P3.5.1 Equivocation (proof verify + λ slashing) #240 4ab4e8e8P3.6.1 VRF stub (HMAC-SHA256, ADR-002 Option A) #239 8df97995P3.7.1 5 θ MCP tools (surface 18 → 23) #244 b5f3ffd5P3.8.1 Parity harness (4-scenario multi-arbiter sim) #246 367c9595P3.9.1 Fork hook (ForkHookRegistry + ι handoff stub) #245 2bd8fa02 -
MCP surface increment is registered. P3.7.1 (#244) registers 5 θ tools:
consensus_propose,consensus_vote,consensus_finality,consensus_gossip,vrf_eval. The live MCP surface is now 23 (was 18 post-R89 Phase A). This number is asserted in CLAUDE.md §10 andcolibri-system.mdGround Truth table (the latter is R90+ scope — not edited here). -
The schema is populated by the new code path. P3.1.1 vote messages plus P3.5.1 slashing write to
consensus_round,consensus_vote, andconsensus_equivocation_prooftables. The donor stubmcp_consensus_votesis superseded; the new path is live. -
Algorithms shipped under ADR strategies. P3.6.1 ships the VRF under ADR-002 Option A (HMAC-SHA256 internal). The BFT layer ships under ADR-003 Option C (two-phase: minimal in-process spike). Both ADRs remain
PROPOSED; this PR does not move them toACCEPTED(a separate ADR-acceptance PR is needed for that).
Frontmatter graduation conditions
The θ concept doc (docs/3-world/physics/laws/consensus.md)
frontmatter MUST transition:
colibri_code: none → colibri_code: partial
status: spec → status: partial
phase: 0 → phase: 3
And the body MUST replace the §”Phase 0 reality” paragraph (line 16) and the §”Phase 0 posture” section (lines 193–198) with Phase 3 language that names:
- The 13 shipped sub-tasks
- ADR-002 Option A (VRF stub strategy)
- ADR-003 Option C (in-process gossip spike strategy)
- The MCP tool surface 18 → 23 increment
Narrative graduation conditions (CLAUDE.md §10)
The maturity claim sentence at line 207 MUST update:
Of 15 Greek-letter concepts, 10 ship code (... — α β γ δ ε ζ η κ λ ν);
5 remain spec-only for later phases (θ ι μ ξ π, ...).
becomes:
Of 15 Greek-letter concepts, 11 ship code (... — α β γ δ ε ζ η θ κ λ ν);
4 remain spec-only for later phases (ι μ ξ π, ...).
The MCP surface count “14 → 18” MUST advance to “14 → 23” (Phase A added 4 λ tools; Phase B adds 5 θ tools).
And the post-#244 / R89 graduation MUST be named explicitly: “R89 Phase B (θ)” is added to the frontmatter-graduations parenthetical.
Changelog footer (CLAUDE.md lines 239+)
A new entry MUST be appended at the bottom of the changelog, following the format of the existing entries. Required content:
- Date 2026-05-13
- Title “R89 Phase B — θ Phase 3 close + §10 maturity 11/15 + MCP surface 23”
- Body summarizing: θ Phase 3 13/13 shipped (#234–#246); MCP surface 18 → 23 (P3.7.1); θ frontmatter
colibri_code: none → partial; §10 10/15 → 11/15 - Per-PR citations for all 13 θ PRs (mapping to sub-tasks)
- Cross-reference to R89 Phase A for prior context
- “No
src/code touched — meta hygiene only.”
Laws-index graduation (docs/3-world/physics/laws/index.md)
-
Preamble (line 14): “Four Greek concepts live in this folder — one ships code at Phase 0, three are spec-only until later phases” MUST update to “two ship code, two are spec-only” — because the file contains η (Phase 0), κ (Phase 1), θ (Phase 3 — newly shipped), and ι (still spec-only). After this PR, two ship code (η + κ + θ = 3? Wait — see below).
Correction: the laws/index.md preamble counts η, κ, θ, and ι. After this PR’s θ graduation, three ship code (η + κ + θ) and one is spec-only (ι). Preamble MUST therefore say “three ship code, one is spec-only”.
The earlier R89 Phase A seal (#233) graduated κ but did not fix the preamble in that wave (the preamble was already wrong after R87 — κ shipped but the preamble still said “one ships, three are spec-only”). This PR catches that drift in the same edit.
-
θ row (line 21): MUST graduate from
colibri_code: none — spec-only, Phase 3+ targettocolibri_code: partial — shipped Phase 3 (R89): …with brief sub-task-family naming.
Files in scope (3 edits)
docs/3-world/physics/laws/consensus.md— frontmatter + §”Phase 0 reality” + §”Phase 0 posture”CLAUDE.md— §10 maturity claim line + new changelog footer entrydocs/3-world/physics/laws/index.md— preamble line + θ row
Files OUT of scope
| File | Why |
|---|---|
docs/colibri-system.md Ground Truth (line 48) |
R75-anchored; full reconcile is R90+ doc-reconcile candidate; precedent from #233 |
docs/5-time/roadmap.md (line 68) |
Same — R75-anchored, R90+ reconcile |
docs/0-mutate/promises.md (line 16) |
Same — R90+ |
docs/3-world/social/identity.md (ξ) |
ξ remains colibri_code: none; no edit |
All extractions/*.md heritage |
HERITAGE zone per CLAUDE.md §9.2 |
All audits/*.md / contracts/*.md / verification/*.md |
Per-round artifacts; not canonical |
task-breakdown.md |
No Phase 3 status tracker exists; same precedent #233 |
| ADR-002 status | Stays PROPOSED; separate ADR-acceptance PR required |
| ADR-003 status | Stays PROPOSED; separate ADR-acceptance PR required |
Any src/ file |
Phase 3 code shipped across #234–#246; this PR is docs-only |
Acceptance test
After all edits land:
- Grep test:
git grep -n 'colibri_code: partial' docs/3-world/physics/laws/consensus.mdreturns 1 line;git grep -n 'colibri_code: none' docs/3-world/physics/laws/consensus.mdreturns 0 lines. - CLAUDE.md §10 test: the §10 paragraph contains the string
11 ship codeANDθAND14 → 23. - Build/lint/test:
npm run build && npm run lint && npm testall green; test count 3087/3087 unchanged. - Changelog test: the bottom of CLAUDE.md ends with a new entry dated
2026-05-13whose first words matchUpdated R89 Phase B. - Laws/index test: the file contains the substring
three ship codeANDθ Consensus](consensus.md) — \colibri_code: partial``.
Out-of-scope spec drift (R90+ candidates, disclosed in PR body)
consensus.mdL40 honest-majority invariant restatement off-by-one.- s06 24h-dispute window /
consensus.mdL118 consecutive-rounds intersection prose.
Both are doc-only reconciles; implementations are correct.
Sign-off
This contract authorizes the packet to gate Step 4 implementation. Three files. No code. No ADR status changes. No out-of-scope edits. After implement + verify steps and the three gates pass (build + lint
- test), the PR opens and the seal lands.