Files
hakorune/docs/private/roadmap/phases/phase-20.28/PLAN.md

1.5 KiB
Raw Blame History

Phase20.28 — Execution Plan

Milestones

  1. 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 GateC paths accordingly.
  1. Builder/Optimizer hardening
  • Add default effects for mutating calls when JSON omits them (prevent DCE of set/delete/push/pop).
  • Ensure singlepass emit order for basic blocks (no Copy defuse inversion).
  • Verify with canaries: ifdiamond, phi, and set→compare dependency.
  1. Core mir_call coverage
  • Positive: Array(Map backed hostslot)/String day1 surface; keep Map pluginonly.
  • Negative: Unsupported callee types (Closure), missing args, bad receiver — stable tags.
  • Expand extern_adapter handlers to prefer HostSlot/Plugin, then ring0(Array only), else FailFast.
  1. GateC 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.
  1. Smokes and docs
  • Add minimal selfhost smoke that compiles a tiny program via lang → JSON → Core.
  • Update docs: normalize policy, effects/order guarantees, bootstrap instructions.

Nicetohave (stretch)

  • Reduce duplicate fallbacks by funnelling array ring0 calls through one thin helper.
  • Add jq/awk minivalidator to check defbeforeuse in canary JSON.