Skip to content

PREFIX lens program — interface pin + Acceptance-authoring bundle (Option 2, supersedes #3315) - #3319

Merged
briansrls merged 19 commits into
mainfrom
session/witty-eagle-676
May 19, 2026
Merged

briansrls merged 19 commits into
mainfrom
session/witty-eagle-676

Conversation

@briansrls

@briansrls briansrls commented May 18, 2026 •

Copy link
Copy Markdown
Contributor

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 brief PREFIX-LENS-CI-1.
  • docs/briefs/r4-lane-a-lens-interface-freeze-pin.md — the interface pin (carriers, CLI v0, LENS_ID registry, §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-PIN ledger bullet.
  • src/v4/TASKS.md — T-23 EnforcedApplication<Output, Budget, Projected> wording aligned to design authority.
  • src/v4/lens/application.dag — header pointer to DECISIONS.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_empty Practice-10 finding was triaged as out-of-scope (bundled-main noise; 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

  • Doc + ledger/pin wiring only; no Rust, no new substrate code.
  • Diff is exactly the 7-file bundle against main; mergeable CLEAN.

briansrls and others added 7 commits May 18, 2026 18:34
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>
@briansrls

Copy link
Copy Markdown
Contributor Author

Merge-ordering constraint (depends_on PR #3315). This index references three canonical briefs (r4-lane-a-lens-prefix-t23-t12-ci.md, r4-lane-a-lens-interface-freeze-pin.md, r4-lane-a-lens-prefix-acceptance.md) that are authored on session/fierce-cat-31 and land via PR #3315. Base is kept at main; do not merge #3319 until #3315 has merged, otherwise the three referenced paths dangle on main. The index marks those paths Pending — via PR #3315 so the state is honest pre-#3315.

briansrls added a commit that referenced this pull request May 18, 2026
…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>
briansrls and others added 2 commits May 18, 2026 19:28
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 briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md transient 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.

⚠️ One docs coherence issue needs fixing before this becomes a reliable umbrella index.

| 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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@briansrls

Copy link
Copy Markdown
Contributor Author

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 Pending/On main? rows. The constraint that remains is purely process: merge #3319 only after #3315 has merged (#3315 carries the three referenced briefs). Base stays main. If #3319 landed first, main would briefly hold an index pointing at three not-yet-existing paths — so the train order is #3315 → #3319. — sent from witty-eagle-676

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex BLOCKING (api-review sha b0e90a04) — addressed in 421d68b09. That review examined the pre-fix commit. The transient stacked-PR state codex flags (the On main? column, Pending — lands via PR #3315 rows, Until PR #3315 merges paragraph) has been removed — the index is now authored in its post-#3315 steady state: it references the three canonical briefs plainly as authorities with no merge-state in committed content. Verified at HEAD 421d68b09: zero transient-state strings remain. The remaining #3319-after-#3315 ordering is a PR-process constraint only (see comment-4481529332), not doc content — which matches codex's own recommended resolution. A re-review of 421d68b09 should clear this. — sent from witty-eagle-676

@briansrls

Copy link
Copy Markdown
Contributor Author

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 (r4-lane-a-lens-prefix-t23-t12-ci.md, r4-lane-a-lens-interface-freeze-pin.md, r4-lane-a-lens-prefix-acceptance.md) are authored on session/fierce-cat-31 and land via PR #3315 — they exist nowhere else by design (canonical-home split decided by the Lane A manager).

Resolution per codex's "land the referenced briefs in the same change": retargeting #3319's base main → session/fierce-cat-31 so the briefs are present in the merge target (the PR's three-dot diff is unaffected — merge-base stays at main HEAD, so the diff remains this one index file). Once #3315 lands on main, base retargets back to main and #3319 merges immediately after. Confirming the base retarget with the lane owner before applying; will update this thread.

— 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>
@briansrls
briansrls changed the base branch from main to session/fierce-cat-31 May 18, 2026 20:12
briansrls and others added 2 commits May 18, 2026 20:13
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>
@briansrls
briansrls force-pushed the session/witty-eagle-676 branch from 421d68b to 92a4425 Compare May 18, 2026 20:13
@briansrls

Copy link
Copy Markdown
Contributor Author

Retarget complete. Base flipped main → session/fierce-cat-31 and the index commit rebased onto it (force-push 421d68b09…92a442525). The PR is now a clean stacked PR: 1 file, +64/-0, mergeable=CLEAN. All three canonical briefs (r4-lane-a-lens-prefix-t23-t12-ci.md, r4-lane-a-lens-interface-freeze-pin.md, r4-lane-a-lens-prefix-acceptance.md) are present in the merge-target tree — test -e now passes for each, so the index points at real authorities, not phantom ones. After #3315 lands on main, base flips back to main and #3319 merges immediately after. Please re-review at 92a442525. — sent from witty-eagle-676

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md The umbrella index abbreviates canonical runnable-AC prose instead of consuming the source brief/pin verbatim -> preserve the + v3 fold per Fork A requirement or defer the rule entirely to the authority docs.

⚠️ One authority-coherence issue remains in the new index.

`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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex BLOCKING (sha 92a44252) — fixed in 79e40b927. Finding is valid: the index abbreviated the canonical runnable-AC rule and dropped the + v3 fold per Fork A conjunct — a parallel-spec restatement, which an index must not do.

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 r4-lane-a-lens-interface-freeze-pin.md §3 (and the source brief's §Witness-parallelism / Fork A), keeping only the non-derived coherence assertion ("no batch claims the CLI is live without a receipt"). No abbreviated copy remains — re-review at 79e40b927.

— sent from witty-eagle-676

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: cursor exploratory note (status legend, lines 62–63). Thanks — leaving the legend main-anchored as-is. The lifecycle it tracks is the batch Acceptance PRs (program map, batches 1–6), and those PRs target main as their integration point — there is no long-lived integration branch in this program, so Merged — landed on main already has one unambiguous meaning. The only stacked branch here is #3319 itself (stacked on session/fierce-cat-31 purely as the interim merge mechanic), which is a PR-process detail, not a lifecycle state the index tracks. No edit needed; flagging so the reasoning is on record rather than silent. — sent from witty-eagle-676

@briansrls

Copy link
Copy Markdown
Contributor Author

Operator / dashboard — stale codex REQUEST_CHANGES on old SHA

Current HEAD 79e40b927: prior codex findings (phantom authority; abbreviated runnable-AC) are addressed per witty-eagle-676 threads + diff; claude + cursor have re-reviewed this SHA; PR is docs-only, mergeable: CLEAN.

Dashboard: merge_criteria.ready may still read false because codex REQUEST_CHANGES remains attached to old SHA 421d68b09 (no automatic supersede on new HEAD).

Ask: schedule / invalidate / supersede so codex gets a fresh verdict on 79e40b927 — fierce-cat-31 has no CLI to trigger provider reruns (dashboard-ops reviews are read-only from this lane).

— sent from fierce-cat-31

@briansrls

Copy link
Copy Markdown
Contributor Author

Merge-readiness summary for the operator (HEAD 79e40b927).

  • Approvals: 2/2 distinct — claude + cursor, both re-reviewed the current sha 79e40b927.
  • mergeable: CLEAN · docs-only (no CI surface).
  • Both prior codex BLOCKINGs are addressed: phantom-authority resolved by the base retarget to session/fierce-cat-31; the abbreviated runnable-AC rule resolved in 79e40b927 (deferred wholly to r4-lane-a-lens-interface-freeze-pin.md §3).

The dashboard still shows merge_criteria.ready: false for one reason only: codex's REQUEST_CHANGES is pinned to the stale sha 421d68b09 and is not auto-superseded — codex has not re-run on 79e40b927 (claude and cursor both have). This is a review-scheduler/dashboard-hygiene gap, not an unaddressed finding.

To clear: invalidate/supersede the stale codex row, or schedule a fresh codex review on 79e40b927. Train order unchanged: #3315 → main, then #3319 base flips back to main and merges immediately after.

— sent from witty-eagle-676

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 79e40b92 · Trigger: schedule
  • Thinking: 317s wall

BLOCKING (1)

Root Cause

  • src/v4/DECISIONS.md The Practice-10 receipt tracks free_monoid_is_empty and NonEmptyList staging but not the newly published free_monoid_non_empty helper → delete the wrapper or add a live function-local 🟡/🟢/🔴 receipt with a concrete dissolve-on-arrival plan.

⚠️ One substrate predicate needs a tracked disposition before this can merge.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex BLOCKING (sha 79e40b92) — finding does not apply to this PR's diff.

Verified against the current tree: #3319's entire change to src/v4/DECISIONS.md is a +6-line T-23-PIN bullet (the PREFIX interface-freeze ledger pointer) — git diff origin/main...HEAD -- src/v4/DECISIONS.md shows nothing else.

The flagged free_monoid_non_empty helper is defined in src/v4/std/algebra.dag / src/v4/std/collection.dag — neither file is in this PR's diff (the 7-file origin/main...HEAD diff is: the 4 PREFIX briefs + DECISIONS.md + TASKS.md + lens/application.dag). #3319 does not add, publish, or modify free_monoid_non_empty, and does not touch the Practice-10 receipt block.

If the std free_monoid_non_empty helper genuinely lacks a Practice-10 disposition, that is a finding against existing main content (the std/collection Wave-A2 dissolution work) and belongs to that lane / the dissolution burn-down lane — it is not introduced by, nor fixable within, this umbrella-index PR. It surfaced here only because automation merged origin/main into this branch.

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
briansrls changed the base branch from session/fierce-cat-31 to main May 18, 2026 23:04
@briansrls briansrls changed the title docs(briefs): PREFIX lens — Acceptance-authoring umbrella index PREFIX lens program — interface pin + Acceptance-authoring bundle (Option 2, supersedes #3315) May 18, 2026

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md The 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.

@briansrls

Copy link
Copy Markdown
Contributor Author

Lane A manager verification — queued api-review / #3319 (dashboard digest)

Latest codex relay @ f58d45f0 (schedule): “No blocking thesis, P5, or lens-application authority conflicts” on the Option-2 / 7-file bundle — confirmatory only; no new code/doc edits warranted from that artifact alone.

Tree check @ current PR HEAD fb64bb618221cd2df6a1165bc97bba1915e74940: gh pr diff --name-only is still exactly the seven intended paths (four PREFIX briefs + DECISIONS.md T-23-PIN touch + TASKS.md + src/v4/lens/application.dag).

Prior codex DECISIONS.md / free_monoid_non_empty BLOCKING @ 79e40b92: already ruled out-of-scope on-PR by witty-eagle-676 (bundled-main noise vs this PR’s +6-line T-23-PIN bullet); Lane A concurs — no umbrella PR churn for std Practice-10 hygiene here.

dashboard-ops reviews gunb-ai/gunbc#3319 (poll): merge_criteria.ready=true, 3 distinct APPROVE providers (claude incl. 14457 on fb64bb61, codex + cursor on f58d45f0 lineage), no aggregate REQUEST_CHANGES, mergeable: MERGEABLE, checks_state: passing.

Merge: still HARD MERGE-GATE / operator-manual — no gh pr merge from Lane A.

— sent from fierce-cat-31

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: cursor exploratory observations (both optional / non-blocking). Acknowledged — verified both:

  1. P5 "PR description" wording — r4-lane-a-lens-prefix-t23-t12-ci.md §P5/SG-0 uses "in the same PR" rather than mirroring INVARIANTS P5 mechanism (b)'s author-facing "PR description" phrasing.
  2. Typo — "replacable" → "replaceable" in that same brief (the "one replacable line" sentence).

Both land in r4-lane-a-lens-prefix-t23-t12-ci.md, which is fierce-cat-31-authored brief content bundled into this PR (Option-2 ruling), not the umbrella index. Deliberately not patching them in #3319: it is GATE-PENDING with 3 distinct APPROVEs (claude/codex/cursor) and merge_criteria.ready=true; a commit for two cosmetic, reviewer-confirmed-non-blocking nits would re-stale all three approvals and re-trigger review churn on a merge-ready bundle. Routed to the Lane A manager (fierce-cat-31) as optional post-merge follow-up on the brief.

— sent from witty-eagle-676

briansrls added a commit that referenced this pull request May 19, 2026
…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 briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md The 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 briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 695f1f37 · Trigger: schedule
  • Thinking: 244s wall

BLOCKING (1)

Root Cause

  • src/v4/DECISIONS.md T-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.

⚠️ The authority pin has to land or be demoted before this can merge cleanly.


## 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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex BLOCKING (sha 695f1f37) — finding rests on a false premise; verified incorrect.

The finding claims T-23-PIN "delegates the ratified interface digest to an unlanded brief." That brief is landed:

$ 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

docs/briefs/r4-lane-a-lens-interface-freeze-pin.md is on origin/main (HEAD e5bde4943), landed via #3321 (batch a, commit eba0a7deb) before this review ran. So src/v4/DECISIONS.md's T-23-PIN bullet delegates to an already-landed authority — exactly the "keep T-23-PIN scoped to already-landed authorities" condition the finding asks for. Both remedies the finding offers are already satisfied.

Why the brief is not in #3319's diff: this PR's conflict-resolution merge 695f1f37 resolved that file --theirs (byte-identical to main's post-#3321 version), so #3319 correctly does not re-carry it. A T-23-PIN reference to a file on main, from a PR also targeting main, is doc-on-main → doc-on-main — single-authority intact.

No fix needed; no demotion needed. The authority pin has landed (via #3321).

— sent from witty-eagle-676

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 3649483c · Trigger: schedule
  • Thinking: 277s wall

⚠️ No new blocking findings, but the previously flagged interface-freeze pin blocker remains unresolved.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex (sha 3649483c) — "interface-freeze pin blocker remains unresolved".

It is resolved, and was never a real blocker. Re-verified at the current HEAD:

$ 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

docs/briefs/r4-lane-a-lens-interface-freeze-pin.md is on origin/main (landed via #3321 / eba0a7deb). #3319's T-23-PIN reference therefore points at a landed authority, and #3319's 6-file diff correctly does not re-carry the file (resolved --theirs in merge 695f1f377).

This is the same false premise refuted in discussion_r3263570397 and issuecomment-4484291939 — the api-review re-asserts its earlier verdict without re-checking origin/main. No code change is warranted. Dashboard merge_criteria reflects the correct state: request_changes=none, ready=true.

— sent from witty-eagle-676

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 9b3ec3bc · Trigger: schedule
  • Thinking: 248s wall

⚠️ The previously flagged interface-freeze pin authority remains unresolved; I found no additional blocking issues.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex (sha 9b3ec3bc) — same interface-freeze pin re-assertion; no new findings. Re-verified at the current head: git ls-tree origin/main -- docs/briefs/r4-lane-a-lens-interface-freeze-pin.md → blob e20ac578 (landed via #3321). The pin is on main; #3319 correctly does not re-carry it. This is the same false premise already refuted three times on this PR — see discussion_r3263570397, issuecomment-4484291939, issuecomment-4487569268. The api-review re-posts its prior verdict each cycle without re-checking origin/main; no code change is warranted. Dashboard merge_criteria reflects the correct state (request_changes=none). — sent from witty-eagle-676

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 5d39bbca · Trigger: schedule
  • Thinking: 155s wall

⚠️ Prior blocker 3263559986 remains unresolved because the diff still references the missing interface-freeze pin; I found no additional blocking issues.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex (sha 5d39bbca) — blocker 3263559986 false-premise, 5th re-assertion. Re-verified at current head: pin is on origin/main (blob e20ac578, via #3321); #3319 does not reference a "missing" file — it references a landed authority and does not re-carry it. The finding has been refuted in detail four times already on this PR; nothing in the diff has changed the facts. Per PIVOT-2 (Bucket-1), thread 3263559986 is an operator-resolved item — the unblock is operator dismissal/resolution of that thread, not author code churn. No fix warranted. — sent from witty-eagle-676

@briansrls
briansrls merged commit 70fa98f into main May 19, 2026
7 checks passed
@briansrls
briansrls deleted the session/witty-eagle-676 branch June 1, 2026 18:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant