Packet — R89 seal: λ Phase 2 graduation + κ §10 backfill + Phase 3 θ unblock
Round: R89 Phase A seal
β task ID: 6d4504e0-b64d-4f2f-ae38-3429d800364c
Base: origin/main @ 0c858381
Execution plan
Six files; each edit listed file-by-file with exact textual targets. Pre-commit ordering (one feat commit per group of related edits):
feat(r89-seal-lambda-phase-2): graduate λ concept doc to Phase 2 partial— touchesdocs/3-world/social/reputation.mdfeat(r89-seal-lambda-phase-2): backfill κ concept doc + laws index— touchesdocs/3-world/physics/laws/rule-engine.mdanddocs/3-world/physics/laws/index.mdfeat(r89-seal-lambda-phase-2): update CLAUDE.md §10 maturity claim + changelog— touchesCLAUDE.mdfeat(r89-seal-lambda-phase-2): unblock Phase 3 θ staged prompt— touchesdocs/guides/implementation/task-prompts/p3.1-theta-consensus.md
Edit 1 — docs/3-world/social/reputation.md (λ concept doc)
Frontmatter (lines 1–9), three flips:
- phase: 0
- colibri_code: none
- status: spec
+ phase: 2
+ colibri_code: partial
+ status: partial
Line 15 — replace stale Phase 0 paragraph:
Before:
“Phase 0 reality: λ is specified but not load-bearing. No Phase 0 tool mutates a reputation score. The spec exists so the schema carries the columns a later phase will need.”
After:
“Phase 2 reality (R89, 2026-05-12): λ ships end-to-end. The 7 Phase 2 sub-tasks — P2.1.1 schema, P2.1.2 score computation, P2.2.1 exponential decay, P2.2.2 offense penalties, P2.3.1 experience tokens, P2.4.1 derived capability limits, P2.5.1 4-tool MCP query surface — landed in R89 (PRs #226–#232).
reputation_get,reputation_history,reputation_leaderboard, andreputation_check_gatesare registered MCP tools; the schema is populated; κ-driven decay and penalties are running. Phase 3+ governance integration (voting credits, π consumption) remains spec-only.”
§”Phase 0 posture” (lines 82–86) — rename + rewrite:
Before (heading ## Phase 0 posture + 3 bullets):
”- The
reputations,experience_tokens, andpenalty_eventstables exist in the schema but are not populated.
- No Phase 0 tool (ADR-004) reads or writes λ state.
- The single-agent posture of Phase 0 (one T0 human, one T4 model) makes per-agent reputation trivially flat.”
After (heading ## Phase 2 posture + 3 bullets):
”- The
reputations,experience_tokens, andpenalty_eventstables are populated by the Phase 2 surface.
- 4 Phase 2 MCP tools read λ state:
reputation_get,reputation_history,reputation_leaderboard,reputation_check_gates(registered via ADR-004; MCP surface is 14 → 18 post-R89).- Mutations land via κ rule effects (decay, penalty, score increment); no admin-fiat path exists per AX-02.”
Edit 2a — docs/3-world/physics/laws/rule-engine.md (κ concept doc)
Frontmatter (lines 1–10), three flips:
- phase: 0
- colibri_code: none
- status: spec
+ phase: 1
+ colibri_code: partial
+ status: partial
Line 16 — replace stale Phase 0 paragraph:
Before:
“Phase 0 reality: κ is specified and partially scaffolded. The DSL is defined; the evaluator is not yet written. Rules in Phase 0 are applied by hand in the code paths that need them, with a placeholder for κ once it ships.”
After:
“Phase 1 reality (R87, 2026-05-07): κ ships end-to-end. The 20 Phase 1 sub-tasks — base library (P1.1.x, BPS arithmetic + determinism harness), DSL pipeline (P1.2.x, lexer/parser/validator/registry), runtime (P1.3.x, engine/builtins/state-access/policy-gate), admission (P1.4.x, evaluator/denial-reasons/budgets/tool-lock-adapter), and versioning (P1.5.x, hash/migration/activation/canonical/parity) — landed in R85→R87 (PRs #205–#220). κ is the deterministic core that admission middleware calls, that θ vote payloads version-hash against, and that all rule-shaped state mutations route through. Phase 2+ rule extensions (governance-proposed rule upgrades, fork-aware versioning) remain spec-only.”
§”Phase 0 posture” (lines 188–194) — rename + rewrite:
Before (heading ## Phase 0 posture + 5 bullets):
- 5 bullets enumerating “DSL defined / parser not shipped / no tool exposes κ”
After (heading ## Phase 1 posture + 5 bullets):
”- Integer-math and basis-point conventions apply across every rule body.
- The DSL pipeline ships end-to-end: lexer (Chevrotain), parser (custom CST), validator (aggregate-errors), registry (specificity-ordered).
- The κ engine evaluates against frozen state snapshots with parent-pointer binding chains; AST budget caps (MAX_INTEGER_OPS, MAX_CALL_DEPTH) fail loud as
ADMISSION_DENIED(reason=\"budget:<which>\").- Phase 0 α
tool-lockmiddleware now consumes κ admission decisions via the P1.4.4 adapter; ad-hoc Phase 0 rule-shaped code paths still exist and route through κ’s basis-point conventions.- Phase 2+ rule upgrades (governance-proposed mutations, fork-aware
rule_version_hashdivergence) are spec-only and will graduate at the next κ-shipping round.”
Edit 2b — docs/3-world/physics/laws/index.md (laws index — κ row only)
Currently line 20:
”- κ Rule Engine —
colibri_code: none— spec-only, Phase 1+ target (deterministic effects).”
After:
”- κ Rule Engine —
colibri_code: partial— shipped Phase 1 (R87): DSL pipeline (lexer/parser/validator/registry), engine
- builtins, admission evaluator, versioning + migration.”
Lines 21–22 (θ, ι) unchanged.
Edit 3a — CLAUDE.md §10 maturity claim (line 207)
Current full paragraph:
“Maturity: Execution 100% specified · Intelligence 100% specified · Legitimacy 33% specified. Phase 0 is code-complete on every non-deferred task: Execution axis 100% Phase-0 code-complete · Intelligence axis 100% Phase-0 code-complete (ζ Decision Trail + δ Router Phase 0 stubs shipped Wave I per ADR-005 §Decision) · Legitimacy axis code-complete only for the η Phase-0 slice. Of 15 Greek-letter concepts, 8 ship code at Phase 0 granularity (
colibri_code: partial— α β γ δ ε ζ η ν); 7 remain spec-only for later phases (θ ι κ λ μ ξ π,colibri_code: none). δ shipped as Phase 0 stubs in R75 Wave I per ADR-005 §Decision: constant-returns-claude scoring + single-member fallback chain; full multi-model routing lands in Phase 1.5. Per ADR-006,partialis the correct graduation for a shipped Phase 0 slice —completeis reserved for when a concept’s full phased spec ships. Frontmatter was graduated in R75 Wave H.2 (7 concepts) and Wave I (δ, this wave).”
Target:
“Maturity: Execution 100% specified · Intelligence 100% specified · Legitimacy 33% specified. Phase 0 is code-complete on every non-deferred task; Phase 1 closed κ on 2026-05-07 (R87); Phase 2 closed λ on 2026-05-12 (R89). Of 15 Greek-letter concepts, 10 ship code (
colibri_code: partial— α β γ δ ε ζ η κ λ ν); 5 remain spec-only for later phases (θ ι μ ξ π,colibri_code: none). δ shipped as Phase 0 stubs in R75 Wave I per ADR-005 §Decision (constant-returns-claude scoring + single-member fallback; full multi-model routing lands in Phase 1.5). κ closed Phase 1 across 20 sub-tasks in R85→R87 (PRs #205–#220); λ closed Phase 2 across 7 sub-tasks in R89 (PRs #226–#232), adding 4 MCP tools so the surface is 14 → 18. Per ADR-006,partialis the correct graduation for a shipped phase —completeis reserved for when a concept’s full phased spec ships. Frontmatter graduations: R75 Wave H.2 (7 concepts), Wave I (δ), R89 (κ + λ).”
Edit 3b — CLAUDE.md changelog footer (append after line 245)
Append a new entry after the R82.C entry, following the same format:
“Updated R89 — 2026-05-12 (R89 Phase A seal: λ Phase 2 graduation + κ §10 backfill + Phase 3 θ unblock). λ Phase 2 shipped 7/7 sub-tasks (P2.1.1 schema + P2.1.2 score + P2.2.1 decay + P2.2.2 penalties + P2.3.1 tokens + P2.4.1 limits + P2.5.1 MCP tools) across PRs #226–#232; MCP surface 14 → 18 (added
reputation_get,reputation_history,reputation_leaderboard,reputation_check_gates). λ frontmatter graduatedcolibri_code: none → partial(docs/3-world/social/reputation.md). CLAUDE.md §10 maturity claim updated to 10/15: backfills κ from R87 (Phase 1 closed 2026-05-07; #205–#220) which was missed in the R87 frontmatter pass, and adds λ from this round. κ concept doc (docs/3-world/physics/laws/rule-engine.md) and laws index (docs/3-world/physics/laws/index.md) frontmatter also graduated.docs/guides/implementation/task-prompts/p3.1-theta-consensus.mdfrontmatter unblockedstatus: staged → ready(Phase 3 θ dispatch authorized per T0 autonomous Phase 2+3 mandate; P3.4.1 + P3.5.1 hard λ dependencies satisfied). R88 context: #221 R88.A κ hygiene sweep + #222 R88.B mirror resync. R89 staging context: #225 R89.A merkle session-binding fix + #223 R89.B λ staging + #224 R89.C θ staging. Nosrc/code touched — meta hygiene only.”
Edit 4 — docs/guides/implementation/task-prompts/p3.1-theta-consensus.md
Frontmatter (line 7) — one flip:
- status: staged
+ status: ready
Lines 102–110 (header gate block) — rewrite:
Before:
”> ## Phase 2 λ Reputation is in flight at staging time
Phase 3 executor dispatch BEGINS only after Phase 2 λ seals. Staging this prompt file does NOT authorize Phase 3 dispatch. Two slices have hard λ dependencies and CANNOT dispatch before λ closes:
- P3.4.1 (STA) consumes
P2.1.1 reputation schema- P3.5.1 (Equivocation Slashing) consumes
P2.2.2 penalties”
After:
”> ## Phase 2 λ Reputation closed at R89 2026-05-12
Phase 2 λ closed at R89 2026-05-12; P3 dispatch is now authorized per T0 autonomous Phase 2+3 mandate. The two λ-dependent slices are unblocked:
- P3.4.1 (STA) consumes
P2.1.1 reputation schema— shipped via #226- P3.5.1 (Equivocation Slashing) consumes
P2.2.2 penalties— shipped via #229ADR-002 (VRF) and ADR-003 (BFT library) gates remain in effect per the §ADR status block above — those gates are about library acceptance, not Phase 2 closure.”
Line 224 (§P3.1.1 inline gate) — rewrite:
Before:
“GATE: Phase 2 λ Reputation must be sealed before you dispatch this slice. Confirm with PM that the λ seal commit is on main before starting.”
After:
“GATE STATUS: Phase 2 λ Reputation sealed at R89 2026-05-12 (main @
0c858381post-#232). This slice is unblocked.”
Lines 1656–1658 (§P3.5.1 inline gate) — rewrite:
Before:
”> λ dependency in flight at R89.C: Equivocation slashing applies an
8000bps penalty to
domain=\"arbitration\"via λ’s penalty surface. This slice MUST wait until Phase 2 λ P2.2.2 (penalties) seals before dispatch.”
After:
”> λ dependency satisfied at R89: Equivocation slashing applies an
8000bps penalty to
domain=\"arbitration\"via λ’s penalty surface (shipped at #229, P2.2.2). This slice is unblocked for dispatch.”
Edit 5 — docs/guides/implementation/task-breakdown.md
No edit. Audit confirmed no per-phase status tracker exists; the only λ mention in §Task Summary (line 1136) is the abstract estimate row, which has no status column to update.
Verification commands
cd .worktrees/claude/r89-seal-lambda-phase-2
npm run build
npm run lint
npm test
Expected: all three pass; test count remains at 2647/2647 (zero delta).
PR opening command
gh pr create \
--title "docs(r89-seal): λ Phase 2 graduation + κ §10 backfill + Phase 3 θ unblock (R89 close)" \
--body "<see standard writeback block + summary>"
PR body: summary of 5 file groups, headline “Closes λ Phase 2 at 7/7; 10/15 Greek concepts ship code (added κ and λ); MCP surface 14→18”, writeback block per dispatch prompt template.