Reconcile rebuilds interrupted before replacement creation

This commit is contained in:
2026-10-08 14:24:52 -04:00
parent e01b143a09
commit c4e2ff4384
11 changed files with 571 additions and 14 deletions
+10
View File
@@ -415,6 +415,16 @@ Otherwise the result remains **Unknown** and holds dependent work. Running alone
is insufficient evidence that a particular restart happened. EC neither assumes
an unreachable server stopped nor launches a duplicate replacement elsewhere.
An interrupted rebuild can settle as **Failed** when its last checkpoint is
`disrupting`, Docker confirms both the old and replacement containers are absent,
and any existing generation marker still matches the original instance. The agent removes
only the partial replacement files, preserves the old generation's files and
marker, and retains the original diagnostic in its failure report. It does not
replay the interrupted rebuild. A separately queued rebuild can then proceed
through normal eligibility checks. A later creation checkpoint, a changed
generation, an inspection error, or failed partial-file cleanup leaves the result
**Unknown** and keeps dependent work waiting.
### Player checks and activation
Campaign bytes are staged and verified while players remain connected. Only
+10
View File
@@ -200,6 +200,16 @@ guards still apply. **Resume rebuild cleanup** completes cleanup before creating
the replacement in its reserved slot. Resuming the same operation preserves its
earlier failure and resume events. Uncertain commands have no generic Retry action.
Cancelling an operation does not stop a command already delivered to the host.
A later rebuild waits for that command to settle. Its waiting message includes
the host command's state and last reported error; **View cancelled operation**
opens the original command details. If an interrupted rebuild removed its old
container before creating the replacement, the host can confirm failure after
verifying that both containers are absent and the instance identity is unchanged.
The original diagnostic remains available, and the queued rebuild can continue.
Uncertain inspections keep it waiting; the old command is never replayed merely
because its receipt was lost.
Create and rebuild capture a setup when queued and select the latest promoted
files again when creation begins. The page distinguishes **Setup captured when
queued** from **Files selected for this attempt**. A queued capture does not pin