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)

  1. Phase 3 sub-tasks shipped. Thirteen sub-tasks landed in R89 between e63a8bcf (#234, P3.1.1 vote messages) and 367c9595 (#246, P3.8.1 parity harness). All thirteen PRs are squash-merged into origin/main. Specifically:

    Sub-task Description PR SHA
    P3.1.1 Vote message types (5 shapes + Ed25519 + κ-canonical) #234 e63a8bcf
    P3.1.2 Quorum + honest-majority intersection #237 498e6ea5
    P3.1.3 Round-state machine (commit-reveal FSM + view-change) #241 9c7165d5
    P3.2.1 Finality state machine (5-level monotonic) #238 b01edb65
    P3.3.1 Gossip wire (IHAVE/IWANT + triple-anchor) #236 1ba613cb
    P3.3.2 Bloom dedup (sized filter, per-round) #243 592c51a4
    P3.3.3 Adaptive fanout (connectivity-scaled [3,10]) #242 08933d20
    P3.4.1 Time anchors (STA broadcast + median + drift) #235 a9539269
    P3.5.1 Equivocation (proof verify + λ slashing) #240 4ab4e8e8
    P3.6.1 VRF stub (HMAC-SHA256, ADR-002 Option A) #239 8df97995
    P3.7.1 5 θ MCP tools (surface 18 → 23) #244 b5f3ffd5
    P3.8.1 Parity harness (4-scenario multi-arbiter sim) #246 367c9595
    P3.9.1 Fork hook (ForkHookRegistry + ι handoff stub) #245 2bd8fa02
  2. 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 and colibri-system.md Ground Truth table (the latter is R90+ scope — not edited here).

  3. 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, and consensus_equivocation_proof tables. The donor stub mcp_consensus_votes is superseded; the new path is live.

  4. 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 to ACCEPTED (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.

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+ target to colibri_code: partial — shipped Phase 3 (R89): … with brief sub-task-family naming.

Files in scope (3 edits)

  1. docs/3-world/physics/laws/consensus.md — frontmatter + §”Phase 0 reality” + §”Phase 0 posture”
  2. CLAUDE.md — §10 maturity claim line + new changelog footer entry
  3. docs/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:

  1. Grep test: git grep -n 'colibri_code: partial' docs/3-world/physics/laws/consensus.md returns 1 line; git grep -n 'colibri_code: none' docs/3-world/physics/laws/consensus.md returns 0 lines.
  2. CLAUDE.md §10 test: the §10 paragraph contains the string 11 ship code AND θ AND 14 → 23.
  3. Build/lint/test: npm run build && npm run lint && npm test all green; test count 3087/3087 unchanged.
  4. Changelog test: the bottom of CLAUDE.md ends with a new entry dated 2026-05-13 whose first words match Updated R89 Phase B.
  5. Laws/index test: the file contains the substring three ship code AND θ Consensus](consensus.md) — \colibri_code: partial``.

Out-of-scope spec drift (R90+ candidates, disclosed in PR body)

  1. consensus.md L40 honest-majority invariant restatement off-by-one.
  2. s06 24h-dispute window / consensus.md L118 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.

Back to top

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

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