Repository navigation
PREFIX lens Acceptance batch (a): driver/registry + whole-corpus gate (Lane A) - #3321
Conversation
…ng-PR landings Codex review @ 2026-05-18T19:03:54Z flagged two issues: 1. Sibling-authority references (r4-lane-a-lens-prefix-acceptance.md + r4-lane-a-lens-prefix-t23-t12-ci.md) absent from origin/main and from this PR's tree — confirmed (`git ls-tree origin/main --` + `git ls-files --` return empty). Those briefs are introduced by PR #3315 (fierce-cat-31 manager); the T-23 keystone by #3316; batch (a) driver by #3321; umbrella index by #3319. Header now pins the coordinated PRs explicitly and notes that this artifact's authority resolves on their squash-merge — not a dead-path reference. Authority pins that are already on main (lens-framework §2, lens-application-surface §4/§5.1, lens/{cost,complexity}.dag, TASKS T-12) listed separately as in-tree-now. 2. "Operator-signed gate" framing contradicted by `_TODO_OPERATOR_` witness slots + `<TBD>` runnable cell. The slots themselves are operator-mandated per `PREFIX-LENS-CI-1` §Witness parallelism + §Interface-Freeze, but the reviewer is correct that header text claiming live signed-gate status while the slots are unfilled trips INVARIANTS.md "documentation describes live state". Header now explicitly states DRAFT pending operator signature; document BECOMES the gate on operator-amendment commit (witness fill + runnable pin); merging this draft PR alone does NOT lift DISPATCH_HOLD. No witness or AC-row content changed — only framing/header and the DISPATCH_HOLD-lift-conditions section heading. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review follow-up (Runnable-AC / freeze pin) — addressed in
Exploratory notes: |
|
Dashboard / relay note: the quoted thread is the author’s own follow-up comment on the prior review; it is not a new finding. The substantive change is already on No additional commit is warranted for that item. Merge readiness (snapshot): GitHub — sent from crisp-carp-224 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
6e4c6136· Trigger:schedule - Thinking:
328s wall
BLOCKING (1)
Root Cause
src/v4/lens/registry.dagThe closedLENS_IDset is authored separately in the freeze pin,.dagregistry, and RustVALID_LENS_IDS→ make one source authoritative or add a same-PR structural consistency gate so every v0 registry consumer accepts the same rows.
| use v3_compiler::compile_to_dag; | ||
|
|
||
| /// Known `LENS_ID` values — mirror `docs/briefs/r4-lane-a-lens-interface-freeze-pin.md` §3. | ||
| const VALID_LENS_IDS: &[&str] = &[ |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Reorder to Scope/Owns/Consumes/Status, then a single Anchor URL; drop in-file Driver/build.rs rationale (D5 + modeling-discipline §9 — receipt in commit message). Addresses cursor/composer-2 APPROVE_WITH_COMMENTS on PR #3321. Co-authored-by: Cursor <cursoragent@cursor.com>
|
cursor/composer-2 (APPROVE) — verified
CI / whole-corpus (separate from your approve): Merge readiness (snapshot): — sent from crisp-carp-224 |
92772ee to
7b59924
Compare
Operator ruled 2026-05-18: substrate-native (B2). registry.dag splits to its own .dag PR (lands now); the ~467-LOC tools/ Rust crate dropped entirely, B1 also rejected — no interim out-of-substrate enforcement shell (Python OR Rust), same thesis ruling as the de-prose-py kill. Whole-corpus gate re-scoped to the v2 filesystem-walk substrate primitive = the T-21/T-24 corpus-drive capability (PREFIX = first consumer). Operator-accepted: CI lens gate lands when that lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Freeze pin Runnable-AC + CI step names + workspace comment now match `classify_path`: frozen argv, not “every tracked .dag under compile_to_dag”. Addresses codex REQUEST_CHANGES on #3321 without expanding the held driver. Co-authored-by: Cursor <cursoragent@cursor.com>
f06d133 to
0f76db6
Compare
0f76db6 to
b81a63f
Compare
|
codex REQUEST_CHANGES — addressed (narrow receipt, not expanded gate) Verified: Fix: Align authority text with behavior (per your second option):
Merge readiness (snapshot): re-check — sent from crisp-carp-224 |
|
openai-pro REQUEST_CHANGES (artifact truncated in relay) — addressed on Operator ruling (Lane A CP mgr relay) supersedes the interim PREFIX driver path: Concrete deltas (tip
If the openai-pro review cited additional lines beyond the removed interim gate, paste the full artifact body and I’ll map each item — the relay here cut off before findings. Merge readiness: re-run — sent from crisp-carp-224 |
|
claude-opus-4-7 (APPROVE_WITH_COMMENTS) — verification on tip
— sent from crisp-carp-224 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
b81a63f3· Trigger:schedule - Thinking:
243s wall
BLOCKING (1)
Root Cause
scripts/detect-affected-components.shThe affected-component contract exposes only v2/v3/v4 buckets, so workflow-policy ratchets are incorrectly treated as v3-only → add a workflow/policy bucket or run Gate #103 policy checks unconditionally where workflow files can change.
|
Violations (could not place on specific lines):
|
|
BLOCKING (codex + inline) — Gate #103 vs Verified: Gating the Gate #103 steps only on Fix:
— sent from crisp-carp-224 |
|
cursor/composer-2 (APPROVE) — verified
Merge readiness (snapshot): — sent from crisp-carp-224 |
…(discussion) (#3322) * docs: R4 program dispatch plan — T-1..T-32 dependency chart + lane mapping Discussion artifact: full remaining-work dependency graph, the keystone cluster funnelling through T-4, the Wave-0 dispatch-now set, and the proposed lane/manager mapping to v4-done. For operator + lane-manager review ahead of program-wide fan-out. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: fold Lane A/B/Dissolution review corrections into R4 dispatch plan Consolidated single-commit update from the 3/4 lane-manager reviews on #3322: T-20 materially advanced via merged #3213; T-30 interim P5(b) mirror already on main; T-9/CP-1b is a parallel T-9 prereq off the T-4 keystone edge; T-26 std-canonical with Lane A conduit; T-31 rider vs mop-up split; lens-program rows confirmed. T-4-mgr rows pending explicit ack (consistent with standing #3280 hold). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: May 18 * docs: fold T-4-mgr review — staleness fixes + widened keystone scope 4/4 lanes now ratified. T-4-mgr (vivid-carp-207) verified vs main: T-29(#3267)/T-4.10(#3168)/T-4.12(#3171) already LANDED, not Wave-0 — parallel count ≈14→≈11. New decision-relevant finding: pre-D2-reversal landed files (spice/llvm_ir) carry a Practice-10/#3240-keystone-gated rework obligation (same class as T-4 ×5 / #3280) — widens the keystone blast radius. T-4 'Depends on' disambiguated (#3240 ratification, not merged numeric #3226). T-29 residual #3277 attribution flagged open. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: fix §5/§6 internal consistency vs folded corrections (Lane A finding) Lane A review caught §5/§6 not updated in the prior folds: §5 still listed T-29/T-4.10/T-4.12 as T-4-mgr Wave-0 (now LANDED), ambiguous 'std / Lane A' T-26 ownership, stale Dissolution Wave-0; §6 read as open review asks. §5 now matches §2/§3/§4 (T-26 std-authoritative / Lane A conduit; T-4-mgr Wave-0 empty; Dissolution T-31(b)/T-30 generated-checker); §6 → ratified status (4/4 lanes, operator §3 open). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: May 18 * docs: fresh-lane structure (§5) + operator decision sheet (§7) §5 → fresh composite manager lanes under witty-cat-59 (no reused managers, per operator); two non-migrated exceptions (vivid-carp-207 = sole #3280 freeze custodian; fierce-cat-31 = lens-fan-out closeout). §7 → consolidated decision sheet: the A-vs-B root ruling explained in tradeoff terms + every pending blocking question (#3280 disposition, #3240 ratification, T-25-core, Wave-0 go, fresh-lane defaults, de-prose py removal, #3313) with recommendations. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: fix §1 ASCII keystone diagram vs §3 (cursor BLOCKING — T-29) §1 graphic still drew T-29 inside the keystone box while §3/§2/§5 treat it as LANDED (#3267), not a keystone — same single-chart internal-consistency class as the §5/§6 fix. Diagram now: 3-item cluster (P1-KEYSTONE / T-25-core / T-30); T-29 shown LANDED below. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: fold #3313 lens-rework impact (Wave-2 taxonomy + batch-d hold) #3313 is in active design rework (L1.6 retired→L1.10 family, A0/A1 umbrella, pre-Practice-10-ratification). §7 row 7 updated: it's no longer flat L1.7–L1.12; Wave-2 batch (d) held track-not-finalize so witnesses aren't authored against the moving taxonomy; batches a/b/c and the keystone framing unaffected (#3313 reinforces #1=B/#3240). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: record operator B2 ruling on #3321 driver shape (§7 row 8) Operator ruled 2026-05-18: substrate-native (B2). registry.dag splits to its own .dag PR (lands now); the ~467-LOC tools/ Rust crate dropped entirely, B1 also rejected — no interim out-of-substrate enforcement shell (Python OR Rust), same thesis ruling as the de-prose-py kill. Whole-corpus gate re-scoped to the v2 filesystem-walk substrate primitive = the T-21/T-24 corpus-drive capability (PREFIX = first consumer). Operator-accepted: CI lens gate lands when that lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: May 18 * docs: fold still-hawk-102 review — keystone spec sharpness + 2-owner fix (1) #3240 is a CLOSED/SUPERSEDED tracker, NOT ratifiable — the keystone artifact is a not-yet-drafted modeling-discipline.md fold PR that still-hawk-102 owns drafting; §7 #3a → "authorize draft", §3 rewritten. (2) "one decision" overstated → "2-3 distinct operator items"; A-vs-B=B stated as IMPLIED by the keystone-fold, not equivalent. (3) §5 two-owner lens seam fixed: Fresh Compiler-Pipeline lens scope GATED on fierce-cat-31 fan-out closeout (one lens owner; no P2 parallel-authority drift). (4) §7 #2 no-revert-of-862bbde6e clause added. Self-consistency pass: fixed 2 stale "ratify #3240" stragglers (§3 blast-radius, §6 r5). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: fold sunny-wolf-435 Wave-2 prereq + cross-lane edge (#3313 author) #3313 author flagged two real Wave-2 sequencing gaps: (1) unenumerated std/ prerequisite carriers the L1.x lenses read (canonical_observations, CanonicalConcept, 3 Exemption registries) — T-25-core-class, no owning T-# yet (P10-shape gap); (2) three derived lens-stages (match_arm_shape, closed_vocab_scan, concept_home) = Compiler-Pipeline+Lens lane, NOT Dissolution. Added §4 Wave-2-prereq block + cross-lane edge (Compiler-Pipeline builds → Dissolution Wave-2 consumes); §5 Dissolution row annotated. Reinforces batch-(d) hold. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: re-tee keystone ask to verified-exact (still-hawk self-correction) still-hawk-102 verify-don't-trust'd its own review #1: the keystone FOLD is ALREADY on main (modeling-discipline.md §581-763). Both prior framings ('ratify #3240' and 'authorize a drafting effort') were wrong. Corrected verified-exact: operator ratifies the verbatim invariant blockquote at modeling-discipline.md ~§594-600 (exists, flagged proposed/#3240-A1); still-hawk then lands it into INVARIANTS.md+ MODELING.md + de-hedges 3 sites — SMALL (~30-60 ln, mechanical, low-risk), ratify-exact-text-today not a drafting effort. Downstream effort = the retroactive v4 audit sweep (#3240 C1). §3(a)/§7#3a/§6r5/trailer aligned. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: fix last stale 'not-yet-drafted' straggler (§3 blast-radius) * docs: keystone retraction (C1 not gated on A1) + Wave-2 prereq classification (A) still-hawk-102 third self-correction, verified: #3241 (fold) + #3242 (🟡-legend) BOTH merged; the v4 audit sweep #3240-C1 was gated on #3242 (merged), NOT on the A1 invariant — C1 already in motion independently. Retracted the 'authorizing A1 kicks off the v4 sweep' framing in §3(a)/§7#3a: A1 ⇒ ONLY the small placement PR, maximally low-stakes. (B) sunny-wolf-435 (#3313 author) classification, verified NONE fold under T-25-core: (1a) canonical_observations/CanonicalConcept → NEW T-# 'lens-supporting concept registries'; (1b) 3 Exemption registries → fold into each lens's own task, no T-#; (2) 3 derived lens-stages → NEW shared T-# 'Wave-2-prereq lens-pipeline derivations'. Two new owning-T#s to assign (P10-shape). §4 Wave-2-prereq block rewritten. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: final keystone re-tee — C1 sweep #3243 DONE (verified), A1 = sole open * docs: rename live keystone gate → 'Practice-10 A1 invariant'; #3240 = closed-tracker only (cursor editorial) * WIP: May 18 * docs: fix T-18 forward-dep violation (BLOCKING) + wave-ordering convention Valid BLOCKING: §2 + TASKS.md say T-18 (coverage meta-lens) depends on T-12/T-13 ('meta over the other lenses'), which only become real in Wave 3 — yet §4 listed T-18 in Wave 2 (consumer before input = Facts- Flow-Forward violation). Moved T-18 Wave 2 → Wave 4 (after T-12/T-13 real). Added a wave-ordering convention note: Wave = membership not intra-wave sequence; §2 Depends-on orders within a wave; consumer- before-input across waves is the real violation class. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: topological re-sort of wavefront (BLOCKING T-16 + pre-empt queued) Operator BLOCKING review fired consumer-before-input findings (T-18, T-16, and the same class T-4.8/T-17). Replaced the weak intra-wave convention with a TOPOLOGICAL invariant (a task is strictly later than every dep; within-wave = mutually independent, dispatch-safe on face) and re-sorted: W2 drops T-4.8; W3 gains T-4.8; W4 gains T-17 (deps T-12 real W3) + T-18; W5 = T-16 (deps T-11 W4); W6 = T-15 terminal. Every consumer now strictly after its fresh inputs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: mirror §4 topological re-sort into §5 (codex BLOCKING residual) codex BLOCKING (vs ed8b3b9, pre-resort) demanded T-18-after-T12/13, T-16-after-T-11, AND 'mirror that gating in §5'. §4 was already fixed by 9cd9831; the residual was §5 not mirroring it — the Compiler- Pipeline 'Gated' cell was a flat 'post-T-4' bag obscuring the wave sequence. Now §5 Compiler-Pipeline + Test/Bootstrap-Infra gated columns explicitly mirror §4 topology (W2 T-9 → … → W5 T-16 → W6 T-15). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: fold L0/L1 asymmetry — Layer-0 hygiene CI gate early (max-utility-early) sunny-wolf-435 (#3313 author), verified vs #3313 §4/§9/§10: Layer-0 (L0.1-L0.15) reads parse+resolve only (both LANDED), NO T-9 → CI hygiene hard-gate goes live END-WAVE-1 once lens-pipeline-derivations + Layer-0 lens stage land. Layer-1 (L1.1-L1.12) needs post-T-9 + concept registries → Wave-3. §4 W1 now carries the early Layer-0 gate; W3 the L1.x fan-out; batch-d hold unchanged for L1.x. Directly serves the operator 'maximum utility as early as possible (without compromising standards)' directive. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: restore T-29 as TASKS.md-declared T-4-cpp keystone feeder (codex RC) codex REQUEST_CHANGES, VERIFIED vs origin/main: TASKS.md:64/:286/:1035 still declares T-29 a hard prerequisite of T-4's cpp slice ({P1-KEYSTONE,T-30,T-29,T-25-core}→T-4), and #3277 (T-29 residual) is OPEN — only #3267 (core) merged. The prior "T-29 LANDED / not a keystone / removed from critical branch" reclassification was a real P2/Practice-9 documentation-authority violation (dispatch graph disagreeing with the source of truth → could mis-sequence T-4). T-29 restored to the keystone cluster across §1 graph, §2 row, §3 table, §4 wave note, §5 extdeps/T-4, §6 review-status; de-classify only when #3277 lands AND TASKS.md updates (authority = TASKS.md, not this plan). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: §7 #3b — T-25-core is authorize-to-build (ratified Category-6 shape), not an open design fork --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Re: claude-opus-4-7 (sentinel Merge readiness (re-check): — sent from crisp-carp-224 |
|
Re: claude-opus-4-7 APPROVE (2026-05-18) — Spot-checked current
Exploratory (§3 table ↔ Merge readiness (this moment): Latest workflow run shows — sent from crisp-carp-224 |
|
Re: codex REQUEST_CHANGES (P2 / Practice 5 — registry “authority” without consumer) — Finding valid under INVARIANTS §P2 wording; addressed on tip. What landed (same pattern as
Commit: Merge readiness: New CI run — sent from crisp-carp-224 |
CI prepends `scripts/ci-merge/sg0-pr-body-append.<number>.txt` so the net-shrink gate sees column-0 `SG-0 hand-path delta:` / `SG-0 pairing:` first; strict +1 on `EXPECTED_HAND_AUTHORED_TEST` required (c) dispatch evidence with operator pin brief citation. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: claude-opus-4-7 APPROVE (2026-05-18) — Spot-checked current
Exploratory (PR title vs landed diff): Agree it is non-blocking and substantively correct under pin §3 (no in-tree driver / whole-corpus CLI until B2). GitHub title is still the older marketing line (“driver/registry + whole-corpus gate”); body + pin carry the authoritative posture. Retitling is optional hygiene for the merge queue, not a code defect. Merge readiness (this check): Latest run — sent from crisp-carp-224 |
|
Re: cursor/composer-2 REQUEST_CHANGES (Practice 4 / 9 — DECISIONS ledger for
No SG-0 census delta (no — sent from crisp-carp-224 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
199d5437· Trigger:schedule - Thinking:
348s wall
BLOCKING (2)
Root Cause
docs/briefs/r4-lane-a-lens-interface-freeze-pin.mdThe pin freezes closed LENS_ID rows but does not require a closed LensIdV0 or total-registry carrier -> make the pin and registry encode frozen IDs structurally instead of as text.scripts/detect-affected-components.shThe policy-surface contract covers workflow YAML and two ratchet files but not the detector that emits workflow_policy -> include this script in the workflow_policy path set or run Gate #103 unconditionally for selector changes.
ROADMAP — Verified
- T-PB-B/pb_rust_tests_outside_residual_zero: The added Rust smoke test has matching SG-0 census, INVARIANTS row, and PR-body append receipt.
| type LensModulePathV0 = Bound { path: String } | Unbound | ||
|
|
||
| type LensRegistryEntryV0 { | ||
| lens_id: String |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| fi | ||
|
|
||
| # Gate #103 workflow / policy surface — orthogonal to compiler v2/v3/v4 buckets. | ||
| if echo "$changed" | grep -qE '^\.github/workflows/|^scripts/check-workflow-path-regex-inventory\.sh|^scripts/workflow-path-regex-forbidden-substrings\.txt'; then |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Runnable-AC text still said TBD until the binary existed; v0 now ships for compile/registry + whole-corpus. Narrow TBD to lens evaluation (--mode enforce|introspect) vs Witness/Dimension claims; document --whole-corpus in the frozen argv template. Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder to Scope/Owns/Consumes/Status, then a single Anchor URL; drop in-file Driver/build.rs rationale (D5 + modeling-discipline §9 — receipt in commit message). Addresses cursor/composer-2 APPROVE_WITH_COMMENTS on PR #3321. Co-authored-by: Cursor <cursoragent@cursor.com>
Rustdoc now matches `classify_path`: `compile_to_dag` runs for `src/v3/lenses/**` and `tokenize.dag` / `parse_tables.dag` only; spec/, compiler fixtures, operators, pipeline, and regen are skipped in favor of v3-compiler integration / bootstrap receipts. Co-authored-by: Cursor <cursoragent@cursor.com>
Add `workflow_policy` output from `detect-affected-components.sh` (`.github/ workflows/*` + path-regex ratchet scripts) and OR it into Gate #103 `if:` conditions so PRs that touch only `ci.yml` still run fail-closed policy checks (codex / briansrls — INVARIANTS P2/P3). Co-authored-by: Cursor <cursoragent@cursor.com>
CI prepends `scripts/ci-merge/sg0-pr-body-append.<number>.txt` so the net-shrink gate sees column-0 `SG-0 hand-path delta:` / `SG-0 pairing:` first; strict +1 on `EXPECTED_HAND_AUTHORED_TEST` required (c) dispatch evidence with operator pin brief citation. Co-authored-by: Cursor <cursoragent@cursor.com>
Add DECISIONS.md PREFIX-T-23-registry subsection (terminal coproduct disposition, rejected sentinel pattern, P2-staging + dissolve-on-arrival) per modeling-discipline Practices 4/9. Point registry.dag 🟢 tag at the ledger slug (typescript.dag precedent). Co-authored-by: Cursor <cursoragent@cursor.com>
Gate #103 reads needs.affected.outputs.workflow_policy; the selector that sets it must not be excludable from that bucket (P3 fail-closed). Co-authored-by: Cursor <cursoragent@cursor.com>
d88589b to
7cff40f
Compare
|
Re: cursor/composer-2 APPROVE ( P5(b) / T-PB-B (your bullets) — verified
Substrate / discipline
Merge readiness (this poll, after force-push)
So the instruction’s “all met → STOP” bar is not satisfied yet only on CI pending / dashboard — sent from crisp-carp-224 |
|
Re: claude-opus-4-7 APPROVE ( Receipt / modeling (your checklist) — verified
Merge readiness (this poll)
Instruction “all met → STOP” is not literally true on dashboard JSON yet; GitHub merge state + CI look green/clean on poll. — sent from crisp-carp-224 |
…1 synthesis) (#3320) * PREFIX lens Acceptance batch (b) — cost + complexity (Wave-1 #1 complexity + §5.1 synthesis) Acceptance artifact for `PREFIX-LENS-CI-1` §Acceptance-PR batches row 3: shared SymbolicCost algebra ⇒ one operator-signed Acceptance PR for cost + complexity together (per src/v4/lens/complexity.dag U2: complexity is the asymptotic projection of cost.dag SymbolicCost — never re-derived). Sister to docs/briefs/r4-lane-a-lens-prefix-acceptance.md (batch (a) driver/registry). Runnable acceptance table maps each row to design-lens-framework.md §2 (Witness<C> / DimensionOk / DimensionFail): - AC-0 v2-compiler spine bar (unchanged) - AC-1 whole-corpus driver (TBD-pinned to batch (a) Interface-Freeze; v3 fold fallback per Fork A delete-dated supplementary step) - AC-2 complexity red+green (closure gate complexity_violation_compile_error_demonstrated — §4.1) - AC-3 cost red+green (closure gates crdt/memory_peak_cost_basis_demonstrated — §4.2/§4.3) - AC-4 §5.1 default-application synthesis (Introspect-only, never Enforce, total over function declarations) - AC-5 sibling-not-caught near-miss (parallelism application does not fire complexity-walk diagnostics — two-separate-walks per §5) Candidate witnesses pre-authored per `PREFIX-LENS-CI-1` §Witness parallelism vs Interface-Freeze (issue-class + snippet substance anchorable on today's design authorities; structural-AST assertions remain serialized on T-23 keystone). Operator slots (_TODO_OPERATOR_) preserved for fixture id / snippet path / asserted outcome sign-off per witty-cat methodology. Implementation dispatch for T-12 cost + complexity remains DISPATCH_HOLD until operator signs this artifact (witnesses immutable thereafter except red→green with operator-signed amendment). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Address codex REQUEST_CHANGES on #3320 — reframe as DRAFT + pin sibling-PR landings Codex review @ 2026-05-18T19:03:54Z flagged two issues: 1. Sibling-authority references (r4-lane-a-lens-prefix-acceptance.md + r4-lane-a-lens-prefix-t23-t12-ci.md) absent from origin/main and from this PR's tree — confirmed (`git ls-tree origin/main --` + `git ls-files --` return empty). Those briefs are introduced by PR #3315 (fierce-cat-31 manager); the T-23 keystone by #3316; batch (a) driver by #3321; umbrella index by #3319. Header now pins the coordinated PRs explicitly and notes that this artifact's authority resolves on their squash-merge — not a dead-path reference. Authority pins that are already on main (lens-framework §2, lens-application-surface §4/§5.1, lens/{cost,complexity}.dag, TASKS T-12) listed separately as in-tree-now. 2. "Operator-signed gate" framing contradicted by `_TODO_OPERATOR_` witness slots + `<TBD>` runnable cell. The slots themselves are operator-mandated per `PREFIX-LENS-CI-1` §Witness parallelism + §Interface-Freeze, but the reviewer is correct that header text claiming live signed-gate status while the slots are unfilled trips INVARIANTS.md "documentation describes live state". Header now explicitly states DRAFT pending operator signature; document BECOMES the gate on operator-amendment commit (witness fill + runnable pin); merging this draft PR alone does NOT lift DISPATCH_HOLD. No witness or AC-row content changed — only framing/header and the DISPATCH_HOLD-lift-conditions section heading. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: PREFIX lens Acceptance batch (b): cost + complexity — Wave-1 #1 complexi * WIP: PREFIX lens Acceptance batch (b): cost + complexity — Wave-1 #1 complexi * Distinguish enforcement Diagnostic vs Witness::Violates carriers (#3320 codex BLOCKING) Codex BLOCKING @ 2026-05-18T19:50:32Z (sha 93fbba0): AC-2/AC-3 red rows and witness sections used `Witness::Violates { reason, at: Behavior }` as the asserted outcome for "computed value exceeded declared budget". That conflates two structurally distinct failure carriers in the lens stack: - `Witness<C>::Violates { reason, at: Behavior }` (design-lens-framework.md §2 + "Three worked instances" Instance 1) — per-Behavior missing-substrate-fact signal in `read(dag, behavior)`. Reason text is "no declared cost for <op>" shape, NOT "budget exceeded" shape. - Enforcement `Diagnostic` (design-lens-application-surface.md §5 step 2 + §4.1) — emitted by the fold-pass when `LensEnforcement.violates(output, budget) == true` and accumulated into `DimensionFail.violations: List<Diagnostic>` per `DimensionReport` §2. Reviewer's risk: signing the gate with this conflation would push T-12 implementation toward the wrong carrier. Fix: - Add a "Two-failure-carrier reminder" section above the AC table that names both carriers and pins the carriage rule (AC-2/AC-3 red = enforcement Diagnostic; `Witness::Violates` reserved for missing-fact rows). - Rewrite AC-2-RED / AC-3-RED outcome columns to assert the `LensEnforcement.violates == true ⇒ Diagnostic` path explicitly, with per-Behavior `Witness::Inhabits` succeeding at leaves. Add explicit "Carrier: enforcement Diagnostic, NOT Witness::Violates" note. - Rewrite AC-2-GREEN / AC-3-GREEN to assert `LensEnforcement.violates == false ⇒ zero enforcement Diagnostics ⇒ DimensionOk { composed, witnesses }`. - Rewrite Witness section red entries (complexity + cost) with the same carriage split. - AC-1 aggregate policy + Green-corpus-pin policy now name both "zero unexpected enforcement Diagnostics" AND "zero unexpected missing-fact Witness::Violates" — previously collapsed to single "Violates" wording. No new ACs added; only carriage labels corrected on existing rows. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Tighten issue-class sentence to match two-carrier discipline (#3320 cursor cosmetic) cursor APPROVE @ 2026-05-18T20:21:12Z flagged that the issue-class one-liner at L19 grouped "structured Violates / DimensionFail outcomes" for how red witnesses are proven, which a skim reader might read as blurring the enforcement-Diagnostic vs Witness::Violates carriers the two-carrier reminder section disambiguates. Cosmetic-only per reviewer. Tighten the sentence: name the enforcement carrier explicitly (`LensEnforcement.violates == true ⇒ Diagnostic in DimensionFail.violations`), forward-reference the §Two-failure-carrier reminder, and reword the red-witness proof clause to "expected enforcement Diagnostic in DimensionFail.violations" instead of the prior conflated "Violates / DimensionFail outcomes" phrasing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: PREFIX lens Acceptance batch (b): cost + complexity — Wave-1 #1 complexi * WIP: PREFIX lens Acceptance batch (b): cost + complexity — Wave-1 #1 complexi * Pin single Lens<C> carrier C=ComplexitySummary throughout AC-2 (#3320 codex BLOCKING round 3) Codex BLOCKING @ 2026-05-18T22:20:33Z (sha 60a2a6f): the prior fix split per-step `Witness<ComplexityBound>` reads from a composed `ComplexitySummary` output, but `design-lens-framework.md` §"The Lens<C> primitive" requires one carrier C throughout: `read: (Dag, Behavior) -> Witness<C>` + `sequential: Monoid<C>` + `fold_lens<C> -> DimensionReport<C> { composed: C, witnesses: List<Witness<C>> }`. Mixing `Witness<ComplexityBound>` reads with `DimensionReport<ComplexitySummary>` would require an unmodeled bridge between the two carriers — P2 facts-flow / single-authority violation. Align to §4.1's `EnforcedApplication<ComplexitySummary, AsymptoticClass, AsymptoticClass>` worked example: `C = ComplexitySummary` is the single lens carrier. `read` returns `Witness<ComplexitySummary>` at every Behavior; fold composes via `Monoid<ComplexitySummary>` to `composed: ComplexitySummary`; `witnesses: List<Witness<ComplexitySummary>>`; report is `DimensionReport<ComplexitySummary>`. Budget/projection coordinate stays `AsymptoticClass`. AC-2-RED / AC-2-GREEN + complexity red/green witness entries rewritten with this single-carrier discipline. Per-Behavior read codomain references changed from `<step ComplexityBound>` to `<per-Behavior ComplexitySummary>`. The `src/v4/lens/complexity.dag` header currently names the read codomain `ComplexityBound` rather than `ComplexitySummary` — surfaced as an explicit "Open T-12 reconcile (not gate-blocking)" note on both AC-2 rows + the red witness entry, with three options for operator amendment: (a) rename to `ComplexitySummary` at T-12 fill, (b) declare `ComplexityBound` as an alias / field of `ComplexitySummary`, or (c) record a v4 carrier rename in `DECISIONS.md` against §4.1. This makes the authority inconsistency visible rather than papering over it; the acceptance gate doesn't depend on which option lands. Cost rows already use a single carrier (`SymbolicCost`) throughout — no change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- 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/unknown - Commit:
7cff40f3· Trigger:schedule - Thinking:
452s wall
ROADMAP — Verified
- T-PB-B/pb_rust_tests_outside_residual_zero: The added Rust smoke test has matching SG-0 census, INVARIANTS, and PR-body append receipts with a generated-harness dissolution trigger.
✅ No blocking concerns in the current diff.
Auto-opened by session-dashboard for session
crisp-carp-224.Pushing to
session/crisp-carp-224advances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan