1.5 KiB
1.5 KiB
Phase‑20.28 — Execution Plan
Milestones
- Normalize policy (SSOT)
- Define when Method/ModuleFunction → Extern applies.
- plugins=ON: apply SSOT mapping; prepend receiver for Method forms.
- plugins=OFF: do not normalize Method/Constructor; let method_router/builtin/ring0 run.
- Document the decision table and update Gate‑C paths accordingly.
- Builder/Optimizer hardening
- Add default effects for mutating calls when JSON omits them (prevent DCE of set/delete/push/pop).
- Ensure single‑pass emit order for basic blocks (no Copy def‑use inversion).
- Verify with canaries: if‑diamond, phi, and set→compare dependency.
- Core mir_call coverage
- Positive: Array(Map backed host‑slot)/String day‑1 surface; keep Map plugin‑only.
- Negative: Unsupported callee types (Closure), missing args, bad receiver — stable tags.
- Expand extern_adapter handlers to prefer HostSlot/Plugin, then ring0(Array only), else Fail‑Fast.
- Gate‑C parity and profile
- file/pipe × plugins ON/OFF: quiet/noise and rc mapping symmetry.
- Bootstrap profile doc: deterministic toggles, plugin policy (force/auto), using/macro guards.
- Smokes and docs
- Add minimal self‑host smoke that compiles a tiny program via lang → JSON → Core.
- Update docs: normalize policy, effects/order guarantees, bootstrap instructions.
Nice‑to‑have (stretch)
- Reduce duplicate fallbacks by funnelling array ring0 calls through one thin helper.
- Add jq/awk mini‑validator to check def‑before‑use in canary JSON.