- Permanent event channels 1/2/3 created at boot beside channel 0, exposed as FORTH constants EV-DONE / EV-BORN / EV-DIED; CHANNEL-CLOSE refuses 0..3. - sk_hermes_event(): `S" <name>" ON-...` as type 32 to every member except the VM it's about; never blocks -- undeliverable copies are dropped, counted (EV-DROPPED), printed and logged. - Fired for participants only: EV-DONE from the switch trampoline when real work runs dry (funded by the VM), EV-BORN at a LIVE VM's first naming (funded by the newborn), EV-DIED on KILL/reap after departure (funded by the root). VM.ev_real_work keeps event handling from firing EV-DONE, so mutual subscribers can't storm. Console evidence identical on amd64/aarch64/riscv64: one BORN per birth, one DONE per job run dry (2 queued -> 1), one DIED per KILL, no SEND in any job text; storm guard: exactly one reaction; channels 1-3 unclosable; non-joined VMs see nothing; EV-DROPPED 0. Flood probe (reverted): 32 delivered, 7 dropped and counted, never blocked, all heat returned. dict_hash set changes by the 4 words (546), identical across ISAs; acceptance passes with held=2048. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
include/starkernel/vm/
Headers for the kernel-side VM subsystem (src/starkernel/vm/).
arena.h— the capsule arena allocator: fixed-region allocation for capsule payload data, separate fromkmalloc's general kernel heap.parity.h— the birth/execution parity-record logger: declares the logging interface used to record VM ID, capsule content hash, and dictionary hash on every capsule birth, enabling offline determinism verification across independent kernel runs.
See include/starkernel/vm/bootstrap/README.md for the VM bootstrap
subsystem.