diff --git a/src/renderer/src/SupervisorActivity.test.tsx b/src/renderer/src/SupervisorActivity.test.tsx
index 0e9abb09..72cf0df2 100644
--- a/src/renderer/src/SupervisorActivity.test.tsx
+++ b/src/renderer/src/SupervisorActivity.test.tsx
@@ -50,6 +50,19 @@ it.each(['zh-CN', 'en-US'] as const)('retains operational failure details and re
expect(screen.getByRole('button', { name: copy.reviewSettings.resume })).toBeEnabled()
})
+it('allows continuing a legacy source-change failure', async () => {
+ const copy = i18nResources['zh-CN'].heartbeat
+ const resume = vi.fn().mockResolvedValue(undefined)
+ vi.stubGlobal('goodbuddy', { supervision: { activity: vi.fn().mockResolvedValue([{
+ ...row, status: 'failed', supervisionStatus: 'failed',
+ error: 'Review source changed or was removed',
+ reviewProgress: { runId: 'saved-run', batches: 1, characters: 1000, sources: 2, remainingSources: 1, restartRequired: true, complete: false }
+ }]), resume } })
+ render()
+ fireEvent.click(await screen.findByRole('button', { name: copy.reviewSettings.resume }))
+ await waitFor(() => expect(resume).toHaveBeenCalledWith({ runId: 'saved-run' }))
+})
+
it('shows durable progress, pauses and continues the same run, and expands retained facts', async () => {
const progress = { runId: 'saved-run', batches: 1, characters: 1000, sources: 2, remainingSources: 1, complete: false }
const activity = vi.fn().mockResolvedValue([{ ...row, reviewProgress: progress }])
diff --git a/src/renderer/src/SupervisorActivity.tsx b/src/renderer/src/SupervisorActivity.tsx
index 501c9d3f..fff638d9 100644
--- a/src/renderer/src/SupervisorActivity.tsx
+++ b/src/renderer/src/SupervisorActivity.tsx
@@ -186,7 +186,7 @@ export function SupervisorActivity({ active, projects, onOpenResult, configId, c
>}
- {!stoppingKind && !row.reviewProgress.complete && !row.reviewProgress.restartRequired && (row.supervisionStatus === 'paused' || row.supervisionStatus === 'failed') && }
+ {!stoppingKind && !row.reviewProgress.complete && (row.supervisionStatus === 'paused' || row.supervisionStatus === 'failed') && }
>}