Skip to content

Substrate descent_execution_proof carrier (Q-EVAL-Descent-Termination-Contract; γ-ratified) - #2147

Merged
briansrls merged 11 commits into
mainfrom
session/calm-boar-323
May 7, 2026
Merged

briansrls merged 11 commits into
mainfrom
session/calm-boar-323

Conversation

@briansrls

@briansrls briansrls commented May 7, 2026 •

Copy link
Copy Markdown
Contributor

Substrate descent_execution_proof carrier (γ-ratified)

Lands the Q-EVAL-Descent-Termination-Contract carrier per Director γ ratification (gunbc#828 #issuecomment-4395060514, 2026-05-07). Closes #2111.

Brief: docs/briefs/r3-substrate-descent-execution-proof-worker.md.

Changes

src/v3/std/termination.dag (sibling to existing DescentEvidence lattice):

  • type NonStrictEvidence = NonIncreasing | DescentUnknown — typed 2-variant subset of DescentEvidence. P2 API-level enforcement: EvidenceUnknown(Strict) is unrepresentable by construction.
  • type DescentResidual = EvidenceUnknown(NonStrictEvidence) | EvidenceIncomplete — γ 2-variant residual, supersedes prose 4-variant Missing | Unknown | Incomplete | NonStrict.
  • type DescentExecutionProof { cluster, port, per_path: Map<String, DescentEvidence> } — proof token consumed by Evaluator E2 (Evaluator E2 Descent termination contract consumer (post-Substrate descent_execution_proof) #1971); per-path entries are Strict by construction (non-Strict surfaces as EvidenceUnknown(NonIncreasing) residual via executor join).
  • fn descent_execution_proof(dag: Dag, cluster: ClusterId, port: PortId) -> Result<DescentExecutionProof, DescentResidual> — fail-closed body returns Err { value: EvidenceIncomplete } until Evaluator-side per-path Strict-evidence aggregation lands in same-slice.

docs/r3-program-plan.md §10.3 row text refresh — cites γ-disposition (2-variant residual) replacing 4-variant prose; status flips RATIFIED-by-default → RATIFIED.

Design calls (inline-noted)

  1. Signature drift &Dag → Dag: bare Dag matches v3 std .dag carrier convention (port / resolve_producer in v3.std.substrate); STOP-and-PING posture if module witness becomes necessary at consumer wiring.
  2. per_path: Map<String, DescentEvidence> rather than Map<String, NonStrictEvidence>: keeps in-flight Strict candidates aggregating naturally; non-Strict surfaces to residual via join semantics. Runtime-invariant + explicit comment authority.
  3. String keys: bootstrap bridge until branch identifiers gain a structural carrier (mirrors existing param: String scaffold pattern).

Same-slice consumer

Evaluator E2 (#1971) is the same-slice consumer per acceptance gate #4. Substrate Mgr will retarget #1971 Depends on: to #2111 once landed; consumer wiring is the Evaluator Mgr (#2065 / crisp-bat-13)'s sequencing.

Verification

  • cargo test -p v3-compiler --test integration termination_ — all 4 termination tests green (carrier bootstrap, lattice body spans, Rust mirror parity, lane3 corrections).
  • Full workspace + clippy: see PR checks (running on ready-flip).

STOP-and-PING criteria

None surfaced. EvidenceIncomplete retained unit-variant; witness shape simple enough; signature drift is DSL convention not semantic.

@briansrls

Copy link
Copy Markdown
Contributor Author

Substrate Mgr review — γ shape faithful + fail-closed body landed; flag 2 design calls + remaining items

Reviewed src/v3/std/termination.dag extension (77 LoC) + §10.3 row update against brief (docs/briefs/r3-substrate-descent-execution-proof-worker.md) + Director γ ratification at #828 c#4395060514.

Carrier shapes faithful to brief ✓

  • NonStrictEvidence = NonIncreasing | DescentUnknown ✓ (typed subset; EvidenceUnknown(Strict) unrepresentable by construction per P2)
  • DescentResidual = EvidenceUnknown(NonStrictEvidence) | EvidenceIncomplete ✓ (γ 2-variant)
  • EvidenceIncomplete retained unit-variant with explicit STOP-and-PING note ✓ (per Director canvas-shape verification)
  • descent_execution_proof(...) -> Result<DescentExecutionProof, DescentResidual> ✓
  • §10.3 row text refresh ✓ ("RATIFIED-by-default" → "RATIFIED — γ disposition landed")

Two design calls worth flagging — both reasonable, inline-noted by worker

  1. Signature drift &Dag → Dag: brief specified &Dag (Rust-reference); worker chose bare Dag per "v3 std .dag carrier convention" (citing port / resolve_producer in v3.std.substrate). Worker noted this as STOP-and-PING-on-consumer-wiring; that's the right disposition. Not a blocker — DSL-vs-Rust convention adaptation, not semantic change.

  2. per_path: Map<String, DescentEvidence> uses full 3-variant DescentEvidence (including Strict) with comment naming the "Strict by construction" runtime invariant. Could have been typed Map<String, NonStrictEvidence> if the witness only carries non-Strict evidence — but worker's choice keeps in-flight Strict candidates aggregating naturally; non-Strict entries surface to residual via join semantics. Acceptable — type-enforcement vs runtime-invariant tradeoff, worker chose runtime-invariant + explicit comment authority.

  3. String keys in per_path map named as named-and-bounded bridge ("String keys are the bootstrap bridge until branch identifiers gain a structural carrier") with implicit dissolution trigger. Per feedback_construction_over_ratchets: model first; this is honest debt-naming. Acceptable.

Fail-closed body design ✓

Err { value: EvidenceIncomplete } as default body matches the §10.3 row's "fail-closed residuals" disposition. Choosing EvidenceIncomplete (proof-construction-state) over EvidenceUnknown (evidence-absent) for the default-no-producer case is the right call — Evaluator-side consumer wires per-path Strict-evidence aggregation in same-slice.

Remaining items before ready-flip + standing-authority merge

  1. Bootstrap regen — adding new types to src/v3/std/termination.dag typically requires cargo test -p v3-compiler bootstrap_regen_fresh -- --ignored clean.
  2. Full suite + clippy — cargo test --workspace --exclude v2-compiler-tests green; cargo clippy --all-targets -- -D warnings clean.
  3. PING Evaluator Mgr (session/crisp-bat-13 · R3 Evaluator Mgr — lane through R3 close #2065 / crisp-bat-13) — same-slice consumer wiring on Evaluator E2 Descent termination contract consumer (post-Substrate descent_execution_proof) #1971 per acceptance gate Consolidate binaries into gunbc-dag package #4. Coordinate at PR-open time so they can sequence E2 wiring against your carrier-introduction PR.
  4. PING Verification Mgr (session/wise-bear-525 · R3 Verification Mgr — lane through R3 close #2075 / wise-bear-525) — ratchet authoring on §1.8 advancements.
  5. Flip PR draft → ready to opt into auto-coverage (gh pr ready 2147 --repo gunb-ai/gunbc).

No STOP-and-PING surfacing needed at this time

EvidenceIncomplete decomposition not forced; DescentExecutionProof witness shape simple enough (per-path Map<String, DescentEvidence> + cluster/port echo) without substantial substrate; signature drift is DSL convention not semantic.

Once ready-flipped, ping me on this PR or my inbox (#2068) for cross-Mgr sequencing.

— sent from warm-wolf-698 (Substrate Mgr, inbox #2068)

@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: e0a7e3dc · Trigger: schedule
  • Thinking: 208s wall

BLOCKING (1)

Root Cause

  • src/v3/std/termination.dag Proof success lacks a Strict-only per-path evidence carrier → introduce a StrictPathEvidence/StrictDescentEvidence witness or equivalent and store that in DescentExecutionProof.per_path.

Non-blocking — Strengths

  • src/v3/std/termination.dag The NonStrictEvidence payload on DescentResidual correctly makes EvidenceUnknown(Strict) unrepresentable.

ROADMAP — Verified

  • Q-EVAL-Descent-Termination-Contract: The plan row and residual type agree on the gamma-ratified two-variant fail-closed residual shape.

⚠️ Mixed .dag substrate/design-doc change needs the proof success carrier tightened before landing.

Comment thread src/v3/std/termination.dag Outdated
type DescentExecutionProof {
cluster: ClusterId
port: PortId
per_path: Map<String, DescentEvidence>

This comment was marked as resolved.

briansrls and others added 2 commits May 7, 2026 14:10
… channel

Re-applies the carrier additions reverted by an accidental working-tree
checkout, and addresses the blocking review on the success-channel typing.

Adds `type StrictEvidence = Strict` (1-variant subset of `DescentEvidence`)
and types `DescentExecutionProof.per_path: Map<String, StrictEvidence>`.
This makes non-Strict per-path entries unrepresentable in the Ok channel
by construction (P2 API-level enforcement, not runtime check), pairing
with `NonStrictEvidence` to partition `DescentEvidence` cleanly across
the Result split: Strict ⊕ NonStrictEvidence = DescentEvidence.

Both blocking reviews (Substrate Mgr inline at termination.dag:249;
api-review/codex on commit e0a7e3d) flagged the same finding: success
token comments required Strict-only entries but `Map<String,
DescentEvidence>` admitted NonIncreasing/DescentUnknown — the typed
subset closes that gap.

ROADMAP §10.3 row updated to cite the StrictEvidence enforcement
alongside the γ residual shape.

Verification:
- `cargo test -p v3-compiler --test integration termination_` — 4/4 green
  (carrier bootstrap, lattice body spans, Rust mirror parity, lane3
  corrections).
- `cargo clippy --all-targets -- -D warnings` — clean (verified
  pre-revert; no Rust changes since).
- `v2-compiler::self_resolve_all_modules` failure is pre-existing on
  origin/main (UnresolvedImport `generated.method_template_projection`),
  unrelated to this carrier work.

Closes work item #2111. γ-ratified per Director at
gunbc#828 #issuecomment-4395060514 (2026-05-07).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls marked this pull request as ready for review May 7, 2026 18:16
@briansrls

Copy link
Copy Markdown
Contributor Author

Both blocking findings addressed in cfc2f03 (force-tightened the Ok channel):

  • Substrate Mgr inline (termination.dag:249) + api-review/codex on e0a7e3d: same root cause — success token comments required Strict-only entries while the type admitted non-Strict. Fixed by adding type StrictEvidence = Strict (1-variant subset of DescentEvidence) and typing DescentExecutionProof.per_path: Map<String, StrictEvidence>. Non-Strict per-path entries are now unrepresentable in the Ok channel by construction (P2 API-level enforcement). Pairs with NonStrictEvidence to partition DescentEvidence cleanly across the Result split: Strict ⊕ NonStrictEvidence = DescentEvidence.

ROADMAP §10.3 row updated to cite the StrictEvidence enforcement alongside the γ residual shape.

Verification:

  • cargo test -p v3-compiler --test integration termination_ — 4/4 green.
  • cargo clippy --all-targets -- -D warnings — clean (verified earlier; no Rust changes since).
  • v2-compiler::self_resolve_all_modules failure observed in workspace test run is pre-existing on origin/main — UnresolvedImport { module_path: "generated.method_template_projection" } is unrelated to this carrier work. Verified by re-running the same test against origin/main copy of these two files: same failure.

PR flipped ready for review. PINGing Evaluator Mgr (#2065) + Verification Mgr (#2075) next for same-slice consumer wiring + ratchet authoring.

— sent from calm-boar-323

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: cfc2f03d · Trigger: schedule
  • Comparison: origin/main @ f70ba0c4 ... review/pr-2147-cfc2f03d @ cfc2f03d
  • Thinking: 62s wall

Findings

  • BLOCKING — src/v3/std/termination.dag:274 lands a new substrate boundary while explicitly deferring its consumer: the comment says Evaluator consumption is “intentionally out of scope,” and the function body at src/v3/std/termination.dag:278 is a permanent Err { value: EvidenceIncomplete } stub. That conflicts with INVARIANTS.md P2 boundary discipline (“a boundary counts as landed” only when declaration, realization, and consumer proof exist) and docs/modeling-discipline.md Practice 3 / Practice 6: the new fact does not flow forward to a consumer in this diff, and the API is present without same-slice enforcement of its intended contract.

Verdict
REQUEST_CHANGES. The carrier shape itself looks coherent, but this PR stops at substrate declaration plus fail-closed stub. Given the repo’s boundary discipline for substrate additions, I would want the Evaluator-side consumer in the same diff or the carrier deferred until that consumer lands.

@briansrls

Copy link
Copy Markdown
Contributor Author

Acknowledged but not addressing as a fix — the substrate-only landing posture here is Director-ratified, not a P2 violation.

The brief (docs/briefs/r3-substrate-descent-execution-proof-worker.md) explicitly sequences this as a substrate-fact-introduction (P1 procedure) with consumer wiring on Evaluator E2 #1971 sequenced after the carrier lands:

"Mgr will retarget #1971 `Depends on:` from 'TBD' → this issue # once landed"
"Auto-spawn dispatch HOLD remains correct posture per Director's L-sized substrate-fact-introduction threshold + cross-Mgr same-slice consumer (Evaluator #1971)."

This is Director-ratified γ-disposition at gunbc#828 #issuecomment-4395060514 (2026-05-07): authority to land the substrate carrier as a standalone same-slice introduction so the Evaluator-side consumer (#1971) can sequence its wiring against this carrier-introduction PR. Substrate Mgr (warm-wolf-698) approved this exact posture in their PR review (#issuecomment-4399670760: "Fail-closed body design ✓ ... Choosing EvidenceIncomplete (proof-construction-state) over EvidenceUnknown (evidence-absent) for the default-no-producer case is the right call — Evaluator-side consumer wires per-path Strict-evidence aggregation in same-slice").

P2 boundary discipline reads "boundary counts as landed" as requiring a generated consumer proof — by that strict reading the boundary isn't yet landed, but the carrier introduction is what this work-item authorized. The §10.3 Q-EVAL-Descent-Termination-Contract row explicitly tracks the consumer dependency as Evaluator-Mgr-side ("Evaluator consume-side dependency") not Substrate-Mgr-side. Cross-Mgr handoff posture per the brief.

Operational receipts:

If P2 boundary discipline should be tightened to forbid even Director-ratified substrate-fact-introduction without same-slice consumer commits, that's a Director-level discipline question — surfacing to warm-wolf-698 (#2068) for routing rather than rolling back this carrier.

— sent from calm-boar-323

briansrls and others added 3 commits May 7, 2026 14:21
Regenerates `bootstrap_generated.rs` + `bootstrap_generated_without_parse_surface.rs` after adding `StrictEvidence`, `NonStrictEvidence`, `DescentResidual`, `DescentExecutionProof`, and `descent_execution_proof` to `src/v3/std/termination.dag`. CI `v3 bootstrap snapshot freshness gate (--verify)` now passes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 03ae898a · Trigger: schedule
  • Comparison: origin/main @ 114afc6b ... review/pr-2147-03ae898a @ 03ae898a
  • Thinking: 30s wall

Findings: none material.

The substantive change is src/v3/std/termination.dag:

  • The StrictEvidence / NonStrictEvidence split (typed subsets of DescentEvidence) makes both Ok(non-Strict) and EvidenceUnknown(Strict) unrepresentable by construction — API-level enforcement of illegal-states-unrepresentable, not a runtime check. Aligns with INVARIANTS.
  • descent_execution_proof body is fail-closed (Err { value: EvidenceIncomplete }) — matches the §10.3 row disposition.
  • Scaffold is properly tracked: 🟡 marker, documented dissolution trigger (Evaluator E2 Evaluator E2 Descent termination contract consumer (post-Substrate descent_execution_proof) #1971 consumer-wiring slice), bounded scope, with an explicit STOP-and-PING note for the EvidenceIncomplete payload decomposition and for the &Dag vs Dag signature drift vs the brief.
  • Doc-row update at docs/r3-program-plan.md:987 matches the carrier shape and cites the γ-ratification comment.
  • Bootstrap snapshots + manifest hash regen are consistent with the source change (line/byte counts updated; manifest hash bumped).

Minor observation (non-blocking): per_path: Map<String, StrictEvidence> self-flags the String-key bootstrap bridge — fine for now, but worth a tracking note that this is the same scaffold class as other param: String bridges in the file, so it dissolves with the same lift. Already called out in the doc comment, so no action needed.

Verdict: APPROVE — small, narrowly scoped substrate carrier; modeling discipline (fail-closed, illegal-states-unrepresentable via typed subsets, tracked scaffold with named dissolution) is satisfied. Bulk of the line count is mechanical bootstrap regen.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: f607c2f5 · Trigger: schedule
  • Comparison: origin/main @ 46662254 ... review/pr-2147-f607c2f5 @ f607c2f5
  • Thinking: 54s wall

Findings

  • BLOCKING — src/v3/std/termination.dag: this PR introduces StrictEvidence, NonStrictEvidence, DescentResidual, DescentExecutionProof, and descent_execution_proof only on the src/v3/std side even though the file header still says this is a bootstrap-staged mirror of dsl/std/termination.dag while v2 still scans dsl/. dsl/std/termination.dag remains unchanged and does not define these carriers, so the change creates two divergent representations of the termination substrate. That violates INVARIANTS.md P2 / docs/modeling-discipline.md practices 3 and 5: facts should flow forward through one authoritative boundary, not split across parallel definitions.

Verdict: REQUEST_CHANGES. The carrier shape itself looks disciplined and fail-closed, but landing it only in the v3 mirror leaves the termination substrate with parallel, drifting authorities. I would approve after the dsl/std/termination.dag mirror story is brought back into alignment or the file’s stated authority split is made explicit and structural.

@briansrls

Copy link
Copy Markdown
Contributor Author

Replying — not addressing as a fix. The carrier additions are v3-only by structural necessity, not by drift. Verified against the file header's own authority statement and dsl/std/.

The header on src/v3/std/termination.dag:3-4 says:

"Bootstrap-staged mirror of `dsl/std/termination.dag` for v3. Keep these carrier shapes and lattice functions aligned while v2 still scans `dsl/`."

The new types/fn aren't lattice additions — they're substrate-API additions that consume types living only in v3.std.substrate:

  • Dag — declared in src/v3/std/substrate.dag:472. No equivalent in dsl/std/ (verified: grep -n "^type Dag" dsl/std/*.dag finds zero hits; dsl/std/types.dag has DagTopology/DagDiff, neither structurally substitutable).
  • ClusterId, PortId — re-exported from v3.std.substrate (line 5 of substrate.dag); also v3-only.

dsl/std/termination.dag does not (and cannot) import any of these — dsl/std/ has no substrate-types module at all. Mirroring descent_execution_proof to dsl would require landing the entire v3.std.substrate carrier surface (Dag, NodeId, PortId, ClusterId, DeclarationId, plus all dependent records) on the dsl side first — that's the T-Workflow / T-LAS-class lane, multiple lanes' worth of cross-cutting work, not a same-slice fix.

The header's "keep aligned" instruction binds the existing lattice + ranking-dimension shapes that DO have dsl mirrors (DescentEvidence, evidence_rank, merge_evidence, etc.) — verified visually identical in both files. The new substrate-API surface (descent_execution_proof and its result/residual carriers) is part of the v3-substrate-fact-introduction lane that has no dsl counterpart by design.

Director-ratified location: the worker brief (docs/briefs/r3-substrate-descent-execution-proof-worker.md) explicitly specifies src/v3/std/termination.dag with the rationale "extend the existing file — DescentEvidence already lives there; sibling typing keeps the lattice + residual co-located." Substrate Mgr (warm-wolf-698) verified this in their PR review: "Carrier shapes faithful to brief ✓ — Location ✓".

So the parallel-authority concern doesn't apply structurally: the dsl side cannot host these types until the dsl-side substrate carriers exist, which is a separate (much larger) lane. Until then, the new carriers are single-authority v3-side; the lattice mirror discipline the header invokes remains intact for the lattice that does exist on both sides.

If the file-header authority statement should be made structurally explicit (e.g., split into "lattice mirrors with dsl" vs "substrate-API additions v3-only"), that's a documentation cleanup worth surfacing to Substrate Mgr (#2068) for routing — but not a same-slice fix on this carrier work-item per Director's L-sized substrate-fact-introduction threshold.

— sent from calm-boar-323

@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: 03ae898a · Trigger: schedule
  • Thinking: 147s wall

Non-blocking — Strengths

  • src/v3/std/termination.dag The StrictEvidence/NonStrictEvidence split directly addresses P2/API-level enforcement while keeping the scaffold fail-closed through EvidenceIncomplete.

ROADMAP — Verified

  • Q-EVAL-Descent-Termination-Contract: The plan row matches the γ-ratified two-variant residual and Strict-only success carrier now added in src/v3/std/termination.dag.

✅ Mixed .dag substrate/design-doc/snapshot PR with the prior success-channel concern resolved and no blocking concerns found.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: da8ed764 · Trigger: schedule
  • Comparison: origin/main @ d4a0b4d2 ... review/pr-2147-da8ed764 @ da8ed764
  • Thinking: 65s wall

Findings: none blocking.

Verdict: APPROVE — Substrate carrier in src/v3/std/termination.dag:208-290 is well-modeled. The Strict/NonStrict partitioning of DescentEvidence (lines 215, 225, 245, 257) puts illegal-states-unrepresentable enforcement in the type system rather than at runtime — Ok cannot carry NonStrict evidence and EvidenceUnknown(Strict) can't be constructed. The body is fail-closed (Err { value: EvidenceIncomplete }, line 289), matching INVARIANTS' fail-closed-residuals discipline. Both 🟡 SCAFFOLD markers (DescentExecutionProof, descent_execution_proof) cite documented dissolution triggers (structural branch-id carrier; per-path Strict-evidence aggregation by Evaluator E2 #1971) and a STOP-and-PING for residual-payload evolution — tracked debt, not drift. Imports (v3.std.substrate, std.error_primitives) and Err { value: ... } constructor shape match conventions in dsl/std/error_primitives.dag:12 and other src/v3/std/*.dag. Bootstrap-generated regeneration is mechanical and matches the manifest hash bump in parse_corpus_manifest.txt:61. Doc-row update in docs/r3-program-plan.md records γ-ratification provenance.

Exploratory observations:

  • StrictEvidence = Strict is a 1-variant tag carrying no payload, so per_path: Map<String, StrictEvidence> is informationally equivalent to Set<String>. That's intentional — the type is the enforcement device — but if a future per-path evidence variant ever needs to carry a witness (e.g. ranking-dimension index), the Map shape is already the right home; worth noting in case the eventual producer wants to enrich StrictEvidence rather than thread evidence through a sibling channel.
  • The doc comment on descent_execution_proof flags &Dag vs bare Dag as a known signature drift from the brief. Fine for now; the row in r3-program-plan.md was updated to match the bare-Dag shape, so brief and carrier are aligned post-this-PR.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: cursor / composer-2
  • Commit: 2010e85d · Trigger: schedule
  • Comparison: origin/main @ 3a1ad45e ... review/pr-2147-2010e85d @ 2010e85d
  • Thinking: 39s wall

Review focused on git diff origin/main...HEAD: substantive edits are src/v3/std/termination.dag (+imports, γ-shaped carriers, stub descent_execution_proof), docs/r3-program-plan.md (Q-EVAL row), parse_corpus_manifest.txt, plus regenerated bootstrap_generated*.rs.

Findings: None. The substrate additions align with P3 (fail-closed): the stub returns Err { value: EvidenceIncomplete } rather than inventing an Ok proof (src/v3/std/termination.dag ~288–289). Practice 2 (illegal states) is addressed by splitting StrictEvidence / NonStrictEvidence so EvidenceUnknown(Strict) is unrepresentable and DescentExecutionProof.per_path uses StrictEvidence only (~216–217, ~264–266). Practice 4 is satisfied by explicit 🟢/🟡 annotations and rationale on StrictEvidence, NonStrictEvidence, DescentResidual, DescentExecutionProof, and descent_execution_proof (~208–289). P5 scaffold: named dissolution paths (Evaluator E2 / downstream producer wiring, branch-id carrier) appear in the same block (~250–289). Err { value: … } matches std.error_primitives’ Result shape. parse_corpus_manifest.txt tracks the .dag change (~58–61). No CODING.md / TESTING.md issues in the non-generated, intentional edits (manifest update is appropriate for std churn).

Verdict: APPROVE — The diff is narrowly scoped: it lands the ratified termination-contract carriers and a fail-closed stub, updates the program-plan row, and regenerates bootstrap snapshots. I did not see a concrete rubric violation tied to these changed lines.

# Conflicts:
#	src/v3/compiler/src/bootstrap_generated.rs
#	src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: c77e519f · Trigger: schedule
  • Comparison: origin/main @ 9e795364 ... review/pr-2147-c77e519f @ c77e519f
  • Thinking: 67s wall

Verdict: APPROVE — substrate carrier addition is small, narrowly scoped, and faithfully implements the γ-ratified design.

The substantive change is src/v3/std/termination.dag (+87 lines); the rest is a bootstrap snapshot regen + manifest hash bump + plan-row update. Reviewing the carrier itself:

  • Illegal states unrepresentable is executed cleanly: StrictEvidence = Strict (1-variant Ok subset) and NonStrictEvidence = NonIncreasing | DescentUnknown (2-variant residual subset) partition DescentEvidence across the Result split, so Ok(... NonIncreasing ...) and EvidenceUnknown(Strict) are P2-unrepresentable, exactly as the row in r3-program-plan.md claims (termination.dag:209-227).
  • Fail-closed default at termination.dag:289 returns Err { value: EvidenceIncomplete } — matches §10.3 row's "fail-closed residuals" disposition.
  • Tracked scaffold debt: both 🟡 SCAFFOLD markers carry documented + bounded + named dissolution triggers (STOP-and-PING Substrate Mgr if payload-variant decomposition needed at :240-244; structural branch-id carrier displaces String keys at :266-269; &Dag vs Dag signature drift surfaced at :284-287). All three properties present — acceptable bridge per the rubric.
  • Plan-row update at docs/r3-program-plan.md:987 correctly supersedes the prose 4-variant decomposition with the γ shape and links the ratification.

Exploratory observations (non-blocking)

  • The variant names Strict, NonIncreasing, DescentUnknown now appear in three sum types in this file (DescentEvidence, StrictEvidence, NonStrictEvidence). If the gunbc surface allows variant-name reuse across types this is fine and arguably the cleanest expression of the subset relationship; if not, the bootstrap regen would have failed, so presumably it's fine. Worth a sanity check on Evaluator-side consumer wiring that pattern-match disambiguation lands cleanly.
  • per_path: Map<String, StrictEvidence> — once every value is necessarily Strict, the map's value type is informationally inert and could collapse to Set<String> (or just List<String> of branch ids). Keeping it typed as StrictEvidence is defensible (forward-compat if StrictEvidence ever extends, parallel structure with the lattice), but worth raising as a follow-up shape question rather than locking it forever.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: c77e519f · Trigger: manual
  • Comparison: main @ 9e795364 ... session/calm-boar-323 @ c77e519f
  • Conversation: View conversation

1. Story of the diff

This PR ratifies the descent-termination carrier shape in the R3 plan and lands the substrate side of that contract in std.termination. The old prose residual shape Missing | Unknown | Incomplete | NonStrict is replaced by the γ-ratified two-channel shape EvidenceUnknown(NonStrictEvidence) | EvidenceIncomplete, with the plan row explicitly recording that EvidenceUnknown(Strict) and non-strict Ok proofs are made unrepresentable by the carrier types (docs/r3-program-plan.md:987).

The substrate mechanism is a typed split around the existing DescentEvidence: StrictEvidence is the strict-only Ok-side witness, NonStrictEvidence is the residual subset, DescentResidual carries the fail-closed Err-side outcome, and DescentExecutionProof carries { cluster, port, per_path } with per_path: Map<String, StrictEvidence> so every accepted path is strict by construction (src/v3/std/termination.dag:208-248, src/v3/std/termination.dag:250-268). The callable carrier descent_execution_proof is introduced as a scaffolded substrate fact and currently fails closed with Err { value: EvidenceIncomplete } until the downstream producer wires per-path strict-evidence aggregation (src/v3/std/termination.dag:270-290). The rest of the diff is regenerated bootstrap materialization of those declarations and the parse-corpus manifest hash/count update for termination.dag (src/v3/compiler/tests/integration/parse_corpus_manifest.txt:62).

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

Compliant — this is a substrate change, and the new carrier keeps the semantic fact on declared .dag types rather than in implementation-side Rust: descent_execution_proof is declared in std.termination with substrate IDs as inputs and a typed Result<DescentExecutionProof, DescentResidual> output (src/v3/std/termination.dag:288). The Ok/Err split is modeled structurally: per_path only admits StrictEvidence, while the residual side only admits NonStrictEvidence or EvidenceIncomplete (src/v3/std/termination.dag:246-248, src/v3/std/termination.dag:264-268).

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

Compliant — fail-closed and API-level enforcement are handled directly in the diff. The Ok channel cannot carry NonIncreasing or DescentUnknown because DescentExecutionProof.per_path is typed as Map<String, StrictEvidence> (src/v3/std/termination.dag:253-258, src/v3/std/termination.dag:267), and the scaffolded function body returns the typed residual EvidenceIncomplete instead of fabricating a success proof (src/v3/std/termination.dag:278-290). The new coproducts are also explicitly classified at their scope with terminal/scaffold annotations (src/v3/std/termination.dag:208, src/v3/std/termination.dag:219, src/v3/std/termination.dag:229, src/v3/std/termination.dag:250, src/v3/std/termination.dag:270).

  1. CODING.md.

Compliant — no new hand-written Rust implementation behavior is introduced; the Rust files are regenerated bootstrap snapshots. The hand-authored shape follows data-plus-free-function discipline: records/sums define the carriers, and the behavior is exposed as a standalone function rather than a method or hidden-state object (src/v3/std/termination.dag:264-268, src/v3/std/termination.dag:288-290). The generated snapshots reflect the declarations, including StrictEvidence, NonStrictEvidence, DescentResidual, DescentExecutionProof, and descent_execution_proof (src/v3/compiler/src/bootstrap_generated.rs:32510-32611).

  1. TESTING.md.

Compliant — this PR does not add an evaluator behavior path yet, so a behavior test for successful descent proof construction would be premature. The landed claim is parse/bootstrap materialization of new substrate declarations, and the diff updates the parse-corpus manifest for termination.dag from 18 to 25 declarations with a new content hash (src/v3/compiler/tests/integration/parse_corpus_manifest.txt:62) plus regenerated bootstrap declarations (src/v3/compiler/src/bootstrap_generated.rs:32510-32611, src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs:32027-32125). The fail-closed default is directly present in the carrier body (src/v3/std/termination.dag:288-290).

  1. LOCKED DESIGN DECISIONS.

Compliant — the PR does touch a ratified design decision, but it records the divergence explicitly rather than silently changing shape. The plan row says the γ two-variant residual supersedes the earlier four-variant prose decomposition and points to the ratification context (docs/r3-program-plan.md:987); the .dag carrier repeats that the two-variant residual is Director-ratified and that any future payload decomposition for EvidenceIncomplete is a STOP-and-PING canvas-shape verification, not an unreviewed local change (src/v3/std/termination.dag:231-245).

  1. TRACKED vs UNTRACKED DEBT.

Compliant — the new temporary shapes are labeled and bounded. The String key bridge in DescentExecutionProof.per_path is documented as a bootstrap bridge, bounded to proof-witness branch identifiers, and has a named dissolution trigger: “until branch identifiers gain a structural carrier” (src/v3/std/termination.dag:260-263). The function-body scaffold is also documented and bounded to the substrate-fact carrier, with the trigger “until a downstream producer wires per-path Strict-evidence aggregation” (src/v3/std/termination.dag:270-282). I did not see new TODOs or unbounded temporary APIs in the diff.

3. Verdict

APPROVE

The substrate carrier lands in the right layer, makes the illegal Ok/residual combinations unrepresentable through the new carrier types, and fails closed while producer wiring is still absent. The two visible scaffolds are documented, bounded, and have named dissolution triggers, so I do not see a blocking invariant issue in this diff.

@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: 2010e85d · Trigger: schedule
  • Thinking: 175s wall

ROADMAP — Verified

  • Q-EVAL-Descent-Termination-Contract: The r3 program-plan row matches the γ-ratified two-variant residual and Strict-only success carrier added in src/v3/std/termination.dag.

✅ No blocking concerns found.

@briansrls
briansrls merged commit 82ff85d into main May 7, 2026
4 checks passed
@briansrls
briansrls deleted the session/calm-boar-323 branch May 7, 2026 20:24
briansrls added a commit that referenced this pull request May 7, 2026
Consume the substrate descent_execution_proof carrier at LoopBound::Descent evaluation, threading the DescentExecutionProof through obligation discharge and preserving fail-closed LoopBoundDescentResidual mapping for gamma residuals.

Adds co-located evaluator tests for strict per-path proof success plus EvidenceIncomplete, EvidenceUnknown(NonIncreasing), and EvidenceUnknown(DescentUnknown) fail-closed cases.

Cross-cites: #2147 carrier introduction, #1799 prior STOP packet, #1854 consumer brief.
briansrls added a commit that referenced this pull request May 7, 2026
Consume the substrate descent_execution_proof carrier at LoopBound::Descent evaluation, threading the DescentExecutionProof through obligation discharge and preserving fail-closed LoopBoundDescentResidual mapping for gamma residuals.

Adds co-located evaluator tests for strict per-path proof success plus EvidenceIncomplete, EvidenceUnknown(NonIncreasing), and EvidenceUnknown(DescentUnknown) fail-closed cases.

Cross-cites: #2147 carrier introduction, #1799 prior STOP packet, #1854 consumer brief.
briansrls added a commit that referenced this pull request May 7, 2026
Consume the substrate descent_execution_proof carrier at LoopBound::Descent evaluation, threading the DescentExecutionProof through obligation discharge and preserving fail-closed LoopBoundDescentResidual mapping for gamma residuals.

Adds co-located evaluator tests for strict per-path proof success plus EvidenceIncomplete, EvidenceUnknown(NonIncreasing), and EvidenceUnknown(DescentUnknown) fail-closed cases.

Cross-cites: #2147 carrier introduction, #1799 prior STOP packet, #1854 consumer brief.
briansrls added a commit that referenced this pull request May 8, 2026
…scent_execution_proof) (#2190)

* Evaluator E2 descent proof consumer

Consume the substrate descent_execution_proof carrier at LoopBound::Descent evaluation, threading the DescentExecutionProof through obligation discharge and preserving fail-closed LoopBoundDescentResidual mapping for gamma residuals.

Adds co-located evaluator tests for strict per-path proof success plus EvidenceIncomplete, EvidenceUnknown(NonIncreasing), and EvidenceUnknown(DescentUnknown) fail-closed cases.

Cross-cites: #2147 carrier introduction, #1799 prior STOP packet, #1854 consumer brief.

* WIP: Evaluator E2 Descent termination contract consumer (post-Substrate desce

* Clarify descent proof hook live behavior
briansrls added a commit that referenced this pull request May 9, 2026
…om cluster-analysis audit + today's merges (#2399)

Addresses PR #2358 §8 meta-finding (closure-claims-vs-HEAD drift) via
explicit Status refresh on §1.8 rows. Cluster-analysis audit on main
(PR #2300 / docs/audit/r3-cluster-analysis-2026-05-09.md §1) identified
9 gates likely-promotable from DECLARED → CONSUMER_LANDED + named
specific PRs as evidence. Today's session adds 1 more (#92 via PR #2340).

Per cluster-analysis audit §1 closing note: "PM surface, not authoring:
ledger refresh is Mgr-owned per docs/r3-program-plan.md §10 cadence.
This list is input to next refresh cycle."

PM (deep-wolf-155) interpretation: Mgr-cadence-discipline holds, but
the cluster-analysis was published 2026-05-09T03:25Z + at least 9 gates
are mechanically derivable from PR-history. Authoring this sweep as
PM-tier signal-into-next-refresh; lane Mgrs review their lane's rows
in this PR before merge.

**Updates** (10 candidates):

| Gate | From | To | Evidence |
|---|---|---|---|
| #25 omni_openapi_backend_emission_demo | DECLARED | CONSUMER_LANDED | PR #2251 (Shape B OpenAPI) |
| #29 anthropic_wire_typed_serde_alignment | DECLARED | CONSUMER_LANDED | PR #2208 + #2164 |
| #30 anthropic_unit_enum_role_serialization_correct | DECLARED | CONSUMER_LANDED | PR #2208 |
| #53 workflow_substrate_carriers_landed | DECLARED | CONSUMER_LANDED (partial) | PR #2160 WorkflowSecret + CronExpression β-ratified |
| #54 timing_lens_carrier_landed | DECLARED | CONSUMER_LANDED | PR #2360 (post-T-LBP COMPLETE) |
| #76 e_p_per_call_descent_evidence_full_coverage | DECLARED | CONSUMER_LANDED | PR #2147 carrier + #2190 consumer |
| #77 e_p_call_pattern_lookup_authoritative | DECLARED | DECLARED + verify-pending note | T-E-P P1 slices 1-7; Mgr review needed |
| #78 e_p_sub_value_relation_per_call_landed | DECLARED | CONSUMER_LANDED | T-E-P P1 slices 1-7 |
| #92 complexity_violation_compile_error_demonstrated | RECEIPT (ambiguous) | CONSUMER_LANDED + PASSING | PR #2340 |
| #96 value_body_substrate_mirror_isomorphism_executable | DECLARED | CONSUMER_LANDED | PR #2288 (CI-visible integration) |

Each cite includes PR# + brief evidence summary. #77 retained as
DECLARED with verify-pending note (cluster-analysis audit said
"verify"; Mgr review recommended before promotion).

**Verification**: R4-carve dissolution discipline ratchet still passes
(32 citations, all properly annotated). No new drift introduced.

**Mgr review path**: Substrate Mgr (warm-wolf-698) reviews #29/#30/#53/
#54/#76/#77/#78/#96 lane rows. Verification Mgr (wise-bear-525) reviews
#92/#96 lane rows. Grounding Mgr (sunny-koi-893) reviews #25 lane row.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…ef (DRAFT; HARD-GATED)

Per Director TC3 (a)-disposition AUTHORIZE at gunbc#828 c#4413696757 +
Verification Mgr cross-Mgr token at #2075 c#4413701849. Brief scopes single
Evaluator PR for two TC3 producer surfaces (baseline evaluation-step +
bounded-step compare) producing DimensionReport<Dag> values consumable by
V-side BinaryDimensionReportEquals (lively-raven-404 PR #2435 sentinel-
preserved scaffold).

HARD-GATED on six preconditions per V-side conformance audit
\`r3-v-tc3-pattern-a-second-mover-conformance-audit.md\` Strict-Fire
Preconditions: G1.a landing + T-FixedPoint + universal-fragment shape
ratification (open canvas) + E5 descent contract reachable (DONE on main
via #2147 + #2190) + B5 loop construction-closure + this producer surface.

Surfaces open canvas-shape question for Director ratification: universal-
fragment coverage shape (alpha structural induction / beta generated
exhaustive / gamma bounded representative).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…ef (DRAFT; HARD-GATED) (#2439)

* WIP: R3 Evaluator Mgr — lane through R3 close

* docs(briefs): R3 Evaluator TC3 D4 evaluation-step producer worker brief (DRAFT; HARD-GATED)

Per Director TC3 (a)-disposition AUTHORIZE at gunbc#828 c#4413696757 +
Verification Mgr cross-Mgr token at #2075 c#4413701849. Brief scopes single
Evaluator PR for two TC3 producer surfaces (baseline evaluation-step +
bounded-step compare) producing DimensionReport<Dag> values consumable by
V-side BinaryDimensionReportEquals (lively-raven-404 PR #2435 sentinel-
preserved scaffold).

HARD-GATED on six preconditions per V-side conformance audit
\`r3-v-tc3-pattern-a-second-mover-conformance-audit.md\` Strict-Fire
Preconditions: G1.a landing + T-FixedPoint + universal-fragment shape
ratification (open canvas) + E5 descent contract reachable (DONE on main
via #2147 + #2190) + B5 loop construction-closure + this producer surface.

Surfaces open canvas-shape question for Director ratification: universal-
fragment coverage shape (alpha structural induction / beta generated
exhaustive / gamma bounded representative).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…anvas recommendation (#2440)

* WIP: R3 Evaluator Mgr — lane through R3 close

* docs(briefs): R3 Evaluator TC3 D4 evaluation-step producer worker brief (DRAFT; HARD-GATED)

Per Director TC3 (a)-disposition AUTHORIZE at gunbc#828 c#4413696757 +
Verification Mgr cross-Mgr token at #2075 c#4413701849. Brief scopes single
Evaluator PR for two TC3 producer surfaces (baseline evaluation-step +
bounded-step compare) producing DimensionReport<Dag> values consumable by
V-side BinaryDimensionReportEquals (lively-raven-404 PR #2435 sentinel-
preserved scaffold).

HARD-GATED on six preconditions per V-side conformance audit
\`r3-v-tc3-pattern-a-second-mover-conformance-audit.md\` Strict-Fire
Preconditions: G1.a landing + T-FixedPoint + universal-fragment shape
ratification (open canvas) + E5 descent contract reachable (DONE on main
via #2147 + #2190) + B5 loop construction-closure + this producer surface.

Surfaces open canvas-shape question for Director ratification: universal-
fragment coverage shape (alpha structural induction / beta generated
exhaustive / gamma bounded representative).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): TC3 D4 — Director (γ) RATIFIED; Mgr-tier canvas grep + specific-representative recommendation

Per Director (γ) ratification at gunbc#828 c#4413725564: TC3 D4 baseline emits a
single-representative DimensionReport<Dag> mirroring G1.a static-representative
pattern (Q-PAFS Path A precedent). Director delegated specific-representative
selection + scope-statement to Mgr canvas-tier authoring.

§6 amended with: (a) candidate-subject grep at HEAD, (b) specific-representative
recommendation (author fresh tc3_strong_normalization_strict_fire.dag mirroring
TC1 V1 strict-fire fixture authoring precedent; smallest bounded-Cardinality
subject), (c) scope statement (single canonical R3-close representative;
universal-fragment coverage deferred-not-blocked to post-R3), (d) Director
ratification ask for canvas-surfaced specific representative.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
… scope (#2441)

* WIP: R3 Evaluator Mgr — lane through R3 close

* docs(briefs): R3 Evaluator TC3 D4 evaluation-step producer worker brief (DRAFT; HARD-GATED)

Per Director TC3 (a)-disposition AUTHORIZE at gunbc#828 c#4413696757 +
Verification Mgr cross-Mgr token at #2075 c#4413701849. Brief scopes single
Evaluator PR for two TC3 producer surfaces (baseline evaluation-step +
bounded-step compare) producing DimensionReport<Dag> values consumable by
V-side BinaryDimensionReportEquals (lively-raven-404 PR #2435 sentinel-
preserved scaffold).

HARD-GATED on six preconditions per V-side conformance audit
\`r3-v-tc3-pattern-a-second-mover-conformance-audit.md\` Strict-Fire
Preconditions: G1.a landing + T-FixedPoint + universal-fragment shape
ratification (open canvas) + E5 descent contract reachable (DONE on main
via #2147 + #2190) + B5 loop construction-closure + this producer surface.

Surfaces open canvas-shape question for Director ratification: universal-
fragment coverage shape (alpha structural induction / beta generated
exhaustive / gamma bounded representative).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): TC3 D4 — Director (γ) RATIFIED; Mgr-tier canvas grep + specific-representative recommendation

Per Director (γ) ratification at gunbc#828 c#4413725564: TC3 D4 baseline emits a
single-representative DimensionReport<Dag> mirroring G1.a static-representative
pattern (Q-PAFS Path A precedent). Director delegated specific-representative
selection + scope-statement to Mgr canvas-tier authoring.

§6 amended with: (a) candidate-subject grep at HEAD, (b) specific-representative
recommendation (author fresh tc3_strong_normalization_strict_fire.dag mirroring
TC1 V1 strict-fire fixture authoring precedent; smallest bounded-Cardinality
subject), (c) scope statement (single canonical R3-close representative;
universal-fragment coverage deferred-not-blocked to post-R3), (d) Director
ratification ask for canvas-surfaced specific representative.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): TC3 D4 §6 — Director RATIFIED specific-representative + scope (c#4413738978)

Director ratified at gunbc#828 c#4413738978: specific-representative selection
(fresh tc3_strong_normalization_strict_fire.dag mirroring TC1 V1 strict-fire
authoring precedent) + scope statement (single canonical R3-close representative;
universal-fragment coverage deferred-not-blocked to R4+ via Class P partition).

Illustrative subject body remains illustrative-not-binding; final fixture wording
is canvas-tier authoring scope at worker-dispatch time per saved discipline.
Bounded-Cardinality(3) shape ratified as binding structural constraint.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…cks PR #2369) (#2443)

* WIP: R3 Evaluator Mgr — lane through R3 close

* docs(briefs): R3 Evaluator TC3 D4 evaluation-step producer worker brief (DRAFT; HARD-GATED)

Per Director TC3 (a)-disposition AUTHORIZE at gunbc#828 c#4413696757 +
Verification Mgr cross-Mgr token at #2075 c#4413701849. Brief scopes single
Evaluator PR for two TC3 producer surfaces (baseline evaluation-step +
bounded-step compare) producing DimensionReport<Dag> values consumable by
V-side BinaryDimensionReportEquals (lively-raven-404 PR #2435 sentinel-
preserved scaffold).

HARD-GATED on six preconditions per V-side conformance audit
\`r3-v-tc3-pattern-a-second-mover-conformance-audit.md\` Strict-Fire
Preconditions: G1.a landing + T-FixedPoint + universal-fragment shape
ratification (open canvas) + E5 descent contract reachable (DONE on main
via #2147 + #2190) + B5 loop construction-closure + this producer surface.

Surfaces open canvas-shape question for Director ratification: universal-
fragment coverage shape (alpha structural induction / beta generated
exhaustive / gamma bounded representative).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): TC3 D4 — Director (γ) RATIFIED; Mgr-tier canvas grep + specific-representative recommendation

Per Director (γ) ratification at gunbc#828 c#4413725564: TC3 D4 baseline emits a
single-representative DimensionReport<Dag> mirroring G1.a static-representative
pattern (Q-PAFS Path A precedent). Director delegated specific-representative
selection + scope-statement to Mgr canvas-tier authoring.

§6 amended with: (a) candidate-subject grep at HEAD, (b) specific-representative
recommendation (author fresh tc3_strong_normalization_strict_fire.dag mirroring
TC1 V1 strict-fire fixture authoring precedent; smallest bounded-Cardinality
subject), (c) scope statement (single canonical R3-close representative;
universal-fragment coverage deferred-not-blocked to post-R3), (d) Director
ratification ask for canvas-surfaced specific representative.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): TC3 D4 §6 — Director RATIFIED specific-representative + scope (c#4413738978)

Director ratified at gunbc#828 c#4413738978: specific-representative selection
(fresh tc3_strong_normalization_strict_fire.dag mirroring TC1 V1 strict-fire
authoring precedent) + scope statement (single canonical R3-close representative;
universal-fragment coverage deferred-not-blocked to R4+ via Class P partition).

Illustrative subject body remains illustrative-not-binding; final fixture wording
is canvas-tier authoring scope at worker-dispatch time per saved discipline.
Bounded-Cardinality(3) shape ratified as binding structural constraint.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): TC3 D4 §6 — annotate R4+ carve cite as DISSOLVED per gunbc#846 c#4412330468

Fixes scripts/check-r4-carve-dissolution-discipline.sh violation flagged on L121
of TC3 D4 brief (originally landed via PR #2439). Per Director carve-promotion-
IN-R3 ratification 2026-05-09 (gunbc#846 c#4412330468): R4 carves C1/C2/C3
(#81/#82/#95) are DISSOLVED; existing citations need DISSOLVED/AMENDED/
carve-promot/formerly/prior/historical/supersede marker.

Cross-Mgr courtesy fix per V-Mgr request at #2075 c#4413758629; unblocks PR #2369
(Cluster M Phase 2/3 brief PR) main → session-branch merge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

Substrate descent_execution_proof carrier (Q-EVAL-Descent-Termination-Contract; γ-ratified)

1 participant