Skip to content

modeling-discipline: Practice 10 — Don't hand-roll a derived operation - #3241

Merged
briansrls merged 3 commits into
mainfrom
session/still-hawk-102-keystone-practice-10
May 18, 2026
Merged

briansrls merged 3 commits into
mainfrom
session/still-hawk-102-keystone-practice-10

Conversation

@briansrls

@briansrls briansrls commented May 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Rework-tracker PR #3240 task A2. Folds the dissolution-findings family into the keystone (docs/modeling-discipline.md) as a new Practice 10 — "Don't hand-roll a derived operation", rather than standing it up as a parallel companion doc. A second review vocabulary beside the Practices would itself be a Practice-5 single-authority violation; one reconciled home avoids that.

Practice 10 carries:

  • The 7-row derived-operations registry as its backbone — the objective test for "you should be modeling, not coding this," replacing reviewer taste.
  • The dissolution-findings rubric, reconciled — coproduct / carrier / predicate dissolution are the detection-rubric for smells Practices 4 / 7 / 8 already name (explicitly cross-referenced, no parallel vocabulary); walker, traverse, and emit/template dissolution are the genuinely-new members.
  • The fix-now vs substrate-sequencing discriminant — the load-bearing insight that lets a reviewer flag with confidence without wrongly demanding the impossible; a substrate-sequencing finding is not a BLOCKING request-changes on an honest scaffold.
  • The per-finding hard-error vs advisory decidability classification.
  • A note that registry rows 3 (translation) / 4 (coercion) carry no numbered finding — hand-writing a cross-target translator or coercion checker is a whole-architecture failure, not a function-scale review smell.

Boundaries (per the audit + placement call)

Changes

  • docs/modeling-discipline.md: "Nine" → "Ten Modeling Practices"; new Practice 10 mapping entry; the Practice 10 section; a "For Reviewers" checklist item for it. +136 / -4, single file.

Context

Audit verdict: #3240 (comment) · Operator confirmed the fold; placement call (registry → keystone Practice 10; invariant → INVARIANTS.md; lens spec split) accepted unchanged.

Test plan

  • Docs-only change; no code, no tests.
  • Practice 10 reads consistently with Practices 4 / 7 / 8 (the cross-referenced siblings).
  • A1 citation finalizes once the invariant is ratified.

🤖 Generated with Claude Code

@briansrls briansrls changed the title Sat May 16 modeling-discipline: Practice 10 — Don't hand-roll a derived operation May 18, 2026
@briansrls
briansrls marked this pull request as ready for review May 18, 2026 00:42
Operator directive via the #3240 rework tracker: the retroactive v4 audit
(C1) is per-item symbol-marked, and the symbol semantics ARE the
fix-now/substrate-sequencing discriminant — so the legend belongs in the
keystone rubric, with C1 applying it.

Practice 10's "Two outcomes" block becomes a three-symbol disposition
legend mirroring the coproduct-dissolution 🟢/🟡/🔴 convention:
🔴 fix-now, 🟡 substrate-sequencing, 🟢 clean / not a finding. Notes that
the symbol-marked inventory is the C1 artifact and in-file .dag tags land
per migration PR, not retro-applied across all files at once.

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

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 2b6fe157 · Trigger: manual
  • Comparison: main @ 75f98aaa ... session/still-hawk-102-keystone-practice-10 @ 2b6fe157
  • Conversation: View conversation

1. Story of the diff

This PR is a documentation/refinement change to docs/modeling-discipline.md, turning the checklist from nine to ten practices and adding Practice 10: “Don’t hand-roll a derived operation.” The new practice ties reviewer guidance back to the thesis’s derived-homomorphism claim: when behavior is fixed by modeled structure, the right fix is to model the missing fact or primitive rather than keep a local walker/predicate/template. The load-bearing addition is the derived-operations registry at docs/modeling-discipline.md:554-562, plus the dissolution taxonomy and disposition legend at docs/modeling-discipline.md:574-647; the reviewer checklist is then extended so future reviews explicitly classify these cases at docs/modeling-discipline.md:733-740.

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

N/A — this is a docs-only change to reviewer/modeling discipline; it does not touch Dag, substrate types, compiler passes, or implementation-layer Rust.

  1. INVARIANTS.md + modeling-discipline.md.

