Section 01: Inventory + owns_crates Normalization
Status: Complete
Goal: Produce the factual baseline (current plan landscape + authoritative crate→section map + migration manifest) that §02–§06 depend on. The mechanical routing rule in §02 cannot be written accurately without knowing what Fallback-R looks like in practice; §03’s helper cannot route correctly without complete owns_crates data; §05’s migration cannot execute without a concrete manifest.
Success Criteria:
- Every compiler crate under
compiler_repo/compiler/is enumerated and mapped to exactly one roadmap section’sowns_crates(connects to mission criterion: “Everyplans/roadmap/section-*.mdhas a correct, completeowns_crates:list”) - Each of the 26 currently-empty
owns_crates: []sections is audited: those that own compiler code get real lists; those that genuinely own no crate keep[]with an inline comment explaining why - Zero stale crate references remain (including the known
ori_lspphantom in §22-tooling) - this section’s Manifest Appendix (below) lists every current
plans/*/directory with its classification + target section -
python -m scripts.plan_corpus check plans/roadmap/exits 0 (returns LOW warning forori_lspplaceholder directory; documented and accepted as Fallback R carve-out)
Context: The 2026-04-24 bug-tracker redesign established owns_crates: frontmatter as REQUIRED on every roadmap section. The field is universally present (33/33 sections) but 26 sections declare empty lists. /add-bug routes by inverting this frontmatter across all sections — empty lists mean those sections are invisible to routing. Before any plan routing rule lands, the map must be accurate.
Reference implementations:
- Bug-tracker Phase G (2026-04-24): enumerated legacy
fix-BUG-*.mdsibling files, classified each (completed → archive, in-progress → migrate, orphan → Fallback-R), produced migration manifest before Phase F execution. This section mirrors that sequencing.
Depends on: None (this is Phase 0 prework).
Intelligence Reconnaissance
Queries run 2026-04-24:
scripts/intel-query.sh --human status— availability probe before running plan-graph queries; if unavailable, fall through to filesystem.scripts/intel-query.sh --human plan-status "repr-opt"— pulls section count + blocker count + bug count for the largest in-progress re-route as a smoke-test of the graph’s plan-corpus coverage.ls -la plans/— enumerated 22 re-route directories + roadmap + completed archive. Full inventory captured via Explore agent.grep -l "owns_crates:" plans/roadmap/section-*.md | wc -l— 33/33 sections have the field; 26 declare[], 7 declare explicit crate lists.grep "absorb-candidate" plans/*/00-overview.md— 8 plans carry migration markers: parser-perf→§00, enum-layout-ssot→§21A, ffi-boundary-safety→§11, repr-opt→§21A, iterator-element-ownership→§07C, locality-representation-unification→§21A, semantic-optimization-pipeline (unmarked), typeck-inference-completeness (§02 implied).
Results summary (≤500 chars) [ori]: 22 re-route plans span a spectrum of scope; 8 carry explicit absorb-candidate markers to specific roadmap sections. owns_crates: coverage is 33/33 present but 26/33 empty; ori_lsp in §22-tooling is stale (crate deleted per project-reorganization). Migration complexity varies: 5 in-progress plans (aot-perf, hygiene-full-2, llvm-verification-tooling, repr-opt, typeck-inference-completeness) need state preservation; 2 research plans (deep-safety, ori-ui-framework) have no section files and need separate handling.
See .claude/skills/query-intel/compose-intel-summary.md for the full query protocol.
01.1 Enumerate current plans/*/ landscape
File(s): this section’s Manifest Appendix (below)
Capture every plans/<dir>/ in machine-readable form so §05 migration can iterate without re-discovery.
-
ls -d plans/*/ | grep -v completed→ emit list of 22 re-route dirs + roadmap -
For each dir, extract from
00-overview.mdfrontmatter:status:,plan:, mission paragraph (first paragraph under## Mission) -
For each dir, count section files:
ls plans/<dir>/section-*.md 2>/dev/null | wc -l -
For each dir, check for
absorb-candidatemarker:grep -h "absorb-candidate" plans/<dir>/*.md || echo "no marker" -
Write inventory to this section’s Manifest Appendix (below) Part A (plan-by-plan table):
| Plan | Status | Sections | Absorb-candidate | Scope crates | |------|--------|----------|------------------|--------------| | aot-perf | in-progress | 2 | (none) | ori_llvm, ori_rt | | repr-opt | in-progress | 12 | §21A-llvm | ori_canon, ori_arc, ori_repr, ori_llvm, ori_rt | | ... (22 rows total) | -
Subsection close-out (01.1) — MANDATORY before starting 01.2:
- All tasks above are
[x]and Manifest Appendix Part A exists and is complete - Update this subsection’s
statusin section frontmatter tocomplete - Repo hygiene check — run
compiler_repo/diagnostics/repo-hygiene.sh --checkand clean any temp files
- All tasks above are
01.2 Audit plans/roadmap/section-*.md owns_crates for completeness + staleness
File(s): plans/roadmap/section-*.md (33 files, audit only — no edits yet)
Detect two defect classes: missing real entries, stale entries for deleted crates.
-
Enumerate every crate under
compiler_repo/compiler/vials -d compiler_repo/compiler/*/→ produces authoritative “live crates” set (should include: ori_lexer_core, ori_lexer, ori_parse, ori_ir, ori_types, ori_registry, ori_diagnostic, ori_stack, ori_canon, ori_arc, ori_repr, ori_patterns, ori_eval, ori_llvm, ori_rt, ori_fmt, ori_test_harness, ori_compiler, oric — 19 crates per CLAUDE.md §Compiler) -
For each roadmap section, extract current
owns_crates:value -
Compute three sets:
- Covered: crates appearing in at least one section’s list
- Uncovered: crates in
compiler_repo/compiler/absent from all sections - Stale: entries in any section’s list not matching a live crate (known:
ori_lspin §22)
-
Write audit to Manifest Appendix Part B (defect table):
| Section | Current owns_crates | Defect | Proposed fix | |---------|---------------------|--------|--------------| | §22-tooling | [ori_fmt, ori_test_harness, ori_stack, ori_lsp, ori_diagnostic, ori_compiler, oric] | STALE: ori_lsp deleted | Remove ori_lsp | | §02-type-inference | [] | EMPTY: owns inference code in ori_types | Add ori_types (overlap resolution with §01-type-system in 01.3) | | ... | -
Subsection close-out (01.2) — MANDATORY before starting 01.3:
- Audit complete; Part B of manifest populated
- Update this subsection’s
statustocomplete - Repo hygiene check —
compiler_repo/diagnostics/repo-hygiene.sh --check
01.3 Fill the 26 empty owns_crates: [] lists with real crate assignments
File(s): plans/roadmap/section-*.md frontmatter (up to 26 sections edited)
For each section with empty owns_crates: [], decide: does this section own compiler code, and if so, which crates?
Decision criteria:
-
Section explicitly about a compiler subsystem (e.g., §02-type-inference) → owns the relevant crate(s)
-
Section about a language-feature area that’s stdlib-only (e.g., §07D-stdlib-modules) → may legitimately own
[](stdlib work lives incompiler_repo/library/, not a compiler crate) -
Section about a cross-cutting concern (e.g., §14-testing) → may legitimately own
[](testing crates live under compiler_repo already claimed) -
Resolve crate-overlap: a crate can be owned by exactly ONE section; if §01-type-system currently owns
[ori_ir, ori_types]and §02-type-inference’s scope also touchesori_types, decide which section OWNS vs which section references. Edit the LOSING section’sowns_cratesto NOT include the disputed crate; add an# Note:comment explaining the overlap resolution -
For each empty section, apply one of: (a) fill with real crate list, (b) retain
[]with inline comment# This section owns no compiler crate — work happens in <library/stdlib/crate>, or (c) defer with# TODO-RESOLUTION: crate ownership disputed with §XX, resolved in 01.3 commit -
Remove the stale
ori_lspentry from §22-tooling’sowns_crates -
Verify completeness: every live crate appears in exactly one section’s list; every section’s list references only live crates:
python3 -c " import yaml, pathlib live = {p.name for p in pathlib.Path('compiler_repo/compiler').iterdir() if p.is_dir()} seen = {} for p in sorted(pathlib.Path('plans/roadmap').glob('section-*.md')): fm = yaml.safe_load(p.read_text().split('---')[1]) for c in fm.get('owns_crates', []): if c not in live: print(f'STALE: {p.name}: {c}') if c in seen: print(f'DUPLICATE: {c} claimed by {seen[c]} AND {p.name}') seen[c] = p.name missing = live - set(seen.keys()) if missing: print(f'UNCOVERED: {missing}') "Expected output: nothing (all stale/duplicate/uncovered defects resolved).
-
Commit the normalization as a single logical commit:
docs(roadmap): fill empty owns_crates lists + remove stale entries -
Subsection close-out (01.3) — MANDATORY before starting 01.4:
- Validator script exits 0 (no STALE/DUPLICATE/UNCOVERED output)
- Normalization commit pushed
- Update this subsection’s
statustocomplete - Repo hygiene check —
compiler_repo/diagnostics/repo-hygiene.sh --check
01.4 Produce migration manifest
File(s): this section’s Manifest Appendix (below) (Part C + D)
Using Part A (plan inventory) + the now-complete owns_crates map (output of 01.3), classify every current re-route and decide its target disposition.
Classification algorithm:
- For plan P with scope crates S = {c1, c2, …}, invert owns_crates map to find owning section per crate
- Count hits per section:
section_hits = {section: |{c in S : c in section.owns_crates}|} - If one section has strictly maximum hits → ROUTE A (subsection of that section)
- If multiple sections tie for max → ROUTE B (Fallback-R with
routing_justification) - If S ∩ (union of all owns_crates) = ∅ AND S is skill-infra-docs scope → ROUTE C (tracker-index)
- Special case: research plans with no section files → retained at top level with
routing: kind=research-exploration
-
For each plan in Part A, apply the classification; write result to Manifest Appendix Part C:
| Plan | Scope crates | section_hits | Route | Target | |------|--------------|--------------|-------|--------| | aot-perf | {ori_llvm, ori_rt} | §21A: 1, §21B: 1 (TIE) | B (Fallback-R) | plans/aot-perf/ with routing_justification | | repr-opt | {ori_canon, ori_arc, ori_repr, ori_llvm, ori_rt} | §21A: 4, §21B: 1 | A (subsection) | §21A-llvm | | parser-perf | {ori_lexer, ori_parse} | §00: 2 | A (subsection) | §00-parser | | ... | -
For ROUTE A entries, draft the target subsection ID + title (e.g.,
§21A.X repr-opt absorption).Xis next available subsection number; plan author’s existing section structure becomes sub-subsections. -
For ROUTE B entries, draft the
routing_justificationtext (one sentence explaining why no single section owns this scope). -
For ROUTE C entries (if any), identify target
bug-tracker/section-NN-*.md. -
Write Manifest Appendix Part D (state-preservation inventory) for 5 in-progress plans:
| Plan | review_pipeline | HISTORY blocks | Completed subsections | Blocker cross-refs | |------|-----------------|----------------|----------------------|-------------------| | aot-perf | rounds_completed: 2, last_round_commit: <sha> | 3 blocks | §01 [x], §02 in-progress | none | | repr-opt | (none) | 12 blocks | §01-§05 [x], §06 in-progress | ... | | ... | -
Subsection close-out (01.4) — MANDATORY before starting 01.N:
- Manifest Appendix Parts A–D all populated and reviewed for correctness
- Update this subsection’s
statustocomplete - Repo hygiene check —
compiler_repo/diagnostics/repo-hygiene.sh --check
01.N Completion Checklist
- All implementation subsections (01.1–01.4) are
[x]and statuscomplete - All section success criteria have corresponding
[x]checkboxes - Manifest Appendix Parts A–D exist and are populated
- Crate-ownership validator script (from 01.3) exits 0: no STALE, no DUPLICATE, no UNCOVERED
-
./test-all.shgreen — regression canary (no compiler code was touched this session —git -C compiler_repo statusclean; canary is vacuous by construction) -
python -m scripts.plan_corpus check plans/roadmap/returns exit 0 (LOW warning for ori_lsp placeholder, non-gating) - Plan sync — update plan metadata:
- This section’s frontmatter
status→complete, all subsection statuses →complete -
00-overview.mdQuick Reference table: Section 01 status →Complete -
00-overview.mdmission success criteria: check off “Every compiler crate is enumerated and mapped” + “26 empty owns_crates lists audited” + “zero stale references” -
index.mdSection 01 status →Complete
- This section’s frontmatter
- Repo hygiene check —
compiler_repo/diagnostics/repo-hygiene.sh --check; clean any temp files
Exit Criteria: Manifest Appendix Parts A–D complete; validator script exits 0; all 26 empty owns_crates audited; ori_lsp removed from §22; ./test-all.sh green; plan_corpus check plans/roadmap/ green.
Manifest Appendix — Parts A/A.1/B/C/D
Machine-readable inventory produced by §01. Consumed verbatim by §05 (migration). Part A/A.1/B/C/D live here; §04 appends Part E, §05 appends Parts F+G, §07 appends Part H — each in their own section’s appendix.
- Part A — plan-by-plan snapshot of
plans/*/(excludingroadmap/,roadmap-plan-routing-unification/,completed/). - Part A.1 — mission previews (first sentence of
## Mission). - Part B —
owns_crates:defect audit (populated by §01.2). - Part C — classification + routing decision per plan (populated by §01.4).
- Part D — state-preservation inventory for in-progress plans (populated by §01.4).
Part A — Plan-by-plan inventory
22 re-route plans enumerated 2026-04-24. Absorb-candidate column lists the target plans/roadmap/section-*.md from <!-- phase-g-audit:absorb-candidate --> comments where present (8 plans carry markers). — indicates the plan touches no live compiler crate directly.
| # | Plan | Status | Sections | Absorb-candidate | Scope crates |
|---|---|---|---|---|---|
| 1 | aot-perf | in-progress | 2 | — | ori_llvm, ori_rt |
| 2 | clang-arc-lessons | not-started | 6 | — | ori_arc |
| 3 | code-journey-rework | not-started | 6 | — | — |
| 4 | compiler-architecture-best-practices | not-started | 9 | — | ori_types, ori_diagnostic, ori_test_harness, ori_llvm, ori_repr |
| 5 | deep-safety | research | 0 | — | — |
| 6 | enum-layout-ssot | not-started | 4 | §21A-llvm | ori_repr, ori_types, ori_canon, ori_llvm |
| 7 | ffi-boundary-safety | not-started | 8 | §11-ffi | ori_arc, ori_types, ori_llvm, ori_rt |
| 8 | hygiene-full-2 | in-progress | 10 | — | ori_rt, ori_eval, ori_llvm, ori_types, ori_lexer, ori_parse (multi-crate hygiene) |
| 9 | iterator-element-ownership | not-started | 6 | §23-evaluator | ori_arc, ori_eval, ori_patterns |
| 10 | llvm-verification-tooling | in-progress | 12 | — | ori_arc, ori_llvm (tooling-primary) |
| 11 | llvm-worker-isolation | not-started | 3 | — | ori_llvm, oric |
| 12 | locality-representation-unification | not-started | 6 | §21A-llvm | ori_arc, ori_repr |
| 13 | ori-ui-framework | research | 6 | — | — |
| 14 | parser-perf | not-started | 6 | §00-parser | ori_parse, ori_lexer |
| 15 | perf-engineering | not-started | 7 | — | ori_eval, ori_ir |
| 16 | pkg_mgmt | not-started | 11 | — | — |
| 17 | project-reorganization | not-started | 9 | — | — |
| 18 | repr-opt | in-progress | 12 | §21A-llvm | ori_canon, ori_arc, ori_repr, ori_llvm, ori_rt |
| 19 | rosetta-stress-test | not-started | 1 | — | — |
| 20 | semantic-optimization-pipeline | not-started | 10 | §21A-llvm | ori_arc, ori_types, ori_llvm, ori_canon |
| 21 | test-suite-health | not-started | 6 | — | — |
| 22 | typeck-inference-completeness | in-progress | 11 | §01-type-system | ori_types, ori_arc |
Summary:
- Total: 22 re-route plans.
- In-progress: 5 (aot-perf, hygiene-full-2, llvm-verification-tooling, repr-opt, typeck-inference-completeness) — state-preservation required (Part D).
- Research: 2 (deep-safety, ori-ui-framework) — deep-safety has zero section files; ori-ui-framework has 6.
- Absorb-candidate markers: 8 plans carry
<!-- phase-g-audit:absorb-candidate -->comments naming a target roadmap section. - No compiler-crate scope (
—): 7 plans (code-journey-rework, deep-safety, ori-ui-framework, pkg_mgmt, project-reorganization, rosetta-stress-test, test-suite-health).
Part A.1 — Mission previews
First sentence of each plan’s ## Mission paragraph (truncated to ≤140 chars).
| Plan | Mission preview |
|---|---|
| aot-perf | Close the benchmark gaps between Ori AOT and Rust by eliminating provably-unnecessary overflow checks — reducing from 19 to ≤8 for equivalent programs |
| clang-arc-lessons | Adopt battle-tested ARC optimization patterns from Clang/LLVM and Swift into Ori’s AIMS pipeline: effect-aware coalescing barriers, compile-time reuse |
| code-journey-rework | Transform the code-journey system from a broken scoring pipeline that produces false confidence into a grounded bug-finding system |
| compiler-architecture-best-practices | Implement verified industry best practices and documented aspirational patterns as enforceable rules with supporting infrastructure |
| deep-safety | Make Ori the better choice than Rust for low-level development — including kernel dev, embedded, drivers, and systems programming |
| enum-layout-ssot | Centralize ALL enum layout knowledge into a single source of truth in ori_repr, migrate every codegen consumer to use that SSOT |
| ffi-boundary-safety | Make Ori’s mission claim “memory safety across the entire program surface, including FFI” hold in implementation |
| hygiene-full-2 | Achieve a cohesive, well-architected compiler where every phase has clear boundaries, every piece of knowledge lives in exactly one canonical home |
| iterator-element-ownership | Establish a uniform element ownership contract for the C iterator runtime protocol: every element yielded by IterState::next() is owned |
| llvm-verification-tooling | Build world-class verification tooling for Ori’s AIMS memory system and LLVM backend — exploiting Ori’s unique dual-layer architecture |
| llvm-worker-isolation | Isolate the LLVM backend spec test runner from C++ SIGSEGV crashes by running each test file’s LLVM compilation in a separate process |
| locality-representation-unification | Establish single-source-of-truth for escape-scope classification in AIMS by extending the existing ori_arc::Locality ordered lattice |
| ori-ui-framework | Build a 100% Ori-native GPU-accelerated UI framework with CSS layout semantics that serves as the flagship showcase for Ori’s Deep FFI |
| parser-perf | Maximize Ori’s parser frontend throughput and API quality across the full pipeline — lexer, parser, and Salsa integration |
| perf-engineering | Make Ori’s interpreter as close to native execution speed as possible. |
| pkg_mgmt | (no mission paragraph — pkg_mgmt/00-overview.md lacks ## Mission heading) |
| project-reorganization | Bring the ori_lang/ repository root into alignment with first-class compiler conventions (rustc, swift, zig, gleam, roc, lean4) |
| repr-opt | Complete the representation optimization system as one cohesive machine: from abstract types through range analysis and escape analysis |
| rosetta-stress-test | Methodically implement Rosetta Code tasks in Ori, treating each program as a deep language evaluation |
| semantic-optimization-pipeline | Make proven facts survive into optimization — including algebraic structure. |
| test-suite-health | Restore the Ori test suite to full health across two fronts: (1) audit/reprioritize the LLVM backend roadmap; (2) reduce cargo t wall time to ≤30s |
| typeck-inference-completeness | Close the typeck inference completeness gap end-to-end so the test suite reaches failed: 0 via localized compiler fixes |
Part B — owns_crates defect audit
Live-crate set (19, sourced from compiler_repo/compiler/* filtered to directories with Cargo.toml — matches CLAUDE.md §Compiler):
ori_arc, ori_canon, ori_compiler, ori_diagnostic, ori_eval, ori_fmt, ori_ir,
ori_lexer, ori_lexer_core, ori_llvm, ori_parse, ori_patterns, ori_registry,
ori_repr, ori_rt, ori_stack, ori_test_harness, ori_types, oric
Note: compiler_repo/compiler/ori_lsp/ exists as a placeholder directory (.gitkeep only, no Cargo.toml, not a workspace member). It is NOT a live crate.
Coverage analysis (pre-fix):
| Metric | Count | Notes |
|---|---|---|
| Live crates | 19 | From compiler_repo/compiler/*/Cargo.toml |
| Covered | 19 | Every live crate appears in at least one non-empty owns_crates: list |
| Uncovered | 0 | No live crate is unclaimed |
| Duplicate claims | 0 | Each covered crate appears in exactly one section |
| Stale entries | 1 | ori_lsp in §22-tooling (placeholder dir, not a real crate) |
Empty sections (owns_crates: []) | 26 | Language-feature sections (see fix plan below) |
| Non-empty sections | 7 | Subsystem sections covering all 19 live crates |
Non-empty sections (current state):
| Section | owns_crates |
|---|---|
| section-00-parser.md | ori_lexer_core, ori_lexer, ori_parse |
| section-01-type-system.md | ori_ir, ori_types |
| section-03-traits.md | ori_registry |
| section-21A-llvm.md | ori_canon, ori_arc, ori_repr, ori_llvm |
| section-21B-aot.md | ori_rt |
| section-22-tooling.md | ori_fmt, ori_test_harness, ori_stack, ori_lsp (STALE), ori_diagnostic, ori_compiler, oric |
| section-23-evaluator.md | ori_eval, ori_patterns |
Defect table:
| Section | Current owns_crates | Defect | Proposed fix (executed in §01.3) |
|---|---|---|---|
| section-22-tooling.md | […, ori_lsp, …] | STALE: ori_lsp is a placeholder dir (.gitkeep only), not a real crate | Remove ori_lsp from list |
| section-02-type-inference.md | [] | EMPTY: type-inference code lives in ori_types (owned by §01) | Retain [] with comment: inference scope lives in §01-type-system’s ori_types |
| section-04-modules.md | [] | EMPTY: module resolution spans ori_parse (§00) + ori_canon (§21A) | Retain [] with comment: spans §00/§21A-owned crates |
| section-05-type-declarations.md | [] | EMPTY: type decls live in ori_ir + ori_types (§01) | Retain [] with comment: §01-type-system owns these |
| section-06-capabilities.md | [] | EMPTY: capability typeck lives in ori_types (§01); runtime in ori_rt (§21B) | Retain [] with comment: §01 + §21B own these |
| section-07A-core-builtins.md | [] | EMPTY: prelude fns in ori_eval (§23), type definitions in compiler_repo/library/std/ (stdlib, no crate) | Retain [] with comment: §23 + stdlib own these |
| section-07B-option-result.md | [] | EMPTY: Option/Result types are stdlib (compiler_repo/library/std/prelude.ori) | Retain [] with comment: stdlib (no crate owner) |
| section-07C-collections.md | [] | EMPTY: collection runtime in ori_patterns (§23), stdlib types in library/std/ | Retain [] with comment: §23 + stdlib |
| section-07D-stdlib-modules.md | [] | EMPTY: stdlib-only (compiler_repo/library/std/*.ori) | Retain [] with comment: stdlib only |
| section-07E-stdlib-text.md | [] | EMPTY: stdlib-only (compiler_repo/library/std/text.ori) | Retain [] with comment: stdlib only |
| section-08-patterns.md | [] | EMPTY: pattern compilation in ori_canon (§21A), dispatch in ori_patterns (§23) | Retain [] with comment: §21A + §23 |
| section-09-match.md | [] | EMPTY: match lowering in ori_canon (§21A) | Retain [] with comment: §21A |
| section-10-control-flow.md | [] | EMPTY: control-flow lowering in ori_canon (§21A) | Retain [] with comment: §21A |
| section-11-ffi.md | [] | EMPTY: FFI codegen in ori_llvm (§21A), FFI runtime in ori_rt (§21B) | Retain [] with comment: §21A + §21B |
| section-12-variadic-functions.md | [] | EMPTY: variadic lowering in ori_canon (§21A), parsing in ori_parse (§00) | Retain [] with comment: §00 + §21A |
| section-13-conditional-compilation.md | [] | EMPTY: #cfg/#target parsing in ori_parse (§00) | Retain [] with comment: §00 |
| section-14-testing.md | [] | EMPTY: test harness is ori_test_harness (§22) + compiler_repo/tests/* | Retain [] with comment: §22 + test corpus |
| section-15A-attributes-comments.md | [] | EMPTY: attribute parsing in ori_parse (§00) | Retain [] with comment: §00 |
| section-15B-function-syntax.md | [] | EMPTY: function syntax in ori_parse (§00) | Retain [] with comment: §00 |
| section-15C-literals-operators.md | [] | EMPTY: literal lexing in ori_lexer (§00), operator dispatch in ori_types (§01) | Retain [] with comment: §00 + §01 |
| section-15D-bindings-types.md | [] | EMPTY: let/type bindings in ori_parse (§00) + ori_types (§01) | Retain [] with comment: §00 + §01 |
| section-16-async.md | [] | EMPTY: async uses ori_canon (§21A), ori_eval (§23), ori_patterns (§23), ori_rt (§21B) | Retain [] with comment: §21A + §21B + §23 |
| section-17-concurrency.md | [] | EMPTY: channel patterns in ori_patterns (§23), concurrency runtime in ori_rt (§21B) | Retain [] with comment: §21B + §23 |
| section-18-const-generics.md | [] | EMPTY: const-generic types in ori_types (§01) | Retain [] with comment: §01 |
| section-19-existential-types.md | [] | EMPTY: existential dispatch in ori_types (§01) | Retain [] with comment: §01 |
| section-20-reflection.md | [] | EMPTY: reflection intrinsics in ori_types (§01) + ori_ir (§01) | Retain [] with comment: §01 |
| section-20A-construction.md | [] | EMPTY: construction syntax in ori_parse (§00), runtime in ori_eval (§23) | Retain [] with comment: §00 + §23 |
Fix summary for §01.3:
- Remove
ori_lspfromsection-22-tooling.mdowns_crates. - Add
# Note: ...comment to each of the 26 empty sections inline withowns_crates: [], explaining which subsystem section(s) own the relevant crates. - The 7 non-empty sections stay as-is (except §22 after step 1).
Part C — Classification + routing decisions
Applied the 6-step classification algorithm from §01.4 to every plan in Part A. section_hits counts how many of a plan’s scope crates are owned by each roadmap section (per post-§01.3 owns_crates:). Strict max → ROUTE A; tie → ROUTE B Fallback-R; no compiler scope → ROUTE C; research with no sections → ROUTE D.
| # | Plan | Scope crates | section_hits | Route | Target | Rationale |
|---|---|---|---|---|---|---|
| 1 | aot-perf | ori_llvm, ori_rt | §21A-llvm: 1, §21B-aot: 1 | B (Fallback-R) | plans/aot-perf/ with routing_justification | tie: §21A-llvm, §21B-aot — both 1 hit |
| 2 | clang-arc-lessons | ori_arc | §21A-llvm: 1 | A (subsection) | §21A-llvm | strict max at §21A-llvm |
| 3 | code-journey-rework | — | — | C (skill-infra-docs) | plans/code-journey-rework/ retain; reroute: true + routing_justification | skill rework; no compiler crate |
| 4 | compiler-architecture-best-practices | ori_types, ori_diagnostic, ori_test_harness, ori_llvm, ori_repr | §22-tooling: 2, §21A-llvm: 2, §01-type-system: 1 | B (Fallback-R) | plans/compiler-architecture-best-practices/ with routing_justification | tie: §22-tooling, §21A-llvm — both 2 hits |
| 5 | deep-safety | — | — | D (research-exploration) | plans/deep-safety/ retain; routing: kind=research-exploration | research-only; zero section files |
| 6 | enum-layout-ssot | ori_repr, ori_types, ori_canon, ori_llvm | §21A-llvm: 3, §01-type-system: 1 | A (subsection) | §21A-llvm | strict max — matches absorb-marker §21A-llvm |
| 7 | ffi-boundary-safety | ori_arc, ori_types, ori_llvm, ori_rt | §21A-llvm: 2, §01-type-system: 1, §21B-aot: 1 | A (subsection) | §21A-llvm | strict max §21A-llvm; differs from absorb-marker §11-ffi (§11-ffi is intentionally empty per §01.3 — FFI codegen lives in §21A’s ori_llvm) |
| 8 | hygiene-full-2 | ori_rt, ori_eval, ori_llvm, ori_types, ori_lexer, ori_parse | §00-parser: 2, §21B-aot: 1, §23-evaluator: 1, §21A-llvm: 1, §01-type-system: 1 | A (subsection) | §00-parser | strict max at §00-parser (2 hits via ori_lexer + ori_parse) |
| 9 | iterator-element-ownership | ori_arc, ori_eval, ori_patterns | §23-evaluator: 2, §21A-llvm: 1 | A (subsection) | §23-evaluator | strict max — matches absorb-marker §23-evaluator |
| 10 | llvm-verification-tooling | ori_arc, ori_llvm | §21A-llvm: 2 | A (subsection) | §21A-llvm | strict max at §21A-llvm |
| 11 | llvm-worker-isolation | ori_llvm, oric | §21A-llvm: 1, §22-tooling: 1 | B (Fallback-R) | plans/llvm-worker-isolation/ with routing_justification | tie: §21A-llvm, §22-tooling — both 1 hit |
| 12 | locality-representation-unification | ori_arc, ori_repr | §21A-llvm: 2 | A (subsection) | §21A-llvm | strict max — matches absorb-marker §21A-llvm |
| 13 | ori-ui-framework | — | — | D (research-exploration) | plans/ori-ui-framework/ retain; routing: kind=research-exploration | research plan; flagship showcase, not a compiler change |
| 14 | parser-perf | ori_parse, ori_lexer | §00-parser: 2 | A (subsection) | §00-parser | strict max — matches absorb-marker §00-parser |
| 15 | perf-engineering | ori_eval, ori_ir | §23-evaluator: 1, §01-type-system: 1 | B (Fallback-R) | plans/perf-engineering/ with routing_justification | tie: §23-evaluator, §01-type-system — both 1 hit |
| 16 | pkg_mgmt | — | — | C (skill-infra-docs) | plans/pkg_mgmt/ retain; reroute: true + routing_justification | package-manager tooling; no compiler crate |
| 17 | project-reorganization | — | — | C (skill-infra-docs) | plans/project-reorganization/ retain; reroute: true + routing_justification | repo-layout tooling; no compiler crate |
| 18 | repr-opt | ori_canon, ori_arc, ori_repr, ori_llvm, ori_rt | §21A-llvm: 4, §21B-aot: 1 | A (subsection) | §21A-llvm | strict max — matches absorb-marker §21A-llvm |
| 19 | rosetta-stress-test | — | — | C (skill-infra-docs) | plans/rosetta-stress-test/ retain; reroute: true + routing_justification | test-corpus infra; no compiler crate |
| 20 | semantic-optimization-pipeline | ori_arc, ori_types, ori_llvm, ori_canon | §21A-llvm: 3, §01-type-system: 1 | A (subsection) | §21A-llvm | strict max — matches absorb-marker §21A-llvm |
| 21 | test-suite-health | — | — | C (skill-infra-docs) | plans/test-suite-health/ retain; reroute: true + routing_justification | test-tooling infra; no compiler crate |
| 22 | typeck-inference-completeness | ori_types, ori_arc | §01-type-system: 1, §21A-llvm: 1 | B (Fallback-R) | plans/typeck-inference-completeness/ with routing_justification | tie: §01-type-system, §21A-llvm — absorb-marker §01-type-system is a valid hint but algorithm requires routing_justification for ties |
Route summary:
| Route | Count | Plans |
|---|---|---|
| A (subsection migration) | 10 | clang-arc-lessons, enum-layout-ssot, ffi-boundary-safety, hygiene-full-2, iterator-element-ownership, llvm-verification-tooling, locality-representation-unification, parser-perf, repr-opt, semantic-optimization-pipeline |
| B (Fallback-R with routing_justification) | 5 | aot-perf, compiler-architecture-best-practices, llvm-worker-isolation, perf-engineering, typeck-inference-completeness |
| C (skill-infra-docs — retained peer plan) | 5 | code-journey-rework, pkg_mgmt, project-reorganization, rosetta-stress-test, test-suite-health |
| D (research-exploration) | 2 | deep-safety, ori-ui-framework |
ROUTE A subsection landing table (draft IDs — actual numbers confirmed during §05 migration based on each target section’s next available subsection index):
| Plan | Target section | Draft subsection ID | Draft subsection title |
|---|---|---|---|
| clang-arc-lessons | §21A-llvm | §21A.X | clang-arc-lessons absorption (ARC optimization patterns from Clang/LLVM + Swift) |
| enum-layout-ssot | §21A-llvm | §21A.X+1 | enum-layout-ssot absorption (centralize enum layout in ori_repr SSOT) |
| ffi-boundary-safety | §21A-llvm | §21A.X+2 | ffi-boundary-safety absorption (FFI memory-safety invariants) |
| hygiene-full-2 | §00-parser | §00.Y | hygiene-full-2 absorption (compiler-wide hygiene; lexer/parser primary scope) |
| iterator-element-ownership | §23-evaluator | §23.Z | iterator-element-ownership absorption (uniform element ownership contract) |
| llvm-verification-tooling | §21A-llvm | §21A.X+3 | llvm-verification-tooling absorption (AIMS + LLVM verification harness) |
| locality-representation-unification | §21A-llvm | §21A.X+4 | locality-representation-unification absorption (Locality lattice extension) |
| parser-perf | §00-parser | §00.Y+1 | parser-perf absorption (lexer/parser throughput + Salsa integration) |
| repr-opt | §21A-llvm | §21A.X+5 | repr-opt absorption (3-tier representation optimization framework) |
| semantic-optimization-pipeline | §21A-llvm | §21A.X+6 | semantic-optimization-pipeline absorption (algebraic metadata + optimization survival) |
ROUTE B routing_justification drafts:
| Plan | Scope crates | Justification sentence (draft for §05) |
|---|---|---|
| aot-perf | ori_llvm, ori_rt | AOT perf work spans codegen (§21A-llvm owns ori_llvm) and runtime (§21B-aot owns ori_rt) equally; no single section owns both, and the plan’s deliverable (overflow elision, string indexing) requires coordinated edits across both. |
| compiler-architecture-best-practices | ori_types, ori_diagnostic, ori_test_harness, ori_llvm, ori_repr | Cross-cutting best-practices work spans §22-tooling (diagnostics + test harness) and §21A-llvm (codegen + repr) equally; infra scaffolding derives from both, so no single section is the natural owner. |
| llvm-worker-isolation | ori_llvm, oric | Subprocess isolation splits between backend codegen (§21A-llvm’s ori_llvm) and driver (§22-tooling’s oric); both crates must change together and no single section owns both. |
| perf-engineering | ori_eval, ori_ir | Bytecode VM rewrites the evaluator (§23-evaluator owns ori_eval) but also introduces new IR (§01-type-system owns ori_ir); scope depends on bytecode-IR codesign and no single section is the natural owner. |
| typeck-inference-completeness | ori_types, ori_arc | Inference completeness spans the type checker (§01-type-system owns ori_types) and AIMS analysis (§21A-llvm owns ori_arc); both contribute to closing failed: 0 on inference bodies. |
ROUTE C skill-infra-docs routing_justification drafts:
| Plan | Justification sentence (draft for §05) |
|---|---|
| code-journey-rework | /code-journey skill rework — operates on .claude/skills/ + compiler_repo/diagnostics/ scripts; no compiler crate is modified. |
| pkg_mgmt | Package-manager design + tooling — operates on a new pkg_mgmt/ subsystem outside compiler_repo/compiler/; no existing compiler crate is modified. |
| project-reorganization | Repo-layout / project-structure reorganization — operates on top-level directories, not compiler crates. |
| rosetta-stress-test | Test-corpus stress plan — authors .ori test programs in compiler_repo/tests/spec/rosetta-stress/; no compiler crate is modified directly. |
| test-suite-health | LLVM backend roadmap reprioritization + cargo t wall-time profiling — produces tracking infrastructure and tooling; the actual codegen work lands in §21A-llvm subsections. |
Part D — State-preservation inventory for in-progress plans
5 in-progress plans require state preservation before §05 migration (Route A plans are migrated into their owning section; Route B/C/D plans stay peer). State is captured here so the reviewer can verify §05 didn’t silently drop work.
| Plan | review_pipeline | HISTORY blocks | Completed subsections | In-progress subsections | Blocker cross-refs (sampled) |
|---|---|---|---|---|---|
| aot-perf | none | 0 | 0 | 0 | none — plan is scaffolded but no subsection work done |
| hygiene-full-2 | none | 0 | 10 | 2 | plan/section (generic placeholder) |
| llvm-verification-tooling | none | 0 | 75 | 0 | llvm-worker-isolation, roadmap/section-11, future-lto-verification |
| repr-opt | none | 0 | 51 | 5 | NICHE_CODEGEN_READY, §07.4.A, bug-tracker, §07.5 |
| typeck-inference-completeness | none | 0 | 60 | 8 | BUG-04-091, BUG-01-002, §03.3, §04.S.R |
State-preservation protocol for §05 migration:
- ROUTE A migrations: before moving subsections into the owning roadmap section, copy each plan’s
00-overview.mdmission + itsindex.mdheader into a HISTORY block of the new absorbing subsection. Completed subsections carry their[x]state forward; in-progress ones carry the checkbox state + anyreview_pipeline:markers verbatim. The old plan directory is moved underplans/completed/withstatus: absorbed-by-§XX.Y. - ROUTE B plans: retain at
plans/<plan>/. Addreroute: true+routing_justification: "..."to the plan’sindex.mdfrontmatter per §04/§06 schema. No state change; just a frontmatter marker that/create-planStep 0.6 recognizes. - ROUTE C plans: same as ROUTE B — retain + annotate frontmatter with
reroute: true. - ROUTE D plans: retain at top level with
routing: kind=research-explorationor equivalent explicit marker. No migration.
Blocker-reference verification checklist for §05 (non-obvious blockers found during Part D scan):
-
hygiene-full-2blocker refplan/sectionplaceholder — delegated toplans/plan-absorption-followup/section-01-route-a-absorption.md§01.4 (resolution happens during actual absorption; §05 annotation-first scope did not touch blocker refs). -
llvm-verification-toolingreferencesllvm-worker-isolation(Route B) cross-plan dep — delegated toplans/plan-absorption-followup/section-01-route-a-absorption.md§01.6 (verify during absorption). -
repr-optreferencesbug-tracker/bug-tracker pointer preservation — delegated toplans/plan-absorption-followup/section-02-repr-opt-flatten.md§02.2 (preserve during umbrella flatten). -
typeck-inference-completenessreferencesBUG-04-091+BUG-01-002— delegated toplans/plan-absorption-followup/section-01-route-a-absorption.mdper-plan absorption subsection (verify bug entries still exist post-migration).