Archive — history, not state. Kept for its reasoning and its evidence; its plan is closed.

Night of 2026-08-04 → 05 — Table of Contents

Integrator: Claude (Fable). All implementation by Opus 5 subagents in isolated worktrees; every landing gated and pressed per protocol. Read this file first; each row links to the full report.

The one-paragraph summary

The P arc is complete and every workstream landed. The ship/boot press now runs through the semantic linker (pit.mcode.program@1); P7 closed itself on an honest census and P8’s charter was refuted by measurement (there is no per-call registry hop — the call sequence was streamlined instead, native calls −8–9%); the L6 three-platform proof is CONFIRMED (mac/linux/windows binaries, each booting standalone from its embedded cart + qop sidecar, hashes in cross-builds.md). The compiler got its two biggest wins in months from outside the compiler: a runtime-global mutex on every image call (press sys −77%, make seed −36%) and a reseed-identity leak (warm press 9×); plus closure memoization, fleet-width clamp, and two cache-correctness defects found and fixed (source-snapshot staleness; the identity slice). On program output: link time is the only lever that clears your 5%-for-2× bar (−5.9% bytes, literal pool −58.6%); cross-unit inlining works (−8.1% linked instructions) and the export recognizer now finalizes real modules (0 → 142 sites) — but none of it reaches the shipped cart until the pool-lane press decision (top of the list below). Join-types measured under the bar at both stages and its link default was flipped OFF pending your ruling. dev is green at every merge; every claim above has a paired A/B number in its report.

Rulings this plan executed (yours, at kickoff)

  1. Press switch flipped EARLY — ship/boot through pit.mcode.program@1, gated on fixpoint + linked/unlinked differential.
  2. P8: land what proves safe; unproven parts ship as prototype + writeup.
  3. Landing policy: continuous to dev, minimal gates per landing.
  4. Machine: full throttle authorized.
  5. Standing: no PGO work; program speed/size > compiler speed; mostly-pit (no C rewrites of pit-side logic).

Documents

DocWhat it answersStatus
NIGHT-LOG.mdChronological log: every landing, every gate result, every deviationlive all night
switch-report.mdThe compile-toggle report: representative artifact, switches × {instructions, guards, size}, link-time contributioncp/switch-report — clerk matrix: type_checks +23.3% if off; link −5.88% bytes at 1.65×, the only bar-clearing lever; dev/ship/small ≤0.32% apart
seed-speed.mdWhere seed realization time actually goes; ranked fix candidates; what was correctedpin-lock (sys −77%), reseed identity (9×), width clamp LANDED; CP9.5 closed; double-parse refuted
battery-speed.mdWhy the test battery is slow; the stupid things found; changes made (all flagged for your review)tests are FREE (µs); closure memo (walk 13×) + fuzz join sampling (−29%) LANDED
link-opt.mdCP2 phase 3 + join-facts results: seam guards before/after, inlining numbers; Export recognizer — why finalized_sites was 0, the per-member exactness rules, 0 → 142 finalized sitesall three LANDED; join link default flipped OFF (integrator); recognizer contract change awaits ratification (decision 2)
press-switch.mdThe ship/boot flip: what changed, artifact deltas, gates that held itLANDED — 68 sections shrink; +292KB linker-in-closure (decision 4); §5 carries 9 in-flight decisions
p8-native.mdNative bake-in + direct C-call finalization: what landed, what’s prototype, the ABI seam notesp/native-bakecharter premise refuted (no per-call registry hop; the member load is already hoisted); the call SEQUENCE landed instead: −8 to −9% per native call, no format change, no identity stamp, no ABI move
cross-builds.mdL6 status: linux/windows/macos binaries, embedded boot cart + mcode sidecar — what was produced and verifiedCONFIRMED — all three boot standalone and answer ps; p/cross-artifacts
benchmarks.mdCompiler-speed trendline across the night’s landingsassembled from paired A/B numbers only
staleness.mdWarm-store staleness: a linked package’s .pit/sources snapshot served unchecked to the eval compile lane — root cause, fix, regression test, closure-cache verdictcp/warm-staleness

Morning decisions queued for you

Ranked by how much they unblock.

  1. Pool-lane press redesign — press modules compile on the static lane, so finalization + cross-unit inlining reach tests and censuses but NOT the shipped cart (finalized_sites=0 at every real press). Enabling link:"pool" for presses means function_ref across cart sections — a cart output-shape change. This is the gate between the whole call-directness arc and the artifact you ship. (press-switch.md §4, link-opt.md.)
  2. Ratify the export-recognizer contract change — module export records are NOT frozen at runtime (contra docs/spec/stone.md:54); finalizing them is sound only under a complete consumer covering, which the linker now proves per program. The old always-generic test was replaced. Cleanest long-term fix: make the compiler emit the stone the spec already promises — then the census becomes belt and suspenders. Also rule on the spec text itself. (link-opt.md §Export recognizer.)
  3. Join-types link default — I flipped it OFF (−4.71% guards for 4.39× linked-streamline wall fails your 5%-for-2× rate). Reverse or ratify; a size-gated lattice (cost tracks function size, 4.39× vs 1.94×) could earn the default back. (link-opt.md §Join facts.)
  4. The linker ships inside the shop closure (+292KB cart: importing mcode_link into boot_cart.cm puts it in the cart because the shop actor’s closure IS the cart). Options: accept, lazy-load, or press via a tool outside the shop closure. (press-switch.md §3.)
  5. Multi-unit differential fuzz arm — the random linked/unlinked arm links single-unit programs only; cross-unit inlining is covered by deterministic golden tests, not the differential oracle. mach_load needs realization state for a two-unit random arm. (link-opt.md §Cross-unit inlining.)
  6. press-switch.md §5’s nine in-flight decisions — most load-bearing: link failure REFUSES the press (no fallback); stripping left inert pending CP7; module rows’ mcode.hash names the unlinked unit while mach names the linked pool.
  7. make-seed presses the same 149 derivations 3× into empty shops (86% of seed wall). Sharing a store needs a fixpoint-independence ruling — the two-press byte-identity proof must not become a cache tautology. (seed-speed.md §2.)
  8. dev/ship/small differ ≤0.32% on output, and dev is strictly worse AND slower to compile than ship. Are three profiles real, or is dev just ship-without-a-reason? (switch-report.md.)
  9. Pre-existing extended-suite failures (5–6 depending on base: mach_pool_emit ×2, heap 30s timeout, network_info, recipes, shop_resolve) — pre-date tonight, reproduce on clean dev; the heap timeout alone is 30s of every extended run. Fix or triage-list them before the big battery. (battery-speed.md.)
  10. Two shipped-mcode defects found in passing: archive/qop.cm fn 56 carries a jump_false to a label that exists nowhere (7 of 99 modules have one — eliminated panic blocks leave dangling branches); and a cache-hit pit compile linked_plan hung past 600s after load_cached_executable while the cold run finished in 97s. (link-opt.md, switch-report.md.)
  11. Deferred by your standing rulings, unchanged: the big battery + fix round now that the arc is landed; L2b PGO drain rebuild (stash intact on the lane-cp worktree); range_reconciliation (22.4% of streamline) as the next compiler-speed target; windows-smoke in-container press “target stopped” mystery (cross-builds.md).

Source: plans/archive/night-2026-08-04/TOC.md