Ah, I see my error was assuming that scandirs were static for the life
of
the current boot, rather than having service directories symlinked in.
Both are possible, really. There's nothing that enforces a policy
either way.
When s6-svscan starts, it boots up s6-supervise processes on every
service directory that is already symlinked in the scandir, but it will
rescan the scandir and update its list of supervised services on receipt
of a s6-svscanctl -a.
s6-rc-init uses that feature: you can start with an empty scandir (or a
scandir that only contains a few minimal services that you don't want
to manage with s6-rc), and it symlinks the longruns into it (with a
./down file) then triggers a rescan. Services not managed by s6-rc will
be untouched; longruns managed by s6-rc will be picked up by s6-svscan,
start as down, and will possibly be brought up by later "s6-rc change"
invocations.
--
Laurent