Skip to content

docs(r3): unify TC3 strict-fire gate into single two-stage authority - #1290

Merged
briansrls merged 12 commits into
mainfrom
session/fierce-ferret-556
Apr 30, 2026
Merged

briansrls merged 12 commits into
mainfrom
session/fierce-ferret-556

Conversation

@briansrls

@briansrls briansrls commented Apr 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Follow-up to PR #1282 (R3 Verification Manager spawn briefs, merged as fbbcf094b). Resolves the TC3 single-authority drift flagged by gpt-5-5-pro reviewer at PR #1282 c#4355424... — review landed after merge, this is the standalone fix.

Files

  • docs/briefs/r3-v-formal-grounding-tc-bundle.md — TC3 row "Strict-fire gate" cell restated as a single two-stage gate:
    • Stage (a): substrate-introduction prereqs (INVARIANTS §P1 + B5 + T-Substrate-Lens-Primitive) → lands tc3_strong_normalization_substrate_introduced.
    • Stage (b): T-FixedPoint completion → fires the full theorem witness.

Both stages required; explicit "no fire-before-(b) path exists" framing closes the parallel-authority gap (status table previously listed only stage-(a) prereqs while §Acceptance separately required T-FixedPoint completion).

Test plan

  • Director ratifies single-authority fix.
  • No CI; docs-only.

🤖 Generated with Claude Code