Finding — Boundary Discipline / single-authority reviewer guidance. The body explicitly says rows 3 and 4 “carry no numbered dissolution finding” and are “not as a reviewer finding” at docs/modeling-discipline.md:564-572, but the reviewer checklist later says that for “any function” covered by Practice 10 reviewers should “identify the derived-operations registry row it hand-rolls” and “name the dissolution finding” at docs/modeling-discipline.md:733-736. That makes the reviewer procedure broader than the practice’s own carve-out: a reviewer faithfully following item 9 has no valid “dissolution finding” to name for rows 3/4. I would tighten item 9 to apply only to registry rows that carry function-scale dissolution findings, or explicitly exempt rows 3/4 there too.

  1. CODING.md.

N/A — no Rust implementation code, APIs, error/result shapes, or helper placement changed.

  1. TESTING.md.

N/A — docs-only reviewer guidance; no compiler behavior, generated output, or testable runtime surface changed. No new tests are expected for this diff.

  1. LOCKED DESIGN DECISIONS.

Compliant — the change reinforces, rather than revises, the derived-homomorphism direction: the registry names translation/coercion as derived from modeled target facts at docs/modeling-discipline.md:558-559, matching the thesis claim that translation is derived by comparing target models, not authoring adapters (THESIS.md:89-91). No locked design decision is altered.

  1. TRACKED vs UNTRACKED DEBT.

Compliant — the temporary/proposed pieces are named and bounded. The pending invariant is explicitly tied to operator ratification and PR #3240 task A1 at docs/modeling-discipline.md:540-543; the enforcement mechanism and worked examples are similarly assigned to planned docs/design-dissolution-lens.md / PR #3240 tasks B1/B2 at docs/modeling-discipline.md:649-655. The 🟡 disposition also makes missing primitives upstream obligations rather than pretending the hand-rolled form is terminal at docs/modeling-discipline.md:619-625.

2.5. Top-down PM intent review

Compliant — the PR preserves the highest-level intent: model local, derive global. It does not add hand-written implementation or permanent scaffolding; it adds a reviewer rubric for detecting exactly that failure mode, and it routes honest gaps to named substrate primitives or tracked upstream work at docs/modeling-discipline.md:532-538 and docs/modeling-discipline.md:619-625. The checklist wording issue above is a local consistency problem, not a semantic dilution of the PM plan.

3. Verdict

APPROVE_WITH_COMMENTS. The new practice is directionally aligned with the thesis and tracks its pending pieces, but the reviewer checklist should mirror the rows-3/4 carve-out so it does not instruct reviewers to name findings the practice says do not exist.

Exploratory observations

Double-check the singular path in docs/modeling-discipline.md:617 (std/diagnostic.dag). The uploaded invariant reference names src/v3/std/diagnostics.dag at INVARIANTS.md:366; I’m not treating this as a finding because the diff may refer to a distinct file not present in the uploaded context.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: openai-pro review (APPROVE_WITH_COMMENTS, sha 2b6fe157). Comment addressed in 3eb4c3aa9.

Finding — For-Reviewers item 9 vs the rows-3/4 carve-out. Valid. Practice 10's body says registry rows 3 (translation) / 4 (coercion) carry no numbered dissolution finding, but item 9 told reviewers to "name the dissolution finding" for any Practice-10 function — leaving a reviewer with no valid finding to name on a rows-3/4 hand-roll. Fixed: item 9 now scopes "name the finding + mark disposition" to rows 1/2/5/6/7 (the function-scale findings), and states explicitly that a hand-rolled row 3 or 4 carries no numbered finding — it is a whole-architecture escalation, mirroring the body's carve-out.

Exploratory observation — std/diagnostic.dag path. No change needed. Practice 10's std/diagnostic.dag is the v4 file src/v4/std/diagnostic.dag (singular "diagnostic"), where Outcome<T> is declared — verified on origin/main. The INVARIANTS.md:366 reference you saw, src/v3/std/diagnostics.dag (plural, v3), is a distinct v3 file. modeling-discipline.md is a v4 doc and uses std/ as the v4-std short form throughout (consistent with Practice 8); the reference is correct.

