diff --git a/ROADMAP.md b/ROADMAP.md index a8e7735285b..b4f31533083 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -6,6 +6,20 @@ Legend: `[x]` done · `[ ]` todo · **indentation = depends on the item it sits **Reset 2026-07-01 (operator-directed).** The roadmap is collapsed to **two pillars** — **§1 get off v1** and **§2 own the compute fabric** — plus **§3 the floor + audit**: the walls that keep both pillars honest, and an execution-grounded audit of what the existing machinery *actually does* (green by execution, red by perturbation). Everything else is **§4 shelved**: parked, not deleted — plan docs and carriers stay, no work dispatches from it, and un-shelving is a PR that moves a node into §1–§3 with a displaced-cost justification (DESIGN §6). The prior roadmap with full detail is in git history. Priority order, top = now. +## 0. Priorities — current execution order (rearranged 2026-07-06) + +The two pillars — §1 get off v1, §2 own the compute fabric — stand as the strategic goal. This section is the **current priority ordering** over them and the walls that keep them honest, rearranged 2026-07-06 to **frontload the compile wall and complexity enforcement**: fix what blocks CI now, then make the regression classes *unwritable* before they recur (construction over after-the-fact catching, DESIGN §5). Each item points into the detailed lane; work dispatches from the lane, not from the pointer. Lanes marked *un-shelved* here are moved out of §4 by this ordering. + +**① Compile wall** — the acute blocker. The `.dag` compile-clean floor runs **100+min** (#6239), past the CI job kills, so every PR is red on the floor and the rust-gate timeout thrash (the 10-min-drift #6339 + witness #6342, 2026-07-06) is a *downstream symptom* of the wall outgrowing the step budgets. Levers, in leverage order: affected-set-scope the compile-clean to the changed node-closure (→ ③), cross-run resolve memoization, per-module shard so `spawn_width` finally applies to the dominant node. Detail: §2 *kill the serial compile-clean wall*. + +**② Complexity enforcement, whole codebase** *(frontloaded — un-shelved from §4)*. Make the regression classes unwritable, not caught-after: the **repo-wide complexity budget**, the **enforcement-intent gate** (`StandingIntent` ⇄ `LensContract` ⇄ `CoverageReceipt`, fail-closed — a mechanism *claiming* enforcement is complete only when the gate proves it from receipts), **intent-linearity** (model the axioms A1–A3 and enforce the syllogism — every claim a consequence-chain back to an axiom, no orphan and no cycle; [draft](docs/plans/intent-linearity-design-draft.md)), and the **gap analysis** — which regression classes *cannot* be caught yet (the expressibility frontier: wall vs lens vs review; [frontier](docs/plans/expressibility-frontier.md)). Detail: §3 *enforcement intent + model-quality walls*; §4 *complexity budget whole-codebase* + *fail-closed meta band* (promoted here). + +**③ Affected set live in CI** — per-PR selection that shrinks the floor to the changed node-closure and returns witness enrollment to affected-set-shrunk discovery (today enrollment is opt-in *because* selection is not live — itself a compile-wall multiplier). Obligations: soundness (a skipped-but-affected witness is the fail-open catastrophe), effectiveness receipts on real scoped diffs, fail-closed default on a provenance gap. Detail: §2 *affected-set de-fork*; §3 *affected-set lens*. + +**④ Realization** — inhabit the content-addressed carrier so caching, memoization, and provisioning all *derive* from one content-hash instead of N hand-rolled caches (v2 still hand-rolls `ParseTable`; floor shared-compute memoization is a Realization arm; DESIGN §2). Includes the **dag↔v2 de-fork grounding** — the fixed point must be well-defined over ONE algebra. Detail: §1 *de-fork grounding cluster*; §2 shared-compute memoization. + +**⑤ Everything linear / efficient / minimal — dev UX** *(un-shelved from §4)*. The authoring experience is minimal and non-redundant: **fold-ergonomics** (inert-abstraction lens, non-fold-residue audit, ban source comments), **namespace-only resolution** (minimal naming, delete `import`, no ambiguity — operator-signed 2026-07-06, its two rules *are* the §2/§4 minimality + no-ambiguity walls; gated on the `SymbolIndex` substrate; [design](docs/plans/namespace-resolution-design.md)), and local iteration speed. Detail: §4 *fold-ergonomics lane* (promoted); the namespace-only lane. + ## 1. Get off v1 — v2 self-hosts (TERMINAL: `src/v1` deleted) Anchor (do not flip-flop): `.dag` = truth; v2 emits its own seed (no stage0 hand-edits); the trust chain is discharged by execution; then the hand-written seed is deleted. Terminal is **hand-written compiler logic → 0**, not zero bytes of Rust: a pinned v2-emitted bootstrap kernel (~8–15k LOC — `claim_executor`, evaluator host-physics, the regen oracle) survives as the content-addressed seed. → [plan](docs/plans/v2-self-hosting.md) · [de-fork audit](docs/plans/dag-v2-defork-audit.md) · [seed census](docs/plans/seed-shrink-census.md) @@ -139,7 +153,7 @@ Both pillars ride the CI floor: tree-wide marker-driven witness discovery · com ## 4. Shelved (parked 2026-07-01 — not deleted) -Every lane below was live roadmap before the reset. Shelved = plan docs and carriers stay in place, nothing dispatches from here, and the git-history ROADMAP.md holds the full pre-reset detail (structure, milestones, sign-off states). Un-shelve by PR into §1–§3, priced in displaced cost. +Every lane below was live roadmap before the reset. Shelved = plan docs and carriers stay in place, nothing dispatches from here, and the git-history ROADMAP.md holds the full pre-reset detail (structure, milestones, sign-off states). Un-shelve by PR into §1–§3, priced in displaced cost. **(2026-07-06: the *complexity budget whole-codebase*, *fail-closed meta band*, and *fold-ergonomics* lanes are un-shelved into §0's priority order ② and ⑤ — this reshuffle is that PR; their nodes stay catalogued here until relocated into their §2/§3 lanes.)** - **fold-ergonomics lane** — inert-abstraction lens · non-fold-residue audit · staging combinator · ban source comments [charter](docs/plans/fold-ergonomics.md) [residue catalogue](docs/plans/non-fold-irreducible-residue-catalogue.md) [debt sample audit](docs/plans/real-debt-syntactic-sample-audit.md) [eval-bind PROPOSE](docs/plans/eval-bind-node-eval-propose.md) - **fail-closed meta band** — `Value::Null` split (the deep root) · Disposition carrier · reference grounding · cardinality refinement · expressibility frontier · reachability-completeness lens · axiom+syllogism lens · self-applying lenses · inert-lens promotion + gate-hygiene residue [lockdown](docs/plans/fail-closed-lockdown.md) [fork plan](docs/plans/model-realization-fork.md) [Disposition](docs/plans/disposition-carrier.md) [reference grounding](docs/plans/reference-grounding-migration.md) [cardinality](docs/plans/cardinality-refinement.md) [P1 where-lowering](docs/plans/p1-where-clause-lowering.md) [frontier](docs/plans/expressibility-frontier.md) [inert-layer lens](docs/plans/inert-layer-lens.md) [axiom lens](docs/plans/axiom-syllogism-lens.md) [self-applying](docs/plans/self-applying-lenses.md) [construction rule](docs/plans/construction-justification-rule.md) diff --git a/dag/gunbc/roadmap_authority.dag b/dag/gunbc/roadmap_authority.dag index ff84cae2859..602c4162e11 100644 --- a/dag/gunbc/roadmap_authority.dag +++ b/dag/gunbc/roadmap_authority.dag @@ -94,6 +94,20 @@ fn preamble() -> List { ] } +fn section_0() -> RoadmapSection { + RoadmapSection { + title: "0. Priorities — current execution order (rearranged 2026-07-06)", + elements: [ + section_prose(content: "The two pillars — §1 get off v1, §2 own the compute fabric — stand as the strategic goal. This section is the **current priority ordering** over them and the walls that keep them honest, rearranged 2026-07-06 to **frontload the compile wall and complexity enforcement**: fix what blocks CI now, then make the regression classes *unwritable* before they recur (construction over after-the-fact catching, DESIGN §5). Each item points into the detailed lane; work dispatches from the lane, not from the pointer. Lanes marked *un-shelved* here are moved out of §4 by this ordering."), + section_prose(content: "**① Compile wall** — the acute blocker. The `.dag` compile-clean floor runs **100+min** (#6239), past the CI job kills, so every PR is red on the floor and the rust-gate timeout thrash (the 10-min-drift #6339 + witness #6342, 2026-07-06) is a *downstream symptom* of the wall outgrowing the step budgets. Levers, in leverage order: affected-set-scope the compile-clean to the changed node-closure (→ ③), cross-run resolve memoization, per-module shard so `spawn_width` finally applies to the dominant node. Detail: §2 *kill the serial compile-clean wall*."), + section_prose(content: "**② Complexity enforcement, whole codebase** *(frontloaded — un-shelved from §4)*. Make the regression classes unwritable, not caught-after: the **repo-wide complexity budget**, the **enforcement-intent gate** (`StandingIntent` ⇄ `LensContract` ⇄ `CoverageReceipt`, fail-closed — a mechanism *claiming* enforcement is complete only when the gate proves it from receipts), **intent-linearity** (model the axioms A1–A3 and enforce the syllogism — every claim a consequence-chain back to an axiom, no orphan and no cycle; [draft](docs/plans/intent-linearity-design-draft.md)), and the **gap analysis** — which regression classes *cannot* be caught yet (the expressibility frontier: wall vs lens vs review; [frontier](docs/plans/expressibility-frontier.md)). Detail: §3 *enforcement intent + model-quality walls*; §4 *complexity budget whole-codebase* + *fail-closed meta band* (promoted here)."), + section_prose(content: "**③ Affected set live in CI** — per-PR selection that shrinks the floor to the changed node-closure and returns witness enrollment to affected-set-shrunk discovery (today enrollment is opt-in *because* selection is not live — itself a compile-wall multiplier). Obligations: soundness (a skipped-but-affected witness is the fail-open catastrophe), effectiveness receipts on real scoped diffs, fail-closed default on a provenance gap. Detail: §2 *affected-set de-fork*; §3 *affected-set lens*."), + section_prose(content: "**④ Realization** — inhabit the content-addressed carrier so caching, memoization, and provisioning all *derive* from one content-hash instead of N hand-rolled caches (v2 still hand-rolls `ParseTable`; floor shared-compute memoization is a Realization arm; DESIGN §2). Includes the **dag↔v2 de-fork grounding** — the fixed point must be well-defined over ONE algebra. Detail: §1 *de-fork grounding cluster*; §2 shared-compute memoization."), + section_prose(content: "**⑤ Everything linear / efficient / minimal — dev UX** *(un-shelved from §4)*. The authoring experience is minimal and non-redundant: **fold-ergonomics** (inert-abstraction lens, non-fold-residue audit, ban source comments), **namespace-only resolution** (minimal naming, delete `import`, no ambiguity — operator-signed 2026-07-06, its two rules *are* the §2/§4 minimality + no-ambiguity walls; gated on the `SymbolIndex` substrate; [design](docs/plans/namespace-resolution-design.md)), and local iteration speed. Detail: §4 *fold-ergonomics lane* (promoted); the namespace-only lane."), + ], + } +} + fn section_1() -> RoadmapSection { RoadmapSection { title: "1. Get off v1 — v2 self-hosts (TERMINAL: `src/v1` deleted)", @@ -313,7 +327,7 @@ fn section_4() -> RoadmapSection { RoadmapSection { title: "4. Shelved (parked 2026-07-01 — not deleted)", elements: [ - section_prose(content: "Every lane below was live roadmap before the reset. Shelved = plan docs and carriers stay in place, nothing dispatches from here, and the git-history ROADMAP.md holds the full pre-reset detail (structure, milestones, sign-off states). Un-shelve by PR into §1–§3, priced in displaced cost."), + section_prose(content: "Every lane below was live roadmap before the reset. Shelved = plan docs and carriers stay in place, nothing dispatches from here, and the git-history ROADMAP.md holds the full pre-reset detail (structure, milestones, sign-off states). Un-shelve by PR into §1–§3, priced in displaced cost. **(2026-07-06: the *complexity budget whole-codebase*, *fail-closed meta band*, and *fold-ergonomics* lanes are un-shelved into §0's priority order ② and ⑤ — this reshuffle is that PR; their nodes stay catalogued here until relocated into their §2/§3 lanes.)**"), section_group( label: "", nodes: [ @@ -344,7 +358,7 @@ fn roadmap_authority() -> RoadmapDocument { RoadmapDocument { preamble: preamble(), lead_lanes: [], - sections: [section_1(), section_2(), section_3(), section_4()], + sections: [section_0(), section_1(), section_2(), section_3(), section_4()], } }