Archive — history, not state. Kept for its reasoning and its evidence; its plan is closed.
What to do next
One list, ordered roughly by leverage. Each item says how to start, so picking one up costs a read, not an archaeology dig. Finished items get deleted, not checked off — this file stays short or it stops being read.
Closing the finalization arc
- L6 lands (in flight): the cross-press proof +
make cross-check+ the CI workflow. When its battery greens: replay on the main branch, reseed commit. Then the user pushes, activates the cross-check CI jobs, and rules on a windows runner (the workflow carries the windows job commented out). - L2b drain tail: the PGO_SITES emitter is parked in
git stash@{0}(labelled; also saved as a patch in the scratchpad) and must land WITH its C counters. Start: read the stash, the PGO section ofplans/archive/overnight-decisions.md, andpit-shop/pgo_store.cm. Do not start this expecting one sitting. Measured 2026-08-01 (see the L2b block inplans/archive/finalization-arc.md): D5 deleted the only production path that builds a PGO collector, so runtime collection is dead on BOTH lanes and step 3 is a rebuild, not a port — and the session-identity road still waits on L3 phase 2. The emitter applies and reseeds cleanly against post-L3 code; it was held back on purpose, not for lack of trying. The missing gate to write alongside the counters: an end-to-end drain test that RUNS a program and asserts a non-zero count (tests/pgo_executable.cesynthesises its observations and would not have noticed any of this). - Close-out: total the deletion bill across L3/L4; demonstrate the
compiler-less runtime (a pressed cart boots and runs on the
vm_onlyshape); the guard-comment sweep (re-anchor every “do not relax” to the ruling it protects —plans/method.mdcarries the rule); delete the L4 dead-code inventory (13 dead statics,Pit_MachPoolInstruction,PitMachLoadStatus, the duplicatePit_CallRegisterVMFunctiondeclaration, five stale comments — the full list is in the L4 agent report, summarized in the L4 reseed commit message). The arc file is archived (2026-08-02); these close-out items are carried as P-0 ofplans/one-binary.md.
Performance (mach bytecode only — no AOT/native, standing ruling)
- The image-arm closure-upvalue cost, 4.6× — the first named item, ruled.
closure_callsruns an identical instruction stream at 8.76 ns/i on the pool lane vs ~1.9 on the deleted register lane; isolated tobind_getup. Start:make benchshows the row —kernels.closure_calls.*inperf/trend/latest.json, frombenchmarks/bench_suite.ce(the kernel moved there 2026-08-06 whentools/compiler_budget.cewas retired;make budgetno longer carries it). The lane ismach_pool.c’s pool-adopted functions — compare how a pool function reaches its upvalues vs how the register tree did. Read the right number. The win this item is about is ns/instruction, and that is a WALL row here, reported and never gated:closure_callshas been seen at 16.4 ms and 4.0 ms on the same 1.8 M-instruction stream. The gatedkernels.closure_calls.instructionsceiling proves the instruction stream did not change while you were fixing how it executes — which is exactly the guarantee this item needs, since the whole finding is “identical instruction stream, 4.6× the time”. - Cart shrinking / bytecode dedup — after L6’s first green, so the standing
cross-check proves every change. Start:
pit cart infoonboot/root.cartfor the section inventory; dedup candidates are identical pools across executables (the content-hash directory rows make them visible). - Compiler-generated mcode quality — the next arc. The opportunity map is
plans/compiler-vision.md; the pipeline narrative is in the docs. Start there, thendocs/spec/streamline.mdfor the optimizer’s pass structure.
Test-loop health
- zz_shop_tool_smoke’s deadline — ruled: remeasure cold on a QUIET machine
post-L3 (the in-flight numbers were load-polluted: 181–188s against 180s).
Start: invalidate the toolchain stamp (touch + revert a
pit-compiler/file),./pit down, run it solo, time it; then rule a class or slim the test (it starts nine tool actors). - The parked concurrency experiment —
PIT_TEST_CONCURRENCY=Nis committed and daemon-read; the sweep never produced clean data (machine contention, then the observer deadlock it helped find). Resume on a quiet machine: widths 1/4/8 ×2, fresh daemon each, an orphan check between runs, and treat any suspiciously short wall time as a wedge, not a result. - The client-teardown/orphan class — LARGELY CLOSED 2026-08-07
(
arc/fix-hangs), and the mechanism recorded here was WRONG. The survivor was never “a completed client parked in teardown on apthread_joininexit_handler”. lldb on a live survivor found thread #1 inmain_backend_run → CFRunLoopRun— it had never entered teardown at all — withscheduler_is_shutting_down() == 0andscheduler_actor_count() == 0. It was not a client either: it was the DAEMON (a daemonized fork inherits the launching client’s argv, which is whypsshowed it aspit … debug sites …), holding no socket because the listener is an actor and had died with the rest. The engine asked “am I done?” only inactor_free, which a mid-turn halt can skip entirely; the count actually drops inactor_halt. Fixed byscheduler_note_actor_gone()asking it at both sites — see the full entry inplans/carried.md.cli/debug_toolnow leaves zero survivors, andtests/cli/daemon_exit.cepins it. What is left of the class: a listener that dies while OTHER actors are still alive still leaves a live unreachable node — that is the deferred ruling below, not this defect. Any future 0%-CPU survivor should be checked withscheduler_actor_count()FIRST; that one number separates “the engine never noticed it was done” from a genuine teardown park.
Deferred rulings (each needs John, none urgent)
- A reap should carry its own reason — today a reaped actor and a voluntary
$stop()reach the overling identically;tests/reap_is_not_a_pass.cepins the current sameness. Lifetime-model honesty says distinguish them. - A daemon whose listener halts should exit — services now state their lifetimes so the reap-zombie is fixed, but a listener death still leaves a live unreachable process by other paths. The honest end is exit.
- trueerror rendering — a failing test with a long reason renders as bare- truein the human errors list (real reason only under--machine). One small fix in the test harness’s error formatting.
Platforms, systematically (after the arc)
The rollout model L6 proved: a platform = a recipe file + a platform/<os>/
folder + a pressed boot pair + a CI runner. Windows first needs the runner
ruling. Consoles (playdate/n64/ps1/dc/psp) have recipes and cross-press works
for them; each needs its platform folder completed and a way to run the suite.
Start any platform from docs/architecture/ target pages and the L6 commit
messages.
Residue the transition-diary audit surfaced (2026-08-01, all small)
pit-shop/mach_lower.cm:42-55— a stale “pool lane BUILT AND NOT ON, PIT_POOL_PAYLOAD=1” state block; the lever is read by nothing. Delete it.- DONE in the delete direction (2026-08-01): the derivation-input arm, the
transition paragraph, and the cart-v1 asset-reader paragraph are out of the
spec on grep evidence. REMAINING RULING:
pit.bootstrap.target@1’s other ~140 spec lines describe a record with no producer and no reader anywhere — dead design (delete) or pending target-truth (keep)? Docs are target-final, so absence of code alone doesn’t decide it. - A second codename pass would cover the adjacent series the first sweep’s pattern missed: CAKE1, FRESH1/2, SHOP1, AUDIT1, CART3/4, WOTA1, NANO1, BUILD1, L2b, singular “edict N” — same translate-don’t-delete method, same glossary style. ~an hour of agent work.
- Stale “pit.cart@1 trailer” comments where the code memcmps
pcr2:source/cart_boot.c:344, andcake/manifest.cm:376(the generator — fixing it fixesMakefile:545+bootstrap.sh:569at the nextmake manifest). - T020’s gate was skipped: the meson parity oracle was deleted without the console-lane comparison ever running, so cake is unverified against any oracle for the console lanes. Recorded, not urgent — the console lanes get real verification when the platform rollout reaches them.
allow_compilecontradiction:pit-shop/policy.ce:63,239carries a knob the diary’s completed table records as deleted (2026-07-22). Either the deletion was reverted or the record was wrong — needs one look and a ruling.- Do-not-delete note:
runtime_code_count/code_cache_*counters survive their cache ON PURPOSE (tests/runtime_arena_counters.cmpins them at zero as L3’s observable). docs/shop/c-modules.mdnames recipes that do not exist (macos_arm64/macos_x86_64/linux_arm64at ~366-368, 375, 418-420, 930); the real names aredarwin/linux/etc. Mechanical fix.- The word “lane” does double duty: the rulings’ “one execution lane” vs mcode.md:104-108’s compilation lanes (pool vs static-linked default — both real). Worth one glossary sentence disambiguating.
Later, deliberately
- The storage revisit:
boot/contentgrew to ~86MB with the mcode snapshot (priced and accepted when REGEN1 landed; scheduled for a late look). - Game engine work — unblocked since L3; not tracked here.
Source: plans/archive/todo.md