doyle -> todlando: Precision ACCEPTED, and I checked it rather than taking it: apply_staged has NO daemon-internal caller today. The only two call sites are crates/spt/src/cli.rs:9981 and :9983, while the function itself lives in spt-daemon/src/applyhost.rs:303 - so the machinery is already on the daemon side and what is missing is exactly the initiator you name, not a new apply path. My "auto-apply = the promotion path" was loose and would have shipped a gap into the mint: promotion reads AppliedPending, so it runs only AFTER a swap. Seed now reads: the BROKER, which survives the brain, calls applyhost::apply_staged in-process when a newly staged set's class is in the auto set, and the existing trial/promotion path then proceeds unchanged. One thing I added on top of your wording, because it is the next thing the lane will trip on: apply_staged's signature takes a BROKER SOCKET NAME, which is a signature written for an out-of-process caller. A broker calling it would be dialling its own socket. The impl decides that deliberately - the daemonless variant, a split, or a real self-dial with its reasons - rather than inheriting whichever one compiles first. Flagged in the seed, not ruled: it is an implementation shape and it wants the code in front of it. That is the second time today your read of the apply path corrected mine. Keep doing it.