Skip to content

v4 retroactive dissolution audit — consolidated inventory (C1) - #3243

Merged
briansrls merged 15 commits into
mainfrom
session/quiet-eagle-516
May 18, 2026
Merged

briansrls merged 15 commits into
mainfrom
session/quiet-eagle-516

Conversation

@briansrls

@briansrls briansrls commented May 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

C1 of rework-tracker PR #3240. Consolidated audit covering both halves of the operator's dissolution-debt directive (per still-hawk-102 brief update 2026-05-18):

  • Part A — sweep findings across src/v4/compiler/*.dag, src/v4/std/*.dag, src/v4/extdeps/**/*.dag for the five dissolution-finding classes (walker / traverse / predicate / carrier / emit-template).
  • Part B — triage of pre-existing trackers (10 SL-3229-* rows in src/v4/DECISIONS.md Part 6 + 13 in-file 🟡 cite-sites) against PR modeling-discipline: unified dissolution-disposition vocabulary #3244's unified Dissolution dispositions vocabulary (feature: / consumer: gate kind + concrete named arrival + dissolve-on-arrival obligation).

Artifact at docs/audit/dissolution-inventory.md. Marks tagged DRAFT pending #3244 merge — final marks land as a one-commit follow-up if #3244 changes a clause materially.

Part A — dissolve-now (🔴) inventory

Three findings collapse to two distinct fixes (in follow-up PRs, not this one):

  1. Extract is_empty_conj_root : Node -> Bool into std/node.dag; replace both compiler/01_tokenize.dag lex_rules_node_is_conj_empty_root and compiler/02_parse.dag grammar_node_is_conj_empty_root (literal duplicates).
  2. Inline terminator_is_catchswitch into block_well_formed in extdeps/languages/llvm_ir.dag.

Part A — named substrate-gaps (🟡 feature: arrivals)

  1. fold_node — Node catamorphism in std/node.dag (T-1 substrate-extension).
  2. fold / cata over FreeMonoid<T> and Nat (Wave-A2).
  3. forall / count_where / unique over FreeMonoid<T> in std/collection.dag (Wave-A2).
  4. nat_is_zero : Nat -> Bool in std/nat.dag (Wave-A2).
  5. Property-projection model facts on Connective, FidelityFeature, LlvmInstruction cost, Terminator well-formedness (Practice 10 registry row 7).

