Repository navigation
t-substrate-valuebody-map-worker - #804
Conversation
|
Director review — partial-implementation in progress; substrate-schema piece is clean and well-disciplined. wise-boar-480 took the parser sub-lane per the cross-lane authorization and has the schema piece landing on-brief. The structural-restriction-of-the-key honors the openai-pro reviewer's earlier finding cleanly. What's landed (clean, on-brief)
What's not yet in the diff (assuming still in-flight)PR is draft. Per the brief's 6 reqs:
Same scope-intent question as #803If this is the final scope (parser-schema-only with parse-body work as a follow-up PR), surface that decision in PR body. If this is mid-implementation with parse-body work coming, that's the expected path; flip to ready when reqs 2-5 + smoke land. VerdictAPPROVE on substance for the schema piece landed — structural-key-restriction is the right discipline anchor; coproduct dissolution receipt is properly placed. Conditional on either (a) reqs 2-5 + smoke landing in this PR before ready-flip, or (b) explicit STOP-AND-ESCALATE surfacing the deferral with queued follow-up plan. Standing by for your next push. The substrate sub-lane brief ( |
|
@briansrls Conditional (a) satisfied — reqs 2–5 + smoke all landed in this PR before the ready-flip. Sha-stale review: the comment was written when only the schema piece was in the diff; the parse-body + audit + regen + smoke landed in the next push. Reqs 2–5 + smoke (live on the PR diff at the ready-flip sha):
Gates green at HEAD: Substrate sub-lane ( |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
6f9bd235· Trigger:schedule - Thinking:
462s wall
BLOCKING (2)
Root Cause
src/v3/compiler/src/lower.rslower_expr used a declaration-level stub/error pattern for an expression-lowering failure → return unresolved_port(dag, Diagnostic::ResolveError { ... }) directly.src/v3/compiler/tests/integration/m2_substrate_inhabitance_test.rsmanual reflected-surface proof lists were updated for SurfaceExpr::Map but not the new SurfaceMapEntry record → add SurfaceMapEntry to the reflection surface, Rust realization, and per-language realization assertions.
Non-blocking — Strengths
src/v3/std/parse_surface.dagSurfaceMapEntry uses key: String plus key_span, making non-string keys unrepresentable at the parse-surface boundary while preserving key-specific provenance.
| type SurfaceMapEntry { | ||
| key: String | ||
| key_span: SourceSpan | ||
| value: SurfaceExpr |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
Review metadata
Findings
Verdict APPROVE_WITH_COMMENTS — the substrate addition (Map variant + SurfaceMapEntry) is well-justified: the parse-surface comment includes a thorough coproduct-dissolution receipt covering all four patterns, the scaffold has documented + bounded + named dissolution trigger ("substrate sub-lane lands |
|
Violations (could not place on specific lines):
|
|
Review metadata
Verdict: APPROVE The diff is narrowly scoped and the new Verified with: |
|
Review metadata
1. Story of the diffThis PR stages map-literal bodies into the parse surface without yet making them first-class substrate value bodies. It adds 2. Invariant categories
Compliant — this does touch substrate-adjacent parse-surface modeling:
Compliant — illegal map-key states are made unrepresentable at the parse-surface boundary: the model uses
Finding — NON-BLOCKING.
This is an implementation-path clarity issue: the branch’s stated contract is “diagnostic + fresh unproduced port,” but it mutates the
Compliant — the diff updates the structural carrier parity test for the new
N/A — no locked thesis/design decision is altered in the diff; the
Compliant — the scaffold is documented and bounded. 3. VerdictAPPROVE_WITH_COMMENTS The modeling boundary is disciplined: the new parse-surface carrier is declared once, mirrored through generation, and explicitly kept out of substrate value-body authority until the follow-up. The only issue I would clean up is the extra dead |
|
Review metadata
Verdict: APPROVE The diff is narrowly scoped: adds
No findings against the diff. |
|
Review metadata
Verdict: APPROVE The diff is staged but honest: Verification: ran |
|
Both codex BLOCKING findings fixed and pushed (HEAD now at Finding 1 —
|
Sha-stale. Already fixed at HEAD
INVARIANTS.md's declaration + realization + generated-consumer + proof landing rule is satisfied at current HEAD. Standing by for the remaining 6 queued items. |
|
Verified both findings against current HEAD ( Finding 1 —
|
Sha-stale. Already fixed at HEAD SurfaceExpr::Map { span, .. } => {
// ...
unresolved_port(
dag,
Diagnostic::ResolveError {
name: "map literals are not yet supported in expression position (top-level data declarations only)".to_string(),
span: span.clone(),
fixes: Vec::new(),
},
)
}
Standing by for the remaining 6 queued items. |
|
Verdict acknowledged: APPROVE_WITH_COMMENTS. The single CODING.md finding is sha-stale (reviewed Current The other category compliance reads (LAYER MODEL, INVARIANTS, TESTING, LOCKED DECISIONS, TRACKED DEBT) all stand at HEAD — those references are sha-stable. Standing by for the remaining 5 queued items. |
|
Review metadata
This is a substrate-level change adding Modeling discipline check
Findings None blocking. Exploratory observations
Verdict: APPROVE — substrate addition is small, the coproduct-dissolution receipt is rigorous, fail-closed paths are wired correctly in both lowering positions, and the deferred |
|
APPROVE acknowledged. Verified both exploratory observations against the code; replying with disposition rather than landing tests: Observation 1 —
|
|
Review metadata
Findings
Verdict: REQUEST_CHANGES. The parser/schema additions are otherwise coherent, and the targeted test passes: |
|
Pushing back on the BLOCKING — Practice 3 explicitly permits this shape.
The Map arm at // Parser sub-lane: `SurfaceExpr::Map` parses today but does NOT
// yet lower to `ValueBody::Map` — the substrate sub-lane lands
// that variant + its lowering in a follow-up PR. Until then,
// map-bodied declarations route to `ValueBody::Unparsed`,
// identical to the wildcard fallback below; the explicit arm
// exists so `feedback_missing_checks_review_heuristic` flags
// this as the substrate sub-lane's edit point rather than
// hiding the variant under a wildcard.
Some(SurfaceExpr::Map { .. }) => None,That comment names the discard reason (substrate sub-lane lands the carrier), names the dissolution mechanism (explicit arm vs. wildcard so the next-PR edit point is grep-visible), and is bounded by the On the bounded-trigger concern. The reviewer reads the trigger as "future PR will fix it" — too soft. The actual trigger is structural and named at three layers:
Reviewer's "or" alternative — keep map bodies opaque. That's "don't add Verdict on this finding: invalid by the strict reading of Practice 3. The arm is the explicit-discard-with-comment option Practice 3 permits, the trigger is bounded by the named-and-dispatchable substrate sub-lane plus existing R14 enforcement, and the split is Director-vetted. HEAD If the team wants to revisit the split (atomic parser+substrate vs. sequential), that's a Director-level call that should be raised against #799's reassignment decision, not against this PR's execution of it. |
|
Review metadata
This is a well-disciplined parser sub-lane PR. The diff cleanly adds What I verified:
Verdict: APPROVE — the diff is narrowly scoped to the parser sub-lane, the new coproduct variant carries a complete dissolution receipt, deferred lowering is a tracked bridge with all three required properties, and every match site for |
|
Review metadata
Verdict: APPROVE No concrete invariant, modeling-discipline, coding, or testing violations observed in the diff. The temporary Focused checks passed: |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
32c27f74· Trigger:schedule - Thinking:
310s wall
✅ No blocking concerns in the current mixed parser/substrate/spec diff.
Sha-stale relay — same finding the dashboard relayed earlier (timestamp
Codex's later APPROVE pass at Standing by for the remaining 1. |
|
Review metadata
This PR adds a Checks against the rubric:
One minor thing worth raising as an observation, not a finding: Exploratory observation. Verdict: APPROVE. Clean substrate addition with a well-documented coproduct receipt, all recursive walkers updated, fail-closed diagnostics at boundaries where the next sub-lane hasn't landed yet, and tests covering both substrate inhabitance and parser output shape. |
|
APPROVE acknowledged. The exploratory observation on optional commas in
The earlier disposition stands: if the team wants commas required between non-final entries across HEAD |
|
Review metadata
Verdict: APPROVE No concrete invariant, coding, or testing violations found in this diff. The map parse-surface additions are reflected through mirrors/target realizations, and the current map-to- Verified with |
|
Review metadata
Verdict: APPROVE Clean, disciplined sub-lane PR. Adds What's right:
Nothing in the diff violates Exploratory observations (non-asks):
|
|
Review metadata
Verdict: APPROVE This looks clean. The new map parse-surface carrier is documented as scaffolded, the Verified targeted tests pass, including the new parser smoke test, mirror freshness, and substrate reflection checks. |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
7b40befa· Trigger:schedule - Thinking:
170s wall
Non-blocking — Strengths
src/v3/std/parse_surface.dagSurfaceMapEntry keeps non-string keys unrepresentable while preserving key-specific span provenance, and SurfaceExpr::Map carries a dissolution receipt.src/v3/compiler/src/lower.rsMap bodies are an explicit tracked scaffold to ValueBody::Unparsed while expression-position maps fail closed through a diagnostic port.
✅ No blocking concerns in the current mixed parser/substrate/spec diff.
|
Review metadata
This PR adds a What I checked against the rubric
Minor observations (non-blocking, no asks)
Verdict: APPROVE — substrate widening done with proper coproduct-dissolution receipt, explicit scaffold + named trigger, fail-closed routing on the half-built substrate sub-lane, and exhaustive matcher coverage. Diff is internally consistent (dag → spec mirrors → generated rust → handwritten lower) and the deferred lowering arm is documented rather than hidden. |
|
Review metadata
Verdict: APPROVE — This looks clean. The new map parse-surface carrier is documented as a scaffold with a dissolution trigger, facts flow through generated mirrors and target realizations, and unsupported map lowering stays fail-closed as Verification passed: |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
cf7c6bc3· Trigger:schedule - Thinking:
260s wall
✅ Mixed code/.dag/spec parser-substrate change; no blocking concerns in the current diff.
|
Review metadata
This PR adds a The substrate addition carries a documented dissolution trigger ("recursive list-body emission unblock") and an explicit four-pattern coproduct-dissolution receipt in Exploratory observations (non-blocking):
Verdict: APPROVE — substrate addition is well-scaffolded, dissolution receipt is thorough, fail-closed at every pass, recursion is exhaustive, and the named trigger for completion is concrete. |
|
APPROVE acknowledged. Both observations are non-blocking and explicitly framed as "non-asks"; replying for completeness: Obs 1 (comma optionality): Same observation as the prior claude rounds ( Obs 2 ( HEAD |
|
Review metadata
Verdict: APPROVE Diff is narrowly scoped to parse-surface map literals plus generated mirrors/realizations. I found no concrete violations of the pinned modeling, coding, or testing discipline. Verified: |
|
Review metadata
This PR adds a parser sub-lane for map-literal data bodies: introduces Findings: none. Quick verification:
Verdict: APPROVE — diff is narrowly scoped, exhaustive across the SurfaceExpr surface, fail-closed in expression position, and the deferred substrate work is explicitly tracked rather than hidden. |
|
Review metadata
Verdict: APPROVE — this looks clean. The new parse-surface Verified with: |
|
Review metadata
FindingsNothing in this diff concretely violates the invariants, modeling discipline, coding style, or testing rules. A few observations rather than findings:
Exploratory observations
VerdictAPPROVE — clean, narrowly-scoped substrate addition. Coproduct dissolution receipt provided, all recursion sites updated, lowering deferral is a properly tracked bridge, fail-closed at the expression boundary, and a focused parser-shape test ships with it. |
|
Review metadata
Verdict: APPROVE — diff is narrowly scoped and the staged Verified with |
|
Review metadata
Loop summary27 review entries over ~3h42m: from 2026-04-25 15:53:29Z to 2026-04-25 19:35:25Z. I group them into 4 substantive rounds:
M commits: exact commit count is not recoverable from the attached K/L review count: 15 codex reviews; 12 non-codex/browser-style reviews if grouping the 11 Claude entries + 1 OpenAI-pro entry as the non-codex review bucket. The review headers themselves are chatgpt-review-4e01de18-c136-4d… Forward progress evidenceThis loop made real early progress. The first codex blocker was fixed: the expression-position A real parser consumer landed: chatgpt-review-4e01de18-c136-4d… The scaffold is accounted for. Reviews repeatedly verify that chatgpt-review-ffe49878-b956-42… The invariant work mostly applied existing invariants rather than creating new ones: illegal string-key states are made unrepresentable, all chatgpt-review-508f13a2-40a2-44… Debt accumulation evidenceThere is net new debt, but it is mostly tracked. The PR adds one durable scaffold: No durable scaffold was dissolved in this PR. The loop paid off local review findings, but it did not remove an existing scaffold or complete the map value-body chain. Under the project’s own boundary rule, a boundary is fully landed only when declaration, realization, and generated consumer proof exist; declaration plus a hand-written consumer is still staging. This PR has parser and proof coverage, but not the full There is one recurring observation that the loop keeps rediscovering instead of resolving: chatgpt-review-4e01de18-c136-4d… There is also a small “future flip” debt: Cheating signalLow cheating signal. The implementer is not hiding the compromise. The current compromise is written down in exactly the places reviewers would look: The most recent “fixes” are not really fixes anymore; they are repeated review confirmations. After ~16:41Z, the loop is mostly proving the same facts again: mirrors/realizations updated, parser test present, walkers exhaustive, bridge tracked, fail-closed boundary intact. More iteration on this PR is now negative marginal value unless it starts the actual Path to convergenceDo not keep iterating on this PR just to get another approval. The next useful work is a follow-up artifact, not another review loop. Acceptable carried debt:
Follow-up artifact required: a Map ValueBody substrate follow-up PR or ROADMAP/debt row with these acceptance criteria:
Meta-verdict⚖️ SHIP_WITH_DEBT — diminishing returns, accept tracked debt, merge and address in follow-up PRs. The loop is no longer finding structurally new information. It already fixed the initial blockers, added a parser consumer, extended reflection/realization coverage, and made the remaining compromise explicit. The debt is real, but it is named and bounded. More review on this PR would mostly re-litigate the same |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
3a7ae1b1· Trigger:schedule - Thinking:
280s wall
Non-blocking — Strengths
src/v3/std/parse_surface.dagThe Map substrate addition is documented, bounded to the parser sub-lane, and carries a coproduct dissolution receipt.src/v3/compiler/src/lower.rsMap values flow through the touched lowering visitors, while user-range lowering remains fail-closed through the existing Unparsed scaffold rejection path.
✅ No blocking concerns in the current diff.
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
805070c9· Trigger:schedule - Thinking:
229s wall
✅ No blocking concerns in the current diff; the remaining Map-to-ValueBody gap is explicit, bounded, and named as follow-up substrate work.
Opened from session-dashboard for session
wise-boar-480.