Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
18 changes: 16 additions & 2 deletions dag/gunbc/roadmap_authority.dag
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,20 @@ fn preamble() -> List<MarkdownBlock> {
]
}

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)",
Expand Down Expand Up @@ -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: [
Expand Down Expand Up @@ -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()],
}
}

Expand Down
Loading