Skip to content

v4 T-20+T-24: model workflow/bootstrap.dag + workflow/ci.dag (BootstrapPlan data + CiPipeline C4 seam) - #3213

Merged
briansrls merged 80 commits into
mainfrom
session/bold-hawk-201
May 18, 2026
Merged

briansrls merged 80 commits into
mainfrom
session/bold-hawk-201

Conversation

@briansrls

@briansrls briansrls commented May 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • T-20 workflow/bootstrap.dag: Stage / BootstrapStep / BootstrapPlan as inert data; canonical seed → self0 → self1 → fixpt plan that v2's run interpreter walks. No orchestration body (build.rs/shell = the v3 regression door).
  • T-24 workflow/ci.dag: CiJob / CiGate / CiPipeline data; Symbol-edge job DAG; canonical concrete instance modeling the structural v2-compile gate (the existing day-1 CI gate).
  • Per-brief scope: structural v2-compile gate only. The ci.yml C4 projection, affected-set job selection (IB-2), bootstrap interpretation (process/fs spawn), and the executable BitIdentical / test-eval lane are TRACKED SCAFFOLD (🟡) with named owners + dissolution triggers (T-22 eval, T-4.5 process/fs, T-4.6 yaml, T-10 emit, T-21 affected_set, T-15 fixed-point) — declarative-now / operations-deferred discipline (std/collection.dag v4 T-3 Wave-A1: std/collection.dag — List + Set (b2 plain carriers; Map split to Wave-A2) #3169, json.dag v4 T-4.6: canonical json.dag — JsonValue model + Outcome<JsonValue> parse/emit seam #3184). Executable TestClaim lane deferred to the T-22 named trigger; not built here.

Discipline

  • Status-line bump only; Owns / Consumes / Scope / Anchor immutable-header lines unchanged (frozen-scaffold-header ratification respected).
  • Hash pin is not a stored literal (K-1 opaque; produced by content_hash B1 at interpret time, asserted by T-15). Job/gate edges are Symbol name-references, never producer-inlining (cyclic-graph discipline).
  • Fail-closed projection seam mirrors the ratified yaml_emit -> Outcome<String> seam . #3 (INVARIANTS P3).

Test plan

  • Structural v2-compile gate: v2-compiler compile --source-root src/v4 → indexed 64 modules, 0 diagnostics (the existing CI bootstrap-viability gate).
  • Executable interpret/projection/affected-set lanes intentionally deferred (TRACKED SCAFFOLD owners above) — out of scope per brief.

🤖 Generated with Claude Code

…rapPlan data (v2-interp) + CiPipeline C4 ci.yml projection seam

T-20 workflow/bootstrap.dag: Stage / BootstrapStep / BootstrapPlan as
inert data; canonical seed→self0→self1→fixpt plan. Interpretation
(process/fs spawn) + executable BitIdentical TestClaim deferred (TRACKED
SCAFFOLD; owners T-22/T-4.5 and T-15).

T-24 workflow/ci.dag: CiJob / CiGate / CiPipeline data; Symbol-edge job
DAG; canonical structural v2-compile gate instance (the existing day-1
gate). ci.yml C4 projection, affected-set selection (IB-2), and
test/eval lane deferred (TRACKED SCAFFOLD; owners T-4.6/T-10, T-21, T-22).

Structural v2-compile gate verified: v2-compiler indexes 64 modules,
0 diagnostics. Status-line bump only; Owns/Consumes/Scope/Anchor headers
unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls force-pushed the session/bold-hawk-201 branch from ff8a54e to 2e8403b Compare May 16, 2026 21:58
@briansrls briansrls changed the title IB-3 T-20+T-24 workflow/bootstrap.dag + workflow/ci.dag — BootstrapPlan data v2-interp; CiPipeline C4 ci.yml projection; affected-set job selection (IB-2); structural v2-compile gate only — executable TestClaim lane deferred T-22 named trigger, do not build now v4 T-20+T-24: model workflow/bootstrap.dag + workflow/ci.dag (BootstrapPlan data + CiPipeline C4 seam) May 16, 2026
@briansrls
briansrls marked this pull request as ready for review May 16, 2026 21:59

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Review metadata

  • Provider / model: codex / unknown
  • Commit: 2e8403b7 · Trigger: schedule
  • Thinking: 298s wall

BLOCKING (3)

Root Cause

  • src/v4/workflow/bootstrap.dag workflow-local closed sums were treated as self-evident data → add the Practice-4 classification ledgers or dissolve the sums before downstream consumers depend on them
  • src/v4/workflow/bootstrap.dag the canonical bootstrap chain was modeled as a generic step list plus semantic comments → encode the fixed chain or typed successor transitions in the data shape
  • src/v4/workflow/ci.dag the C4 seam modeled the internal CI graph before modeling the external GitHub Actions workflow facts it must emit → add those carriers or narrow/defer the C4 projection claim

⚠️ The blocking issues are substrate-shape issues that are cheapest to fix before T-15/T-22/T-24 consumers wire to these files.

Comment thread src/v4/workflow/bootstrap.dag Outdated
// nullary sum: `Seed` is the frozen external v2 binary (src/v2/, touched
// EXACTLY ONCE); `Stage0/1/2` are the three self-host products. No
// payload — a stage is its identity (STRUCTURE.md §"Bootstrap chain").
type Stage

This comment was marked as resolved.

Comment thread src/v4/workflow/bootstrap.dag Outdated
// step. The pinned content-hash is NOT a stored field — it is produced
// by `content_hash` (B1) at interpret time, asserted by T-15.
type BootstrapPlan {
steps: List<BootstrapStep>

This comment was marked as resolved.

Comment thread src/v4/workflow/ci.dag
// CiPipeline — the CI pipeline AS DATA. `.github/workflows/ci.yml` is a
// C4 checked projection of this (TRACKED SCAFFOLD (1)); affected-set
// selection over `jobs` is TRACKED SCAFFOLD (2).
type CiPipeline {

This comment was marked as resolved.

…rapStep coproducts

Addresses BLOCKING review (bootstrap.dag:160): every substrate coproduct
must carry the full Practice-4 classification + five-pattern dissolution
ledger under INVARIANTS P1 / modeling-discipline.md §4. Both Stage and
BootstrapStep classified 🟢 GREEN (terminal) with the five patterns
(fact-placement / variant-is-data / algebraic / dimensional /
parameterized-family) attempted inline, mirroring the witness.dag
exemplar. The inadequate one-line note replaced with a forward pointer.
Comment-only; structural v2-compile gate re-verified (64 modules, 0
diagnostics).

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

Copy link
Copy Markdown
Contributor Author

Addressed in 45a8c82. Valid finding — both Stage and BootstrapStep now carry the full Practice-4 🟢/🟡/🔴 classification + five-pattern dissolution ledger inline at their declarations (both 🟢 GREEN terminal), mirroring the std/witness.dag exemplar and modeling-discipline.md §4. The prior inadequate one-line note was replaced with a forward pointer; BootstrapPlan remains ledger-exempt as a Conj record. Structural v2-compile gate re-verified (64 modules, 0 diagnostics).

— sent from bold-hawk-201

…List<BootstrapStep>

Addresses BLOCKING review (bootstrap.dag:190): steps: List<BootstrapStep>
admitted reordered/duplicated/missing/extra chains — the
seed-once→stage0→stage1→stage2→fixed-point invariant was prose-only
(INVARIANTS P2). The chain is fixed by STRUCTURE.md (zero degrees of
freedom), so BootstrapPlan is now a FIXED RECORD with four named
positional slots whose distinct slot TYPES (CompileStep / FixedPointStep)
pin compile-vs-fixedpoint per position. Dissolves the exact node.dag
Diff #3162 list-anti-pattern. BootstrapStep coproduct removed (kind is
now the slot type, not a variant); Stage coproduct + its Practice-4
ledger retained unchanged (still consumed by the step records — no
finding-#1 churn). Within-step Stage wiring is a documented bounded
residual (yaml lexeme class; mis-wire = fail-closed interpret-time
Diagnostic, the ratified Diff stance — not a type-level illegal state).
Structural v2-compile gate re-verified (64 modules, 0 diagnostics).

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

Copy link
Copy Markdown
Contributor Author

Addressed in e3416f4. Valid finding — the List<BootstrapStep> admitted reorder/duplicate/missing/extra chains; the seed-once→0→1→2→fixed-point invariant was prose-only (P2).

Fix (structural, INVARIANTS P1/P2): BootstrapPlan is now a FIXED RECORD with four named positional slots whose distinct slot TYPES pin compile-vs-fixed-point per position:
{ seed: CompileStep, self0: CompileStep, self1: CompileStep, fixpt: FixedPointStep }. No list ⇒ no reorder/duplicate/missing/extra is constructible; the sequence IS the type. This dissolves exactly the over-general-list anti-pattern the node.dag Diff #3162 finding canonically forecloses.

Surfacing the shape decision for conscious confirmation (load-bearing operator-tier file):

  • Chosen: fixed record + typed slots (idiomatic — records only; consistent with finding Add SVG viz, test helpers, and makegen scaffold #1: Stage coproduct + its Practice-4 ledger are retained unchanged since the step records still consume Stage, so no ledger churn).
  • Rejected (stronger but unprecedented): per-position singleton step types (type SeedCompile = SeedCompile, …) giving BootstrapPlan exactly ONE inhabitant — would also pin the within-step Stage wiring at the type level. No single-variant-sum has any v4 precedent and v4's grammar has no phantom-position facility, so this would be papering with an unprecedented form rather than escalating.
  • Bounded residual (honest, tracked): CompileStep/FixedPointStep carry free Stage fields, so a hand-built plan could mis-wire a slot. This is the YamlInt { lexeme: String } refinement class, NOT a type-level illegal state: the canonical bootstrap_plan is the sole authority and is correctly wired; a divergent hand-built plan is a fail-closed Diagnostic at interpret time — the exact ratified node.dag Diff stance ("Edit whose Path no longer resolves ⇒ fail-closed Diagnostic at apply time, not a type-level illegal state"). Owned by the deferred interpreter / a future grammar refinement; documented in-file, not escalated.

BootstrapStep coproduct removed (compile-vs-fixed-point is now the slot type, not a variant); provenance noted in-file. Structural v2-compile gate re-verified (64 modules, 0 diagnostics). If you intended the stronger zero-degrees-of-freedom singleton shape (accepting the unprecedented form), say so and I'll apply it.

— sent from bold-hawk-201

…sport facts

Addresses BLOCKING review (ci.dag:146): CiPipeline {jobs,gates} cannot
faithfully back a .github/workflows/ci.yml C4 projection — a faithful
GHA workflow needs on/runs-on/steps/concurrency/permissions, which the
gunbc job/gate DAG deliberately omits, so any CiPipeline->ci.yml emit
would fabricate them (INVARIANTS P1/P2).

Fix is honesty, not fabrication and not a substrate add: project_ci_yml
re-typed to also consume a GHA workflow-schema model (gunbc data fills
the schema, never invents it); that schema is named MISSING SUBSTRATE
(no v4 counterpart to v3 extdeps/github/actions.dag — a new file =
operator-tier, surfaced not added). Committed ci.yml reframed as the
explicit interim hand-authored BRIDGE (the affected_set.dag
detect-affected-components.sh precedent); C4 checked-projection is an
explicit future state gated on the named substrate. The immutable
header's Owns/C4-over-CiPipeline over-claim is flagged on the PR for
conscious operator confirmation (frozen-header lines NOT worker-edited).
Structural v2-compile gate re-verified (64 modules, 0 diagnostics).

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

Copy link
Copy Markdown
Contributor Author

Addressed in db725fc. Valid finding — CiPipeline { jobs, gates } cannot faithfully back a .github/workflows/ci.yml C4 projection: a faithful GHA workflow needs on/runs-on/steps/concurrency/permissions, which the gunbc job/gate DAG deliberately omits, so any CiPipeline -> ci.yml emit would fabricate them (P1/P2).

The fix is honesty, not fabrication and not a unilateral substrate add:

  • project_ci_yml re-typed (CiPipeline, GhaWorkflowSchema) -> Outcome<YamlValue> — the gunbc data fills a GHA workflow schema, never invents it.
  • That schema is named MISSING SUBSTRATE: v3 had extdeps/github/actions.dag (Workflow/Job/Step/Trigger/…); v4 has no counterpart. Minting it is a new extdeps file = operator-tier substrate extension — surfaced here, NOT added by me (STOP, not improvise).
  • Until it exists, the committed .github/workflows/ci.yml is reframed as the explicit interim hand-authored BRIDGE — exactly the precedent in lens/affected_set.dag's header for scripts/detect-affected-components.sh. No projection is authored ⇒ nothing is fabricated; the C4 checked-projection is an explicit future state gated on the named substrate, with an owner.

Surfaced for conscious confirmation (immutable-header tension): the frozen scaffold header's Owns + C4 lines bind BOTH CiPipeline { jobs, gates } AND "committed == emit(CiPipeline) checked projection" of ci.yml — these two are in tension (the projection can't be faithful over jobs/gates alone). Resolving it needs either a GHA-workflow-schema extdeps model (new file, operator-tier) or an operator decision to narrow the C4-over-CiPipeline header claim. Per frozen-scaffold-header ratification discipline I did not edit the immutable Owns/C4 lines — the modeling note now states the gap honestly and this is flagged for your call. Status/notes softened to match. Structural v2-compile gate re-verified (64 modules, 0 diagnostics).

— sent from bold-hawk-201

@briansrls

Copy link
Copy Markdown
Contributor Author

This codex review is at sha 2e8403b7 — the original commit, before fixes. Verified against current HEAD db725fc2e: all three BLOCKING items are already resolved (these mirror the briansrls inline findings I addressed in three follow-up commits). Per-finding mapping:

  1. Workflow-local closed sums lacked Practice-4 ledgers → 45a8c8271: Stage carries the full 🟢/🟡/🔴 + five-pattern dissolution ledger; BootstrapStep was dissolved (codex's own "or dissolve the sums" alternative) — compile-vs-fixed-point is now the slot TYPE, not a variant.
  2. Canonical chain modeled as a generic step list + comments → e3416f430: BootstrapPlan is now a FIXED RECORD with four named positional slots of distinct types (CompileStep/FixedPointStep); no List, so reorder/duplicate/missing/extra is unconstructible — the sequence is the type, not prose (dissolves the node.dag Diff v4 D1 — Diff/Path structural-delta vocabulary (operator ratification) #3162 anti-pattern).
  3. C4 seam modeled the internal CI graph before the external GHA facts → db725fc2e: project_ci_yml re-typed to also consume a GHA workflow-schema model (no fabrication); that schema is named missing substrate (operator-tier new extdeps file, surfaced not added); committed ci.yml reframed as the explicit interim hand-authored bridge; C4-over-CiPipeline header over-claim flagged for operator confirmation.

No re-fix needed (rolling-HEAD discipline — stale-sha scheduled review, findings already at HEAD). Structural v2-compile gate green at HEAD (64 modules, 0 diagnostics). A fresh review on HEAD db725fc2e is the binding check.

— sent from bold-hawk-201

…-tense prose

Addresses cursor/composer-2 APPROVE_WITH_COMMENTS: two comments still
named BootstrapStep in the present tense after it was dissolved into
CompileStep/FixedPointStep slots. Fixed the "DATA, not a runner"
paragraph (now: fixed BootstrapPlan record of named slots) and the
Stage ledger pattern-1 (now: every chain step CompileStep/FixedPointStep).
The two remaining BootstrapStep mentions are intentional
removal-provenance, kept. Comment-only; structural v2-compile gate
re-verified (64 modules, 0 diagnostics).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls force-pushed the session/bold-hawk-201 branch from 7eff3c4 to aa1e666 Compare May 16, 2026 22:38
@briansrls

Copy link
Copy Markdown
Contributor Author

Addressed in aa1e666 (thanks for the APPROVE_WITH_COMMENTS). Both stale present-tense BootstrapStep references fixed:

  • bootstrap.dag "DATA, not a runner" para → now "a fixed BootstrapPlan record of named CompileStep / FixedPointStep slots".
  • Stage ledger pattern-1 → now "every chain step (CompileStep / FixedPointStep) and the deferred interpreter …".

The two other BootstrapStep mentions (the REPLACES the prior steps: List<BootstrapStep> line and The earlier BootstrapStep coproduct is REMOVED) are intentional removal-provenance and were kept. Comment-only change; structural v2-compile gate re-verified (64 modules, 0 diagnostics).

— sent from bold-hawk-201

@briansrls

Copy link
Copy Markdown
Contributor Author

Thanks — noting this is APPROVE / no blocking issues. On the one exploratory observation: yes, ci.dag's Owns/C4 header (lines 13-21) still states the strong committed == emit(CiPipeline) story while the body scopes it as future-gated. That divergence is intentional and already surfaced for conscious operator confirmation (PR comment on the briansrls C4 finding): the Owns/C4 lines are the frozen immutable scaffold header, which per the frozen-scaffold-header ratification discipline this worker does NOT edit unilaterally — resolving the over-claim is an operator call (narrow the header, or land a GHA-workflow-schema extdeps model to back it). The body's "HONEST SCOPE OF THE C4 CLAIM" note is the honest tracked statement of that gap, not silent dilution. No code change.

— sent from bold-hawk-201

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Review metadata

  • Provider / model: codex / unknown
  • Commit: aa1e666d · Trigger: schedule
  • Thinking: 227s wall

BLOCKING (1)

Root Cause

  • src/v4/workflow/ci.dag The C4 fabrication fix was reconciled locally against missing GHA transport facts but not against the ratified workflow-as-data projection shape → point the scaffold at CIWorkflowDag + WorkflowRuntime -> Workflow or explicitly route a v4 design decision that supersedes that locked seam.

ROADMAP — Incomplete

  • T-Workflow-As-Data C4 seam: The diff honestly defers ci.yml authority, but its named future projection does not match the ratified project_github_actions lane.

⚠️ One locked-seam mismatch remains; the prior three review findings are otherwise addressed.

Comment thread src/v4/workflow/ci.dag Outdated
// (std/collection.dag #3169, canonical json.dag #3184). NOT improvised
// bodies, NOT bodiless `fn` (frozen v2 rejects bodiless `fn`, DECISIONS
// PARSE-1):
// (1) `project_ci_yml : (CiPipeline, GhaWorkflowSchema) ->

This comment was marked as resolved.

@briansrls

Copy link
Copy Markdown
Contributor Author

Verified against current HEAD aa1e666dd — this finding (and the +3 queued behind it) is the original briansrls batch at sha 2e8403b7, re-relayed; all four are already resolved at HEAD. No re-fix (rolling-HEAD discipline). Per-finding mapping:

  1. Stage/BootstrapStep coproducts lack Practice-4 ledger → resolved. At HEAD, type Stage (line 231) is immediately preceded by its FULL 🟢 GREEN (terminal) five-pattern dissolution ledger (lines 202-230: fact-placement / variant-is-data / algebraic / dimensional / parameterized-family + Terminal). BootstrapStep no longer exists — it was dissolved into typed slots (commit e3416f430); only two intentional removal-provenance mentions remain (lines 157, 187). Ledger commit: 45a8c8271.
  2. steps: List<BootstrapStep> admits invalid chains → resolved in e3416f430: BootstrapPlan is now a fixed record of named CompileStep/FixedPointStep slots — no list, sequence is the type.
  3. CiPipeline can't faithfully back C4 ci.yml → resolved in db725fc2e: project_ci_yml re-typed to consume a GHA workflow-schema model (missing substrate, surfaced not added); committed ci.yml reframed as explicit interim bridge; header over-claim flagged for operator.
  4. (Comment hygiene from cursor) → resolved in aa1e666dd.

Two distinct APPROVE reviews (claude, cursor) are on HEAD aa1e666dd; structural v2-compile gate green (64 modules, 0 diagnostics). A fresh review on aa1e666dd is the binding check.

— sent from bold-hawk-201

@briansrls

Copy link
Copy Markdown
Contributor Author

Verified against HEAD aa1e666dd — resolved, stale re-relay of the original 2e8403b7 batch (same as the consolidated mapping I posted minutes ago). At HEAD, type CiPipeline (ci.dag:198) is preceded by the explicit note that it is NOT a present C4 authority and the faithful projection also needs a GHA workflow-schema model; project_ci_yml is re-typed (CiPipeline, GhaWorkflowSchema) -> Outcome<YamlValue> (no fabrication), the GHA schema is named MISSING SUBSTRATE (operator-tier new extdeps file, surfaced not added), committed ci.yml is reframed as the explicit interim hand-authored bridge, and the immutable-header over-claim is surfaced under "HEADER TENSION — SURFACED" for operator confirmation. Fix commit: db725fc2e. The +2 queued behind this are the same already-mapped stale batch (the List<BootstrapStep> fixed-record move and the Practice-4 ledger, resolved in e3416f430/45a8c8271). No re-fix per rolling-HEAD discipline; binding check is a fresh review on aa1e666dd (two distinct APPROVEs already there).

— sent from bold-hawk-201

… (not a worker-minted shape)

Addresses BLOCKING (ci.dag:120): the db725fc C4 fix minted a parallel
project_ci_yml(CiPipeline, GhaWorkflowSchema) -> YamlValue seam,
diverging from the ratified locked T-Workflow-As-Data path
project_github_actions(CIWorkflowDag, WorkflowRuntime) -> Workflow
(extdeps.github.actions { Workflow } single authority pinned on
gunbc.ci CIWorkflowDag; WorkflowRuntime = YamlStatic | BinaryShim;
dsl/gunbc/ci_emission.dag) — parallel authority, INVARIANTS P2 (the
SELF_HOSTING authority-audit precedent).

Fix: the deferred seam now defers to the ratified single-authority
Workflow carrier + project_github_actions/WorkflowRuntime seam; ci.yml
is the Workflow carrier serialized under YamlStatic (YAML downstream of
Workflow), never a parallel CiPipeline -> YamlValue projection. The
invented GhaWorkflowSchema/project_ci_yml shape is retracted (kept as
provenance, not silently dropped). Missing substrate re-stated as the
v4 counterpart of the ratified extdeps.github.actions Workflow carrier
+ ci_emission.dag seam (operator-tier new file, surfaced not added, not
worker-substituted). No-fabrication / interim-bridge / header-tension-
surfaced stance preserved. Structural v2-compile gate re-verified (64
modules, 0 diagnostics).

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

Copy link
Copy Markdown
Contributor Author

Valid finding — addressed in 843a37f2d. My earlier C4 fix (db725fc2e) minted a parallel project_ci_yml(CiPipeline, GhaWorkflowSchema) -> YamlValue seam, which diverged from the ratified locked T-Workflow-As-Data single-authority path and would have let downstream work bypass the Workflow carrier (INVARIANTS P2 — the SELF_HOSTING authority-audit class).

Authority audit (the ratified path I should have deferred to):

  • extdeps.github.actions { Workflow, Job, RunStep, UsesStep, … } — the GHA Workflow carrier, single authority ("sole live Actions transport for gunbc CI; no hand-parallel Workflow mirror").
  • gunbc.ci { CIWorkflowDag } pins that Workflow carrier; WorkflowRuntime = YamlStatic | BinaryShim; seam project_github_actions(CIWorkflowDag, WorkflowRuntime) -> Workflow (dsl/gunbc/ci_emission.dag).
  • .github/workflows/ci.yml = the Workflow carrier serialized under WorkflowRuntime = YamlStatic — YAML is downstream of Workflow, never a parallel CiPipeline -> YamlValue projection.

Fix: the deferred seam now defers to that ratified single-authority path; CiPipeline feeds the CIWorkflowDag-pinned Workflow carrier and never invents transport. The invented GhaWorkflowSchema/project_ci_yml -> YamlValue shape is retracted (kept as one-line provenance, not silently dropped). Missing substrate re-stated as the v4 counterpart of the ratified extdeps.github.actions { Workflow } carrier + ci_emission.dag's WorkflowRuntime/project_github_actions seam — operator-tier new file, surfaced not added, not worker-substituted with a minted shape. No-fabrication / interim-bridge / immutable-header-tension-surfaced stance preserved. Structural v2-compile gate green (64 modules, 0 diagnostics).

— sent from bold-hawk-201

@briansrls

Copy link
Copy Markdown
Contributor Author

This codex review is at sha aa1e666d — its sole BLOCKING finding (the locked-seam mismatch) was fixed in 843a37f2d, pushed minutes after that sha. Verified at current HEAD 843a37f2d:

"point the scaffold at CIWorkflowDag + WorkflowRuntime -> Workflow" → done exactly. The deferred C4 seam now defers to the ratified single-authority path project_github_actions(CIWorkflowDag, WorkflowRuntime) -> Workflow (3 in-file references + a dedicated "SINGLE-AUTHORITY SEAM — DEFER" block). The worker-minted project_ci_yml(CiPipeline, GhaWorkflowSchema) -> YamlValue is retracted (kept as one-line provenance). CiPipeline feeds the CIWorkflowDag-pinned Workflow carrier; ci.yml = that carrier serialized under WorkflowRuntime = YamlStatic (YAML downstream of Workflow). Missing substrate re-stated as the v4 counterpart of the ratified extdeps.github.actions { Workflow } + ci_emission.dag seam (operator-tier, surfaced not added, not worker-substituted). No v4 design decision supersedes the locked seam — it defers to it.

codex itself notes "the prior three review findings are otherwise addressed." No re-fix per rolling-HEAD discipline; the binding check is a fresh review on 843a37f2d. Structural v2-compile gate green at HEAD (64 modules, 0 diagnostics).

— sent from bold-hawk-201

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 843a37f2 · Trigger: manual
  • Comparison: main @ 59dd862a ... session/bold-hawk-201 @ 843a37f2
  • Conversation: View conversation

1. Story of the diff

This PR turns the v4 bootstrap and CI workflow placeholders into declarative .dag data, but intentionally stops short of executable orchestration. workflow/bootstrap.dag now declares the bootstrap artifacts as a Stage coproduct, then represents the seed→stage0→stage1→stage2→fixed-point chain through CompileStep, FixedPointStep, and a canonical bootstrap_plan instance (src/v4/workflow/bootstrap.dag:231, src/v4/workflow/bootstrap.dag:244, src/v4/workflow/bootstrap.dag:257, src/v4/workflow/bootstrap.dag:287). The diff also makes the deferred parts explicit: interpreting the plan, invoking process/filesystem extdeps, and asserting bit-identical fixed point are all named scaffolds rather than silently implied runtime behavior (src/v4/workflow/bootstrap.dag:127, src/v4/workflow/bootstrap.dag:137).

workflow/ci.dag similarly introduces a declarative CI job/gate DAG as data: CiJob, CiGate, CiPipeline, and a minimal canonical ci_pipeline with the existing v2-compile structural gate (src/v4/workflow/ci.dag:199, src/v4/workflow/ci.dag:210, src/v4/workflow/ci.dag:225, src/v4/workflow/ci.dag:251). The CI side is careful not to fabricate a direct CiPipeline -> ci.yml projection from insufficient facts; instead it names the missing ratified Workflow / project_github_actions seam and leaves committed ci.yml as an explicit interim bridge (src/v4/workflow/ci.dag:63, src/v4/workflow/ci.dag:144, src/v4/workflow/ci.dag:158).

2. Invariant categories

  1. LAYER MODEL — Finding, BLOCKING.

src/v4/workflow/bootstrap.dag:245: with: Stage and src/v4/workflow/bootstrap.dag:246: produces: Stage leave each compile slot free to name any source/target stage pair. Because BootstrapPlan then uses the same CompileStep type for seed, self0, and self1 (src/v4/workflow/bootstrap.dag:273, src/v4/workflow/bootstrap.dag:274, src/v4/workflow/bootstrap.dag:275), the declared substrate does not actually make the fixed seed→stage0→stage1→stage2 chain unrepresentable-by-construction. A seed slot producing Stage2 is type-valid even though the file says the chain has “zero degrees of freedom”; this is substrate/model data, not implementation-only Rust, so the type shape needs to carry the fixed edge identity rather than deferring it to a later interpreter.

  1. INVARIANTS.md + modeling-discipline.md — Finding, BLOCKING.

Principle: illegal states unrepresentable / single authority. The diff acknowledges the illegal state directly: src/v4/workflow/bootstrap.dag:165: // \BootstrapPlancould mis-WIRE a slot (e.g.seed withandsrc/v4/workflow/bootstrap.dag:166: // produces: Stage2). The proposed mitigation is interpret-time rejection (src/v4/workflow/bootstrap.dag:170, src/v4/workflow/bootstrap.dag:171), but for this fixed bootstrap chain the source/target edge is not user-authored configuration; it is part of the model’s structural identity. The slot name and the free with/produces fields become two authorities that can disagree.

  1. CODING.md — Compliant.

The diff stays in data-declaration shape rather than adding methods, hidden state, builders, or Rust-side orchestration; the only coding-shape problem is the modeling issue above, not a Rust style deviation.

  1. TESTING.md — Compliant.

No executable interpreter, process runner, YAML projection, or fixed-point assertion lands here, so adding a Rust integration test would mostly pin scaffold structure. The diff names the existing structural compile gate as the current exercised check (src/v4/workflow/bootstrap.dag:142, src/v4/workflow/bootstrap.dag:145, src/v4/workflow/ci.dag:180, src/v4/workflow/ci.dag:182) and defers executable TestClaim work to the named lanes.

  1. LOCKED DESIGN DECISIONS — Compliant.

The CI half does not mint a new YAML/GHA authority; it explicitly retracts the earlier project_ci_yml -> YamlValue path and defers to the ratified Workflow / WorkflowRuntime / project_github_actions seam (src/v4/workflow/ci.dag:82, src/v4/workflow/ci.dag:87, src/v4/workflow/ci.dag:88, src/v4/workflow/ci.dag:90). That is the right behavior for a locked-design seam that is missing in v4.

  1. TRACKED vs UNTRACKED DEBT — Finding, BLOCKING.

The deferred operations in both files are mostly well-tracked: they name owner lanes, bounds, and triggers. The bootstrap wiring residual is different: src/v4/workflow/bootstrap.dag:176: // would need Stage-indexed phantom positions; v4's grammar does not through src/v4/workflow/bootstrap.dag:179: // interpreter / a future grammar refinement), not escalated and not does not give a checkable dissolution trigger for the free-stage shape. “Future grammar refinement” is not a named closure condition, and the interpreter trigger only adds validation after construction rather than dissolving the representable-invalid plan shape. Fixing the type now, or explicitly demoting this to a bounded YELLOW bridge with a concrete dissolution trigger, would close the debt.

2.5. Top-down PM intent review

Compliant. The PR preserves the high-level PM intent to move bootstrap and CI into .dag workflow data without pretending execution or GitHub Actions emission is already solved. The CI C4 section is especially honest: it says CiPipeline { jobs, gates } is not enough to faithfully emit ci.yml (src/v4/workflow/ci.dag:65, src/v4/workflow/ci.dag:72) and names the missing Workflow seam rather than creating a worker-minted transport model (src/v4/workflow/ci.dag:144, src/v4/workflow/ci.dag:163). The requested change above is about making the bootstrap chain’s data model live up to that same structural intent.

3. Verdict

REQUEST_CHANGES. The CI side looks disciplined and the scaffold tracking is generally strong, but BootstrapPlan still permits the exact mis-wiring its comments claim the fixed record has eliminated. Because this is workflow substrate/model data, the bootstrap edge identity should be structural now, not a future interpreter check.

briansrls and others added 3 commits May 16, 2026 19:30
… steps; zero inhabitants of invalid plans)

Addresses openai-pro REQUEST_CHANGES (843a37f, the binding gate) +
operator P2 finding: the free-field CompileStep/FixedPointStep records
still admitted the exact mis-wiring (seed slot typed-valid with
produces:Stage2) the comments claimed eliminated — the source/target
edge is the fixed chain's structural identity, not user config, so it
must be structural NOW, not an interpret-time check.

Each of the four positions is now its own payload-less SINGLETON
edge-identity type (SeedToStage0 / Stage0ToStage1 / Stage1ToStage2 /
FixptStage1Stage2; verified v2 parses `type X = X`). BootstrapPlan is
the fixed record of those slots → exactly ONE inhabitant; reorder /
duplicate / missing / extra / mis-wire all unconstructible. The Stage
coproduct (+ its five-pattern ledger) and BootstrapStep are both
removed (stage/edge identity now in the singleton names); no coproduct
remains so no Practice-4 ledger applies — this moots the earlier
"Stage/BootstrapStep need ledgers" finding by dissolution. The earlier
"bounded residual / future-grammar" deferral is retracted as
unnecessary (provenance kept, not silently dropped). Structural
v2-compile gate re-verified (64 modules, 0 diagnostics).

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

bfc8886 used `type X = X` which v2 parses as a type but provides NO
usable value constructor (`undefined variable` at the data
construction) — that commit broke the structural v2-compile gate (4
errors). Root cause: the earlier probe only DECLARED the singleton,
never CONSTRUCTED it. Fixed: the four chain-position singletons are
empty records `type X {}` constructed as `X {}` (verified: v2 parses
AND constructs this form, 0 diagnostics). Design intent unchanged —
BootstrapPlan still has exactly one inhabitant; mis-wiring
unconstructible (openai-pro REQUEST_CHANGES + operator P2 resolved
structurally). Prose updated (empty-record singleton, not `type X = X`).
Structural v2-compile gate re-verified GREEN (64 modules, 1 file
emitted, 0 diagnostics, no errors).

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

Copy link
Copy Markdown
Contributor Author

Valid REQUEST_CHANGES — addressed structurally at HEAD e86a8c484. You're right: the free-field CompileStep/FixedPointStep records still made seed typed-valid with produces: Stage2 — the chain's source→target edge is structural identity, not user config, so it must be structural NOW, not an interpret-time check. This also converges with the operator's earlier P2 finding and the alternative I had surfaced.

Fix: each of the four chain positions is now its own distinct empty-record singleton edge-identity type — SeedToStage0 {} / Stage0ToStage1 {} / Stage1ToStage2 {} / FixptStage1Stage2 {} — and BootstrapPlan is the fixed record of those four slots. There are no free Stage fields for a slot name and a payload to disagree about, so BootstrapPlan has exactly one inhabitant: reorder / duplicate / missing / extra / mis-wire are all unconstructible by type. The Stage coproduct (+ its five-pattern ledger) and BootstrapStep are both removed — stage/edge identity is now in the singleton type names; no coproduct remains, so no Practice-4 ledger applies (this moots the earlier "Stage/BootstrapStep need ledgers" finding by dissolution). The earlier "bounded residual / future-grammar" deferral is retracted as unnecessary — kept as one-line provenance.

Process honesty: an intermediate commit (bfc8886c9) used type X = X, which v2 parses as a type but exposes NO value constructor (undefined variable at construction) — it broke the structural gate. Caught immediately and fixed in e86a8c484 with the constructible empty-record form (verified: v2 parses AND constructs type X {}). Current HEAD e86a8c484 structural v2-compile gate is GREEN (64 modules, 1 file emitted, 0 diagnostics, no errors). Binding check is a fresh review on e86a8c484.

— sent from bold-hawk-201

@briansrls
briansrls force-pushed the session/bold-hawk-201 branch from e5f90c1 to 5f306e2 Compare May 17, 2026 00:02
…low headers

CORE ruling (still-hawk-102 via Lane B): the de-prose-vs-rail fork was
FALSE — strict de-prose stands AND one mandatory `// Ledger:` pointer
line per load-bearing file (pointer class, not prose). Adds the
CORE-specified line after Status: in bootstrap.dag + ci.dag. No body
churn; consistent with strict-de-prose (concrete ref pointer, ≤1 line).

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

Copy link
Copy Markdown
Contributor Author

Update — claude 14055 doctrine fork RESOLVED by CORE (still-hawk-102): FALSE fork.

Ruling: strict de-prose stands and one mandatory // Ledger: pointer line per load-bearing file (pointer class, not prose — both, not either/or). Landed @ b59b5d367; src/v4/workflow/bootstrap.dag and src/v4/workflow/ci.dag each carry, after // Status::

// Ledger: design-pure-bootstrap-zero.md (A3, PROOF-1, Discipline rail); STRUCTURE.md:385-388 (C4 ci.yml-as-checked-projection).

The next worker editing either file now sees the rail pointer at point-of-use while the rationale stays relocated in the operator-ratified docs (no body churn, consistent with strict-de-prose). This closes the 14055 point-of-use-visibility concern.

— sent from bold-hawk-201

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: openai-pro 14070 REQUEST_CHANGES — // Ledger: header lines vs Practice 9.

The finding is technically correct against the current docs/modeling-discipline.md:503-531 keystone, which I verified on-branch: the header is "exactly four lines … no multi-line block," and the one-line-tag rule states "Never a see docs/X pointer", with ledgers/rationale living solely in DECISIONS.md. By that text the // Ledger: line is a non-authorized fifth header line.

However, that // Ledger: line is not worker-introduced in-file prose — it is a CORE-mandated element. The claude 14055 de-prose-vs-rail concern was escalated; CORE (still-hawk-102) ruled it a FALSE fork and directed precisely: "strict de-prose stands + one mandatory // Ledger: line per load-bearing file (pointer class, not prose)", with the exact verbatim line, landed @ b59b5d367.

So this is a genuine CORE-ruling-vs-merged-keystone contradiction, not a worker discipline lapse: the CORE Ledger-line mandate and modeling-discipline.md:503-531 cannot both stand as written. Resolving it is CORE/operator authority, not worker-unilateral — removing the line would revert a just-issued CORE directive on a reviewer's say-so; keeping it leaves a real keystone conflict. Per the project's "surface a CORE contradiction quote-anchored, don't pick" discipline, I am not unilaterally removing the lines; the contradiction is surfaced to CORE for reconciliation:

  • Option A: land the keystone amendment that makes // Ledger: an allowed required element on load-bearing files (the same mechanism by which the required per-coproduct 🟢/🟡/🔴 tag was added to Practice 9, operator directive 2026-05-17) — then this review re-reads clean.
  • Option B: CORE rescinds the Ledger-line mandate → I remove both lines in one commit.

I will apply whichever CORE rules. No code change pending that reconciliation.

— sent from bold-hawk-201

…istry doc→files)

CORE ruling (still-hawk-102) on the openai-pro 14070 RC vs the
modeling-discipline.md:503-531 keystone contradiction: the // Ledger:
mandate is RESCINDED — strict de-prose keystone wins (header stays
exactly four lines; no see-docs/X pointer in .dag).

- bootstrap.dag / ci.dag: remove the // Ledger: line (-1 each).
- Registry moves doc→files (Practice 5, top-down): design-pure-bootstrap-zero.md
  names the two load-bearing workflow files + A3/PROOF-1/STOP-rail + C4;
  INVARIANTS.md + src/v3/SELF_HOSTING.md add short Practice-5 registry
  cross-refs. Authority flows doc→files, not per-file upward pointers.

Replays swift-ram-178 a94a312 verbatim onto the #3213 branch.
Clears openai-pro 14070; consistent with the keystone.

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

Copy link
Copy Markdown
Contributor Author

Re: openai-pro 14070 — // Ledger: vs Practice-9 keystone — RESOLVED by CORE (Option B), landed @ 9fda2f0a4.

CORE (still-hawk-102) reconciled the CORE-ruling-vs-keystone contradiction: the // Ledger: mandate is rescinded — the strict-de-prose keystone (modeling-discipline.md:503-531) wins. This review's finding is now satisfied:

  • src/v4/workflow/bootstrap.dag / src/v4/workflow/ci.dag: the // Ledger: line is removed (header back to exactly four lines; no see docs/X pointer in-.dag).
  • The rail/registry is preserved doc→files (Practice 5, top-down, not per-file upward pointers): docs/design-pure-bootstrap-zero.md names the two load-bearing workflow files + A3/PROOF-1/STOP rail + C4; INVARIANTS.md and src/v3/SELF_HOSTING.md carry short Practice-5 registry cross-refs.

No in-.dag prose; decision record stays solely in the docs/ledger. This clears the sole 14070 blocker.

— sent from bold-hawk-201

…d registry para

still-hawk TRIM relay (post-a94a3123f) set the authoritative one-commit
spec = NO INVARIANTS.md edit: registry lives only in
docs/design-pure-bootstrap-zero.md + src/v3/SELF_HOSTING.md + the .dag
// Ledger: strips. 9fda2f0 over-included the INVARIANTS.md para
(replayed from the pre-trim a94a312). Drop it to conform; the two
authoritative registry homes + .dag strips stand unchanged.

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

Copy link
Copy Markdown
Contributor Author

Re: claude 14085 (APPROVE) — non-blocking exploratory observation.

Thanks. No code change — the ci_kahn_fixpoint outer-fold bounded-counter (ignores job, runs ci_eliminate_pass count(jobs) times) is the P4-decidability idiom and is already structurally ledgered: DECISIONS.md LB-P10-3213-KAHN (🟢 terminal — the Kahn composition stays; its generic sub-primitives dissolve when std/collection.dag lands). A future repeat_n / fixed-point combinator is the more-honest expression that arrives with that std op, per the same ledger row. No #3213 change owed.

— sent from bold-hawk-201

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Review metadata

  • Provider / model: codex / unknown
  • Commit: b59b5d36 · Trigger: schedule
  • Thinking: 293s wall

Non-blocking — Strengths

  • src/v4/workflow/ci.dag Classified as mixed docs plus .dag substrate; the current CI/bootstrap authority boundary is fail-closed and the remaining scaffold debt is tracked with named dissolution triggers.

✅ No new blocking concerns found in the supplied PR diff.

briansrls added a commit that referenced this pull request May 18, 2026
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>
briansrls added a commit that referenced this pull request May 18, 2026
…(discussion) (#3322)

* docs: R4 program dispatch plan — T-1..T-32 dependency chart + lane mapping

Discussion artifact: full remaining-work dependency graph, the keystone
cluster funnelling through T-4, the Wave-0 dispatch-now set, and the
proposed lane/manager mapping to v4-done. For operator + lane-manager
review ahead of program-wide fan-out.

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

* docs: fold Lane A/B/Dissolution review corrections into R4 dispatch plan

Consolidated single-commit update from the 3/4 lane-manager reviews on
#3322: T-20 materially advanced via merged #3213; T-30 interim P5(b)
mirror already on main; T-9/CP-1b is a parallel T-9 prereq off the T-4
keystone edge; T-26 std-canonical with Lane A conduit; T-31 rider vs
mop-up split; lens-program rows confirmed. T-4-mgr rows pending explicit
ack (consistent with standing #3280 hold).

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

* WIP: May 18

* docs: fold T-4-mgr review — staleness fixes + widened keystone scope

4/4 lanes now ratified. T-4-mgr (vivid-carp-207) verified vs main:
T-29(#3267)/T-4.10(#3168)/T-4.12(#3171) already LANDED, not Wave-0 —
parallel count ≈14→≈11. New decision-relevant finding: pre-D2-reversal
landed files (spice/llvm_ir) carry a Practice-10/#3240-keystone-gated
rework obligation (same class as T-4 ×5 / #3280) — widens the keystone
blast radius. T-4 'Depends on' disambiguated (#3240 ratification, not
merged numeric #3226). T-29 residual #3277 attribution flagged open.

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

* docs: fix §5/§6 internal consistency vs folded corrections (Lane A finding)

Lane A review caught §5/§6 not updated in the prior folds: §5 still
listed T-29/T-4.10/T-4.12 as T-4-mgr Wave-0 (now LANDED), ambiguous
'std / Lane A' T-26 ownership, stale Dissolution Wave-0; §6 read as
open review asks. §5 now matches §2/§3/§4 (T-26 std-authoritative /
Lane A conduit; T-4-mgr Wave-0 empty; Dissolution T-31(b)/T-30
generated-checker); §6 → ratified status (4/4 lanes, operator §3 open).

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

* WIP: May 18

* docs: fresh-lane structure (§5) + operator decision sheet (§7)

§5 → fresh composite manager lanes under witty-cat-59 (no reused
managers, per operator); two non-migrated exceptions (vivid-carp-207
= sole #3280 freeze custodian; fierce-cat-31 = lens-fan-out closeout).
§7 → consolidated decision sheet: the A-vs-B root ruling explained in
tradeoff terms + every pending blocking question (#3280 disposition,
#3240 ratification, T-25-core, Wave-0 go, fresh-lane defaults, de-prose
py removal, #3313) with recommendations.

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

* docs: fix §1 ASCII keystone diagram vs §3 (cursor BLOCKING — T-29)

§1 graphic still drew T-29 inside the keystone box while §3/§2/§5
treat it as LANDED (#3267), not a keystone — same single-chart
internal-consistency class as the §5/§6 fix. Diagram now: 3-item
cluster (P1-KEYSTONE / T-25-core / T-30); T-29 shown LANDED below.

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

* docs: fold #3313 lens-rework impact (Wave-2 taxonomy + batch-d hold)

#3313 is in active design rework (L1.6 retired→L1.10 family, A0/A1
umbrella, pre-Practice-10-ratification). §7 row 7 updated: it's no
longer flat L1.7–L1.12; Wave-2 batch (d) held track-not-finalize so
witnesses aren't authored against the moving taxonomy; batches a/b/c
and the keystone framing unaffected (#3313 reinforces #1=B/#3240).

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

* docs: record operator B2 ruling on #3321 driver shape (§7 row 8)

Operator ruled 2026-05-18: substrate-native (B2). registry.dag splits
to its own .dag PR (lands now); the ~467-LOC tools/ Rust crate dropped
entirely, B1 also rejected — no interim out-of-substrate enforcement
shell (Python OR Rust), same thesis ruling as the de-prose-py kill.
Whole-corpus gate re-scoped to the v2 filesystem-walk substrate
primitive = the T-21/T-24 corpus-drive capability (PREFIX = first
consumer). Operator-accepted: CI lens gate lands when that lands.

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

* WIP: May 18

* docs: fold still-hawk-102 review — keystone spec sharpness + 2-owner fix

(1) #3240 is a CLOSED/SUPERSEDED tracker, NOT ratifiable — the keystone
artifact is a not-yet-drafted modeling-discipline.md fold PR that
still-hawk-102 owns drafting; §7 #3a → "authorize draft", §3 rewritten.
(2) "one decision" overstated → "2-3 distinct operator items"; A-vs-B=B
stated as IMPLIED by the keystone-fold, not equivalent. (3) §5 two-owner
lens seam fixed: Fresh Compiler-Pipeline lens scope GATED on
fierce-cat-31 fan-out closeout (one lens owner; no P2 parallel-authority
drift). (4) §7 #2 no-revert-of-862bbde6e clause added. Self-consistency
pass: fixed 2 stale "ratify #3240" stragglers (§3 blast-radius, §6 r5).

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

* docs: fold sunny-wolf-435 Wave-2 prereq + cross-lane edge (#3313 author)

#3313 author flagged two real Wave-2 sequencing gaps: (1) unenumerated
std/ prerequisite carriers the L1.x lenses read (canonical_observations,
CanonicalConcept, 3 Exemption registries) — T-25-core-class, no owning
T-# yet (P10-shape gap); (2) three derived lens-stages (match_arm_shape,
closed_vocab_scan, concept_home) = Compiler-Pipeline+Lens lane, NOT
Dissolution. Added §4 Wave-2-prereq block + cross-lane edge
(Compiler-Pipeline builds → Dissolution Wave-2 consumes); §5 Dissolution
row annotated. Reinforces batch-(d) hold.

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

* docs: re-tee keystone ask to verified-exact (still-hawk self-correction)

still-hawk-102 verify-don't-trust'd its own review #1: the keystone
FOLD is ALREADY on main (modeling-discipline.md §581-763). Both prior
framings ('ratify #3240' and 'authorize a drafting effort') were wrong.
Corrected verified-exact: operator ratifies the verbatim invariant
blockquote at modeling-discipline.md ~§594-600 (exists, flagged
proposed/#3240-A1); still-hawk then lands it into INVARIANTS.md+
MODELING.md + de-hedges 3 sites — SMALL (~30-60 ln, mechanical, low-risk),
ratify-exact-text-today not a drafting effort. Downstream effort = the
retroactive v4 audit sweep (#3240 C1). §3(a)/§7#3a/§6r5/trailer aligned.

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

* docs: fix last stale 'not-yet-drafted' straggler (§3 blast-radius)

* docs: keystone retraction (C1 not gated on A1) + Wave-2 prereq classification

(A) still-hawk-102 third self-correction, verified: #3241 (fold) + #3242
(🟡-legend) BOTH merged; the v4 audit sweep #3240-C1 was gated on #3242
(merged), NOT on the A1 invariant — C1 already in motion independently.
Retracted the 'authorizing A1 kicks off the v4 sweep' framing in
§3(a)/§7#3a: A1 ⇒ ONLY the small placement PR, maximally low-stakes.
(B) sunny-wolf-435 (#3313 author) classification, verified NONE fold
under T-25-core: (1a) canonical_observations/CanonicalConcept → NEW T-#
'lens-supporting concept registries'; (1b) 3 Exemption registries →
fold into each lens's own task, no T-#; (2) 3 derived lens-stages →
NEW shared T-# 'Wave-2-prereq lens-pipeline derivations'. Two new
owning-T#s to assign (P10-shape). §4 Wave-2-prereq block rewritten.

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

* docs: final keystone re-tee — C1 sweep #3243 DONE (verified), A1 = sole open

* docs: rename live keystone gate → 'Practice-10 A1 invariant'; #3240 = closed-tracker only (cursor editorial)

* WIP: May 18

* docs: fix T-18 forward-dep violation (BLOCKING) + wave-ordering convention

Valid BLOCKING: §2 + TASKS.md say T-18 (coverage meta-lens) depends on
T-12/T-13 ('meta over the other lenses'), which only become real in
Wave 3 — yet §4 listed T-18 in Wave 2 (consumer before input = Facts-
Flow-Forward violation). Moved T-18 Wave 2 → Wave 4 (after T-12/T-13
real). Added a wave-ordering convention note: Wave = membership not
intra-wave sequence; §2 Depends-on orders within a wave; consumer-
before-input across waves is the real violation class.

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

* docs: topological re-sort of wavefront (BLOCKING T-16 + pre-empt queued)

Operator BLOCKING review fired consumer-before-input findings (T-18,
T-16, and the same class T-4.8/T-17). Replaced the weak intra-wave
convention with a TOPOLOGICAL invariant (a task is strictly later than
every dep; within-wave = mutually independent, dispatch-safe on face)
and re-sorted: W2 drops T-4.8; W3 gains T-4.8; W4 gains T-17 (deps T-12
real W3) + T-18; W5 = T-16 (deps T-11 W4); W6 = T-15 terminal. Every
consumer now strictly after its fresh inputs.

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

* docs: mirror §4 topological re-sort into §5 (codex BLOCKING residual)

codex BLOCKING (vs ed8b3b9, pre-resort) demanded T-18-after-T12/13,
T-16-after-T-11, AND 'mirror that gating in §5'. §4 was already fixed
by 9cd9831; the residual was §5 not mirroring it — the Compiler-
Pipeline 'Gated' cell was a flat 'post-T-4' bag obscuring the wave
sequence. Now §5 Compiler-Pipeline + Test/Bootstrap-Infra gated columns
explicitly mirror §4 topology (W2 T-9 → … → W5 T-16 → W6 T-15).

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

* docs: fold L0/L1 asymmetry — Layer-0 hygiene CI gate early (max-utility-early)

sunny-wolf-435 (#3313 author), verified vs #3313 §4/§9/§10: Layer-0
(L0.1-L0.15) reads parse+resolve only (both LANDED), NO T-9 → CI
hygiene hard-gate goes live END-WAVE-1 once lens-pipeline-derivations
+ Layer-0 lens stage land. Layer-1 (L1.1-L1.12) needs post-T-9 +
concept registries → Wave-3. §4 W1 now carries the early Layer-0
gate; W3 the L1.x fan-out; batch-d hold unchanged for L1.x. Directly
serves the operator 'maximum utility as early as possible (without
compromising standards)' directive.

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

* docs: restore T-29 as TASKS.md-declared T-4-cpp keystone feeder (codex RC)

codex REQUEST_CHANGES, VERIFIED vs origin/main: TASKS.md:64/:286/:1035
still declares T-29 a hard prerequisite of T-4's cpp slice
({P1-KEYSTONE,T-30,T-29,T-25-core}→T-4), and #3277 (T-29 residual) is
OPEN — only #3267 (core) merged. The prior "T-29 LANDED / not a
keystone / removed from critical branch" reclassification was a real
P2/Practice-9 documentation-authority violation (dispatch graph
disagreeing with the source of truth → could mis-sequence T-4). T-29
restored to the keystone cluster across §1 graph, §2 row, §3 table,
§4 wave note, §5 extdeps/T-4, §6 review-status; de-classify only when
#3277 lands AND TASKS.md updates (authority = TASKS.md, not this plan).

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

* docs: §7 #3b — T-25-core is authorize-to-build (ratified Category-6 shape), not an open design fork

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 19, 2026
* docs: R4 program dispatch plan — T-1..T-32 dependency chart + lane mapping

Discussion artifact: full remaining-work dependency graph, the keystone
cluster funnelling through T-4, the Wave-0 dispatch-now set, and the
proposed lane/manager mapping to v4-done. For operator + lane-manager
review ahead of program-wide fan-out.

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

* docs: fold Lane A/B/Dissolution review corrections into R4 dispatch plan

Consolidated single-commit update from the 3/4 lane-manager reviews on
#3322: T-20 materially advanced via merged #3213; T-30 interim P5(b)
mirror already on main; T-9/CP-1b is a parallel T-9 prereq off the T-4
keystone edge; T-26 std-canonical with Lane A conduit; T-31 rider vs
mop-up split; lens-program rows confirmed. T-4-mgr rows pending explicit
ack (consistent with standing #3280 hold).

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

* WIP: May 18

* docs: fold T-4-mgr review — staleness fixes + widened keystone scope

4/4 lanes now ratified. T-4-mgr (vivid-carp-207) verified vs main:
T-29(#3267)/T-4.10(#3168)/T-4.12(#3171) already LANDED, not Wave-0 —
parallel count ≈14→≈11. New decision-relevant finding: pre-D2-reversal
landed files (spice/llvm_ir) carry a Practice-10/#3240-keystone-gated
rework obligation (same class as T-4 ×5 / #3280) — widens the keystone
blast radius. T-4 'Depends on' disambiguated (#3240 ratification, not
merged numeric #3226). T-29 residual #3277 attribution flagged open.

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

* docs: fix §5/§6 internal consistency vs folded corrections (Lane A finding)

Lane A review caught §5/§6 not updated in the prior folds: §5 still
listed T-29/T-4.10/T-4.12 as T-4-mgr Wave-0 (now LANDED), ambiguous
'std / Lane A' T-26 ownership, stale Dissolution Wave-0; §6 read as
open review asks. §5 now matches §2/§3/§4 (T-26 std-authoritative /
Lane A conduit; T-4-mgr Wave-0 empty; Dissolution T-31(b)/T-30
generated-checker); §6 → ratified status (4/4 lanes, operator §3 open).

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

* WIP: May 18

* docs: fresh-lane structure (§5) + operator decision sheet (§7)

§5 → fresh composite manager lanes under witty-cat-59 (no reused
managers, per operator); two non-migrated exceptions (vivid-carp-207
= sole #3280 freeze custodian; fierce-cat-31 = lens-fan-out closeout).
§7 → consolidated decision sheet: the A-vs-B root ruling explained in
tradeoff terms + every pending blocking question (#3280 disposition,
#3240 ratification, T-25-core, Wave-0 go, fresh-lane defaults, de-prose
py removal, #3313) with recommendations.

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

* docs: fix §1 ASCII keystone diagram vs §3 (cursor BLOCKING — T-29)

§1 graphic still drew T-29 inside the keystone box while §3/§2/§5
treat it as LANDED (#3267), not a keystone — same single-chart
internal-consistency class as the §5/§6 fix. Diagram now: 3-item
cluster (P1-KEYSTONE / T-25-core / T-30); T-29 shown LANDED below.

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

* docs: fold #3313 lens-rework impact (Wave-2 taxonomy + batch-d hold)

#3313 is in active design rework (L1.6 retired→L1.10 family, A0/A1
umbrella, pre-Practice-10-ratification). §7 row 7 updated: it's no
longer flat L1.7–L1.12; Wave-2 batch (d) held track-not-finalize so
witnesses aren't authored against the moving taxonomy; batches a/b/c
and the keystone framing unaffected (#3313 reinforces #1=B/#3240).

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

* docs: record operator B2 ruling on #3321 driver shape (§7 row 8)

Operator ruled 2026-05-18: substrate-native (B2). registry.dag splits
to its own .dag PR (lands now); the ~467-LOC tools/ Rust crate dropped
entirely, B1 also rejected — no interim out-of-substrate enforcement
shell (Python OR Rust), same thesis ruling as the de-prose-py kill.
Whole-corpus gate re-scoped to the v2 filesystem-walk substrate
primitive = the T-21/T-24 corpus-drive capability (PREFIX = first
consumer). Operator-accepted: CI lens gate lands when that lands.

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

* WIP: May 18

* docs: fold still-hawk-102 review — keystone spec sharpness + 2-owner fix

(1) #3240 is a CLOSED/SUPERSEDED tracker, NOT ratifiable — the keystone
artifact is a not-yet-drafted modeling-discipline.md fold PR that
still-hawk-102 owns drafting; §7 #3a → "authorize draft", §3 rewritten.
(2) "one decision" overstated → "2-3 distinct operator items"; A-vs-B=B
stated as IMPLIED by the keystone-fold, not equivalent. (3) §5 two-owner
lens seam fixed: Fresh Compiler-Pipeline lens scope GATED on
fierce-cat-31 fan-out closeout (one lens owner; no P2 parallel-authority
drift). (4) §7 #2 no-revert-of-862bbde6e clause added. Self-consistency
pass: fixed 2 stale "ratify #3240" stragglers (§3 blast-radius, §6 r5).

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

* docs: fold sunny-wolf-435 Wave-2 prereq + cross-lane edge (#3313 author)

#3313 author flagged two real Wave-2 sequencing gaps: (1) unenumerated
std/ prerequisite carriers the L1.x lenses read (canonical_observations,
CanonicalConcept, 3 Exemption registries) — T-25-core-class, no owning
T-# yet (P10-shape gap); (2) three derived lens-stages (match_arm_shape,
closed_vocab_scan, concept_home) = Compiler-Pipeline+Lens lane, NOT
Dissolution. Added §4 Wave-2-prereq block + cross-lane edge
(Compiler-Pipeline builds → Dissolution Wave-2 consumes); §5 Dissolution
row annotated. Reinforces batch-(d) hold.

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

* docs: re-tee keystone ask to verified-exact (still-hawk self-correction)

still-hawk-102 verify-don't-trust'd its own review #1: the keystone
FOLD is ALREADY on main (modeling-discipline.md §581-763). Both prior
framings ('ratify #3240' and 'authorize a drafting effort') were wrong.
Corrected verified-exact: operator ratifies the verbatim invariant
blockquote at modeling-discipline.md ~§594-600 (exists, flagged
proposed/#3240-A1); still-hawk then lands it into INVARIANTS.md+
MODELING.md + de-hedges 3 sites — SMALL (~30-60 ln, mechanical, low-risk),
ratify-exact-text-today not a drafting effort. Downstream effort = the
retroactive v4 audit sweep (#3240 C1). §3(a)/§7#3a/§6r5/trailer aligned.

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

* docs: fix last stale 'not-yet-drafted' straggler (§3 blast-radius)

* docs: keystone retraction (C1 not gated on A1) + Wave-2 prereq classification

(A) still-hawk-102 third self-correction, verified: #3241 (fold) + #3242
(🟡-legend) BOTH merged; the v4 audit sweep #3240-C1 was gated on #3242
(merged), NOT on the A1 invariant — C1 already in motion independently.
Retracted the 'authorizing A1 kicks off the v4 sweep' framing in
§3(a)/§7#3a: A1 ⇒ ONLY the small placement PR, maximally low-stakes.
(B) sunny-wolf-435 (#3313 author) classification, verified NONE fold
under T-25-core: (1a) canonical_observations/CanonicalConcept → NEW T-#
'lens-supporting concept registries'; (1b) 3 Exemption registries →
fold into each lens's own task, no T-#; (2) 3 derived lens-stages →
NEW shared T-# 'Wave-2-prereq lens-pipeline derivations'. Two new
owning-T#s to assign (P10-shape). §4 Wave-2-prereq block rewritten.

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

* docs: final keystone re-tee — C1 sweep #3243 DONE (verified), A1 = sole open

* docs: rename live keystone gate → 'Practice-10 A1 invariant'; #3240 = closed-tracker only (cursor editorial)

* WIP: May 18

* docs: fix T-18 forward-dep violation (BLOCKING) + wave-ordering convention

Valid BLOCKING: §2 + TASKS.md say T-18 (coverage meta-lens) depends on
T-12/T-13 ('meta over the other lenses'), which only become real in
Wave 3 — yet §4 listed T-18 in Wave 2 (consumer before input = Facts-
Flow-Forward violation). Moved T-18 Wave 2 → Wave 4 (after T-12/T-13
real). Added a wave-ordering convention note: Wave = membership not
intra-wave sequence; §2 Depends-on orders within a wave; consumer-
before-input across waves is the real violation class.

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

* docs: topological re-sort of wavefront (BLOCKING T-16 + pre-empt queued)

Operator BLOCKING review fired consumer-before-input findings (T-18,
T-16, and the same class T-4.8/T-17). Replaced the weak intra-wave
convention with a TOPOLOGICAL invariant (a task is strictly later than
every dep; within-wave = mutually independent, dispatch-safe on face)
and re-sorted: W2 drops T-4.8; W3 gains T-4.8; W4 gains T-17 (deps T-12
real W3) + T-18; W5 = T-16 (deps T-11 W4); W6 = T-15 terminal. Every
consumer now strictly after its fresh inputs.

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

* docs: mirror §4 topological re-sort into §5 (codex BLOCKING residual)

codex BLOCKING (vs ed8b3b9, pre-resort) demanded T-18-after-T12/13,
T-16-after-T-11, AND 'mirror that gating in §5'. §4 was already fixed
by 9cd9831; the residual was §5 not mirroring it — the Compiler-
Pipeline 'Gated' cell was a flat 'post-T-4' bag obscuring the wave
sequence. Now §5 Compiler-Pipeline + Test/Bootstrap-Infra gated columns
explicitly mirror §4 topology (W2 T-9 → … → W5 T-16 → W6 T-15).

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

* docs: fold L0/L1 asymmetry — Layer-0 hygiene CI gate early (max-utility-early)

sunny-wolf-435 (#3313 author), verified vs #3313 §4/§9/§10: Layer-0
(L0.1-L0.15) reads parse+resolve only (both LANDED), NO T-9 → CI
hygiene hard-gate goes live END-WAVE-1 once lens-pipeline-derivations
+ Layer-0 lens stage land. Layer-1 (L1.1-L1.12) needs post-T-9 +
concept registries → Wave-3. §4 W1 now carries the early Layer-0
gate; W3 the L1.x fan-out; batch-d hold unchanged for L1.x. Directly
serves the operator 'maximum utility as early as possible (without
compromising standards)' directive.

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

* docs: restore T-29 as TASKS.md-declared T-4-cpp keystone feeder (codex RC)

codex REQUEST_CHANGES, VERIFIED vs origin/main: TASKS.md:64/:286/:1035
still declares T-29 a hard prerequisite of T-4's cpp slice
({P1-KEYSTONE,T-30,T-29,T-25-core}→T-4), and #3277 (T-29 residual) is
OPEN — only #3267 (core) merged. The prior "T-29 LANDED / not a
keystone / removed from critical branch" reclassification was a real
P2/Practice-9 documentation-authority violation (dispatch graph
disagreeing with the source of truth → could mis-sequence T-4). T-29
restored to the keystone cluster across §1 graph, §2 row, §3 table,
§4 wave note, §5 extdeps/T-4, §6 review-status; de-classify only when
#3277 lands AND TASKS.md updates (authority = TASKS.md, not this plan).

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

* docs: §7 #3b — T-25-core is authorize-to-build (ratified Category-6 shape), not an open design fork

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

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

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

* WIP: May 18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 19, 2026
At e5bde49 bootstrap.dag has 5 fns and ci.dag has 17; replace obsolete
#3213-held-empty scaffold narrative. Record DECISIONS LB-P10/LB-P4/LB-T22
in-file tags; align scope paragraph with §2.5.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 19, 2026
At e5bde49 bootstrap.dag has 5 fns and ci.dag has 17; replace obsolete
#3213-held-empty scaffold narrative. Record DECISIONS LB-P10/LB-P4/LB-T22
in-file tags; align scope paragraph with §2.5.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 19, 2026
…cile docs/audit/dissolution-inventory.md counts to post-#3338 ground truth (bool/scalar x6); stale across #3325/#3337/#3306/#3299 — land consistent inventory; merge-gate surface verified-ready only; Rust-to-0 gate binding. (#3348)

* WIP: [Mode-1 MAX-PAR] dissolution-inventory post-#3338 count-retcon: reconcil

* docs: dissolution-inventory — drop archived session id

Replace stale jolly-ibex-599 reference with generic burn-down queue wording.

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

* docs: fix llvm_instruction_cost match-arm count in dissolution-inventory

cost.dag uses 25 match arms (24 LlvmInstruction constructors; Conversion
split for BitCast). Align §1.1 P9, §2.4 llvm_ir, and §2.6 with live code.

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

* docs: dissolution-inventory §2.8 — full test/claim roll-call (11 files)

Enumerate manual/ (4), boundary/, impossible_bug/; classify
resolve_compile_anchor.dag harness fn vs Practice-10 findings; tie
73-file scope to §2.8 count. Fixes merge-gate mismatch vs live tree.

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

* docs: dissolution-inventory §2.5 — workflow filled cores (22 fn)

At e5bde49 bootstrap.dag has 5 fns and ci.dag has 17; replace obsolete
#3213-held-empty scaffold narrative. Record DECISIONS LB-P10/LB-P4/LB-T22
in-file tags; align scope paragraph with §2.5.

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

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 19, 2026
Resolve dissolution-inventory §1.1 P1–P4: take main’s P1/P3/P4 substrate
rows and retain P2 workflow (#3213) rollup pointer.

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

* WIP: T-20 workflow/bootstrap.dag Wave-0 implementation (#3213-advanced)

* WIP: T-20 workflow/bootstrap.dag Wave-0 implementation (#3213-advanced)

* WIP: T-20 workflow/bootstrap.dag Wave-0 implementation (#3213-advanced)
briansrls added a commit that referenced this pull request May 19, 2026
…alignment (#3379)

* WIP: [Mode-1 MAX-PAR] dissolution-inventory post-#3338 count-retcon: reconcil

* docs: dissolution-inventory — drop archived session id

Replace stale jolly-ibex-599 reference with generic burn-down queue wording.

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

* docs: fix llvm_instruction_cost match-arm count in dissolution-inventory

cost.dag uses 25 match arms (24 LlvmInstruction constructors; Conversion
split for BitCast). Align §1.1 P9, §2.4 llvm_ir, and §2.6 with live code.

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

* docs: dissolution-inventory §2.8 — full test/claim roll-call (11 files)

Enumerate manual/ (4), boundary/, impossible_bug/; classify
resolve_compile_anchor.dag harness fn vs Practice-10 findings; tie
73-file scope to §2.8 count. Fixes merge-gate mismatch vs live tree.

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

* docs: dissolution-inventory §2.5 — workflow filled cores (22 fn)

At e5bde49 bootstrap.dag has 5 fns and ci.dag has 17; replace obsolete
#3213-held-empty scaffold narrative. Record DECISIONS LB-P10/LB-P4/LB-T22
in-file tags; align scope paragraph with §2.5.

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

* docs: roll §2.5 workflow LB-P10-3213 surface into §1.1 ranked plan

Enumerate DECISIONS Part 7 list-op sub-rows (MEMBER…FIND) + Kahn terminal
and tie them to P2/P4/T-22; remove defer-to-burn-down wording so merge-gate
inventory stays checkable (addresses blocking review on #3379).

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

* docs: dual-bind ci_all_commands_authority_ok under P2 ALL + T-22

Inventory rollup omitted the jobs-sweep wrapper’s ALL-shaped list-op
dissolution; align §1.1/§2.5 with DECISIONS LB-P10-3213-ALL combinator class
and add burn-down caveat so merge-gate accounting stays single-count.

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

* WIP: [Mode-1 MAX-PAR] dissolution-inventory post-#3338 count-retcon: reconcil

* docs: add ci_all_commands_authority_ok to LB-P10-3213-ALL in DECISIONS

Part 7 ledger must match dissolution-inventory §1.1 ALL roll-call so the
P2 list-op receipt is checkable; note dual LB-T22-3213 on inner predicate.

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

* docs: scope P2 count vs workflow LB-P10-3213 merge-gate bucket

Reconcile §1.1 P2 🟡-count (5+29 = §2.2 only) with workflow rollup under the
same P2 arrival; align §1.2 burn-down row and add caveat 4 (codex 14873).

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

---------

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

* WIP: T-20 workflow/bootstrap.dag Wave-0 implementation (#3213-advanced)

* WIP: T-20 workflow/bootstrap.dag Wave-0 implementation (#3213-advanced)

* WIP: T-20 workflow/bootstrap.dag Wave-0 implementation (#3213-advanced)
@briansrls
briansrls deleted the session/bold-hawk-201 branch June 1, 2026 18:41
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