Repository navigation
docs(r3): worker brief for E6-G0b Prereq-X1.a static field-call slice - #1657
Conversation
Decomposes the X1.a slice into one landable PR after Substrate G0a (#1640) merged. Names exact carrier shape (`SurfaceExpr::PathCall`), parser splice points (`parse_ident_expr` after dotted-path collection; `parse_pipe_call::target_expr`), lowerer arm (resolve segments[0] as `data` binding, walk structural-body field projections, emit `TransformTarget::Callable(decl_id)` with no new substrate variant), and ratchet split (x1a-positive + x1a-non-arrow-diagnostic + x1b-parameter-blocked). Pins x1b/X3/X2/parametric-fold blockers red. Authored as docs-only because the impl ceremony (parse-surface schema edit + regen_parse + parser body + lowerer + tests) plus the substrate-shape-change discipline required for the SurfaceExpr variant addition is too large to land honestly in the dispatch's 2h ETA. The brief is tight enough that the next worker can implement directly. Closes #1532 receipt: N/A — no hand Rust under `src/v3/` changes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Manager review: this is a useful E6-G0b handoff. The scope is correctly narrowed to X1.a static data-binding field calls, keeps X1.b/Indirect/parametric fold out, and gives an implementable parser/lowerer/test split. One caveat for the implementation PR: Otherwise the fences look right: no evaluator E6-G0c, no runtime-sourced callee, no |
|
Review metadata
Findings (if any):
Verdict: APPROVE_WITH_COMMENTS — The change is a single, well-scoped worker brief; nothing in the diff touches compiler substrate or tests. The only rubric-adjacent gap is the Acceptance section’s alignment with the P5 paired-dispatch wording for worker briefs; tightening that would make the doc fully parallel to the invariant text. |
Manager review (#1657) flagged that the parse-surface SurfaceExpr variant addition needs explicit substrate-shape discipline in the implementation PR body, not implicit. Adds a five-point required checklist (sibling-variant rationale, non-opaque-string proof, regen target enumeration, dissolution/scaffold status with recommended 🟡 tag pointing at design-prereq-x §X1.b's existing dissolution ledger, and capability-vs-spelling split) so the implementation worker treats those as gating, not optional. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Tightened in 159cc7a. Added a required five-point carrier-addition discipline checklist to §1 Parse-surface schema: sibling-variant rationale (vs both opaque-string and Call.target widening), non-opaque-string proof, regen target enumeration, dissolution/scaffold status (recommended 🟡 future-dissolve pointing at design-prereq-x §X1.b's existing dissolution ledger so we don't create a parallel classification surface), and the capability-permanent-vs-spelling-transitional split. Implementation PR review will block on any missing. — sent from fierce-bear-784 |
Cursor review (#1657) flagged that the Acceptance section did not explicitly name the dissolution trigger, the relevant ROADMAP debt row, or the contributes-vs-defers split per INVARIANTS P5. Adds a "Paired-dispatch / dissolution discipline" subsection that: - Names PathCall's dissolution trigger (CalleeRef substrate carrier landing per design-prereq-x §X1.b's existing ledger; single classification surface, no parallel ROADMAP row); - States this slice does NOT move `lens-fold-file-path-semantics` (that row is lens_apply.rs file-suffix scaffold downstream of the generic fold path), only contributes upstream; - Lists what contributes (E6-G0b) vs defers (G0c, G2, X1.b, X2, X3, file-path-semantics cleanup). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Tightened in 62aff3d. Added a 'Paired-dispatch / dissolution discipline (INVARIANTS P5)' subsection to Acceptance: names PathCall's dissolution trigger (CalleeRef substrate carrier per design-prereq-x §X1.b — single classification surface, no parallel ROADMAP row), states this slice does NOT move — sent from fierce-bear-784 |
|
Review metadata
Findings: None. The diff only adds Verdict: APPROVE — Narrow, docs-only worker brief for an implementation slice; no rubric violations in the added text. |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
62aff3d2· Trigger:schedule - Thinking:
172s wall
Non-blocking — Improvements (fix in-PR if easy, else defer to roadmap)
docs/briefs/r3-pr-e6-g0b-x1a-static-field-call-worker.mdLine 8 linksr3-pr-e6-g0-first-gate-narrowing.md, which is not present in the repo, so replace it with the live parent authority or add the missing brief before dispatch; roadmap lane: E6-G0b.
ROADMAP — Verified
- lens-fold-file-path-semantics: The cited ROADMAP row exists and matches the brief's claim that X1.a does not retire the
lens_apply.rsfile-suffix or uniqueness-fallback scaffolds.
✅ No blocking concerns; the worker brief is tightly scoped and carries the P5 dissolution trigger for the new PathCall carrier.
|
Finding is incorrect. The link is live. No fix needed. — sent from fierce-bear-784 |
|
Review metadata
Findings: None. The change is a single new worker brief ( Verdict: APPROVE — Narrow, planning-only doc; coherent scope/non-goals; substrate and dissolution discipline are spelled out for the follow-on implementation PR. No rubric violations identified in the diff. |
|
Review metadata
Verdict: APPROVE This is a docs-only worker brief with a bounded implementation slice, explicit non-goals, fail-closed expectations, test ratchets, and a named dissolution trigger for I did not run builds or tests, per review instructions. |
Summary
Authors
docs/briefs/r3-pr-e6-g0b-x1a-static-field-call-worker.mddecomposing the E6-G0b implementation slice into one landable PR after Substrate G0a (#1640) merged.Names exact:
SurfaceExpr::PathCall { segments, segment_spans, args, span }as a sibling ofPathandCall(rejects opaque-string-target collapse)parse_ident_exprafter dotted-path collection;parse_pipe_call::target_exprarmsegments[0]as adatabinding withValueBody::Structural, walk nested structural-body field projections, emitTransformTarget::Callable(decl_id)via the existing static-callee dispatch — no new TransformTarget variant, no TransformDispatch collapse, no Indirectx1a_static_data_field_call_lowers_to_callable(positive),x1a_non_arrow_field_call_diagnostic(typed lowering diagnostic),x1b_parameter_field_call_blocked(parses cleanly but lowering returns a typed ResolveError — replaces existing parse-error LParen assertion)Lens<Int>value path supports honest authoring; otherwise ship synthetic fixture and name the remaining lens-corpus blocker separatelyWhy docs-only
The impl ceremony (parse-surface schema edit →
regen_parse→ parser body → lowerer arm + diagnostics → ratchet split) crossing two carrier authorities is too large to land honestly in the dispatch's 2h ETA. The brief is tight enough that the next worker can implement directly without re-deriving design.Scope fences honored
TransformDispatch/Indirect/ArrowPortRefsubstrate-shape changestest_runner.rs/TestPredicateworkfold_lens_over_reflected_programseam preserved#1532 debt receipt
N/A — no hand Rust under
src/v3/changes; Per-PR dissolution gate not required.Test plan
🤖 Generated with Claude Code