From e33f343066040e80ccab015814ee1b70efc47414 Mon Sep 17 00:00:00 2001 From: rgarcia <72655+rgarcia@users.noreply.github.com> Date: Mon, 21 Sep 2026 17:18:12 +0000 Subject: [PATCH] fix: retain cold recovery pause reason --- src/run-record-store.ts | 12 +++++++++--- tests/run-persistence.test.ts | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/run-record-store.ts b/src/run-record-store.ts index 28408967..a054eea8 100644 --- a/src/run-record-store.ts +++ b/src/run-record-store.ts @@ -462,6 +462,7 @@ export function createRunRecordStore(fs: PersistenceFsLayer) { save(path, { ...legacy, status: "paused", + pauseReason: "cold_recovery", updatedAt: endedAt, agents: settleInterruptedPersistedAgents(legacy.agents ?? [], INTERRUPTED_AGENT_CAUSE, endedAt), }); @@ -470,10 +471,15 @@ export function createRunRecordStore(fs: PersistenceFsLayer) { commit( path, head, - { set: { status: "paused", updatedAt: endedAt }, remove: [], arrays: {}, settleAgentsAt: endedAt }, { - keys: [...new Set([...head.keys, "status", "updatedAt", "agents"])], - index: { ...head.index, status: "paused", updatedAt: endedAt }, + set: { status: "paused", pauseReason: "cold_recovery", updatedAt: endedAt }, + remove: [], + arrays: {}, + settleAgentsAt: endedAt, + }, + { + keys: [...new Set([...head.keys, "status", "pauseReason", "updatedAt", "agents"])], + index: { ...head.index, status: "paused", pauseReason: "cold_recovery", updatedAt: endedAt }, summary: { ...summary, active: 0, diff --git a/tests/run-persistence.test.ts b/tests/run-persistence.test.ts index 7b5734c9..4f95c32c 100644 --- a/tests/run-persistence.test.ts +++ b/tests/run-persistence.test.ts @@ -1134,6 +1134,7 @@ test( new WorkflowManager({ cwd }); const recovered = rp.load("stale"); assert.equal(recovered?.status, "paused", "stale running -> paused (journal preserved for resume)"); + assert.equal(recovered?.pauseReason, "cold_recovery"); assert.equal(recovered?.agents[0]?.status, "skipped", "orphaned in-flight agents cannot still be running"); assert.equal(recovered?.agents[0]?.error, "interrupted"); }), @@ -1157,6 +1158,7 @@ test( new WorkflowManager({ cwd }); const recovered = rp.load("paused-ghost"); assert.equal(recovered?.status, "paused"); + assert.equal(recovered?.pauseReason, "cold_recovery"); assert.equal(recovered?.agents[0]?.status, "skipped"); assert.equal(recovered?.agents[0]?.error, "interrupted"); assert.ok(recovered?.agents[0]?.endedAt);