briansrls and others added 11 commits April 30, 2026 12:57
Manager brief Lane 2 gate listed only R2-Grounding-Rust + R2-Grounding-Python
while calling it the "Shape A 3-target grounding precondition." Worker brief
already correctly required all three (Rust + Python + Go). Add Go to manager
gate to match — single-authority discipline per INVARIANTS §P2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Net-position summary listed "3 narrow slices landed (#1014/#1171/#1183/#1192)"
which read as a 3-vs-4 count mismatch. #1171 is the outstanding/suspended
bridge (#bridge_include_str_side_channels_retired open), not a landed slice.
Restate as 2 landed (canonical lens / lower-helper) + 1 outstanding (#1171)
+ 1 R3-deferred + 1 retired, totaling 5 — and reference closure-ledger PR
#1283 which now tracks the include_str row separately.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Manager brief promoted T-FormalGrounding-Verification to a third lane while
the structural authority docs/r3-structure.md L108 names exactly "2 lanes + 1
ledger gate" for Verification scope. That created parallel scope authority
violating INVARIANTS §P2.

Resolved by deferring to r3-structure.md authority: TC1/TC2/TC3 bundle is now
an absorbed cross-cutting responsibility (audit cadence + strict-fire tracking
folded into manager cadence), matching r3-pb-t-fixedpoint-worker.md L181
"ownership moves" wording. TC3 substrate-introduction worker brief, when its
prerequisites land, joins the existing 2-lane scope as a substrate-introduction
sub-task — not a new lane row.

If Director ratifies a third lane in r3-structure.md itself, this brief
updates accordingly; until then 2-lane scope is the authority.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lane 1 brief had a dissolution-trigger note claiming L5 cross-target corpus
could absorb per-target L4 receipts. That conflates two categorically
different claims per THESIS.md L179-180: L4 compares emit-target output vs
.dag evaluation (per-target), L5 compares Rust/Python/Go behavior
cross-target. L5 passing does not entail any target matching .dag eval, so
L5 cannot subsume L4.

Replace with honest stability invariant matching upstream PR-D pattern, plus
explicit note that L4 has no current structural dissolution trigger (per
codex BLOCKING f5f63c7: NOT a Lens<C> instance, runtime-corpus by design).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
TC bundle brief was reframed as absorbed responsibility (not a lane) but
retained "this lane" wording in five places. Replace with "this bundle"
throughout to match the locked 2-lane framing per r3-structure.md L108.

Editorial fix per cursor reviewer optional finding.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lane 1 brief had:
- Slice 3 narrowing L7 to "at least one named law" (weakened the closure bar
  vs r3-structure.md L54 which requires every algebra × every applicable law).
- Single made-up gate name verification_l4_l7_direct_per_target_equivalence_landed
  parallel to the authoritative l4_emit_eval_match + l7_algebraic_laws_witnessed
  pair (single-authority drift per INVARIANTS §P2).

Lane 2 brief similarly used made-up verification_l5_cross_target_consistency_landed
parallel to authoritative l5_cross_target_consistency.

Manager brief acceptance section restated to cite both authority gates for
Lane 1 + L5 authority gate for Lane 2; explicit "partial-coverage early
slices do NOT close the lane" framing.

Slice 3 in Lane 1 now explicitly marked as coverage-seed only with closure
gate referring to full r3-structure.md authority.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
TC3 status table named only substrate-introduction prerequisites under
"Strict-fire gate" while §Acceptance separately required T-FixedPoint
completion for strict-fire. Two competing gate descriptions for one claim
violated single-authority discipline.

Restate as a single two-stage gate:
  (a) substrate-introduction prereqs land tc3_strong_normalization_substrate_introduced
  (b) T-FixedPoint completion fires the full theorem witness

Both stages required; no fire-before-(b) path exists. Stage names match
§Acceptance authority below.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls briansrls changed the title R3 Verification docs(r3): unify TC3 strict-fire gate into single two-stage authority Apr 30, 2026
@briansrls
briansrls marked this pull request as ready for review April 30, 2026 19:11
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: cursor / composer-2
  • Commit: 02ca1f29 · Trigger: schedule
  • Comparison: origin/main @ fbbcf094 ... review/pr-1290-02ca1f29 @ 02ca1f29
  • Thinking: 39s wall

Verdict: APPROVE — The net diff is one documentation row in docs/briefs/r3-v-formal-grounding-tc-bundle.md (TC3 “Strict-fire gate” column). It reframes TC3 as an explicit two-stage gate with a single stated authority ordering (substrate prerequisites, then T-FixedPoint), which is consistent with P2: Boundary Discipline / single authority in INVARIANTS.md rather than conflicting with it. Nothing here touches compiler code, tests, or substrate types, so CODING.md, TESTING.md, and modeling-discipline checks about Rust enums / fail-closed code paths do not apply to this diff.

The new text cross-references §Acceptance below; that section already defines tc3_strong_normalization_substrate_introduced and T-FixedPoint for strict-fire (around line 52–56 in the same file), so the row is internally coherent.

No findings that cite a diff line as a violation of the pinned rubric.

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 02ca1f29 · Trigger: schedule
  • Thinking: 140s wall

Non-blocking — Strengths

  • docs/briefs/r3-v-formal-grounding-tc-bundle.md The TC3 wording cleanly separates substrate introduction from strict-fire while preserving one ordered verification authority.

✅ No blocking concerns in this docs-only gate clarification.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: c8c24b3e · Trigger: schedule
  • Comparison: origin/main @ cb3a3c33 ... review/pr-1290-c8c24b3e @ c8c24b3e
  • Thinking: 34s wall

Verdict: APPROVE

The diff is a one-line documentation clarification in docs/briefs/r3-v-formal-grounding-tc-bundle.md that consolidates TC3 into a two-stage strict-fire authority. It aligns with the surrounding acceptance gate and the referenced PB transition text; I don’t see a concrete violation of the pinned invariants, modeling discipline, coding, or testing guidance.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 02ca1f29 · Trigger: manual
  • Conversation: View conversation

1. Story of the diff

This PR changes a single load-bearing TC3 planning row in docs/briefs/r3-v-formal-grounding-tc-bundle.md. The old row treated TC3’s strict-fire path as a combined substrate-fact-introduction / audit / lens-primitive handoff; the new row makes that authority explicitly two-stage: first introduce the substrate path and fixture via P1/B5/T-Substrate-Lens-Primitive, then only strict-fire after T-FixedPoint supplies termination semantics. The important behavioral contract is the new negative gate: docs/briefs/r3-v-formal-grounding-tc-bundle.md:15 says “No fire-before-(b) path exists,” so the doc no longer leaves room for a substrate-introduction milestone to be mistaken for full strong-normalization witnessing.

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation). — Compliant.

This is documentation-only, but it does discuss substrate authority; docs/briefs/r3-v-formal-grounding-tc-bundle.md:15 keeps TC3’s substrate introduction behind “INVARIANTS.md §P1 substrate-fact-introduction + B5 audit + T-Substrate-Lens-Primitive” rather than inventing a parallel TC3 lane or treating the theorem as fireable before the substrate carrier exists.

  1. INVARIANTS.md + modeling-discipline.md. — Compliant.

Single-authority and fail-closed are handled correctly: docs/briefs/r3-v-formal-grounding-tc-bundle.md:15 defines “Two-stage gate (single authority — both stages required for strict-fire)” and then closes the premature success path with “No fire-before-(b) path exists.” That is the right shape for a meta-theorem that cannot yet be encoded as an executable TestPredicate.

  1. CODING.md. — N/A.

The diff is pure documentation; no Rust implementation shape, helper placement, method/free-function choice, error carrier, or naming convention is changed.

  1. TESTING.md. — Compliant.

No executable test is added, and that is appropriate for this diff: docs/briefs/r3-v-formal-grounding-tc-bundle.md:15 still states TC3 is “Text-form only” with “no fixture” today, and stages the future fixture separately from strict-fire theorem witnessing. This avoids pretending that a documentation gate is already a behavior-driven regression test.

  1. LOCKED DESIGN DECISIONS. — N/A.

No locked design decision is modified in the diff. The changed line instead aligns the TC3 plan with existing named authorities: P1 substrate-fact-introduction, B5 audit, T-Substrate-Lens-Primitive, and T-FixedPoint completion at docs/briefs/r3-v-formal-grounding-tc-bundle.md:15.

  1. TRACKED vs UNTRACKED DEBT. — Compliant.

The staged shape is tracked rather than open-ended: docs/briefs/r3-v-formal-grounding-tc-bundle.md:15 documents the bridge, bounds it with “stage (a) lands the substrate path + fixture only,” and names the dissolution/strict-fire trigger as “T-FixedPoint completion (termination semantics).” I do not see a new TODO, scaffold, or temporary authority without bounds.

3. Verdict

APPROVE

The PR is a small docs correction, and the changed TC3 row improves the authority model rather than weakening it. I found no diff-line-backed invariant, coding, testing, locked-design, or debt issue to request changes on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant