Skip to content

DL-372

Reload barrier-lift: after s.stream.Stop() succeeds and before h.link.StartAgent, reloadLocked displaces the old Control subscription; after StartAgent returns and the stream swap completes, it sends AgentControl{replay_complete} on the replacement served listener. This extends DL-189’s fresh-start lift to Reload and RefreshConfig’s refreshOneContainer leg (per DL-081). The runner-local takeover advances the subscription generation, closes its wake channel, and clears liveness without changing retention or the ack cursor. The old stream ends cleanly. A replacement may subscribe before StartAgent returns; because takeover already ran, it remains live and drains the lift. This applies to every backend and does not stop a survivor’s in-progress turn. The original lift cannot be re-delivered because serve starts from the ack cursor and AckControl prunes at-or-below-cursor ops. Sent via SendControl/Send, never SendIfLive

Status: Superseded by DL-398 (Matt, 2026-10-03)

Record: ../../agent/reload-replay-barrier/design.md