— sent from still-hawk-102

@briansrls
briansrls merged commit 45c9072 into main May 18, 2026
7 checks passed
briansrls added a commit that referenced this pull request May 18, 2026
…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>
@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex REQUEST_CHANGES — finding valid, addressed via forward-fix PR #3242.

Timing: this REQUEST_CHANGES posted at 01:03:01Z; #3241 was squash-merged at 01:04:54Z (45c90729a). The finding landed essentially at merge time, so it could not be a pre-merge change — it is addressed as a forward-fix.

The finding is valid: Practice 10 said a 🟡 substrate-sequencing finding is flatly "not a BLOCKING request-changes on an honest scaffold PR," which lowered the substrate-blocking bar and conflicts with the Calibration section + INVARIANTS P5 — an untracked hand-rolled derived operation would pass review as non-blocking.

Fix — PR #3242 (#3242): a 🟡 is now dispositioned like a Practice-4 YELLOW coproduct — BLOCKING unless the gap is recorded as a tracked, named upstream obligation. A tracked 🟡 on a declared honest scaffold lands (blocking it cannot land an absent primitive — can't-fix-here); an untracked 🟡 is silent dissolution debt and blocks. That closes the hole while keeping the #3225-validated honest-scaffold insight.

— sent from still-hawk-102

