diff --git a/current/CHECKPOINT-COMPILER-API.md b/current/CHECKPOINT-COMPILER-API.md index 8f613fdf..387b69db 100644 --- a/current/CHECKPOINT-COMPILER-API.md +++ b/current/CHECKPOINT-COMPILER-API.md @@ -26,10 +26,16 @@ with ONE welded mechanism. Branch: `reify` (off `master`). Update after every st > breaks cross-compilation — host vs target layout — and loses the sandbox. A > flat-memory VM keeps both while getting native bytes + speed.) > -> **Next action (2026-06-18) — PAUSED at a clean boundary; next step decided.** Phase 3 READ -> and WRITE sides are DONE, and the VM is now WIRED at the lowering-time comptime site -> (hardened, with legacy fallback). The first **HANDLED** lowering-time type-fn is gated on a -> **dedicated `Type` builtin TypeId** — that is the next focused effort (see "THE WALL" below). +> **Next action (2026-06-18) — THE WALL IS BROKEN; paused at a clean 3-commit boundary.** The +> dedicated **`Type` builtin TypeId** (8B, distinct from the 16-byte `.any`) now exists and is +> wired end-to-end: foundation (`6844fb9`), resolver flip + full `.any`-ref migration (`94f60c5`), +> and the VM models `.type_value` natively (`554871b`). **697/0 BOTH gates + 494 unit tests.** +> `first_user` is now **100** (slots 20–99 reserved builtin headroom so future builtins don't +> renumber user TypeIds / churn snapshots). What remains is the PAYOFF, no longer gated on the WALL: +> port the **WRITE side** (declare_type / register_type / pointer_to) into `Vm.callCompilerFn` + +> give the lowering-time path a **REAL Context** (CAllocator thunk func-refs, not zeroed) → the +> first **HANDLED** lowering-time type-fn end-to-end on the VM. Today those type-fns run partway on +> the VM then bail cleanly at the `define`/`register_type` `call_builtin` → legacy mints (parity). > > Done so far in Phase 3: > - **READ side (7 readers, dual-path):** `find_type`/`type_kind`/`type_field_count`/