···9494- A running `console serve` instance works from its current snapshot.
9595- When `config.yaml` changes, a new snapshot is built and swapped in.
9696- If rebuilding fails, the old snapshot keeps running.
9797+- In-flight tasks keep their bound generation. New tasks use the next generation only after the swap.
97989899## Console Update Path
99100···120121 | |
121122 | success | failure
122123 v v
123123-swap local runtime keep old snapshot
124124-reload managed runtimes log warning
124124+prepare local generation
125125+prepare managed runtimes
126126+ |
127127+ v
128128+apply both sides
129129+ |
130130+ v
131131+new tasks use new generation keep old snapshot
132132+old in-flight tasks finish on old generation
125133```
126134127135This separation is intentional:
···129137- the write path is responsible only for durable config
130138- the runtime layer is responsible only for consuming snapshots
131139- concurrency stays inside each runtime instance, not inside the config writer
140140+- config writes are atomic replace, so the poller sees either the old file or the new file
132141133142## Console Startup With Invalid Config
134143