briansrls added a commit that referenced this pull request May 18, 2026
…nless tracked (#3242)

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>
briansrls added a commit that referenced this pull request May 18, 2026
PR #3241 merged Practice 10 ("Don't hand-roll a derived operation") into
modeling-discipline.md. §1's principle — the seed is a projection, never
hand-code — is exactly Practice 10 at bootstrap scale: the seed is
produced by translation + emission (derived-operations registry rows 3
and 6), so a hand-written seed is the bootstrap-scale dissolution
finding. Added a one-paragraph cross-reference so the design doc leans on
the landed keystone Practice rather than restating the principle in
isolation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
* docs: design — the bootstrap as a complete fact model (T-32 Phase 1)

Operator-directed (briansrls, 2026-05-17): work out the bootstrap as a
fully modeled pipeline — every layer (compiler, seed, target, runtime,
machine) a declared fact model, every artifact a projection, zero
ambient hand-maintained code. Captures the design worked out in the
T-32 design conversation: the layer stack, the seed as
emit(snapshot, target, runtime), the comprehension boundary modeled as
a frozen sub-model + footprint fold + subset-Witness, the bootstrap
circularity modeled as a fixed point with a path-independent
self-validating witness, and the two honest floors (the permanent
physical axiom; the origin axiom that dissolves under path-
independence). This is the Phase-1 design content for TASKS.md T-32.

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

* docs: fix path anchors + de-overclaim bootstrap.dag state (#3236 review)

cursor APPROVE_WITH_COMMENTS on #3236 — two P1 (modeling-faithfulness)
notes: (1) the layer-table paths were repo-root-unresolvable (bare
`extdeps/...`, wrong `compiler/workflow/` segment) — all .dag paths now
src/v4/-prefixed and correct (bootstrap.dag is src/v4/workflow/); (2) §5
said bootstrap.dag "already carries this as data" — on main it is a
T-20 scaffold naming the chain in its header; the staged-stage records
+ FixptStage1Stage2 + bit_identical_check as actual workflow data are
the in-flight T-20 expansion (#3213). Reworded to distinguish "this
Phase-1 model specifies the shape" from "carried as .dag data on main".

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

* TASKS.md T-32: wire the plan to the bootstrap-fact-model design doc

#3236 added docs/design-bootstrap-fact-model.md as "T-32's Phase-1
design content" — but T-32's TASKS.md entry (merged via #3233 before
the doc existed) did not reference it back, leaving the doc a one-way
link / effectively stray (nothing in the plan pointed to it). Add the
back-reference: T-32 Phase 1 names docs/design-bootstrap-fact-model.md
as its design content, states the Phase-1 deliverable is the operator-
ratified layer model in that doc, and that a Phase-1 worker reads it as
the brief. The doc is now consumed by the plan, not stray.

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

* design-bootstrap-fact-model: fix the trusting-trust + LanguageModel-authority claims (#3236 review)

codex BLOCKING ×2, both valid:

1. The fixed-point witness was doing double duty — reproduction AND
   trust-erasure. Corrected §5/§6: the bit-identical witness proves
   the fixed point is REACHED (reproduction), NOT that the seed was
   honest — a compromised seed (Thompson trusting-trust) reaches a
   compromised, self-consistent fixed point that passes the witness.
   Path-independence covers only benign entry paths. The "origin axiom
   dissolves" claim was wrong: it is a real second floor — the seed-
   honesty axiom — discharged by diverse double-compilation (Wheeler),
   not dissolved. End state = TWO floors, not one.

2. The doc treated the `LanguageModel` carrier as an existing authority;
   it is not declared (Theme-A #9). §2/§4 now mark it as open substrate
   T-32 Phase 1 must land (declare the carrier, or fix "a model IS a
   Node"), not an authority to point at.

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

* v4 TASKS: align the T-32 summary with the design doc's §5/§6 (codex/cursor #3236)

The T-32 blurb pointing to docs/design-bootstrap-fact-model.md still carried
the pre-trusting-trust-fix framing — "a path-independent witness" and "the one
permanent physical axiom" — which is a stronger claim than the corrected design
doc makes. §5 qualifies path-independence to benign entry paths and scopes the
bit-identical witness to reproduction (not honesty); §6 names two floors. A
reader stopping at TASKS.md got the skewed summary. Tightened to match.

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

* WIP: Sat May 16

* design-bootstrap-fact-model: honest compiler-pipeline status + footprint over full projection closure

Two BLOCKING review findings (#3236):

- §2 layer table overstated the v4 compiler pipeline as flatly
  "modeled". Only the front-end (01_tokenize / 02_parse) is modeled
  (CP-1a #3214); 00_compile / 03_normalize / 03_resolve / 04_infer /
  05_emit / 05_eval are T-8/T-9/T-10/T-22 scaffolds. Status now states
  this honestly under P1.

- §4 defined footprint as a fold over the snapshot alone, but §3
  defines the seed as emit(snapshot, target_model, runtime_model). The
  gate's seed_capability == footprint then undercounts the
  lowering/runtime constructs the seed must consume. footprint now folds
  over the full projection-input closure {snapshot, target_model,
  runtime_model}, matching seed_capability's "lowering the seed
  performs" component.

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

* design-bootstrap-fact-model: honest layer-model status — only rust.dag is modeled

BLOCKING review finding (#3236, docs/design-bootstrap-fact-model.md:31):
"the layer models needed already exist individually" overstated live
authority under INVARIANTS P1 (Documentation Describes Live State).
Verified on origin/main: rust.dag is modeled (2097 lines, T-4 rust-slice);
machine_code.dag (T-4.13), process.dag and file_system.dag (T-4.5) are
module-declaration-only scaffolds.

Fix: §2 status cells for target-language and runtime now distinguish the
modeled rust.dag from the three scaffolds; the "already exist" sentence
now states only rust.dag is modeled and names the per-file modeling as a
T-32 precondition.

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

* design-bootstrap-fact-model: cross-reference Practice 10 (now on main)

PR #3241 merged Practice 10 ("Don't hand-roll a derived operation") into
modeling-discipline.md. §1's principle — the seed is a projection, never
hand-code — is exactly Practice 10 at bootstrap scale: the seed is
produced by translation + emission (derived-operations registry rows 3
and 6), so a hand-written seed is the bootstrap-scale dissolution
finding. Added a one-paragraph cross-reference so the design doc leans on
the landed keystone Practice rather than restating the principle in
isolation.

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

* WIP: Sat May 16

* design-bootstrap-fact-model: §7 Phase-1 deliverable names both honest floors

BLOCKING review finding (#3236:238): §6 establishes seed-honesty as a
real second floor discharged by diverse double-compilation, but §7's
Phase-1 deliverable enumeration named only "the named physical axiom" —
so the trust-discharge witness could fall out of T-32 (INVARIANTS P1/P2).

Fix: §7 now lists "both honest floors of §6 — the physical axiom and the
seed-honesty axiom with its diverse-double-compilation discharge
witness" as load-bearing T-32 Phase-1 deliverables, consistent with §6.

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