diff --git a/docs/roadmap.md b/docs/roadmap.md index e442319..e1f0393 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -221,33 +221,16 @@ clean. Pick the next milestone from P2.)_ - [ ] **\[todo\]** 21'h iteration — final 21' carry-over (latency methodology pass). Numbering kept for continuity with the 21' arc. -- [~] **\[todo\]** DESIGN.md effect-prose is fiction — standalone - documentation-honesty tidy (split out 2026-05-16 from the rejected - effect-op-arg-modes bundle; in flight via planner→implement). Three - load-bearing effect-system claims in DESIGN.md are presently false - and mislead every future brainstorm + the architect, who read - DESIGN.md as truth: (a) DESIGN.md:172/2722 say `IO` **and** - `Diverge` are wired-up built-in ops — `Diverge` has zero code in - any crate (not registered, never injected, no string literal); - reconcile to "only `IO` (`io/print_str`) is wired up; `Diverge` - reserved/unimplemented", modelled on Decision 4's - reserved-but-opaque refinements precedent. (b) DESIGN.md:171-172 - "the effect set is row-polymorphic (`![IO | r]`)" — no row variable - / `EffectRow` exists anywhere; effect sets are flat string - collections unified by set-equality; remove the claim (a flat - closed set is *more* locally legible — Decision 3 pillar — so this - is honesty, not a concession; pillar-doc edit, flag at review). - (c) `crates/ailang-core/src/ast.rs:438-439` `Term::Do` doc-comment - "resolved against the effect-handler table at link time" — there is - no handler table; it is an `IndexMap` lookup at typecheck + a - literal codegen `match`; correct it. Lockstep: `form_a.md:226,358` - + CLI-help `main.rs:289` Diverge mentions reconciled. Guard: a new - doc-presence test (false strings absent, corrected text present). - No language/codegen change; pure documentation truth. Grounding - triple-verified 2026-05-16 (three `ailang-grounding-check` PASSes). - - context: surfaced by the effect-subsystem recon during the - retired effect-op-arg-modes brainstorm; see the Stateful-islands - "UNDER RE-THINK" note for why the bundle was rejected. +- [x] **\[todo\]** DESIGN.md effect-prose is fiction — standalone + documentation-honesty tidy. Shipped 2026-05-16 as iter + effect-doc-honesty (a29700c): the three false effect-system claims + (row-polymorphic `![IO | r]`; `IO`+`Diverge` both wired up; + `Term::Do` "effect-handler table at link time") reconciled to the + real flat-closed-set / IO-only / `IndexMap`+codegen-`match` + mechanism, satellite lockstep done, guarded by a 4-test + doc-presence pin. No language/checker/codegen change. + - context: per-iter journal + `docs/journals/2026-05-16-iter-effect-doc-honesty.md`. - [ ] **\[todo\]** `io/print_float` always-emit-`.0` — surface printer always emits `.` or `e/E` so re-lex routes to Float; the runtime printer (`printf("%g\n", v)`) doesn't, so `2.0`