1.6 KiB
1.6 KiB
Phase‑20.28 — Claude Handoff Spec
Scope
- Lock down SSOT normalize policy; enforce in runner + interpreter.
- Harden Builder/Optimizer (effects and order) to avoid DCE/reorder bugs.
- Expand Core mir_call coverage (Array/String day‑1); Map remains plugin‑only.
- Gate‑C parity (file/pipe × plugins ON/OFF) with quiet/rc symmetry.
- Add a minimal self‑host smoke.
Work Items
- Normalize policy
- Runner (Gate‑C final fallback): only normalize Method/ModuleFunction → Extern when
allow_gate_c_plugins=true. - Interpreter (handle_call/Method): when
plugins_disabled(), skip static/runtime extern routing and useexecute_method_calldirectly. - Doc a decision table for SSOT (plugins=ON/OFF).
- Builder/Optimizer
- Ensure JSON carries effects for mutating calls; when absent, default as WRITE.
- Emit single‑pass JSON preserving MIR order; remove any postponed Copy emission.
- Canaries: if‑diamond + set→compare dependency.
- Core mir_call
- Positive coverage: Array get/set/push/pop/size via HostSlot/Plugin; ring0(Array) only as last resort.
- String primitives: length/substring/indexOf/lastIndexOf/replace — bounds checks + stable tags.
- Negative coverage: Closure callee; bad receiver; missing args.
- Gate‑C parity + bootstrap
- file/pipe × plugins ON/OFF — assert quiet/noise and rc consistency.
- Add
docs/guides/selfhost-bootstrap.mdwith env toggles and step‑by‑step. - Add minimal self‑host smoke that compiles a tiny program via lang→JSON→Core.
Acceptance
- All new canaries green; no regression in existing quick/core suite.
- Docs updated; toggles clearly listed with defaults and aliases.