Repository navigation
modeling-discipline: Practice 10 🟡 disposition — blocking unless tracked - #3242
Merged
briansrls merged 1 commit intoMay 18, 2026
Merged
Conversation
…nless tracked codex review (#3241, REQUEST_CHANGES): Practice 10 said a 🟡 substrate-sequencing finding is flatly "not a BLOCKING request-changes on an honest scaffold PR." That lowered the substrate-blocking bar — it conflicts with the Calibration section ("substrate-level issues are almost always BLOCKING") and INVARIANTS P5, turning a missing-primitive finding into advisory-only debt. Fix: a 🟡 is now dispositioned exactly like a Practice-4 YELLOW coproduct — deferral is sanctioned ONLY when tracked. A 🟡 is BLOCKING unless the gap is recorded as a tracked, named upstream obligation (missing primitive named, owning task/escalation, PR a declared honest scaffold). A tracked 🟡 lands because re-blocking cannot land an absent primitive; an untracked 🟡 is silent dissolution debt and blocks. The carve-out is narrow and self-justifying (can't-fix-here), never advisory-only. Applied in both the disposition legend and For-Reviewers item 9. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 18, 2026
briansrls
commented
May 18, 2026
briansrls
left a comment
Contributor
Author
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
c9516d74· Trigger:schedule - Thinking:
100s wall
Non-blocking — Strengths
docs/modeling-discipline.mdThe Practice 10 🟡 disposition now aligns with INVARIANTS P5 by blocking untracked substrate-sequencing debt while preserving the tracked-scaffold carve-out.
✅ No blocking concerns.
briansrls
added a commit
that referenced
this pull request
May 18, 2026
…acked Operator directive (briansrls, 2026-05-18, via #3240): "I don't want these comments to start piling up and never get dissolved." #3242 made a 🟡 "blocking unless tracked"; tracked is not enough — a 🟡 must bind a committed surface→dissolve loop. Every 🟡 now binds a dissolution plan: the named missing primitive, the substrate PR/task that lands it, and the dissolution follow-up that converts the 🟡 to 🟢 on landing. A 🟡 with no bound dissolution PR is not a valid 🟡 — that is the comment-graveyard failure mode and blocks merge. A 🟡 is transient, with a committed exit; dissolution debt is burned down, not banked (INVARIANTS P5). For-Reviewers item 4 updated to the same bar. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls
added a commit
that referenced
this pull request
May 18, 2026
…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>
briansrls
added a commit
that referenced
this pull request
May 18, 2026
* modeling-discipline: unified dissolution-disposition vocabulary Operator directive (briansrls, 2026-05-18): dissolutions are debt; the project inverts its own premise if 🟡 deferrals accrue faster than they resolve. Every non-dissolved item must answer one question — "can this dissolve now? if not, why not?" — and 🟡 was overloaded: a bare 🟡 told a reader only "deferred," not why. Adds a shared **Dissolution dispositions** vocabulary at the head of Practice 4, used by Practices 4 / 8 / 10: - the universal rule "can this dissolve now? if not, why not?"; - 🔴 dissolve-now — must dissolve; jumps the queue ahead of feature work; - 🟢 terminal — nothing to dissolve into; consumer-independent; - 🟡 gated — the only legitimate "why not": a named arrival. Every 🟡 is a merge requirement carrying (1) gate kind feature:/consumer:, (2) a concrete named primitive+task or named consumer, (3) the dissolve-on-arrival obligation. feature- and consumer-gating are one dimension — a consumer is a kind of feature. Practice 4's GREEN/YELLOW/RED, Practice 10's disposition legend, and Practice 8's hollow-vs-deferred discriminator are reconciled onto this single vocabulary; For-Reviewers items 4 and 9 make the concrete-gate a checked merge requirement (vague gate blocks; an already-opened gate is stale → 🔴). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * modeling-discipline: a 🟡 must bind a dissolution PLAN, not just be tracked Operator directive (briansrls, 2026-05-18, via #3240): "I don't want these comments to start piling up and never get dissolved." #3242 made a 🟡 "blocking unless tracked"; tracked is not enough — a 🟡 must bind a committed surface→dissolve loop. Every 🟡 now binds a dissolution plan: the named missing primitive, the substrate PR/task that lands it, and the dissolution follow-up that converts the 🟡 to 🟢 on landing. A 🟡 with no bound dissolution PR is not a valid 🟡 — that is the comment-graveyard failure mode and blocks merge. A 🟡 is transient, with a committed exit; dissolution debt is burned down, not banked (INVARIANTS P5). For-Reviewers item 4 updated to the same bar. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * modeling-discipline: align Practice 10 "What to check" with the disposition vocabulary cursor review (#3244, exploratory): Practice 10's "What to check" sentence still read "🔴 fix-now / 🟡 substrate-sequencing / 🟢 clean" while the disposition legend and For-Reviewers checklist use the unified "dissolve-now / gated / clean" vocabulary. One-line consistency fix. 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
added a commit
that referenced
this pull request
May 18, 2026
* v4 retroactive dissolution audit — Practice 10 symbol-marked inventory (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> * WIP: C1 — retroactive v4 dissolution sweep (operator-audit PREREQUISITE, crit * v4 dissolution audit — consolidate to docs/audit/dissolution-inventory.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> * v4 dissolution audit — add workflow/ sub-sweep + INVALID-GATE category + 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> * v4 dissolution audit — restructure as dissolution PLAN + scope-widen 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> * v4 dissolution audit — apply tightened-bar reclassification (INTEGER-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> * v4 dissolution audit — three burn-down handoff tightenings (1.0 🔴 surface + 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> * v4 dissolution audit — fix codex VALID-🟡 arithmetic + absorb #3225 (CP-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> * v4 dissolution audit — re-attribute 03_resolve.dag re-sweep to burn-down 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> * v4 dissolution audit — DRAFT → FINAL flip (PR #3244 merged @ 1619165) 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> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 task
briansrls
added a commit
that referenced
this pull request
May 18, 2026
…fication (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>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Forward-fix to merged PR #3241 (Practice 10 — squash-merged as
45c90729a). Addresses a valid codexREQUEST_CHANGESfinding that posted (01:03:01Z) ~2 min before #3241 was merged (01:04:54Z), so it lands as a forward-fix rather than a pre-merge change.The finding (codex, #3241)
Practice 10 said a
🟡 substrate-sequencingfinding is flatly "not a BLOCKING request-changes on an honest scaffold PR." That lowered the substrate-blocking bar — it conflicts with the doc's own Calibration section ("substrate-level issues are almost always BLOCKING" / "when in doubt, prefer BLOCKING") and INVARIANTS P5 ("Progress Is Dissolution"), turning a missing-primitive finding into advisory-only debt.The finding is valid: the absolute wording let an untracked hand-rolled derived operation through review as non-blocking.
The fix
A
🟡is now dispositioned exactly like a Practice-4 YELLOW coproduct — deferral is sanctioned only when tracked:🟡is BLOCKING unless the gap is recorded as a tracked, named upstream obligation (missing primitive named, owning task or escalation, PR a declared honest scaffold).🟡lands — re-blocking the scaffold PR cannot land an absent primitive, so blocking it is pointless churn (the carve-out is narrow and self-justifying: can't-fix-here).🟡— a hand-rolled derived operation with no recorded substrate-gap obligation — is silent dissolution debt and blocks, per the Calibration section and INVARIANTS P5.Applied in both the Practice 10 disposition legend and For-Reviewers item 9. This preserves the genuine insight (you cannot fix an absent
std/primitive inside the consuming PR — the #3225 honest-scaffold reasoning) while closing the hole codex flagged (untracked = silent debt = blocking).Changes
docs/modeling-discipline.md: 🟡 bullet in the disposition legend + For-Reviewers item 9. +21 / -9, single file.Test plan
🤖 Generated with Claude Code