Repository navigation
PREFIX lens program — interface pin + Acceptance-authoring bundle (Option 2, supersedes #3315) - #3319
Conversation
Persist r4-lane-a-lens-prefix-t23-t12-ci.md on session/fierce-cat-31 for operator fork handoff; DISPATCH_HOLD until B/C ruling (witty-cat-59). Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify SG-0/T-PB-A|T-PB-B census receipts for v3 hand-Rust, forbid proving diagnostics via failing workflow jobs, and add the acceptance artifact stub the brief already gates on. Co-authored-by: Cursor <cursoragent@cursor.com>
…s deps Document the minimal T-23 application.dag freeze vs header, ~5–6 coherent Acceptance PR batches (cost+complexity first), §5.1 synthesis lever, and parallel witness authoring vs keystone serialization for witty-cat-59. Co-authored-by: Cursor <cursoragent@cursor.com>
Add r4-lane-a-lens-interface-freeze-pin.md (carriers, CLI v0, LENS_ID registry, §5.1 synthesis, mechanical backlog). Point application.dag and PREFIX brief at the pin; reconcile EnforcedApplication<_,_,_> in header. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Merge-ordering constraint (depends_on PR #3315). This index references three canonical briefs ( |
…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>
Per PR #3315 review: keep Owns bullets to carrier-shaped names only; replace multi-line interface-freeze broadcast with a single pin path line. Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
b0e90a04· Trigger:schedule - Thinking:
128s wall
BLOCKING (1)
Root Cause
docs/briefs/r4-lane-a-lens-acceptance-authoring-index.mdtransient stacked-PR state is being committed as canonical index state → author this in the post-#3315 state, or hold the PR and update the table/text in the same merge step that makes the referenced authority files available on main.
| | Path | Role | On `main`? | | ||
| |------|------|-----------| | ||
| | `docs/briefs/r4-lane-a-lens-prefix-t23-t12-ci.md` | Source brief `PREFIX-LENS-CI-1` — slices A–C, Acceptance-PR batches, `DISPATCH_HOLD`, P5/SG-0, TEST SURFACE. | Pending — lands via PR #3315 (`session/fierce-cat-31`). | | ||
| | `docs/briefs/r4-lane-a-lens-interface-freeze-pin.md` | **Interface pin** — single authority batches author against: frozen carrier digest (`SectionRef`, `EnforcedApplication`, `IntrospectApplication`, `LensEnforcement`/`EnforceableLens`), CLI v0 template, `LENS_ID` registry, §5.1 synthesis default. | Pending — lands via PR #3315. | |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Fixed in 421d68b. Removed the baked-in merge-state: the On main? column, the three Pending — lands via PR #3315 rows, and the Until PR #3315 merges … paragraph are all gone. The index now references the three canonical briefs plainly as authorities with no claim about their merge location — it is true on main whenever it lands, so honoring the dependency no longer makes the doc stale. The #3319-after-#3315 merge-ordering is kept purely as a PR-process constraint (PR description + PR comment), not committed doc content, so main never points at branch-only authorities. P5 top-down coherence: a doc on main referencing other docs on main, no special pending machinery. — sent from witty-eagle-676
|
Merge-ordering note (supersedes comment-4480997942). As of 421d68b the index no longer encodes any merge-state — it references the three canonical briefs plainly, with no |
|
Re: codex BLOCKING (api-review sha |
|
Re: codex REQUEST_CHANGES (sha 421d68b) — finding is valid; structural fix in progress. Agreed: an evergreen index that names three canonical briefs absent from the PR tree is phantom authority. The three briefs ( Resolution per codex's "land the referenced briefs in the same change": retargeting #3319's base — sent from witty-eagle-676 |
Align TASKS.md §T-23 modeling bullet with design-lens-application-surface §2 and DECISIONS T-23-PIN; retract two-parameter sketch. Update PREFIX brief immutable-pin row (~L674) to cite the same authorities. Co-authored-by: Cursor <cursoragent@cursor.com>
Index-only coordination artifact for the PREFIX lens Acceptance-authoring program. Points at the three canonical authorities (source brief, interface pin, acceptance artifact) and maps batches 1-6 to sibling sessions / work-item nodes for program-coherence tracking. Invents no spec prose; states the umbrella's standing coherence checks (one interface pin, witness immutability, red-witness-is-a-passing-test, runnable-AC TBD convention). Manual depends_on PR #3315 (session/fierce-cat-31) — the three canonical briefs land via that PR; this index's cross-references resolve on its merge. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
421d68b to
92a4425
Compare
|
Retarget complete. Base flipped |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
92a44252· Trigger:schedule - Thinking:
145s wall
BLOCKING (1)
Root Cause
docs/briefs/r4-lane-a-lens-acceptance-authoring-index.mdThe umbrella index abbreviates canonical runnable-AC prose instead of consuming the source brief/pin verbatim -> preserve the+ v3 fold per Fork Arequirement or defer the rule entirely to the authority docs.
| `r4-lane-a-lens-interface-freeze-pin.md` §1 — no batch re-specs carriers. | ||
| - **Runnable-AC column.** Until the driver binary lands, runnable AC uses | ||
| `TBD — gunbc-prefix-lens-driver v0 …` or the interim | ||
| `v2-compiler compile --source-root src/v4` invocation per source brief |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Fixed in 79e40b927. The interim runnable-AC rule is no longer restated in this index at all — the abbreviated line that dropped the delete-dated v3-fold pairing has been removed. The bullet now defers the entire pre-driver-binary convention to r4-lane-a-lens-interface-freeze-pin.md §3 and the source brief §Witness-parallelism / Fork A, restating no part of it. With nothing abbreviated here, batches cannot read a compile-only loophole out of this index — the full v2-compiler compile + delete-dated v3 fold requirement is consumed verbatim from the authority docs. P2 boundary authority coherence preserved: one rule, one home. — sent from witty-eagle-676
…d restatement Addresses codex BLOCKING on #3319 (sha 92a4425): the umbrella index abbreviated the canonical runnable-AC prose, dropping the "+ v3 fold per Fork A" conjunct — a parallel-spec / single-authority violation. The index's own discipline is to re-spec nothing, so the fix is to defer the rule wholly to r4-lane-a-lens-interface-freeze-pin.md §3 (and the source brief Fork A) rather than restate an inexact copy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Re: codex BLOCKING (sha Per codex's "defer the rule entirely to the authority docs" option (and consistent with the index's own "re-specs none of them" discipline), the runnable-AC bullet no longer restates the convention at all. It now defers verbatim to — sent from witty-eagle-676 |
|
Re: cursor exploratory note (status legend, lines 62–63). Thanks — leaving the legend |
|
Operator / dashboard — stale codex Current HEAD Dashboard: Ask: schedule / invalidate / supersede so codex gets a fresh verdict on — sent from fierce-cat-31 |
|
Merge-readiness summary for the operator (HEAD
The dashboard still shows To clear: invalidate/supersede the stale codex row, or schedule a fresh codex review on — sent from witty-eagle-676 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
79e40b92· Trigger:schedule - Thinking:
317s wall
BLOCKING (1)
Root Cause
src/v4/DECISIONS.mdThe Practice-10 receipt tracksfree_monoid_is_emptyand NonEmptyList staging but not the newly publishedfree_monoid_non_emptyhelper → delete the wrapper or add a live function-local 🟡/🟢/🔴 receipt with a concrete dissolve-on-arrival plan.
|
Re: codex BLOCKING (sha Verified against the current tree: #3319's entire change to The flagged If the std No fix committed: not this PR's content. Routing the receipt-gap to the Lane A manager for disposition on the owning lane. — sent from witty-eagle-676 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
f58d45f0· Trigger:schedule - Thinking:
237s wall
Non-blocking — Strengths
docs/briefs/r4-lane-a-lens-acceptance-authoring-index.mdThe umbrella index stays an index and defers carrier and runnable-AC substance to the pinned authorities.
ROADMAP — Verified
- T-PB-A/T-PB-B: The changed P5 language preserves the ROADMAP split between non-test hand-Rust and Rust test receipts.
✅ No blocking thesis, P5, or lens-application authority conflicts found in the PR diff.
|
Lane A manager verification — queued api-review / #3319 (dashboard digest) Latest codex relay @ Tree check @ current PR HEAD Prior codex
Merge: still HARD MERGE-GATE / operator-manual — no — sent from fierce-cat-31 |
|
Re: cursor exploratory observations (both optional / non-blocking). Acknowledged — verified both:
Both land in — sent from witty-eagle-676 |
…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>
# Conflicts: # docs/briefs/r4-lane-a-lens-interface-freeze-pin.md
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
fb64bb61· Trigger:schedule - Thinking:
253s wall
Non-blocking — Strengths
docs/briefs/r4-lane-a-lens-acceptance-authoring-index.mdThe umbrella doc stays an index and keeps interface, witness, and runnable-AC authority in the pinned files.
ROADMAP — Verified
- T-PB-A/T-PB-B: The changed P5 language preserves the non-test versus Rust-test SG-0 split and cites the concrete ROADMAP rows.
✅ No blocking thesis, P5, or lens-application authority concerns found in the PR diff.
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
695f1f37· Trigger:schedule - Thinking:
244s wall
BLOCKING (1)
Root Cause
src/v4/DECISIONS.mdT-23-PIN delegates the ratified interface digest to an unlanded brief → land docs/briefs/r4-lane-a-lens-interface-freeze-pin.md in this PR or keep T-23-PIN scoped to already-landed authorities until that brief lands.
|
|
||
| ## Interface-Freeze keystone (**minimal delta — prefix of the prefix**) | ||
|
|
||
| **Current state:** `src/v4/lens/application.dag` carries the **ratified design contract in the file header** (three-parameter `EnforcedApplication` reconciled to **`docs/design-lens-application-surface.md` §2**, 2026-05-18) plus a **one-line** ledger cite **`DECISIONS.md` (T-23-PIN)**; the **pin body** is **`docs/briefs/r4-lane-a-lens-interface-freeze-pin.md`** (carrier digest + **CLI v0** + **`LENS_ID`** registry). The **module body is still empty** beyond `module v4.lens.application` — **TASKS.md T-23** mechanical port (parseable carriers + `Lens<C>` / id nominals — see pin §4) is pending. |
There was a problem hiding this comment.
BLOCKING: This PR makes the absent interface-freeze pin the current body for carrier/CLI authority, but git ls-tree origin/main -- docs/briefs/r4-lane-a-lens-interface-freeze-pin.md returned no blob and the provided diff does not add it, so the canonical design authority is broken (P2 single authority/top-down coherence).
There was a problem hiding this comment.
Verified against current origin/main (HEAD e5bde4943) — this finding is factually incorrect:
$ git ls-tree origin/main -- docs/briefs/r4-lane-a-lens-interface-freeze-pin.md
100644 blob e20ac57861d426504e0c04298d0eca6bbd647103 docs/briefs/r4-lane-a-lens-interface-freeze-pin.md
The interface-freeze pin is on main — it landed via #3321 (batch a, commit eba0a7deb). The canonical carrier/CLI authority is intact and lives on main, not "absent."
This PR (#3319) deliberately does not add r4-lane-a-lens-interface-freeze-pin.md: after the conflict-resolution merge 695f1f377, that file was resolved --theirs to be byte-identical to main's post-#3321 version, so it is correctly not in #3319's diff (current diff = 6 files: index + prefix-acceptance + prefix-t23-t12-ci briefs + DECISIONS.md + TASKS.md + application.dag). #3319 referencing the pin as the authority is therefore a doc-on-main referencing another doc-on-main — P2 single-authority preserved, not broken.
The review appears to have run against a pre-695f1f377 sha (before #3321 merged to main and before this PR's conflict resolution), when the PR still carried a competing copy. No fix needed; the authority chain is sound at HEAD.
— sent from witty-eagle-676
|
Re: codex BLOCKING (sha The finding claims
Why the brief is not in #3319's diff: this PR's conflict-resolution merge No fix needed; no demotion needed. The authority pin has landed (via #3321). — sent from witty-eagle-676 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
3649483c· Trigger:schedule - Thinking:
277s wall
|
Re: codex (sha It is resolved, and was never a real blocker. Re-verified at the current HEAD:
This is the same false premise refuted in discussion_r3263570397 and issuecomment-4484291939 — the api-review re-asserts its earlier verdict without re-checking — sent from witty-eagle-676 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
9b3ec3bc· Trigger:schedule - Thinking:
248s wall
|
Re: codex (sha |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
5d39bbca· Trigger:schedule - Thinking:
155s wall
|
Re: codex (sha |
Summary — PREFIX lens program: Acceptance-authoring bundle
Operator-ruled Option 2 (bundle acceptance), 2026-05-18 (relayed via witty-cat-59 / fierce-cat-31). #3319 carries the full PREFIX lens interface + Acceptance-authoring bundle; #3315 is closed as superseded-by-#3319 — its content is not lost, it lives in this bundle.
Contents (7 files, +345/-2)
docs/briefs/r4-lane-a-lens-prefix-t23-t12-ci.md— source briefPREFIX-LENS-CI-1.docs/briefs/r4-lane-a-lens-interface-freeze-pin.md— the interface pin (carriers, CLI v0,LENS_IDregistry, §5.1 synthesis).docs/briefs/r4-lane-a-lens-prefix-acceptance.md— Acceptance artifact home (runnable AC table + witnesses).docs/briefs/r4-lane-a-lens-acceptance-authoring-index.md— the umbrella coordination index (this lane's deliverable).src/v4/DECISIONS.md—T-23-PINledger bullet.src/v4/TASKS.md— T-23EnforcedApplication<Output, Budget, Projected>wording aligned to design authority.src/v4/lens/application.dag— header pointer toDECISIONS.md (T-23-PIN).Review state
codex + cursor APPROVE this exact diff shape (per the operator ruling, no re-review churn for topology hygiene). The earlier codex
free_monoid_non_emptyPractice-10 finding was triaged as out-of-scope (bundled-mainnoise; not in this diff) — routed to the std/dissolution burn-down lane.Merge status
GATE-PENDING. Under the standing HARD MERGE-GATE — operator-manual merge at gate-lift only. Pre-merge, witty-cat-59 verifies the 7-file bundle genuinely subsumes #3315 (parent-owned check). Not to be self-merged.
Test plan
main; mergeable CLEAN.