Replaces the global g_vm_interpret_depth test at both execute_colon_word() checkpoints (kernel-Hermes drain, switch-signal take) with sk_vm_owns_outermost_frame(vm): the VM physically owns the stack (sk_vm_switch_current_vm() == vm), is at its own outermost vm_interpret() frame (new per-VM VM.interpret_depth), and is not compiling. Once VMs interleave on their own native stacks, a global depth count across all VMs no longer means "this VM owns this stack"; this is the invariant it was approximating. The global and the old function stay until Stage I. Acceptance, all three ISAs, foreground with the framebuffer visible, coupled disk images reset before each: zero UNKNOWN WORD, zero self-test failures, dict_hash identical across ISAs and unchanged from the pre-Stage-A boot, and the live WIREBIND mint -> attach -> USE -> 1 2 + . -> 3 relay with stadium_conserved(self)=true. Logs: 20260923-140120 (amd64), -140654 (aarch64), -141303 (riscv64). FABRIC-3.8.md also records Captain Bob's ruling that preemption comes from the compudynamics, not the timer: principle 5 is corrected and the design question is opened as SS3.11, to be ruled before Stage C. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
experiments/
Design of Experiments (DoE) campaign data and analysis for the LithosAnanke kernel.
bare_metal/— the bare-metal DoE experiment: blind full-factorial 2⁴ runs measuring the L8 Jacquard mode selector's effect on the Steady-State Machine across amd64/aarch64/riscv64. Seeexperiments/bare_metal/README.mdfor the full directory layout (runs/,latest/,analysis/{charts,tables,report}).
Hosted-VM DoE campaigns (factorial/heartbeat/ablation studies) live under
docs/working/experiments/ instead — this top-level directory is
specifically the kernel/bare-metal side.