The shared prerequisite for both live steps was: does a next/ kernel process hold gen_server state (flow_store) across HTTP requests? Confirmed yes. plans/ra_kernel.erl is a minimal kernel (flow_store + register the publish-digest flow, then a blocking http:listen that keeps the er-scheduler + gen_server alive); plans/ra-kernel-spike.sh boots it as a background sx_server and drives it with two SEPARATE curls: GET /start suspends instance 1, GET /resume resumes that SAME live instance → done. So durable suspend→resume across requests works on a persistent kernel. Design decision (per the discussion): chose the persistent-kernel path (B) over host-side replay-log (A). B serves BOTH durability (RA) and federation (TA) on one fed-sx-native substrate and exposes the full next/ kernel (projections, outbox, actor model); A only solves flow durability and mixes Erlang into the host process. The er-scheduler-context bug (which kills an in-process kernel, option C) does NOT bite a separate-process kernel — er-bif-http-listen spawns each handler in-scheduler, so gen_server:call completes. Gotchas recorded: a blocking listener hangs any in-process erlang-eval-ast (the kernel must be a dedicated TCP-driven process), and binary =:= is buggy (always true) so routes must pattern-match paths as byte-list binaries. RA-live + TA-live are now BUILD work (a real kernel service + the host as HTTP client + the actor model), not research — the prerequisite is proven. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.8 KiB
1.8 KiB