Part B — triage headline

  • 7 VALID DECISIONS.md rows + 1 VALID in-file cite-site — re-expressible in modeling-discipline: unified dissolution-disposition vocabulary #3244 form without scope changes.
  • 2 VAGUE DECISIONS.md rows (SL-3229-VERILOG-D3200 names a class of consumers not one; SL-3229-FLOAT-NOMINAL straddles two owners).
  • ~16 VAGUE in-file prose blocks (json.dag × 3, yaml.dag × 6, toml.dag × 7+, verilog cite-sites × 5 inheriting VERILOG-D3200). All pre-modeling-discipline: require the 🟢/🟡/🔴 emoji tag on every coproduct #3234 prose-form 🟡 blocks; concretize uniformly to feature: std/cardinality.dag refinement (T-3 Wave-A2) for refinement-side gates, feature: T-6/T-7 parse/emit pipeline-stage substrate for parser-side gates.
  • 4 STALE-SHAPED typescript.dag D2-shaped gates — the named arrival (D2 alias-identity) no longer exists post-D2-reversal; re-gate against the T-4 fact-bundle Phase-3 rework (5-feeder-gated; keystone v4 P1-KEYSTONE — fact-bundle Practice + hollow-alias discriminator + T-31 sweep #3226 merged @77b9e7d72).
  • 0 outright STALE — no feature: arrival has already landed. The cardinality-refinement / collection Wave-A2 / constrained-generics primitives are uniformly still ahead.

Per Practice 10, in-file .dag tag rewrites land with each fix per migration PR, not retro-applied in this PR. Part B reports the shape of each existing tracker; the actual tracker rewrites are queued follow-ups (some operator-audit gated under the T-4-rework HOLD).

Test plan

  • Operator audit: triage matches modeling-discipline: unified dissolution-disposition vocabulary #3244 form (gate-kind + concrete named arrival + dissolve-on-arrival obligation).
  • Part B mapping of in-file 🟡 cite-sites is exhaustive — re-run grep -n "🟡" src/v4/**/*.dag against current main to confirm count.
  • Headline "0 outright STALE" verified vs main: std/cardinality.dag, std/collection.dag, std/nat.dag (no refinement / Wave-A2 / constrained-generics primitives landed).
  • Part A sweep covers all 41 v4 .dag files in scope (10 std + 8 compiler + 23 extdeps); the high 🟢 ratio in extdeps is because language/format/framework files carry zero fn bodies (pure declarative data models).
  • Re-mark pass against final modeling-discipline: unified dissolution-disposition vocabulary #3244 form (one follow-up commit if needed).

🤖 Generated with Claude Code

…y (PR #3240 task C1)

Per docs/modeling-discipline.md Practice 10, classify findings per-file
per-finding across src/v4/compiler, src/v4/std, src/v4/extdeps for the
five dissolution-finding classes (walker / traverse / predicate / carrier
/ emit-template) using 🟢 / 🟡 / 🔴 dispositions.

Result: 3 🔴 fix-now (collapses to 2 distinct fixes: shared
is_empty_conj_root in std/node.dag; inline terminator_is_catchswitch),
12 🟡 substrate-sequencing (each named with its missing primitive — five
named upstream obligations: fold_node, FreeMonoid/Nat cata, all /
count_where / unique on FreeMonoid, nat_is_zero, property-projection
model facts on Connective / FidelityFeature / LlvmInstruction /
Terminator). Carrier and emit/template are 🟢 lane-wide.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.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: 0b88bc24 · Trigger: schedule
  • Thinking: 299s wall

✅ The audit is grounded in the 88ae56d v4 snapshot and I found no blocking concerns.

briansrls and others added 2 commits May 17, 2026 22:08
…y.md (scope expansion: existing-tracker triage half)

Per still-hawk-102 C1 brief update 2026-05-18: scope expands to both
halves of the dissolution-debt directive — new sweep findings PLUS
triage of the ~21 SL-3229-* + ~13 in-file 🟡 cite-sites against the
PR #3244 unified Dissolution dispositions vocabulary (feature: /
consumer: gate kind + concrete named arrival + dissolve-on-arrival
obligation).

Artifact moved from docs/modeling/per-file-findings-v4-dissolution.md
to docs/audit/dissolution-inventory.md per the brief.

Part A (sweep): 3 🔴 dissolve-now (collapses to 2 distinct fixes), 12
🟡 gated (each carrying its named feature: arrival), carrier and
emit/template 🟢 lane-wide.

Part B (existing-tracker triage): 7 VALID DECISIONS.md rows + 1 VALID
in-file cite-site; 2 VAGUE DECISIONS.md rows (VERILOG-D3200,
FLOAT-NOMINAL); ~16 VAGUE in-file prose blocks (json/yaml/toml
pre-#3234 prose form, verilog cite-site inheritance); 4 STALE-SHAPED
typescript.dag D2-shaped gates needing re-gate against post-D2-reversal
fact-bundle model. **0 outright STALE — no gate has already opened.**

Marks tagged DRAFT pending #3244 merge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls briansrls changed the title v4 retroactive dissolution audit — Practice 10 symbol-marked inventory (C1) v4 retroactive dissolution audit — consolidated inventory (C1) May 18, 2026
briansrls and others added 4 commits May 18, 2026 02:14
…y + C1-marks-only clarification

Per still-hawk-102 brief corrections 2026-05-18:

(1) Add src/v4/workflow/*.dag as 5th area sub-sweep. Both
workflow/bootstrap.dag and workflow/ci.dag on main are pure scaffolds
(zero type/data/fn) — 🟢 across all five finding classes. PR #3213's
in-flight content covered by its own dissolution pass; sweep frame is
main, no double-counting.

(2) Add INVALID-GATE as the 4th Part B disposition (alongside VALID-🟡 /
STALE → 🔴 / VAGUE). Distinct from VAGUE (gate too loose) and STALE
(gate opened): the gate's named arrival was cancelled or reshaped by a
design reversal. Apply to the 4 typescript.dag D2-shaped gates
(previously labeled STALE-SHAPED) — the D2 alias-identity model was
rejected by the operator's 2026-05-17 directive; the named arrival will
not arrive as written.

(3) Clarify C1's role: mark + flag, not fix. Re-gating VAGUE /
INVALID-GATE entries and landing dissolve-now PRs is downstream lane
work owned by the lane that owns the named file, triggered by the
operator's audit of this inventory. C1 does NOT edit DECISIONS.md rows,
rewrite in-file 🟡 blocks, or land dissolve-now fixes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…to all src/v4/**

Per still-hawk-102 operator changes 2026-05-18 (two messages):

(1) SCOPE WIDENED to every src/v4/**/*.dag (67 files): adds lens/* × 11,
bin/main.dag, test/claim/** × 9 to the prior compiler+std+extdeps+
workflow scope. All 26 added files are 🟢 across the five finding
classes — pure scaffolds (each carries 'Status: scaffold — fill per
TASKS.md T-##') or pure TestClaim data with zero fn bodies. The
new-findings half does not grow.

(2) INVENTORY RESTRUCTURED as a dissolution PLAN, not a catalog, per
operator directive ("I don't want these comments to start piling up
and never get dissolved" — #3244 commit 9b896f3). Section 1 rolls
every 🟡 up by its missing primitive into 10 substrate PRs (P1-P10),
ranked by 🟡-count. P1 (std/cardinality.dag refinement) dominates at
~22 findings — 60% of v4's outstanding 🟡 debt. Plus 🟡→🟢 burn-down
table tracking the paydown trajectory.

The plan also names itself as the requirements inventory for the
rework-tracker #3240 S1 substrate track (loyal-wren), which consumes
directly. Renamed prior Part A → Section 2 (per-file catalog backing
the plan); Part B → Section 3 (existing-tracker triage backing the
plan). Section 1 is now the headline; Sections 2/3 are
audit-traceability.

Updated C1-role clause: marks + flags + plans, does not fix. Substrate
PRs (S1 track) and re-gate/dissolve-now PRs (per-file lanes) are
downstream work consuming this artifact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…GROUP-COMPLETION → VAGUE)

Per still-hawk-102 follow-up 2026-05-18: a final VALID-🟡 requires
concrete gate AND binding to a named primitive+owning-task substrate
PR in Section 1. SL-3229-INTEGER-GROUP-COMPLETION reclassifies VALID-🟡
→ VAGUE because P10 (constrained-generics syntax) has no owning task
in the Section 1 plan — the substrate PR is not fully named.

Counts under tightened bar: 7 VALID-🟡 / ~19 VAGUE (was ~18) / 4
INVALID-GATE / 0 STALE → 🔴. Section 3.1 entry, summary table, and
roll-up text updated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…face + P10 ⛔ flag + pre-plan backlog clause)

Per still-hawk-102 final-ready checks 2026-05-18:

(1) P10 marked ⛔ needs-concretization in § 1.1 — does NOT enter the
burn-down DAG as a normal upstream node until an owning T-# is
assigned for the constrained-generics syntax (#3244 comment-graveyard
case). § 1.2 burn-down notes P10's row is structurally blocked.

(2) Section 1 intro now explicitly partitions: § 1.0 (🔴 jumps queue)
+ § 1.1 (🟡 plan P1-P10) + § 1.2 (burn-down) — and states the ~19
VAGUE + 4 INVALID-GATE in Section 3 are a PRE-PLAN CONCRETIZATION
BACKLOG, NOT in P1-P10. They cannot enter the burn-down dependency
DAG until concretized; the burn-down lane drives the backlog first
(each becomes either a roll-in under a P# or a dissolved/re-dispositioned
entry).

(3) 🔴 count surfaced explicitly: 3 findings, 2 distinct fixes (R1
is_empty_conj_root duplicate extraction; R2 terminator_is_catchswitch
inlining). Both have substrate-already-on-main; both jump the queue
ahead of P1. New § 1.0 promotes them from Section 2 into the plan
headline. Dispositions box at top now states "Count: 3 findings, 2
distinct fixes — checked, not omitted" so the operator audit sees
the check.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
…lk (#3243 §1.1)

predicate dissolution (Practice 10 registry row 7): the literal-duplicate
empty-conj-root check in compiler/01_tokenize.dag and compiler/02_parse.dag
collapses onto the single std/node.dag carrier. Both stages now read the
shared node_is_empty_conj_root; the now-dead Conj/NodeKind/TypeNode/
ComputationNode imports drop with the inlined match arms.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls and others added 6 commits May 18, 2026 02:39
…P-1b) findings

(1) Codex APPROVE_WITH_COMMENTS on PR #3243 sha 0cc5d95 2026-05-18
flagged Section 3.3 summary arithmetic: "7 VALID-🟡 (6 DECISIONS.md
rows + 1 in-file cite)" but the row enumeration totals 7 DECISIONS
rows, not 6 → corrected to 8 VALID-🟡 (7 DECISIONS rows + 1 in-file
cite). Cross-references updated (§ 1.2 caveat, dispositions box count,
burn-down baseline ~37 → ~38).

(2) still-hawk-102 surfaced #3225 (Lane-A CP-1b, merged b83d8ed
2026-05-18) carrying an un-cleared codex REQUEST_CHANGES on two
specific findings — added to inventory per the no-silent-debt rule:

- extdeps/languages/dag.dag dag_language_model_wave1_void_canonical_symbols
  (62) — 🟡 predicate (property projection) — the "four C3 Atom
  identities" finding (thread 3255338394). Set<Symbol> whose member
  is a 4-way disjunction; canonical_symbols set IS a fact on
  DagLanguageModel/language-identity. Rolls under P4 (T-4 fact-bundle
  Phase-3 — same family as feature_disposition on FidelityFeature).
- compiler/03_resolve.dag merge_binding_self (94) — 🟡 walker — the
  "sym↦sym module harvest" finding (thread 3255338395). The leaf is
  map_insert, but its three named-harvest callers
  (add_module_named_exports, add_arrow_domain_named_params,
  add_bind_atom_binder) are folds over Node.children with constructor-
  discriminated recursion. Rolls under P5 (fold_node).
- Also added: dag.dag dag_node_is_empty_conj_root (74) is a third
  duplicate of the R1 is_empty_conj_root pattern — folds into R1's
  extraction PR rather than its own fix; R1 grows from 2 to 3
  call-site duplicates.

(3) Scope hash bumped 88ae56d → ce02410 (current main HEAD,
absorbs #3225/#3210/#3232/#3242 merges between initial sweep and
final-ready). 03_resolve.dag's other 22 fns (most likely P5
variations) are flagged for a near-future Lane-A re-pass; the two
codex-flagged are confirmed inventory entries.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…own lane (not Lane A)

Per still-hawk-102 follow-up 2026-05-18: the 21-fn re-sweep of
03_resolve.dag is a NEAR-FUTURE BURN-DOWN-LANE re-pass (jolly-ibex-599),
not a Lane-A / fierce-cat-31 obligation. C1 is one-shot and does not
expand to chase it; the inventory records it as a named follow-up
work-item for the burn-down lane to dispatch alongside the
per-primitive DAG.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PR #3244 (unified dissolution-disposition vocabulary + the
🟡-must-bind-a-dissolution-PLAN amendment) squash-merged to main at
commit 1619165 (2026-05-18). C1's marking authority is now final on
main.

Flip both status blocks DRAFT → FINAL. Marks re-confirmed against the
merged form: 🔴 dissolve-now (substrate-exists, jumps queue) / 🟢
terminal (nothing to dissolve into) / 🟡 gated (feature: / consumer:
gate + concrete named arrival incl. owning task + dissolve-on-arrival
obligation, AND rolled under a Section 1 P# whose substrate PR has an
owning task per the #3244 amendment). No clause changes from DRAFT
required this commit — vocabulary was previewed through still-hawk-102.

Inventory final-ready: 8 VALID-🟡 / ~19 VAGUE / 4 INVALID-GATE / 0
STALE→🔴; 3 🔴 findings, 2 distinct fixes (R1 is_empty_conj_root
extraction across 3 call-sites; R2 terminator_is_catchswitch inlining);
10 substrate PRs P1-P10 ranked by 🟡-count (P1 cardinality.dag
refinement = ~22 findings, 60% of debt; P10 ⛔ needs-concretization).
67 v4 .dag files swept at main HEAD ce02410.

Ready for burn-down lane handoff (jolly-ibex-599).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit 3dcf86b into main May 18, 2026
7 checks passed

@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: a5989b93 · Trigger: schedule
  • Thinking: 158s wall

BLOCKING (2)

Root Cause

  • docs/audit/dissolution-inventory.md R1 expanded to include extdeps/languages/dag.dag dag_node_is_empty_conj_root, but the terminal fix summary was not updated → include the extdeps/languages/dag.dag call-site in the final R1 replacement instruction.
  • docs/audit/dissolution-inventory.md The pre-plan backlog count was widened without normalizing the toml row and roll-up totals → reconcile the toml site count and recompute the VAGUE/backlog totals consistently.

⚠️ Two inventory contradictions should be fixed before this plan becomes the downstream dissolution authority.

2. Inline `terminator_is_catchswitch` into `block_well_formed` in
`extdeps/languages/llvm_ir.dag`; delete the discriminator predicate.

Per Practice 10, the matching in-file `.dag` tag lands with the fix

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: The final 🔴 R1 fix summary only tells the downstream lane to replace the two compiler duplicates, contradicting the three-site R1 inventory at line 121 and risking an incomplete dissolve-now cleanup under INVARIANTS P5 / Practice 7.

(🟡 (1) below)", "refinement, 🟡 below". Same shape: parser-side +
refinement-side gates.
- **Triage: same as yaml.dag — VALID-in-intent / VAGUE-in-form.**
- **Action queued:** same as yaml.dag.

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: The toml VAGUE row says “× 7” while listing nine cite sites, and the later summary still claims ~16 in-file VAGUE / ~19 total, so the requirements inventory does not bound the pre-plan backlog it is meant to drive under INVARIANTS P5.

briansrls added a commit that referenced this pull request May 18, 2026
… nat_is_zero

Dissolves the hand-rolled `match e/match f` predicate at
src/v4/std/float.dag:109 to the derived form
`nat_is_zero(e) && nat_is_zero(f)`. Identified as finding under P7 in
the v4 retroactive dissolution audit (#3243 §1.1 P7).

PRE-STAGED ONLY. `nat_is_zero` does not yet exist in std/nat.dag on
main; the upstream P7 substrate PR (calm-hawk-403, node://adhoc-2ae44c0b-e41)
has not landed. This commit is held in the worktree pending P7 merge;
on landing it rebases onto main and the PR opens. Not pushed; not a
draft PR off main (would not compile).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
… §1.0) (#3245)

The helper had a single call site. Folding the match directly into
block_well_formed removes the un-derived boolean predicate (Practice 10)
and makes the well-formedness rule read as a direct destructuring of the
terminator.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
…ent substrate (std T-3 Wave-A2) [#3243 §1.1] (#3259)

* WIP: Dissolution upstream P1 — std/cardinality.dag bounded-natural/refinement

* refactor(v4): align NonZeroNat witness field with Nat::Succ

Rename `pred` -> `prev` so readers match `Nat = Succ { prev: Nat }`.
Ledger row updated in lockstep (cursor/composer-2 exploratory note on #3259).

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(v4): reconcile Never/Unit DECISIONS row with D2-REV

Remove the incorrect extdeps `NeverScalar` → std `Never` alias claim from
Part 1; language primitives stay spec fact-bundles until structurally
evidenced coincidence is authored elsewhere (#3259 blocking review).

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 18, 2026
… nat_is_zero

Dissolves the hand-rolled `match e/match f` predicate at
src/v4/std/float.dag:109 to the derived form
`nat_is_zero(e) && nat_is_zero(f)`. Identified as finding under P7 in
the v4 retroactive dissolution audit (#3243 §1.1 P7).

PRE-STAGED ONLY. `nat_is_zero` does not yet exist in std/nat.dag on
main; the upstream P7 substrate PR (calm-hawk-403, node://adhoc-2ae44c0b-e41)
has not landed. This commit is held in the worktree pending P7 merge;
on landing it rebases onto main and the PR opens. Not pushed; not a
draft PR off main (would not compile).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
… nat_is_zero

Dissolves the hand-rolled `match e/match f` predicate at
src/v4/std/float.dag:109 to the derived form
`nat_is_zero(e) && nat_is_zero(f)`. Identified as finding under P7 in
the v4 retroactive dissolution audit (#3243 §1.1 P7).

PRE-STAGED ONLY. `nat_is_zero` does not yet exist in std/nat.dag on
main; the upstream P7 substrate PR (calm-hawk-403, node://adhoc-2ae44c0b-e41)
has not landed. This commit is held in the worktree pending P7 merge;
on landing it rebases onto main and the PR opens. Not pushed; not a
draft PR off main (would not compile).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
Dissolves the hand-rolled `match e/match f` predicate at
src/v4/std/float.dag:109 to the derived form
`nat_is_zero(e) && nat_is_zero(f)`. Identified as finding under P7 in
the v4 retroactive dissolution audit (#3243 §1.1 P7).

PRE-STAGED ONLY. `nat_is_zero` does not yet exist in std/nat.dag on
main; the upstream P7 substrate PR (calm-hawk-403, node://adhoc-2ae44c0b-e41)
has not landed. This commit is held in the worktree pending P7 merge;
on landing it rebases onto main and the PR opens. Not pushed; not a
draft PR off main (would not compile).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
… forall/count_where/unique FreeMonoid [#3243 §1.1] (#3250)

* WIP: Dissolution upstream P2 — std/collection.dag Wave-A2 List non_empty + fo

* v4 std algebra: route FreeMonoid helpers through fold

* v4 decisions: mark NonEmptyList enforcement yellow

* v4 collection: keep NonEmptyList scaffold documented

* Merge origin/main into session/lively-otter-673

* v4 algebra: list unique state in owns header

* Merge origin/main into session/lively-otter-673

* v4 algebra: align helpers with right fold

* WIP: Dissolution upstream P2 — std/collection.dag Wave-A2 List non_empty + fo

* WIP: Dissolution upstream P2 — std/collection.dag Wave-A2 List non_empty + fo
briansrls added a commit that referenced this pull request May 18, 2026
…bstrate-extension) [#3243 §1.1] (#3312)

* WIP: Dissolution upstream P5 — std/node.dag fold_node catamorphism (T-1 subst

* fix(docs): align P5 audit anchors with live std/node.dag

Refresh §2.2 line-number citations after NodeFold/fold_node substrate
growth; tighten DECISIONS CP-1b item 12 INVARIANTS cross-ref to the P5
Dispatch-Discipline Mechanisms (b) home-of-record.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 18, 2026
…(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>
briansrls added a commit that referenced this pull request May 19, 2026
* 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

* docs: reconcile T-25-core framing class to §7 #3b ratified authorize-to-build shape

Blocking operator review on #3339 (r4-program-dispatch-plan.md): T-25-core
was still framed as an open design-direction / operator-review fork in §2,
§3, and the §6/§7 prose, contradicting §7 #3b (commit 363bb76) and the
canonical authority (TASKS.md:940-943 operator-ratified; :962-982 +
coercion-design.md Category 6 = shape already designed: base type +
fail-closed validation at a named constructor boundary). Fixed the whole
class (lines 108, 151, 201-202, 206, 345, 392-393, 396) to "authorize-to-
build stamp, shape ratified, NOT a design fork". Legit keystone-cluster
feeder references (TASKS.md:64 exact set) left intact — canonically correct.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: May 18

* docs: fix dual-authority — §5 lane active-status + §6 row carried "HELD on keystone" shorthand vs the full feeder set (openai-pro RC #3339)

openai-pro REQUEST_CHANGES (review 14421, head b2f0fa5): §5 Fresh
extdeps/T-4 lane active-status cell (:317) and §6 vivid-carp-207 row
(:341) still said "HELD on keystone", contradicting §2 :81 "all four
gate T-4" + the same row's gated cell. A worker scanning the lane table
could read keystone-closure as sufficient. Both now state the full
TASKS.md:286 feeder set {P1-KEYSTONE,T-30,T-29,T-25-core} — one gate
everywhere. Same class as the prior 3-site normalization; this closes
the active-status shorthand the earlier pass missed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: add TASKS.md anchor convention note (cursor #3339 exploratory obs — APPROVE)

cursor/composer-2 (review 14425) APPROVE, no findings; one actionable
exploratory observation: the brief cites `TASKS.md:NNN` without a path
and there is no root-level `TASKS.md` (only src/v4/TASKS.md), so a reader
could hunt for a missing file. Added one proportionate anchor-convention
note to the Purpose block (not churning every citation) stating all
`TASKS.md:NNN` anchors refer to src/v4/TASKS.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: Wave 1 over-gated T-4.5/T-4.6 on the full ×4 — split unblock conditions (openai-pro RC #3339, review 14429)

Valid finding (a regression from the prior Wave 1 normalization): grouping
"T-4 ×5 languages, T-4.5, T-4.6 unblock" under "the keystone-cluster ×4
land" implied T-4.5/T-4.6 are gated on the full {P1-KEYSTONE,T-30,T-29,
T-25-core}. But §2 :85/:86 declare T-4.5 deps {T-3,T-25-core} and T-4.6
deps {T-25-core,T-26} — neither needs P1-KEYSTONE/T-30/T-29. Wave 1 text
now gates only T-4 ×5 on the full ×4; T-4.5/T-4.6 unblock on T-25-core
(their sole cluster feeder) + own §2 deps, potentially earlier. §2 table
reaffirmed as the dependency authority.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: whole-doc §1/§4/§5-vs-§2 consistency sweep — harden §5 gated cell (T-4.5–4.8 not full-×4); pre-empt the recurring class

Following the openai-pro 14429 Wave-1 over-gating fix (f223fb7), did a
full consistency audit of every gate/unblock restatement vs the §2
dependency authority. §4 Waves 2-6, §1 ASCII, §6 verified consistent.
One latent ambiguity remained: §5 extdeps/T-4 gated cell listed
"T-4.5–4.8" right after "T-4 (post the full feeder set)", readable as
T-4.5–4.8 being full-×4-gated. Hardened it to state T-4.5–4.8 follow
their own §2 deps (not the full ×4) + §2 is the sole dependency
authority — closing the class that successive reviews kept finding one
instance of, rather than waiting for the next gap-by-gap flag.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: drop brittle internal :NN self-anchors → name-only refs (openai-pro RC #3339, review 14436)

Valid finding: §5 lane row self-referenced "§2 T-4 row :81" but the doc
grew from prior edits so :81 is now T-6 (T-4 is :84). Root cause is
hardcoded internal line anchors that re-stale on every edit. Per
openai-pro's own "remove the numeric suffix" option, converted ALL
internal self-anchors to name-based refs: §5 ":81" dropped; Wave 1
"§2 :85/:86" → "per the §2 T-4.5/T-4.6 row". External src/v4/TASKS.md:NN
anchors untouched (different stable file). Permanently closes the
brittle-self-anchor sub-class rather than chasing the number each pass.

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
briansrls deleted the session/quiet-eagle-516 branch June 1, 2026 18:42
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