Repository navigation
docs(roadmap): 3 novel debt rows + pipeline_authority amendment post-#637 - #652
Conversation
…ost-#637 2026-04-22 exploratory analysis (gpt-5-4-pro against main@c9758c8) surfaced 3 genuinely novel debt items not in ROADMAP. Verified each against HEAD before adding: 1. **__EMIT_BUG_{0}__ fabrication sentinels** — 3 target emit specs (dag, go, python) use sentinel-string fabrication for error-ref emission; rust correctly uses compile_error!(). Target behavior diverges between fail-closed and fabricated modes. P3 / C-6 violation. Distinct from generic "TODO" debt — this is specific same-PR target-behavior inconsistency. 2. **algebra.dag declaration-vs-template parallel authority** — OrderedRing<T> declaration (16 fields) vs ordered_ring_templates() (9+clamp) are two authorities for the same surface, already drifted. Same pattern for PartialFunction. DISTINCT from the already-tracked signature/comment mismatch row — that's prose vs declaration (doc drift); this is code vs declaration (parallel authority). P2 Boundary Discipline. 3. **browser.dag typed-carrier service-boundary collapse** — same class as already-tracked LLM flattening + GitHub auth bypass: typed carriers declared in-file, raw String used at operational boundary. P1 Modeling Faithfulness / M8 violation. Plus amended the pipeline_authority row: #637 closed the stage- bindings portion (structural PipelineStageBinding consumption added), but pipeline_compile_order_names() at :225-275 still text-slices the compile-fn body for stage ORDER. That residual is blocked on substrate capability for ordered-body reflection — named the trigger explicitly rather than leaving it as generic "unassigned" follow-up. ResourceHandle forgeability (cited by the analysis) verified as already tracked at ROADMAP:138 — no new row needed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review metadata
Findings
Verdict |
|
Review metadata
FindingsNon-blocking — amended pipeline_authority row has wrong line refs / misframes the residual ( The amendment says " Against the actual post-#637
So both the line range and the framing are off. A future reader grepping Tracked-debt hygiene point, not a principle violation — the dissolution trigger is documented, bounded to "substrate gains ordered-body reflection," and named. Fix in a follow-up or a light amend. VerdictAPPROVE_WITH_COMMENTS — docs-only diff, small and narrowly scoped. The 3 new debt rows (EMIT_BUG sentinel across dag/go/python emit specs, |
…lved it Codex BLOCKING review on #652 sha 457da80. My earlier amendment claimed #637 left a stage-order text-slicing residual blocked on substrate capability for ordered-body reflection. That was wrong. Verified against src/v3/compiler/src/pipeline_authority.rs: - ordered_pipeline_stages() IS the authority function (explicit in its doc comment: "the declaration order of the bindings in pipeline.dag is the ordering authority") - It reads PipelineStageBinding declarations structurally from the Dag (no text-slicing) - pipeline_compile_order_names() still exists but is called from reconcile_with_compile_body() as a DRIFT CHECK, not an authority path - The drift check fails closed if the text-sliced compile-body stage order disagrees with the structural authority So #637 FULLY closed the original P2 debt — authority moved to PipelineStageBinding declaration order. What remains is a defensive fail-closed drift check, which is a legitimate belt-and-suspenders pattern per INVARIANTS P3, not a violation. Fix: mark the row as RESOLVED. Earlier characterization of a substrate-capability blocker was a misread — I conflated "text- slicing exists in this file" with "text-slicing is the authority path." The two are different shapes. Lesson captured: authority location matters more than text-form location. Verify which function IS the authority before claiming a capability gap. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…unction names Pro's APPROVE_WITH_COMMENTS on #652 sha 457da80 caught a residual inaccuracy in my correction commit c7b33ca. I got the framing right (authority moved, drift check remains) but named the wrong function as the text-slicing site. Verified against pipeline_authority.rs post-#637: - pipeline_compile_order_names() at :185 is a thin wrapper around ordered_pipeline_stages(dag).map(.stage_name) — NO text slicing - compile_body_stage_names_from_source() at :130-180 is the actual text-slicing function - Called only from reconcile_with_compile_body() at :110-128 as fail-closed drift check Updated row to point at the correct function names and line ranges. Traceability preserved for future readers who grep. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review metadata
1. Story of the diffThis is a docs-only 2. Invariant categories
3. VerdictAPPROVE_WITH_COMMENTS The |
|
Review metadata
Verdict: APPROVE — documentation-only change to Spot-checked:
The "RESOLVED" row self-corrects an earlier (incorrect) review characterization and is retained as a historical cross-reference with an explicit suggestion to sweep it in the stale-receipt pass — appropriate handling. No findings against INVARIANTS / modeling-discipline / CODING / TESTING — the diff doesn't touch code, and the debt rows it adds align with P1/P2/P3 framing as used elsewhere in the file. |
|
Review metadata
APPROVE Diff is docs-only and looks clean. I spot-checked the amended |
…scalations Pro's APPROVE_WITH_COMMENTS on #652 sha 457da80 flagged that the three new debt rows had end-state dissolutions but no named triggers, failing the tracked-debt discipline bar (per INVARIANTS P5 and modeling-discipline §95-106). Plus: the D/F/G lane escalations (merry-owl-732 stopped pre-PR, smart-dove-561 PR #657 findings, sunny-bee-588 PR #654 findings) revealed that two of my three rows were framed wrong — not just missing triggers, but naming the wrong dissolution target entirely. Updates: **Row: __EMIT_BUG sentinels (F rescope).** - Was: "converge three target specs on native compile-time error forms" - Now: all four are already fail-closed in native sense (F finding). Real dissolution is upstream at src/v2/05_emit.dag:996, 1046 — refactor to produce Diagnostic + halt instead of emitting target-specific sentinels. - Named trigger: when those two call sites are refactored to Diagnostic + halt, error_type_template becomes unreachable. - Cross-ref: PR #657 investigation receipt. **Row: algebra.dag declaration-vs-template (G reclassification).** - Was: "derive *_templates() from the type declaration" - Now: templates carry per-method metadata (size_effect, cost_shape, callback_element_position) declarations can't (G finding). Not redundant authorities — separate structural layers. - Named trigger: when Lane E substrate-carrier-port design lands a chosen option for per-method metadata carriers, *_templates() converges to the chosen form. - Cross-ref: PR #654 investigation receipt + Lane E coordination note. **Row: browser.dag typed-carrier collapse.** - Was: "route service ops through declared carriers" - Now: same description, but named trigger added — "when transport layer can consume typed carriers end-to-end." Lane H PR #658 pilots the pattern; success unblocks LLM + GitHub dissolutions that consume the same pattern. All three rows now have checkable dissolution triggers per INVARIANTS.md P5 tracked-debt discipline. Two rows additionally have their dissolution paths correctly pointed upstream rather than at surface symptoms. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/gpt-5.4 - Commit:
7362672f· Trigger:schedule - Thinking:
426s wall
Non-blocking — Improvements (fix in-PR if easy, else defer to roadmap)
ROADMAP.mdThe new EMIT_BUG{0}_ row contradicts Lane F's own receipt: PR #657 says Python is not fail-closed under deferred annotations, so the roadmap should not say all four targets already fail closed.
ROADMAP — Verified
- PR classification: This is a design/docs-only PR because the GitHub diff changes only ROADMAP.md.
- pipeline_authority structural read: ordered_pipeline_stages() and PR #637 do make PipelineStageBinding declaration order the authority, with compile-body text slicing retained only as a fail-closed drift check.
- algebra declaration-vs-template asymmetry: dsl/std/algebra.dag really does split authority today: declarations carry operator-facing Arrow fields while *_templates() carry per-method metadata and kernel synonym surfaces.
- browser typed-carrier boundary debt: dsl/extdeps/browser.dag declares BrowserConfig/BrowserContext/Page/Element and imports Url while several service inputs and outputs still use raw String, so the debt itself is grounded.
✅ The roadmap update is otherwise aligned with the checked code and thesis/invariant framing; I only see the one wording fix above.
…G row Codex non-blocking on #652 sha 7362672: my rescoped EMIT_BUG row flattened Lane F's finding into "all four sentinels are already fail-closed" — but F's own investigation (PR #657) specifically notes Python's sentinel degrades under deferred annotations: > "Under `from __future__ import annotations` (default in many modern > Python codebases) annotations are stored as strings and never > evaluated at import, so both (a) and (b) defer failure to runtime > type-checkers or typed reflection — weaker than Rust's guarantee." My flattening contradicted F's own receipt (PR #657). Fix: preserve the nuance. Rust/Go/dag ARE fail-closed in native sense; Python is weaker under deferred annotations. The upstream-dissolution argument still holds — if the emit decision moves to Diagnostic + halt at 05_emit.dag:996, 1046, the Python deferred-annotations gap also evaporates since the sentinel never reaches target compilation at all. Added that note explicitly. Accurate summarization of F's finding restored. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Three novel debt rows surfaced by the 2026-04-22 exploratory analysis (gpt-5-4-pro against main@c9758c8), each verified against HEAD before adding. Plus amendment of the
pipeline_authorityrow to reflect #637's partial close.Novel (3 new rows)
__EMIT_BUG_{0}__fabrication sentinels across 3 target emit specs —dag/emit.dag:54,go/emit.dag:107,python/emit.dag:115use sentinel-string fabrication; rust correctly usescompile_error!(). Target behavior already diverges between fail-closed and fabricated output. P3 / C-6 violation. S scope.algebra.dagdeclaration-vs-template parallel authority —OrderedRing<T>declaration (16 fields) vsordered_ring_templates()(9+clamp) already drifted. Same pattern forPartialFunction. Distinct from already-tracked signature/comment-mismatch debt — that's prose vs declaration; this is code vs declaration. P2. M scope.browser.dagtyped-carrier service-boundary collapse — typedBrowserConfig/BrowserContext/Page/Element/Urldeclared; service ops use rawString(headless, url, selector, ...). Same class as tracked LLM + GitHub rows. P1 / M8. M per service family.Amendment (1 existing row)
pipeline_authority.rs— #637 closed the stage-bindings portion (structuralPipelineStageBindingconsumption landed). Residual:pipeline_compile_order_names()at:225-275still text-slices the compile-fn body for stage order. Blocked on substrate capability for ordered-body reflection (related to SG-2c-proper emit-capability program). Named the trigger explicitly.Not a new row
ResourceHandle forgeability (also cited by the analysis) verified as already tracked at
ROADMAP.md:138. No action.Test plan
pipeline_authority.rs:225-275post-Pipeline Authority — structural-read cleanup #637🤖 Generated with Claude Code