Repository navigation
docs(roadmap): 8 novel debt rows from 2026-05-08 paired analyses - #2195
Conversation
… 2026-05-08 paired analyses Adds Post-merge debt section (2026-05-08) with novel-finding rows from paired Exploratory + Reflective gpt-5-5-pro analyses at main@e25e43c and main@b09e0c88 (all 4 conversation links cited). Already-tracked findings confirmed against earlier waves and not duplicated. 8 novel rows: - F1: DiagnosticDetailExpectation::Contains(String) substring matching as claim authority — P2/P3 violation in test verification surface - F8: SymbolicCost lacks first-class Semiring witness (deferred until function-valued data fields lower) - F10: ValueBody::Structural field-label-as-identity through lower→emit (sharpens existing substrate-capability row) - u128 grounding_pilot mirror drift — already-stale, not hypothetical - FieldProject illegal field_label/field_child disagreement - Reflected witness carriers forgeable from .dag (ParamRef/TransformRef/ElementRef/BoolPortRef) - StructuralEffectShape.combine_effects bespoke lattice merge (missed BoundedLattice<T> instance) - Peano materialization cap (256) repeated in 3 authorities despite "single authority" comment 10 process course corrections from reflective passes flagged for dissolution-discipline cadence (not row-shaped): constructor ambient prefix scan, PathCall source-order fragility, predicate registry as Rust-side authority, domain refinements regressed pending Q-Regex-Primitive, SymbolicCostExprEquals shape-not-proof, EmitModelVariants generation/ratchet need, L6 projection errors swallowed, cross_target_coverage doc/code drift, hand-Rust ratchet rate vs .dag TestClaim migration, Go map stub fail-closed compatibility. Routed by Brian via PM clipboard relay; PM scope per user_session_role_pm_under_director "(e) audit-receipt + docs/audit authorship". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review metadata
Verdict: APPROVE Diff is a documentation-only |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
bfabaa1b· Trigger:schedule - Thinking:
117s wall
BLOCKING (1)
Root Cause
ROADMAP.mdNarrative process notes are being used as tracking authority → make each correction a row/table entry with bounded scope, owner-or-next-step, and named dissolution/acceptance condition, or attach each to an existing row.
ROADMAP — Verified
- Eight novel debt rows: Rows F1/F8/F10/b09#1/#2/#5/#7/#9 are documented, bounded, and name dissolution paths plus owners.
ROADMAP — Incomplete
- Process course corrections: The ten corrections are documented but not yet trackable enough to satisfy the roadmap's owner-or-next-step and dissolution-trigger discipline.
| - **`StructuralEffectShape.combine_effects` bespoke local lattice merge** (b09:#7): `src/v3/lenses/effect_enumeration.dag:50-54` defines `StructuralEffectShape = NoEffect | ReadShaped | WriteShaped | UnknownEffect { reason: String }`; `:175-178` `branch_effect` folds via custom merge; `:195-207` `combine_effects` is a hand-rolled bounded-lattice-like join over an ordered set. `dsl/std/algebra.dag:303-315` already declares `Lattice<T>` and `BoundedLattice<T>`. The `combine_effects` is a missed algebraic structure — bespoke merge instead of declared lattice instance. `UnknownEffect.reason` carries provenance, so the algebra needs care: either declare a total order (`NoEffect < ReadShaped < WriteShaped < Unknown`) plus a reason-combination law, or split "effect strength" from "coverage diagnostic reason" so the algebra is over a reason-free carrier and failures remain outside the algebra. Dissolution: declare the `BoundedLattice<StructuralEffectShape>` instance + lift fold through generic lattice merge. Owner: Substrate / lens-framework lane (cross-references hand-rolled-lattice tracked row at line 384 — this is a NEW instance for that class). | ||
| - **Peano materialization cap repeated as `256` literal in 3 authorities** (b09:#9): `dsl/std/termination.dag:238-243` says **single numeric authority** for literal-sized Peano witness depth, `peano_literal_materialization_cap() -> Int { 256 }`; `src/v3/std/termination.dag:138-140` mirrors with same value (M9/P2 mirror); `src/v3/compiler/src/dag.rs:1022-1027` mirrors as `pub const MAX_PEANO_MATERIALIZATION: i64 = 256` with comment "Must stay numerically aligned with `dsl/std/termination.dag`". Comment claims "single authority"; reality is three-way manual sync. Dissolution: generate the Rust cap from the `.dag` authority OR add a test that parses both `.dag` mirrors + asserts numeric equality until the v3 mirror and Rust mirror dissolve. Owner: Peano carrier program (cross-references existing Peano refinement-cap dissolution row). | ||
|
|
||
| **Process course corrections** (from reflective passes — not row-shaped, but flagged for dissolution-discipline cadence): (1) constructor ambient prefix scan in `src/v3/compiler/src/lower.rs` (bridge becoming steady state — thread expected outer type via `TransformTarget::Callable` metadata; delete the scan); (2) PathCall source-order fragility (data binding must precede recursive functions — make `ValueBody` population order-independent OR document order as part of language model); (3) predicate registry `KNOWN_PREDICATES` in `src/v3/compiler/src/lower.rs` is now central Rust-side semantic authority — needs `.dag` predicate-declaration dissolution path; (4) domain refinements regressed pending `Q-Regex-Primitive` (CommitSha/Email/Url/SemVer/Timestamp lost `pattern`/`format`/`content` fields in `dsl/std/types.dag`) — don't let regex-primitive drift; (5) `SymbolicCostExprEquals` is typed shape but `NotYetImplemented` in runner — typed-carrier-landed ≠ verification-landed; don't credit R3 closure on shape-only; (6) `EmitModelVariants` centralized mirror needs generation OR exhaustiveness ratchet against `src/v3/std/emit_model.dag`; (7) L6 projection errors swallowed via `unwrap_or_default()` in `src/v3/grounding_cross_target_meta/src/coverage.rs` public API — surface typed `ProjectionCoverageError` to L6 gate; (8) doc/code drift in `src/v3/std/cross_target_coverage.dag` ("empty data state" comment vs 41 rows populated) — "Documentation describes live state" cleanup pass; (9) hand-Rust test ratchet rate exceeds `.dag` `TestClaim` migration rate — each new ratchet should retire one existing hand-Rust test as `.dag` `TestClaim`; (10) Go `map` template stub `/* map({recv}, {body}) */` not fail-closed compatible if it can reach emission — make Go map real OR fail closed at lowering. |
There was a problem hiding this comment.
BLOCKING: The process-correction bundle records ten follow-ups without row-level owner/lane and checkable dissolution triggers, violating ROADMAP's debt-row shape and INVARIANTS P5 scaffold-dissolution discipline.
Per codex BLOCKING at gunbc#2195: process-correction bundle records 10 follow-ups without row-level owner/lane and checkable dissolution triggers, violating ROADMAP debt-row shape and INVARIANTS P5 scaffold-dissolution discipline. Original framing labeled the bundle "not row-shaped, but flagged for dissolution-discipline cadence" — internally contradictory: putting them in ROADMAP without per-row owner+dissolution violates ROADMAP shape regardless of meta-framing. Resolution: each of the 10 follow-ups now lives as its own debt row matching the section's existing format (bold finding name + source pin + description + dissolution direction + owner). 10 new rows, no removals. Per-row owner attribution: - Constructor ambient prefix scan → substrate-capability lane - PathCall source-order fragility → PathCall lane - KNOWN_PREDICATES Rust-side authority → substrate-reflection lane - Domain refinements regressed → substrate-capability lane (regex/content typing) - SymbolicCostExprEquals shape-not-proof → R3 Verification Mgr (gate #40) - EmitModelVariants generation/ratchet → emit-model substrate consolidation - L6 projection errors swallowed → T-Ground-CrossTarget-Meta lane (R2) - cross_target_coverage doc/code drift → small-scope cleanup - Hand-Rust ratchet rate vs .dag TestClaim → PB Manager / SG-0 dissolution-cadence - Go map template stub → T-Ground-Go lane Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
BLOCKING addressed in
|
Same BLOCKING — already addressed in
|
|
Review metadata
1. Story of the diffThis PR adds a new 2. Invariant categories
N/A — the diff is ROADMAP documentation only; it discusses substrate and implementation debt but does not change Dag storage, substrate declarations, Rust constructors, or lowering/emission behavior (
Compliant — the rows name the relevant principle pressure instead of laundering debt as neutral work: e.g. F1 explicitly identifies diagnostic substring matching as a P2/P3 string-authority failure and gives the typed-carrier dissolution (
N/A — no Rust implementation code is added or refactored. The docs do point future work toward coding-compliant shapes, such as replacing Rust-side mirrors/constants with generated or substrate-consumed authorities (
Compliant — no behavior changed, so no immediate regression test is required; where a debt row depends on a ratchet rather than an immediate implementation, the row names the intended test/ratchet shape, such as comparing
N/A — this patch does not edit or override a locked design document. It references existing gates/lane ownership, such as R3 closure gate #40 for
Compliant — the new entries are shaped as tracked debt rather than open-ended TODOs: each row documents the problem, bounds it to a concrete surface or lane, names a dissolution direction, and assigns an owner. Clear examples include the Peano cap mirror row with generate-or-ratchet dissolution and Peano owner ( 3. VerdictAPPROVE. This is a docs-only debt-ledger update, and the added rows are bounded, owned, and dissolution-oriented rather than new untracked scaffolding. I do not see a blocking invariant issue in the diff. |
Summary
Adds Post-merge debt section (2026-05-08) to ROADMAP with 8 novel-finding rows surfaced by the paired Exploratory + Reflective gpt-5-5-pro analyses at
main@e25e43c+main@b09e0c88. Already-tracked findings confirmed against earlier waves and not duplicated.8 novel rows
DiagnosticDetailExpectation::Contains(String)substring matching as claim authorityverification.dag:67-75+test_runner.rs:3908-3916SymbolicCostlacks first-classSemiring<SymbolicCost>witnessalgebra.dag:168-181(deferred-witness comment)ValueBody::Structuralfield-label-as-identity through lower→emitlower.rs:3514-3604+emit.rs:2575-2610u128drift.dagaddsu128butgrounding_pilot/lib.rsstill says deferredgrounding_pilot/src/lib.rs:6-8, 256-265FieldProjectfield_label/field_childdisagreementdag.rs:1890-1892admits illegal stateParamRef/TransformRef/ElementRef/BoolPortRefvalidity in Rust constructors onlysubstrate.dag:337-374combine_effectsStructuralEffectShapebespoke lattice merge (missedBoundedLattice<T>instance)effect_enumeration.dag:195-207256literal repeated in 3 authorities despite "single authority" commenttermination.dag:243+src/v3/std/termination.dag:140+dag.rs:102710 process course corrections (flagged but not row-shaped)
Constructor ambient prefix scan, PathCall source-order fragility, predicate registry Rust-side authority, domain refinements regressed pending Q-Regex-Primitive, SymbolicCostExprEquals shape-not-proof, EmitModelVariants generation/ratchet need, L6 projection errors swallowed, cross_target_coverage doc/code drift, hand-Rust ratchet rate vs .dag TestClaim migration, Go map stub fail-closed compatibility.
Sources cited
All 4 analyst conversation URLs in the section header:
main@e25e43c: chatgpt review 69fb2dcdmain@e25e43c: chatgpt review 69fb3b6cmain@b09e0c88: chatgpt review 69fc7f52main@b09e0c88: chatgpt review 69fc8cfaAuthority chain
PM clipboard-relay from Brian routing to PM scope per
user_session_role_pm_under_director"(e) audit-receipt + docs/audit authorship". Not Director-tier ratification (those are separate PRs); this is the audit-receipt-authoring layer.Debt receipt
Net debt INTRODUCED: 8 new tracked debt rows + 10 process course corrections (visibility); ~155 LOC of new ROADMAP text.
Net debt RETIRED: 0 (this is audit-row authoring, not retirement).
Class B audit-receipt addition per §7.6.2 shape-2.
Test plan
cargo fmt --all --check(pre-push hook)🤖 Generated with Claude Code