Files
fusion/docs/solutions
Fusion Agent 38ed1d25e5 FN-209: add external block status and safe recovery
Add durable external-block state and safe resume handling across storage, engine, dashboard, and tests.

- Persist external-block metadata and migration support for frozen tasks.
- Freeze execution, scheduling, and self-healing resources while preserving exact resume state.
- Add dashboard notices/actions, resume routes, localized copy, and regression coverage.
- Preserve lifecycle containment and attributable automatic-move logging during the merge.

Files changed:
 .changeset/fn-209-external-block-status.md         |   7 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   6 +
 docs/dashboard-guide.md                            |   4 +
 docs/run-audit.md                                  |   4 +
 ...xternal-block-and-remaining-lifecycle-drifts.md |  29 +++
 docs/storage.md                                    |   4 +
 docs/task-management.md                            |   6 +
 .../core/src/__tests__/live-agent-count.test.ts    |  19 ++
 .../postgres/queued-episode-transition.pg.test.ts  |   2 +-
 .../src/__tests__/postgres/schema-applier.test.ts  |   6 +-
 .../core/src/__tests__/task-external-block.test.ts |  81 +++++++
 packages/core/src/agents/live-agent-count.ts       |  15 +-
 packages/core/src/index.gate.ts                    |  10 +
 packages/core/src/index.ts                         |  10 +
 .../migrations/0069_fn_209_task_external_block.sql |   3 +
 packages/core/src/postgres/schema-applier.ts       |  27 ++-
 packages/core/src/postgres/schema/project.ts       |   2 +
 packages/core/src/store.ts                         |   2 +-
 .../core/src/task-store/branch-and-pr-entities.ts  |   2 +-
 packages/core/src/task-store/persistence.ts        |   4 +-
 packages/core/src/task-store/reset-lifecycle.ts    |   3 +-
 packages/core/src/task-store/serialization.ts      |   1 +
 packages/core/src/task-store/task-mutation-ops.ts  |   2 +-
 packages/core/src/task-store/task-row-mappers.ts   |   2 +-
 packages/core/src/task-store/task-update.ts        |   5 +
 packages/core/src/tasks/task-external-block.ts     |  64 ++++++
 packages/core/src/types.ts                         |  10 +
 packages/core/src/types/task/task-core.ts          |   8 +
 packages/dashboard/app/App.tsx                     |   2 +-
 packages/dashboard/app/components/AppModals.tsx    |   1 +
 packages/dashboard/app/components/Board.tsx        |   6 +-
 packages/dashboard/app/components/Column.tsx       |   5 +-
 packages/dashboard/app/components/DockTaskList.tsx |   3 +
 packages/dashboard/app/components/ListView.tsx     |   7 +
 packages/dashboard/app/components/TaskCard.css     |  76 +++++++
 packages/dashboard/app/components/TaskCard.tsx     |  86 +++++++-
 .../dashboard/app/components/TaskDetailModal.tsx   |   4 +
 .../dashboard/app/components/WorktreeGroup.tsx     |   4 +
 .../__tests__/ListView.external-block.test.tsx     |  41 ++++
 ...TaskCard.external-block-host-inventory.test.tsx |  37 ++++
 .../__tests__/TaskCard.external-block.test.tsx     |  90 ++++++++
 .../TaskDetailModal.external-block.test.tsx        |  39 ++++
 .../app/components/dashboard/MainContent.tsx       |   5 +
 .../app/components/overflowViewRegistry.tsx        |   2 +
 .../app/components/useRightDockController.tsx      |   4 +
 .../utils/__tests__/taskStatusBadgeLabel.test.ts   |   6 +
 .../dashboard/app/utils/taskStatusBadgeLabel.ts    |   4 +
 .../routes-task-external-block-resume.test.ts      | 213 +++++++++++++++++++
 .../src/__tests__/task-retry-stage-route.test.ts   |   3 +-
 .../src/routes/register-task-workflow-routes.ts    |   9 +
 .../src/routes/task-external-block-resume.ts       | 112 ++++++++++
 ...executor-external-block-session-failure.test.ts |  77 +++++++
 .../__tests__/executor-task-done-blocked.test.ts   |  54 +++++
 .../external-block-freeze-contract.test.ts         |  51 +++++
 .../__tests__/pipeline-smoke/_pipeline-drivers.ts  |  21 +-
 .../__tests__/pipeline-smoke/_pipeline-harness.ts  | 126 ++++++++++-
 .../pipeline-smoke/_pipeline-scenarios.ts          |  22 +-
 .../pipeline-smoke/_pipeline-terminal-state.ts     |   3 +
 .../pipeline-nominal-and-review.pipeline.test.ts   |   2 +-
 .../pipeline-resilience.pipeline.test.ts           |   2 +-
 .../pipeline-terminal-state.pipeline.test.ts       |  10 +
 .../scheduler-external-block-resources.test.ts     |  57 +++++
 .../__tests__/scheduler-overlap-starvation.test.ts |   8 +-
 .../self-healing-external-block-immunity.test.ts   | 236 +++++++++++++++++++++
 .../self-healing-leaked-slot-reaper.test.ts        |  21 ++
 packages/engine/src/execution-block-classifier.ts  |  39 ++++
 .../src/executor/clear-phantom-executor-binding.ts |   7 +-
 .../engine/src/executor/create-task-done-tool.ts   |  69 +++++-
 packages/engine/src/executor/execution-prompt.ts   |   1 +
 .../route-graph-failure-to-execution-resume.ts     |   6 +-
 packages/engine/src/executor/run-implementation.ts |  93 ++++++--
 .../src/executor/task-executor-session-facades.ts  |   2 +-
 packages/engine/src/runtimes/in-process-runtime.ts |   2 +-
 packages/engine/src/scheduler.ts                   |  16 +-
 packages/engine/src/self-healing.ts                |  22 +-
 packages/engine/src/util/run-audit.ts              |   3 +
 packages/i18n/locales/en/app.json                  |  11 +-
 packages/i18n/locales/es/app.json                  |  11 +-
 packages/i18n/locales/fr/app.json                  |  11 +-
 packages/i18n/locales/ko/app.json                  |  11 +-
 packages/i18n/locales/pt-BR/app.json               |  11 +-
 packages/i18n/locales/zh-CN/app.json               |  11 +-
 packages/i18n/locales/zh-TW/app.json               |  11 +-
 packages/i18n/src/resources.d.ts                   |  11 +-
 85 files changed, 2067 insertions(+), 69 deletions(-)

Fusion-Task-Id: FN-209

Fusion-Task-Lineage: cf7811bb-94f8-4f7a-8a2f-468f19074b9b

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-28 05:54:10 +00:00
..