# AILang Roadmap Priority-ordered list of upcoming work — milestones, features, todos, and ideas. The orchestrator maintains this file. The user can request additions; the orchestrator chooses what to remove or reprioritise as work progresses. ## Conventions - One checkbox per entry. `- [ ]` is open; `- [~]` is in progress (work has started — a plan exists, a branch is open, or commits are landing); `- [x]` is done. A finished entry may stay briefly for context, then is removed (with a one-line mirror in `docs/JOURNAL.md`). - Each entry is tagged by **kind** and lives under a **priority** bucket: - **\[milestone\]** — big chunk that will get a `docs/specs/.md`. - **\[feature\]** — smaller addition inside a milestone, no full spec. - **\[todo\]** — concrete task that can run without a brainstorm (cleanup, doc fix, mechanical refactor, test backfill). - **\[idea\]** — not yet decision-ready, no commitment. - Optional `depends on:` line names another entry that has to land first. - Optional `context:` line points to the JOURNAL entry where the rationale lives. The roadmap is intentionally terse; rationale stays in JOURNAL. - Priority buckets: - **P0** — in flight. Spec or plan already exists. - **P1** — next up. Decision made; not yet started. - **P2** — medium-term. Decided in principle, scheduled later. - **P3** — ideas. No commitment; may be cut. ## P0 — In flight - [x] **\[milestone\]** design-md-consolidation — `docs/DESIGN.md` is now a state-only specification across four thematic sweeps (history anchors out, REVERTED + migration plans out, schema-SoT inversion + data-model hardening, workflow / cross-reference cleanup). Closed 2026-05-10. - context: `docs/specs/2026-05-10-design-md-consolidation.md`, JOURNAL milestone-close entry of same date. ## P1 — Next - [ ] **\[milestone\]** Post-22 Prelude — ship `Show` / `Eq` / `Ord` with the four primitive instances (Int, Bool, Str, Float); rewire `print` through `Show.show`. Originally queued as 22b.4 in the typeclass milestone, kept on hold pending demand. - context: JOURNAL 2026-05-09 ("JOURNAL queue") - depends on: design-md-consolidation (touches DESIGN.md schema sections that the consolidation will reshape) ## P2 — Medium-term - [ ] **\[feature\]** Operator routing through `Eq` / `Ord` — `==`, `<` etc. resolved via the typeclass instead of the built-in primitive comparators. No commitment; gated on bench re-baselining to make sure the indirection doesn't tank latency. - context: JOURNAL 2026-05-09 - depends on: Post-22 Prelude - [ ] **\[todo\]** `types` / `ctor_index` overlay shape question — decide whether the env's two parallel ctor maps should collapse into one overlay, or stay split. Surfaced during the env-construction unify audit. - context: JOURNAL 2026-05-10 ("Audit close: env-construction unify") - [ ] **\[feature\]** 22c — typeclass corpus expansion. User-defined classes beyond the prelude four; multi-parameter classes; superclass chains; richer instance bodies. Deferred from milestone 22. - context: JOURNAL 2026-05-09 - [ ] **\[todo\]** Boehm full retirement — remove the transitional Boehm GC path now that RC + uniqueness is the canonical memory story. - context: JOURNAL pre-22, "Boehm transitional" - [ ] **\[feature\]** Closure-pair slab / pool — codegen tweak to pool the env+code closure pairs instead of one-shot heap allocs. Bench-gated. - [ ] **\[todo\]** `FnDef::synthetic` flag — formalise the monomorphiser-emitted FnDefs so downstream passes can tell user-authored from synthesised at a glance. Currently inferred from symbol naming. - [ ] **\[todo\]** 21'h iteration — final 21' carry-over (latency methodology pass). Numbering kept for continuity with the 21' arc. ## P3 — Ideas - [ ] **\[idea\]** Latency methodology rework — switch from per-run timing to a histogram-based approach so tail-latency regressions are visible without re-running. Queued from 21'g. - [ ] **\[idea\]** Parser-test backfill for 22b.4a-era duplicate-clause sites (class × 3, class method × 2, instance × 3, instance method × 1). No regression pin today; only worth it if a 22b.4a-era diagnostic needs to change. - context: JOURNAL 2026-05-10 ("Iteration 22-tidy.7") - [ ] **\[idea\]** `write_type` `Type::Forall` arm in `crates/ailang-prose/src/lib.rs` silently drops constraints in inline-type rendering. Dormant — surface forms today only carry forall at fn-signature top level. Fix only if a future feature carries forall + constraints inline. - context: JOURNAL 2026-05-10 ("Iteration 22-tidy.6") - [ ] **\[idea\]** Richer integration paths between RC and uniqueness — deferred from the 21' arc; revisit once the uniqueness inference covers more program shapes.