From 891819150ba490ba1ac987f880247913c68b7f4d Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 5 May 2026 03:26:07 -0400 Subject: [PATCH 1/9] WIP: warm-dove-810 --- docs/briefs/r2-impossible-bugs-manager.md | 2 +- ...-optional-codegen-bypass-closure-worker.md | 136 ++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md diff --git a/docs/briefs/r2-impossible-bugs-manager.md b/docs/briefs/r2-impossible-bugs-manager.md index 7d2c8e57369..194a34858e1 100644 --- a/docs/briefs/r2-impossible-bugs-manager.md +++ b/docs/briefs/r2-impossible-bugs-manager.md @@ -103,7 +103,7 @@ Each class closes under a structural acceptance gate authored as a `.dag` `TestC - `docs/briefs/t-impossiblebugs-unenumerated-effects-parser-worker.md` (SUPERSEDED 2026-04-25 by design doc; closed-system framing dissolves the proposed parser surface). **Pending — Manager dispatches residuals (3 main implementations already landed via #890/#969/#971; manager drives class-close completion):** -- Nested-optional-flatten: residuals after #890 + #962 (verify structural test coverage; audit integration paths; close class). +- Nested-optional-flatten: residuals after #890 + #962 (verify structural test coverage; audit integration paths; close class). **Queued follow-up:** [`r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md`](r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md) narrows the remaining scope to `CardinalityPayload::new_unchecked` and generated construction sites beyond the original std-only audit; authored from a `git-metadata-unavailable` checkout. - Unhandled-diagnostic-paths: dispatch indexing / quotient / remainder slices (per-class totality-by-omission, modeled on the #969 `Int/Int` first slice). - Unenumerated-effects: drive `OperationEffect` parallel-representation retirement per #971's path (ii) verdict. - PR #805 Fn→Arrow refactor stays dispatchable as independent vestigial-syntax cleanup (not a thesis-claim closure dependency). diff --git a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md new file mode 100644 index 00000000000..8f180d9fd77 --- /dev/null +++ b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md @@ -0,0 +1,136 @@ +# T-ImpossibleBugs — Nested-optional codegen-bypass closure worker brief `(S; git-metadata-unavailable receipt)` + +> **Worker brief.** Reports through Impossible-Bugs Manager. This is a +> narrowed follow-up to +> [`r2-impossible-bugs-nested-optional-flatten-worker.md`](r2-impossible-bugs-nested-optional-flatten-worker.md). +> It does **not** reopen the allocator / lowering route, which is already +> live. Scope is only the remaining bypassable construction surface for +> `CardinalityPayload::new_unchecked` and generated cardinality +> construction sites. +> +> **Git metadata note:** this brief was authored from a checkout whose +> `.git` pointer is broken. Treat this authoring receipt as +> `git-metadata-unavailable`: file/`rg` evidence only, no branch +> cleanliness or diff-base claim. + +## Read first + +- [`docs/briefs/r2-impossible-bugs-nested-optional-flatten-worker.md`](r2-impossible-bugs-nested-optional-flatten-worker.md) — canonical class brief. Consume its design authority; do not re-scope the class. +- [`docs/briefs/t-impossiblebugs-nested-optional-flatten-design.md`](t-impossiblebugs-nested-optional-flatten-design.md) — design authority for the substrate-constructor invariant. +- [`src/v3/compiler/src/dag.rs`](../../src/v3/compiler/src/dag.rs) — `cardinality_idempotent_target` is already present. +- [`src/v3/compiler/src/dag/builder.rs`](../../src/v3/compiler/src/dag/builder.rs) — `Dag::alloc_cardinality_decl` is already present and is the intended constructor authority. +- [`src/v3/compiler/src/dag/cardinality_payload.rs`](../../src/v3/compiler/src/dag/cardinality_payload.rs) — live bypass aperture: `CardinalityPayload::new_unchecked`. +- [`src/v3/compiler/src/regen_bootstrap_emit.rs`](../../src/v3/compiler/src/regen_bootstrap_emit.rs) — live codegen bypass: cardinality connectives are emitted as `TypeConnective::Cardinality(CardinalityPayload::new_unchecked(...))`. +- Generated surfaces to audit before editing: + - [`src/v3/compiler/src/bootstrap_std_generated.rs`](../../src/v3/compiler/src/bootstrap_std_generated.rs) + - [`src/v3/compiler/src/bootstrap_generated.rs`](../../src/v3/compiler/src/bootstrap_generated.rs) + - [`src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs`](../../src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs) + +## Pre-author verification receipt + +Manager dispatch verification found the main invariant already live: + +- `cardinality_idempotent_target` exists in `src/v3/compiler/src/dag.rs`. +- `Dag::alloc_cardinality_decl` exists in `src/v3/compiler/src/dag/builder.rs`. +- `SurfaceType::Optional` lowering routes through `alloc_cardinality_decl` in `src/v3/compiler/src/lower.rs`. +- `concretize_decl_with_subst` routes through `alloc_cardinality_decl` in `src/v3/compiler/src/infer.rs`. + +Remaining bypass evidence: + +- `src/v3/compiler/src/dag/cardinality_payload.rs` exposes `CardinalityPayload::new_unchecked` broadly enough for generated / dag-internal construction. +- `src/v3/compiler/src/regen_bootstrap_emit.rs` emits `TypeConnective::Cardinality(CardinalityPayload::new_unchecked(...))`. +- Generated construction sites exist in `bootstrap_std_generated.rs`, `bootstrap_generated.rs`, and `bootstrap_generated_without_parse_surface.rs`, exceeding the original std-only generated-site audit. + +## Frame + +The class is structurally closed only when nested `AtMostOne` cardinality +cannot be constructed through any production path. The allocator route +already enforces idempotence. This worker closes the remaining bypasses: +generated constructors and any dag-internal helper paths that can still +materialize `TypeConnective::Cardinality(CardinalityPayload::new_unchecked(...))` +without passing through `alloc_cardinality_decl`. + +This is not a substrate escalation. It is API/codegen closure around an +already-landed substrate-constructor invariant. + +## Slice + +1. **Re-audit construction sites** with `rg` before editing: + - `CardinalityPayload::new_unchecked` + - `TypeConnective::Cardinality` + - `alloc_cardinality_decl` + - `cardinality_idempotent_target` +2. **Narrow `new_unchecked` authority** so ordinary code cannot bypass + `Dag::alloc_cardinality_decl`. Keep a tightly justified escape hatch + only where unavoidable for generated bootstrap materialization, and + document why it cannot construct a nested `AtMostOne` without an + adjacent normalization pass. +3. **Update regen emission** in `regen_bootstrap_emit.rs` so generated + bootstrap cardinality construction either: + - routes through `alloc_cardinality_decl`, or + - emits a generated-local normalizing constructor whose behavior is + identical to `cardinality_idempotent_target`. +4. **Regenerate or mechanically update generated files** consistently for + all affected generated surfaces, not just `bootstrap_std_generated.rs`. + At minimum audit and account for: + - `bootstrap_std_generated.rs` + - `bootstrap_generated.rs` + - `bootstrap_generated_without_parse_surface.rs` +5. **Add/extend a focused regression test** that attempts the generated + path shape and proves nested `AtMostOne` normalizes to the inner + declaration. Existing allocator/lowering tests are not enough for this + follow-up. +6. **Run focused checks**: + - `cargo fmt --all --check` + - existing `cardinality_idempotent` / `cardinality_idempotence` tests + - the new generated-path regression + +## Acceptance + +- [ ] No production construction path can create nested + `AtMostOne(AtMostOne(T))` without applying the same idempotence rule as + `alloc_cardinality_decl`. +- [ ] `CardinalityPayload::new_unchecked` is no longer a broad bypass + aperture, or every remaining caller is generated/bootstrap-only and + paired with normalization evidence. +- [ ] `regen_bootstrap_emit.rs` no longer emits raw unchecked cardinality + construction as the final authority for generated cardinality nodes. +- [ ] All affected generated files are regenerated or mechanically kept + consistent, with the PR body naming which path was used. +- [ ] Regression coverage exercises the generated/bootstrap construction + path, not only hand-written lowering and substitution. +- [ ] Checks above pass, or the PR reports exact tool unavailability. + +## STOP-AND-ESCALATE + +- **Generated bootstrap materialization cannot call `alloc_cardinality_decl`** + because the generated DAG is not available at construction time, and no + generated-local normalizer can preserve declaration identity. Stop and + report the specific generated function / construction order blocker. +- **Narrowing `new_unchecked` breaks read-side pattern matching or + non-cardinality generated constructors.** Stop and report exact compiler + errors; do not broaden this into a general TypeConnective refactor. +- **Regeneration drifts unrelated bootstrap spans or DB-8 fixed-point + receipts.** Stop with the drift evidence. +- **New non-generated hand-Rust bypasses appear.** Stop and report file / + function evidence; do not patch them ad hoc unless they are clearly in + this brief's constructor-closure scope. + +## Non-goals + +- Not changing the semantic rule: `AtMostOne` is idempotent under nesting. +- Not reopening parser/lowering behavior for `T??`. +- Not changing unhandled diagnostic paths or unenumerated effects. +- Not adding textual sentinels as enforcement. + +## Reporting + +Single narrow PR. Suggested title: +`fix(v3): close nested-optional cardinality codegen bypass`. + +PR body must include: + +- `git-metadata-unavailable` if authored from a broken-git worktree. +- Construction-site audit receipt. +- Generated-surface disposition for all three generated files. +- Test list and any regeneration caveat. From c66fd5c2162a9b5004aef1078e5d1655defcf863 Mon Sep 17 00:00:00 2001 From: Brian Searls <11205878+briansrls@users.noreply.github.com> Date: Tue, 5 May 2026 10:26:56 +0000 Subject: [PATCH 2/9] docs: tighten nested optional normalizer authority --- ...-nested-optional-codegen-bypass-closure-worker.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md index 8f180d9fd77..3de2cbf701e 100644 --- a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md +++ b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md @@ -68,8 +68,12 @@ already-landed substrate-constructor invariant. 3. **Update regen emission** in `regen_bootstrap_emit.rs` so generated bootstrap cardinality construction either: - routes through `alloc_cardinality_decl`, or - - emits a generated-local normalizing constructor whose behavior is - identical to `cardinality_idempotent_target`. + - emits a generated-local normalizing constructor that delegates to, or + is mechanically generated from, the canonical + `cardinality_idempotent_target` / `alloc_cardinality_decl` authority. + Do not hand-maintain a second idempotence rule; if a generated-local + helper is unavoidable, the PR must name its dissolution path back to + the canonical constructor authority. 4. **Regenerate or mechanically update generated files** consistently for all affected generated surfaces, not just `bootstrap_std_generated.rs`. At minimum audit and account for: @@ -92,7 +96,9 @@ already-landed substrate-constructor invariant. `alloc_cardinality_decl`. - [ ] `CardinalityPayload::new_unchecked` is no longer a broad bypass aperture, or every remaining caller is generated/bootstrap-only and - paired with normalization evidence. + paired with normalization evidence that is delegated to, mechanically + generated from, or explicitly dissolves back into the canonical + constructor authority. - [ ] `regen_bootstrap_emit.rs` no longer emits raw unchecked cardinality construction as the final authority for generated cardinality nodes. - [ ] All affected generated files are regenerated or mechanically kept From c488b52b50633418591355f68bfe6fd07c2177cc Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 5 May 2026 06:29:40 -0400 Subject: [PATCH 3/9] WIP: warm-dove-810 --- ...-nested-optional-codegen-bypass-closure-worker.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md index 8f180d9fd77..3de2cbf701e 100644 --- a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md +++ b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md @@ -68,8 +68,12 @@ already-landed substrate-constructor invariant. 3. **Update regen emission** in `regen_bootstrap_emit.rs` so generated bootstrap cardinality construction either: - routes through `alloc_cardinality_decl`, or - - emits a generated-local normalizing constructor whose behavior is - identical to `cardinality_idempotent_target`. + - emits a generated-local normalizing constructor that delegates to, or + is mechanically generated from, the canonical + `cardinality_idempotent_target` / `alloc_cardinality_decl` authority. + Do not hand-maintain a second idempotence rule; if a generated-local + helper is unavoidable, the PR must name its dissolution path back to + the canonical constructor authority. 4. **Regenerate or mechanically update generated files** consistently for all affected generated surfaces, not just `bootstrap_std_generated.rs`. At minimum audit and account for: @@ -92,7 +96,9 @@ already-landed substrate-constructor invariant. `alloc_cardinality_decl`. - [ ] `CardinalityPayload::new_unchecked` is no longer a broad bypass aperture, or every remaining caller is generated/bootstrap-only and - paired with normalization evidence. + paired with normalization evidence that is delegated to, mechanically + generated from, or explicitly dissolves back into the canonical + constructor authority. - [ ] `regen_bootstrap_emit.rs` no longer emits raw unchecked cardinality construction as the final authority for generated cardinality nodes. - [ ] All affected generated files are regenerated or mechanically kept From 0b0c10ab6481ba43394609f3e5fe10b967034629 Mon Sep 17 00:00:00 2001 From: Brian Searls <11205878+briansrls@users.noreply.github.com> Date: Tue, 5 May 2026 10:41:50 +0000 Subject: [PATCH 4/9] docs: require narrowing unchecked cardinality escape hatch --- ...s-nested-optional-codegen-bypass-closure-worker.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md index 3de2cbf701e..39bf29aad42 100644 --- a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md +++ b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md @@ -94,11 +94,12 @@ already-landed substrate-constructor invariant. - [ ] No production construction path can create nested `AtMostOne(AtMostOne(T))` without applying the same idempotence rule as `alloc_cardinality_decl`. -- [ ] `CardinalityPayload::new_unchecked` is no longer a broad bypass - aperture, or every remaining caller is generated/bootstrap-only and - paired with normalization evidence that is delegated to, mechanically - generated from, or explicitly dissolves back into the canonical - constructor authority. +- [ ] `CardinalityPayload::new_unchecked` is visibility-/callability- + narrowed so ordinary code cannot bypass `Dag::alloc_cardinality_decl`. + Any remaining generated/bootstrap-only escape hatch is intentionally + narrow and paired with normalization evidence that is delegated to, + mechanically generated from, or explicitly dissolves back into the + canonical constructor authority. - [ ] `regen_bootstrap_emit.rs` no longer emits raw unchecked cardinality construction as the final authority for generated cardinality nodes. - [ ] All affected generated files are regenerated or mechanically kept From fae0665c3898b3484eb22e55bce0f3dda4c2f822 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 5 May 2026 06:44:39 -0400 Subject: [PATCH 5/9] WIP: warm-dove-810 --- ...s-nested-optional-codegen-bypass-closure-worker.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md index 3de2cbf701e..39bf29aad42 100644 --- a/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md +++ b/docs/briefs/r2-impossible-bugs-nested-optional-codegen-bypass-closure-worker.md @@ -94,11 +94,12 @@ already-landed substrate-constructor invariant. - [ ] No production construction path can create nested `AtMostOne(AtMostOne(T))` without applying the same idempotence rule as `alloc_cardinality_decl`. -- [ ] `CardinalityPayload::new_unchecked` is no longer a broad bypass - aperture, or every remaining caller is generated/bootstrap-only and - paired with normalization evidence that is delegated to, mechanically - generated from, or explicitly dissolves back into the canonical - constructor authority. +- [ ] `CardinalityPayload::new_unchecked` is visibility-/callability- + narrowed so ordinary code cannot bypass `Dag::alloc_cardinality_decl`. + Any remaining generated/bootstrap-only escape hatch is intentionally + narrow and paired with normalization evidence that is delegated to, + mechanically generated from, or explicitly dissolves back into the + canonical constructor authority. - [ ] `regen_bootstrap_emit.rs` no longer emits raw unchecked cardinality construction as the final authority for generated cardinality nodes. - [ ] All affected generated files are regenerated or mechanically kept From aa24f37ff6f38964d0eaf6e084bc67db8e0dd7d6 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Wed, 6 May 2026 07:01:30 -0400 Subject: [PATCH 6/9] WIP: warm-dove-810 --- .../r3-evaluator-pr-1275-1500-debt-sweep.md | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md diff --git a/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md new file mode 100644 index 00000000000..25f953125db --- /dev/null +++ b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md @@ -0,0 +1,73 @@ +# R3 Evaluator PR #1275-#1500 Debt Sweep + +**Status:** audit receipt, 2026-05-06. This is a source/PR-history sweep, not +an implementation brief. + +**Scope:** merged PRs #1275-#1500 that touched +`src/v3/compiler/src/lib.rs` evaluator surfaces: +`evaluator::Value`, `eval_value`, `eval_port`, `eval_node`, `eval_branch`, +`eval_loop`, `eval_bind`, and `eval_transform_node`. + +**Verification inputs:** local `git log --all -- src/v3/compiler/src/lib.rs`, +`gh pr view` for the PR rows below, live `src/v3/compiler/src/lib.rs`, and +the current R3 routing docs: + +- `docs/r3-program-plan.md` §10.3, especially + `Q-EVAL-Descent-Termination-Contract`, + `Q-EVAL-Lens-Fold-First-Slice`, and + `Q-Pattern-A-First-Slice-Subscope`. +- `docs/briefs/r3-pr-e6-g0d-constructor-runtime-execution-worker.md`. +- `docs/briefs/r3-pr-e6-lens-fold-readiness-audit.md`. +- `ROADMAP.md` Pattern B / `test_runner.rs` predicate-authority debt. + +## Summary + +The PRs that materially built the R2 evaluator body surface are legitimate +hand-Rust capacity slices, not accidental parallel substrate authority rows: +#1374, #1387, #1407, #1426, #1476, and #1496. + +The material residual classifications are: + +- #1426 introduced an explicit Bool literal-vs-variant branch identity gap. + That gap is retired by #1467/#1473 through shared + `Dag::bool_runtime_variant_id` authority. +- #1476 keeps `LoopBound::Descent` fail-closed. This remains active and routes + through the Substrate termination-proof carrier before Evaluator consume-side + wiring. +- #1407/#1496 left callable pressure for later E6 work. The non-Arrow + constructor `Callable` residual is now retired by E6-G0d / #1813. The + remaining E-series callable pressure is G1.a static lens fold/report + production; G1.b generic dispatch remains held on X1.b S1/S3. +- #1484 is not a body-evaluator regression. `SymbolicCostExprEquals` remains + a runner/test-predicate gap tracked outside the `lib.rs` body evaluator. +- #1459 and #1466 touched `lib.rs` via broader generated/substrate fallout, + but this sweep found no evidence promoting either into evaluator-lane causal + history. + +## Chronological Rows + +| PR | Merged-at | Evaluator-path touch | Hand-Rust / debt classification | Current dissolution state | +|---|---:|---|---|---| +| #1374 `feat(evaluator): PR-E E2 EvalFrame lookup and Bind environment` | 2026-05-01T07:04:37Z | `EvalFrame` / evaluator stack lookup helpers in `lib.rs`. | Hand-Rust capacity slice inside the existing evaluator module. PR body explicitly excludes runtime carrier changes, list fallback, and body evaluation. | Consumed by later E1/E4/E5/Bind slices. No new debt row found. | +| #1387 `feat(evaluator): PR-E E1 value behavior execution` | 2026-05-01T08:51:37Z | `Behavior::Value`, `eval_value`, `eval_port`, `eval_node`, and `evaluate_body`. | Hand-Rust evaluator capacity. Uses the Rust runtime `Value` mirror and constructs only `LiteralValue` in this slice. | Active foundation under the broader PB-zero hand-Rust retirement trajectory. | +| #1407 `feat(evaluator): PR-E E3 eager Transform application` | 2026-05-01T20:04:31Z | `eval_transform_node` for supported operator targets. | Hand-Rust capacity plus explicit unsupported transform fences. These are fail-closed residuals, not hidden bridge carriers. | FieldProject and Arrow/UserDefined callable execution later retired by E6-G0c. Non-Arrow constructor `Callable` is retired by E6-G0d / #1813. Static lens fold/report production remains G1.a; generic dispatch remains G1.b held on X1.b S1/S3. | +| #1425 `fix(v3): P0 DB-8 receipt.json key pin + SG-0 census` | 2026-05-01T20:04:41Z | Touched `lib.rs`, but not evaluator-lane behavior. | Receipt-key / SG-0 census work outside the evaluator lane. | Not an evaluator debt row. | +| #1426 `feat(evaluator): PR-E E4 Branch arm coverage` | 2026-05-01T21:29:41Z | `Behavior::Branch`, `eval_branch`, `Value::VariantValue`, branch frame/payload path execution. | Hand-Rust capacity plus explicit Bool literal-vs-variant identity gap. The PR deferred Bool `if` evaluation to shared substrate identity instead of adding a local map. | Retired by #1467/#1473 for evaluator and `lens_apply` Bool matching. | +| #1459 `keen-swift-519` | 2026-05-02T03:49:09Z | Touched `lib.rs` amid broad generated/substrate changes. | No evaluator-specific hand-Rust/debt introduction identified from PR metadata available in this sweep. | Do not promote into evaluator causal history without narrower file/body evidence. | +| #1466 `feat(std): T-Numeric-Construction Slice 3` | 2026-05-02T01:41:30Z | Touched `lib.rs` through regenerated/bootstrap fallout. | Numeric-construction substrate/std work, not evaluator semantics. | Not an evaluator debt row. | +| #1467 `fix(v3): reify Bool branch scrutinees through shared variant identity` | 2026-05-02T01:15:31Z | Evaluator Bool branch reification; also `dag.rs` and `lens_apply.rs`. | Retires bridge risk by centralizing on `Dag::bool_runtime_variant_id`; does not introduce a local Bool declaration-id map. | Retires #1426 Bool branch identity gap. | +| #1473 `test(evaluator): cover Bool branch reification` | 2026-05-02T03:48:42Z | Evaluator tests in `lib.rs`. | Test-only hand-Rust; adds fail-closed coverage when Bool authority is missing. | Reinforces #1467 retirement. | +| #1476 `feat(evaluator): PR-E E5 loop cardinality execution` | 2026-05-02T03:49:06Z | `Behavior::Loop`, cardinality execution, accumulator frame threading. | Hand-Rust capacity. Keeps `LoopBound::Descent` as a typed fail-closed residual. | Active. `docs/r3-program-plan.md` §10.3 routes this through `Q-EVAL-Descent-Termination-Contract`; evaluator consumes the Substrate proof token after that carrier lands. | +| #1484 `feat(evaluator): PR-E E7 symbolic-cost-only analyze_complexity wrapper` | 2026-05-02T04:57:42Z | Touched `lib.rs`; primary wrapper is in `dimension.rs`. | Thin wrapper over the existing symbolic-cost analyzer. No parallel analyzer and no new variants per PR body. | `SymbolicCostExprEquals` remains a runner/test-predicate gap, tracked in `docs/r3-program-plan.md` V2 and ROADMAP Pattern B, not as a body-evaluator regression. | +| #1496 `feat(evaluator): PR-E Bind callable entry` | 2026-05-02T08:33:41Z | `Behavior::Bind`, `eval_bind`, callable frame entry prerequisite. | Hand-Rust capacity. PR body excludes E6 lens fold, runner work, substrate changes, and new runtime carriers. | Consumed by E6-G0c/G0d and the G1 sequence. Current live pressure is G1.a static lens fold/report production; G1.b generic dispatch remains held on X1.b S1/S3. | + +## Live Follow-Up Map + +- `LoopBound::Descent`: active fail-closed evaluator residual. Owner path is + Substrate termination-proof carrier, then Evaluator consume-side wiring. +- E6 callable/report path: constructor runtime execution is retired by #1813. + Next executable evaluator slice is G1.a static lens fold/report production. + G1.b generic dispatch stays deferred behind X1.b S1/S3. +- Runner/test-predicate authority: `SymbolicCostExprEquals` and related + predicate execution gaps live under the R3 plan V2 and ROADMAP Pattern B + runner-freeze rows, not in the #1275-#1500 `lib.rs` body-evaluator sweep. From fcc6cb0d04c074af9d2992898945ea3db8b7b780 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Wed, 6 May 2026 16:02:59 +0000 Subject: [PATCH 7/9] docs: add evaluator phase 3 debt receipt handoff --- .../r3-evaluator-pr-1275-1500-debt-sweep.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md index 25f953125db..2c4ff8595ce 100644 --- a/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md +++ b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md @@ -71,3 +71,28 @@ The material residual classifications are: - Runner/test-predicate authority: `SymbolicCostExprEquals` and related predicate execution gaps live under the R3 plan V2 and ROADMAP Pattern B runner-freeze rows, not in the #1275-#1500 `lib.rs` body-evaluator sweep. + +## Phase 3 Compile Handoff + +Feed these rows into the broader `docs/audit/r3-debt-sweep-2026-05-06.md` +Phase 3 compile as evaluator-slice evidence only; this receipt does not claim +global bridge counts. + +- **Pattern C / evaluator runtime mirror evidence:** #1387 establishes the + Rust evaluator `Value` execution surface that mirrors the substrate runtime + value family for body evaluation. Treat it as R2 evaluator capacity evidence, + with retirement pressure owned by the PB-zero / v3-authoritative runtime path. +- **Pattern A / runtime-prereq evidence:** #1476 is the active Descent row. + It should feed the Phase 3 compile through + `Q-EVAL-Descent-Termination-Contract`, not as a closed evaluator item. +- **Pattern A / callable-report evidence:** #1407 and #1496 are historical + prerequisites for E6 callable execution. Constructor runtime execution is + closed by #1813; the compile should carry only the live G1.a static + lens fold/report production pressure and the G1.b generic-dispatch hold on + X1.b S1/S3. +- **Pattern B / runner predicate evidence:** #1484 should feed the + `SymbolicCostExprEquals` runner/test-predicate row, with no claim that the + body evaluator regressed or introduced a parallel analyzer. +- **Do-not-promote rows:** #1459 and #1466 should remain out of evaluator + causal history unless a later compile pass supplies narrower PR-body or + file-diff evidence. From 576a68ad41fededa8259d18ae33def3aeb2f2b84 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Wed, 6 May 2026 16:50:53 +0000 Subject: [PATCH 8/9] docs: keep evaluator callable residual open --- .../r3-evaluator-pr-1275-1500-debt-sweep.md | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md index 2c4ff8595ce..e98f99126cb 100644 --- a/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md +++ b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md @@ -10,16 +10,27 @@ an implementation brief. **Verification inputs:** local `git log --all -- src/v3/compiler/src/lib.rs`, `gh pr view` for the PR rows below, live `src/v3/compiler/src/lib.rs`, and -the current R3 routing docs: +the current in-repo R3 routing docs: - `docs/r3-program-plan.md` §10.3, especially `Q-EVAL-Descent-Termination-Contract`, `Q-EVAL-Lens-Fold-First-Slice`, and `Q-Pattern-A-First-Slice-Subscope`. -- `docs/briefs/r3-pr-e6-g0d-constructor-runtime-execution-worker.md`. - `docs/briefs/r3-pr-e6-lens-fold-readiness-audit.md`. +- `docs/briefs/r3-pr-e6-g0d-constructor-runtime-execution-worker.md`, + as a pre-implementation worker brief and STOP-condition source, not as + current retirement authority. - `ROADMAP.md` Pattern B / `test_runner.rs` predicate-authority debt. +**Authority caveat:** the in-repo routing text is not internally settled for +E6-G0d. Live `src/v3/compiler/src/lib.rs` contains the E6-G0d constructor arm +inside `eval_transform_node`, and `docs/r3-program-plan.md` has #1813-landed +references. The same plan still carries `Q-EVAL-G0d-Dispatch` / EVAL-1 open +wording, and the E6-G0d worker brief remains a docs-only pre-implementation +brief. This receipt therefore treats constructor `Callable` as implemented in +code but keeps the E6/Callable residual open for Phase 3 authority +reconciliation until the evaluator and dispatch docs agree. + ## Summary The PRs that materially built the R2 evaluator body surface are legitimate @@ -34,10 +45,12 @@ The material residual classifications are: - #1476 keeps `LoopBound::Descent` fail-closed. This remains active and routes through the Substrate termination-proof carrier before Evaluator consume-side wiring. -- #1407/#1496 left callable pressure for later E6 work. The non-Arrow - constructor `Callable` residual is now retired by E6-G0d / #1813. The - remaining E-series callable pressure is G1.a static lens fold/report - production; G1.b generic dispatch remains held on X1.b S1/S3. +- #1407/#1496 left callable pressure for later E6 work. Live code now has an + E6-G0d constructor `Callable` arm, but the in-repo routing docs still carry + conflicting open-vs-landed wording. Keep the E6/Callable residual open for + Phase 3 authority reconciliation. The same handoff should preserve the live + split between G1.a static lens fold/report production and G1.b generic + dispatch held on X1.b S1/S3. - #1484 is not a body-evaluator regression. `SymbolicCostExprEquals` remains a runner/test-predicate gap tracked outside the `lib.rs` body evaluator. - #1459 and #1466 touched `lib.rs` via broader generated/substrate fallout, @@ -50,7 +63,7 @@ The material residual classifications are: |---|---:|---|---|---| | #1374 `feat(evaluator): PR-E E2 EvalFrame lookup and Bind environment` | 2026-05-01T07:04:37Z | `EvalFrame` / evaluator stack lookup helpers in `lib.rs`. | Hand-Rust capacity slice inside the existing evaluator module. PR body explicitly excludes runtime carrier changes, list fallback, and body evaluation. | Consumed by later E1/E4/E5/Bind slices. No new debt row found. | | #1387 `feat(evaluator): PR-E E1 value behavior execution` | 2026-05-01T08:51:37Z | `Behavior::Value`, `eval_value`, `eval_port`, `eval_node`, and `evaluate_body`. | Hand-Rust evaluator capacity. Uses the Rust runtime `Value` mirror and constructs only `LiteralValue` in this slice. | Active foundation under the broader PB-zero hand-Rust retirement trajectory. | -| #1407 `feat(evaluator): PR-E E3 eager Transform application` | 2026-05-01T20:04:31Z | `eval_transform_node` for supported operator targets. | Hand-Rust capacity plus explicit unsupported transform fences. These are fail-closed residuals, not hidden bridge carriers. | FieldProject and Arrow/UserDefined callable execution later retired by E6-G0c. Non-Arrow constructor `Callable` is retired by E6-G0d / #1813. Static lens fold/report production remains G1.a; generic dispatch remains G1.b held on X1.b S1/S3. | +| #1407 `feat(evaluator): PR-E E3 eager Transform application` | 2026-05-01T20:04:31Z | `eval_transform_node` for supported operator targets. | Hand-Rust capacity plus explicit unsupported transform fences. These are fail-closed residuals, not hidden bridge carriers. | FieldProject and Arrow/UserDefined callable execution later retired by E6-G0c. Live `eval_transform_node` now includes the E6-G0d constructor arm, but the routing docs still conflict on whether G0d is landed. Carry the E6/Callable residual open into Phase 3 authority reconciliation, alongside G1.a static lens fold/report production and G1.b held on X1.b S1/S3. | | #1425 `fix(v3): P0 DB-8 receipt.json key pin + SG-0 census` | 2026-05-01T20:04:41Z | Touched `lib.rs`, but not evaluator-lane behavior. | Receipt-key / SG-0 census work outside the evaluator lane. | Not an evaluator debt row. | | #1426 `feat(evaluator): PR-E E4 Branch arm coverage` | 2026-05-01T21:29:41Z | `Behavior::Branch`, `eval_branch`, `Value::VariantValue`, branch frame/payload path execution. | Hand-Rust capacity plus explicit Bool literal-vs-variant identity gap. The PR deferred Bool `if` evaluation to shared substrate identity instead of adding a local map. | Retired by #1467/#1473 for evaluator and `lens_apply` Bool matching. | | #1459 `keen-swift-519` | 2026-05-02T03:49:09Z | Touched `lib.rs` amid broad generated/substrate changes. | No evaluator-specific hand-Rust/debt introduction identified from PR metadata available in this sweep. | Do not promote into evaluator causal history without narrower file/body evidence. | @@ -59,15 +72,18 @@ The material residual classifications are: | #1473 `test(evaluator): cover Bool branch reification` | 2026-05-02T03:48:42Z | Evaluator tests in `lib.rs`. | Test-only hand-Rust; adds fail-closed coverage when Bool authority is missing. | Reinforces #1467 retirement. | | #1476 `feat(evaluator): PR-E E5 loop cardinality execution` | 2026-05-02T03:49:06Z | `Behavior::Loop`, cardinality execution, accumulator frame threading. | Hand-Rust capacity. Keeps `LoopBound::Descent` as a typed fail-closed residual. | Active. `docs/r3-program-plan.md` §10.3 routes this through `Q-EVAL-Descent-Termination-Contract`; evaluator consumes the Substrate proof token after that carrier lands. | | #1484 `feat(evaluator): PR-E E7 symbolic-cost-only analyze_complexity wrapper` | 2026-05-02T04:57:42Z | Touched `lib.rs`; primary wrapper is in `dimension.rs`. | Thin wrapper over the existing symbolic-cost analyzer. No parallel analyzer and no new variants per PR body. | `SymbolicCostExprEquals` remains a runner/test-predicate gap, tracked in `docs/r3-program-plan.md` V2 and ROADMAP Pattern B, not as a body-evaluator regression. | -| #1496 `feat(evaluator): PR-E Bind callable entry` | 2026-05-02T08:33:41Z | `Behavior::Bind`, `eval_bind`, callable frame entry prerequisite. | Hand-Rust capacity. PR body excludes E6 lens fold, runner work, substrate changes, and new runtime carriers. | Consumed by E6-G0c/G0d and the G1 sequence. Current live pressure is G1.a static lens fold/report production; G1.b generic dispatch remains held on X1.b S1/S3. | +| #1496 `feat(evaluator): PR-E Bind callable entry` | 2026-05-02T08:33:41Z | `Behavior::Bind`, `eval_bind`, callable frame entry prerequisite. | Hand-Rust capacity. PR body excludes E6 lens fold, runner work, substrate changes, and new runtime carriers. | Consumed by E6-G0c and the later E6/G1 sequence. Current live pressure is E6/Callable authority reconciliation, G1.a static lens fold/report production, and G1.b generic dispatch held on X1.b S1/S3. | ## Live Follow-Up Map - `LoopBound::Descent`: active fail-closed evaluator residual. Owner path is Substrate termination-proof carrier, then Evaluator consume-side wiring. -- E6 callable/report path: constructor runtime execution is retired by #1813. - Next executable evaluator slice is G1.a static lens fold/report production. - G1.b generic dispatch stays deferred behind X1.b S1/S3. +- E6 callable/report path: live code contains the E6-G0d constructor runtime + arm, but the in-repo routing docs still disagree on the G0d state. Phase 3 + should keep the E6/Callable residual open until the dispatch authorities + reconcile the #1813 landing. G1.a static lens fold/report production remains + the next executable evaluator pressure, and G1.b generic dispatch stays + deferred behind X1.b S1/S3. - Runner/test-predicate authority: `SymbolicCostExprEquals` and related predicate execution gaps live under the R3 plan V2 and ROADMAP Pattern B runner-freeze rows, not in the #1275-#1500 `lib.rs` body-evaluator sweep. @@ -86,8 +102,9 @@ global bridge counts. It should feed the Phase 3 compile through `Q-EVAL-Descent-Termination-Contract`, not as a closed evaluator item. - **Pattern A / callable-report evidence:** #1407 and #1496 are historical - prerequisites for E6 callable execution. Constructor runtime execution is - closed by #1813; the compile should carry only the live G1.a static + prerequisites for E6 callable execution. Live code has the E6-G0d + constructor arm, but the compile should keep E6/Callable open until the + routing docs reconcile #1813. The same row should carry G1.a static lens fold/report production pressure and the G1.b generic-dispatch hold on X1.b S1/S3. - **Pattern B / runner predicate evidence:** #1484 should feed the From 59b796ca13e1d4280a3fe24b6e2e8abcdc1353fb Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Wed, 6 May 2026 17:40:21 +0000 Subject: [PATCH 9/9] docs: ground evaluator receipt in live dispatch docs --- .../r3-evaluator-pr-1275-1500-debt-sweep.md | 77 +++++++++---------- 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md index e98f99126cb..bf4ccc934c0 100644 --- a/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md +++ b/docs/audit/r3-evaluator-pr-1275-1500-debt-sweep.md @@ -10,26 +10,22 @@ an implementation brief. **Verification inputs:** local `git log --all -- src/v3/compiler/src/lib.rs`, `gh pr view` for the PR rows below, live `src/v3/compiler/src/lib.rs`, and -the current in-repo R3 routing docs: +the current in-repo evaluator dispatch/readiness docs: -- `docs/r3-program-plan.md` §10.3, especially - `Q-EVAL-Descent-Termination-Contract`, - `Q-EVAL-Lens-Fold-First-Slice`, and - `Q-Pattern-A-First-Slice-Subscope`. +- `docs/briefs/r3-evaluator-dispatch.md`. +- `docs/briefs/r3-pr-e5-loop-readiness-audit.md`. - `docs/briefs/r3-pr-e6-lens-fold-readiness-audit.md`. -- `docs/briefs/r3-pr-e6-g0d-constructor-runtime-execution-worker.md`, - as a pre-implementation worker brief and STOP-condition source, not as - current retirement authority. +- `docs/briefs/r3-pr-e6-g1a-static-lens-fold-dispatch-packet.md`. +- `docs/briefs/x1b-evaluator-impact-audit.md`. +- `docs/briefs/r2-evaluator-test-runner-authority-ratchet.md`. - `ROADMAP.md` Pattern B / `test_runner.rs` predicate-authority debt. -**Authority caveat:** the in-repo routing text is not internally settled for -E6-G0d. Live `src/v3/compiler/src/lib.rs` contains the E6-G0d constructor arm -inside `eval_transform_node`, and `docs/r3-program-plan.md` has #1813-landed -references. The same plan still carries `Q-EVAL-G0d-Dispatch` / EVAL-1 open -wording, and the E6-G0d worker brief remains a docs-only pre-implementation -brief. This receipt therefore treats constructor `Callable` as implemented in -code but keeps the E6/Callable residual open for Phase 3 authority -reconciliation until the evaluator and dispatch docs agree. +**Authority caveat:** this receipt does not settle the current E6-G0/G1 +implementation state. The #1275-#1500 sweep predates those later PRs, and the +in-repo dispatch/readiness docs still carry E6 callable/fold work as an active +coordination surface. Treat E6/Callable/G0 as open for Phase 3 reconciliation +until the live evaluator and dispatch/readiness docs agree that the callable +surface is executable and retired. ## Summary @@ -45,12 +41,11 @@ The material residual classifications are: - #1476 keeps `LoopBound::Descent` fail-closed. This remains active and routes through the Substrate termination-proof carrier before Evaluator consume-side wiring. -- #1407/#1496 left callable pressure for later E6 work. Live code now has an - E6-G0d constructor `Callable` arm, but the in-repo routing docs still carry - conflicting open-vs-landed wording. Keep the E6/Callable residual open for - Phase 3 authority reconciliation. The same handoff should preserve the live - split between G1.a static lens fold/report production and G1.b generic - dispatch held on X1.b S1/S3. +- #1407/#1496 left callable pressure for later E6 work. Keep E6/Callable/G0 + open for Phase 3 authority reconciliation; this receipt does not assert that + callable execution is retired. The same handoff should preserve the split + between G1.a static lens fold/report production and G1.b generic dispatch + held on X1.b S1/S3. - #1484 is not a body-evaluator regression. `SymbolicCostExprEquals` remains a runner/test-predicate gap tracked outside the `lib.rs` body evaluator. - #1459 and #1466 touched `lib.rs` via broader generated/substrate fallout, @@ -63,30 +58,29 @@ The material residual classifications are: |---|---:|---|---|---| | #1374 `feat(evaluator): PR-E E2 EvalFrame lookup and Bind environment` | 2026-05-01T07:04:37Z | `EvalFrame` / evaluator stack lookup helpers in `lib.rs`. | Hand-Rust capacity slice inside the existing evaluator module. PR body explicitly excludes runtime carrier changes, list fallback, and body evaluation. | Consumed by later E1/E4/E5/Bind slices. No new debt row found. | | #1387 `feat(evaluator): PR-E E1 value behavior execution` | 2026-05-01T08:51:37Z | `Behavior::Value`, `eval_value`, `eval_port`, `eval_node`, and `evaluate_body`. | Hand-Rust evaluator capacity. Uses the Rust runtime `Value` mirror and constructs only `LiteralValue` in this slice. | Active foundation under the broader PB-zero hand-Rust retirement trajectory. | -| #1407 `feat(evaluator): PR-E E3 eager Transform application` | 2026-05-01T20:04:31Z | `eval_transform_node` for supported operator targets. | Hand-Rust capacity plus explicit unsupported transform fences. These are fail-closed residuals, not hidden bridge carriers. | FieldProject and Arrow/UserDefined callable execution later retired by E6-G0c. Live `eval_transform_node` now includes the E6-G0d constructor arm, but the routing docs still conflict on whether G0d is landed. Carry the E6/Callable residual open into Phase 3 authority reconciliation, alongside G1.a static lens fold/report production and G1.b held on X1.b S1/S3. | +| #1407 `feat(evaluator): PR-E E3 eager Transform application` | 2026-05-01T20:04:31Z | `eval_transform_node` for supported operator targets. | Hand-Rust capacity plus explicit unsupported transform fences. These are fail-closed residuals, not hidden bridge carriers. | FieldProject and Arrow/UserDefined callable execution are later E6 surfaces. Carry E6/Callable/G0 open into Phase 3 authority reconciliation, alongside G1.a static lens fold/report production and G1.b held on X1.b S1/S3. | | #1425 `fix(v3): P0 DB-8 receipt.json key pin + SG-0 census` | 2026-05-01T20:04:41Z | Touched `lib.rs`, but not evaluator-lane behavior. | Receipt-key / SG-0 census work outside the evaluator lane. | Not an evaluator debt row. | | #1426 `feat(evaluator): PR-E E4 Branch arm coverage` | 2026-05-01T21:29:41Z | `Behavior::Branch`, `eval_branch`, `Value::VariantValue`, branch frame/payload path execution. | Hand-Rust capacity plus explicit Bool literal-vs-variant identity gap. The PR deferred Bool `if` evaluation to shared substrate identity instead of adding a local map. | Retired by #1467/#1473 for evaluator and `lens_apply` Bool matching. | | #1459 `keen-swift-519` | 2026-05-02T03:49:09Z | Touched `lib.rs` amid broad generated/substrate changes. | No evaluator-specific hand-Rust/debt introduction identified from PR metadata available in this sweep. | Do not promote into evaluator causal history without narrower file/body evidence. | | #1466 `feat(std): T-Numeric-Construction Slice 3` | 2026-05-02T01:41:30Z | Touched `lib.rs` through regenerated/bootstrap fallout. | Numeric-construction substrate/std work, not evaluator semantics. | Not an evaluator debt row. | | #1467 `fix(v3): reify Bool branch scrutinees through shared variant identity` | 2026-05-02T01:15:31Z | Evaluator Bool branch reification; also `dag.rs` and `lens_apply.rs`. | Retires bridge risk by centralizing on `Dag::bool_runtime_variant_id`; does not introduce a local Bool declaration-id map. | Retires #1426 Bool branch identity gap. | | #1473 `test(evaluator): cover Bool branch reification` | 2026-05-02T03:48:42Z | Evaluator tests in `lib.rs`. | Test-only hand-Rust; adds fail-closed coverage when Bool authority is missing. | Reinforces #1467 retirement. | -| #1476 `feat(evaluator): PR-E E5 loop cardinality execution` | 2026-05-02T03:49:06Z | `Behavior::Loop`, cardinality execution, accumulator frame threading. | Hand-Rust capacity. Keeps `LoopBound::Descent` as a typed fail-closed residual. | Active. `docs/r3-program-plan.md` §10.3 routes this through `Q-EVAL-Descent-Termination-Contract`; evaluator consumes the Substrate proof token after that carrier lands. | -| #1484 `feat(evaluator): PR-E E7 symbolic-cost-only analyze_complexity wrapper` | 2026-05-02T04:57:42Z | Touched `lib.rs`; primary wrapper is in `dimension.rs`. | Thin wrapper over the existing symbolic-cost analyzer. No parallel analyzer and no new variants per PR body. | `SymbolicCostExprEquals` remains a runner/test-predicate gap, tracked in `docs/r3-program-plan.md` V2 and ROADMAP Pattern B, not as a body-evaluator regression. | -| #1496 `feat(evaluator): PR-E Bind callable entry` | 2026-05-02T08:33:41Z | `Behavior::Bind`, `eval_bind`, callable frame entry prerequisite. | Hand-Rust capacity. PR body excludes E6 lens fold, runner work, substrate changes, and new runtime carriers. | Consumed by E6-G0c and the later E6/G1 sequence. Current live pressure is E6/Callable authority reconciliation, G1.a static lens fold/report production, and G1.b generic dispatch held on X1.b S1/S3. | +| #1476 `feat(evaluator): PR-E E5 loop cardinality execution` | 2026-05-02T03:49:06Z | `Behavior::Loop`, cardinality execution, accumulator frame threading. | Hand-Rust capacity. Keeps `LoopBound::Descent` as a typed fail-closed residual. | Active. `docs/briefs/r3-pr-e5-loop-readiness-audit.md` keeps Descent outside the cardinality slice; evaluator consume-side wiring waits on a termination-proof carrier. | +| #1484 `feat(evaluator): PR-E E7 symbolic-cost-only analyze_complexity wrapper` | 2026-05-02T04:57:42Z | Touched `lib.rs`; primary wrapper is in `dimension.rs`. | Thin wrapper over the existing symbolic-cost analyzer. No parallel analyzer and no new variants per PR body. | `SymbolicCostExprEquals` remains a runner/test-predicate gap, tracked in ROADMAP Pattern B and `docs/briefs/r2-evaluator-test-runner-authority-ratchet.md`, not as a body-evaluator regression. | +| #1496 `feat(evaluator): PR-E Bind callable entry` | 2026-05-02T08:33:41Z | `Behavior::Bind`, `eval_bind`, callable frame entry prerequisite. | Hand-Rust capacity. PR body excludes E6 lens fold, runner work, substrate changes, and new runtime carriers. | Later E6/G1 prerequisite. Carry E6/Callable/G0 open for Phase 3 authority reconciliation, plus G1.a static lens fold/report production and G1.b generic dispatch held on X1.b S1/S3. | ## Live Follow-Up Map - `LoopBound::Descent`: active fail-closed evaluator residual. Owner path is Substrate termination-proof carrier, then Evaluator consume-side wiring. -- E6 callable/report path: live code contains the E6-G0d constructor runtime - arm, but the in-repo routing docs still disagree on the G0d state. Phase 3 - should keep the E6/Callable residual open until the dispatch authorities - reconcile the #1813 landing. G1.a static lens fold/report production remains - the next executable evaluator pressure, and G1.b generic dispatch stays - deferred behind X1.b S1/S3. +- E6 callable/report path: keep E6/Callable/G0 open until the live evaluator + and dispatch/readiness docs agree that callable execution is executable and + retired. G1.a static lens fold/report production remains active evaluator + pressure, and G1.b generic dispatch stays deferred behind X1.b S1/S3. - Runner/test-predicate authority: `SymbolicCostExprEquals` and related - predicate execution gaps live under the R3 plan V2 and ROADMAP Pattern B - runner-freeze rows, not in the #1275-#1500 `lib.rs` body-evaluator sweep. + predicate execution gaps live under ROADMAP Pattern B and + `docs/briefs/r2-evaluator-test-runner-authority-ratchet.md`, not in the + #1275-#1500 `lib.rs` body-evaluator sweep. ## Phase 3 Compile Handoff @@ -99,14 +93,15 @@ global bridge counts. value family for body evaluation. Treat it as R2 evaluator capacity evidence, with retirement pressure owned by the PB-zero / v3-authoritative runtime path. - **Pattern A / runtime-prereq evidence:** #1476 is the active Descent row. - It should feed the Phase 3 compile through - `Q-EVAL-Descent-Termination-Contract`, not as a closed evaluator item. + It should feed the Phase 3 compile through the Descent residual tracked by + `docs/briefs/r3-pr-e5-loop-readiness-audit.md`, not as a closed evaluator + item. - **Pattern A / callable-report evidence:** #1407 and #1496 are historical - prerequisites for E6 callable execution. Live code has the E6-G0d - constructor arm, but the compile should keep E6/Callable open until the - routing docs reconcile #1813. The same row should carry G1.a static - lens fold/report production pressure and the G1.b generic-dispatch hold on - X1.b S1/S3. + prerequisites for E6 callable execution. The compile should keep + E6/Callable/G0 open until the live evaluator and dispatch/readiness docs + agree that callable execution is executable and retired. The same row should + carry G1.a static lens fold/report production pressure and the G1.b + generic-dispatch hold on X1.b S1/S3. - **Pattern B / runner predicate evidence:** #1484 should feed the `SymbolicCostExprEquals` runner/test-predicate row, with no claim that the body evaluator regressed or introduced a parallel analyzer.