Fusion Agent
bbca7a1ffc
FN-094: add mono- and multi-repository lifecycle parity
Extend workspace lifecycle behavior so mono-repository and multi-repository tasks share the same durable scope, workflow, review, and merge semantics.
- Add repository-scope persistence, migrations, serialization, and task mutation support.
- Align dashboard task creation, detail, and workspace worktree views with repository-aware lifecycle state.
- Extend executor, reviewer, merger, triage, and self-healing paths with parity coverage and tests.
- Document the lifecycle contract and publish the operator-facing changeset.
Files changed:
.changeset/fn-094-multi-repository-lifecycle.md | 7 +
docs/agents.md | 8 +
docs/architecture.md | 6 +
docs/dashboard-guide.md | 4 +
docs/multi-project.md | 6 +
docs/settings-reference.md | 2 +-
docs/testing.md | 12 ++
docs/workspaces.md | 6 +
...workspace-worktrees-concurrent-merge.pg.test.ts | 19 +++
packages/core/src/index.ts | 2 +-
.../core/src/postgres/migrations/0000_initial.sql | 1 +
.../0064_fn_094_task_repository_scope.sql | 2 +
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 2 +
packages/core/src/store.ts | 21 ++-
.../core/src/task-store/branch-and-pr-entities.ts | 2 +-
packages/core/src/task-store/persistence.ts | 4 +-
packages/core/src/task-store/serialization.ts | 2 +
packages/core/src/task-store/task-creation.ts | 31 ++++
packages/core/src/task-store/task-mutation-ops.ts | 131 +++++++++++++++-
packages/core/src/task-store/task-row-mappers.ts | 2 +-
packages/core/src/task-store/task-update.ts | 55 +++++--
packages/core/src/tasks/repository-scope.ts | 29 ++++
packages/core/src/types.ts | 4 +
packages/core/src/types/task/task-core.ts | 35 ++++-
packages/core/src/types/workflow/workflow-steps.ts | 21 +++
packages/dashboard/app/api/tasks/tasks.ts | 14 ++
packages/dashboard/app/components/NewTaskModal.tsx | 16 +-
.../dashboard/app/components/TaskDetailModal.css | 27 ++++
.../dashboard/app/components/TaskDetailModal.tsx | 15 +-
.../app/components/WorkspaceWorktreesSummary.tsx | 68 ++++++++-
.../app/components/__tests__/NewTaskModal.test.tsx | 1 +
.../__tests__/WorkspaceWorktreesSummary.test.tsx | 27 +++-
.../src/routes/register-task-workflow-routes.ts | 48 ++++++
.../__tests__/executor-workspace-taskdone.test.ts | 20 +++
.../src/__tests__/reviewer-workspace.test.ts | 170 ++++++++++++++++++++-
.../src/__tests__/self-healing-workspace.test.ts | 4 +
.../workflow-graph-optional-group.test.ts | 32 ++++
.../workflow-graph-optional-step-fix.test.ts | 58 +++++++
.../engine/src/__tests__/workspace-e2e.test.ts | 91 ++++++++++-
.../__tests__/workspace-lifecycle-parity.test.ts | 61 ++++++++
.../src/__tests__/workspace-merger-lease.test.ts | 25 +++
.../__tests__/workspace-merger-scope-gates.test.ts | 58 +++++++
.../engine/src/__tests__/workspace-merger.test.ts | 59 ++++++-
packages/engine/src/agent-tools.ts | 92 ++++++++++-
packages/engine/src/execution/reviewer.ts | 10 +-
.../create-authoritative-workflow-seams.ts | 95 ++++++++++--
.../engine/src/executor/execute-workflow-graph.ts | 37 ++++-
.../request-pre-merge-optional-step-fix.ts | 70 +++++++++
.../engine/src/executor/run-graph-custom-node.ts | 124 ++++++++++-----
.../engine/src/executor/workflow-step-verdict.ts | 6 +-
.../src/executor/workspace-review-per-repo.ts | 118 +++++++++++++-
.../src/executor/worktree-task-done-scope-leak.ts | 109 ++++++++++++-
packages/engine/src/merge/merger-ai.ts | 88 ++++++++++-
packages/engine/src/self-healing.ts | 19 ++-
packages/engine/src/triage.ts | 9 ++
.../src/workflows/workflow-graph-executor.ts | 73 +++++++--
.../engine/src/workflows/workflow-node-handlers.ts | 12 +-
58 files changed, 1962 insertions(+), 121 deletions(-)
Fusion-Task-Id: FN-094
Fusion-Task-Lineage: 483f958f-cc67-474e-9383-26856c329543
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:35:58 +00:00
..
2026-08-03 00:20:53 -07:00
2026-08-20 03:36:07 -07:00
2026-08-10 11:50:56 -07:00
2026-08-21 04:35:58 +00:00
2026-08-03 00:20:53 -07:00
2026-08-09 14:39:17 -07:00
2026-08-09 14:39:17 -07:00
2026-08-14 12:41:03 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 08:09:36 -07:00
2026-08-10 02:25:03 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:25:10 -07:00
2026-08-07 01:36:34 -07:00
2026-08-21 04:32:53 +00:00
2026-08-03 00:20:53 -07:00
2026-08-07 01:36:34 -07:00
2026-08-07 01:36:34 -07:00
2026-08-07 23:55:08 -07:00
2026-08-07 17:33:56 -07:00
2026-08-07 17:33:56 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 03:57:23 +00:00
2026-08-21 04:33:56 +00:00
2026-08-07 00:25:10 -07:00
2026-08-15 14:19:23 -07:00
2026-08-03 00:20:53 -07:00
2026-08-16 17:07:40 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:25:10 -07:00
2026-07-30 13:55:10 -07:00
2026-08-03 00:20:53 -07:00
2026-08-15 00:35:12 -07:00
2026-07-16 17:05:29 -07:00
2026-08-03 00:20:53 -07:00
2026-08-14 22:32:00 -07:00
2026-07-30 12:02:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-13 17:22:46 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-19 21:42:29 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 00:20:08 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-21 04:32:53 +00:00
2026-08-20 03:55:38 +00:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 02:38:58 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 03:01:36 -07:00
2026-07-16 21:39:49 -07:00
2026-08-08 23:16:01 -07:00
2026-08-20 03:36:07 -07:00
2026-08-20 03:36:07 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-29 19:03:03 -07:00
2026-08-03 16:15:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 10:52:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-08 23:05:29 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 00:36:50 -07:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 00:54:56 -07:00
2026-08-20 00:28:59 -07:00
2026-07-19 12:16:51 -07:00
2026-08-03 00:20:53 -07:00
2026-08-08 19:58:43 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-08 18:56:43 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 03:57:23 +00:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-13 19:07:58 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 03:55:38 +00:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-12 13:29:34 -07:00
2026-08-03 00:20:53 -07:00
2026-07-26 08:56:58 -07:00
2026-07-30 21:11:42 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-09 09:14:56 -07:00
2026-08-13 17:13:56 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-19 22:44:46 -07:00
2026-08-09 15:46:09 -10:00
2026-07-30 12:02:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-09 13:33:16 -10:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-08-10 17:50:27 -07:00
2026-08-10 17:50:27 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-11 04:57:14 -07:00
2026-08-10 04:46:10 -07:00
2026-08-10 04:46:10 -07:00
2026-08-11 03:53:11 -07:00
2026-07-31 03:40:11 -07:00
2026-08-07 00:25:10 -07:00
2026-07-30 07:08:16 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-08 19:58:43 -07:00
2026-07-21 23:09:30 -07:00
2026-08-09 00:41:18 -07:00
2026-08-09 10:28:24 -07:00
2026-08-11 01:30:04 -07:00
2026-08-11 01:30:04 -07:00
2026-08-13 16:01:57 -07:00
2026-08-10 19:36:31 -07:00
2026-08-13 16:01:57 -07:00
2026-08-05 17:39:15 -07:00
2026-08-11 10:57:36 -10:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-29 19:03:03 -07:00
2026-07-30 02:38:58 -07:00
2026-08-03 00:20:53 -07:00
2026-08-06 16:11:05 -07:00
2026-08-10 02:25:03 -07:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-08-15 20:50:38 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 19:15:20 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 03:55:38 +00:00
2026-07-30 02:38:58 -07:00
2026-08-03 00:20:53 -07:00
2026-07-26 20:33:25 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-16 15:57:36 -07:00
2026-08-16 22:06:38 -07:00
2026-08-16 22:06:38 -07:00
2026-08-16 21:09:58 -07:00
2026-08-16 12:59:23 -07:00
2026-08-19 08:41:14 -07:00
2026-08-19 10:10:39 -07:00
2026-08-20 00:36:50 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-19 19:46:35 -07:00
2026-08-04 00:20:08 -07:00
2026-08-10 19:43:13 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-11 03:40:21 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:25:10 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 21:50:37 -07:00
2026-07-29 21:07:28 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 20:17:18 -07:00
2026-08-11 04:57:14 -07:00
2026-08-21 04:32:53 +00:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 08:35:24 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-15 13:39:24 -07:00
2026-08-09 01:33:06 -07:00
2026-08-11 05:45:36 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-18 13:09:38 -07:00
2026-08-03 00:20:53 -07:00
2026-08-11 13:34:27 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-13 19:07:58 -07:00
2026-08-13 17:13:56 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-05 16:46:53 -07:00
2026-08-08 21:10:13 -07:00
2026-08-20 03:55:38 +00:00
2026-08-19 22:44:46 -07:00
2026-08-16 13:47:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-14 23:33:36 -07:00
2026-08-03 00:20:53 -07:00
2026-08-15 21:57:22 -07:00
2026-07-16 20:37:05 -07:00
2026-07-16 20:37:05 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-31 12:14:40 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 03:57:23 +00:00
2026-07-16 05:52:17 -07:00
2026-07-29 00:04:28 -07:00
2026-07-30 09:28:27 -07:00
2026-07-14 22:13:30 -07:00
2026-07-29 21:39:57 -07:00
2026-08-07 00:26:15 -07:00
2026-08-03 00:20:53 -07:00
2026-07-14 00:11:06 -07:00
2026-08-11 12:34:47 -07:00
2026-08-03 00:20:53 -07:00
2026-08-10 03:50:58 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 12:03:07 -07:00
2026-08-03 00:20:53 -07:00
2026-08-01 01:15:10 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-15 00:35:12 -07:00
2026-08-21 04:32:53 +00:00
2026-08-20 00:54:56 -07:00
2026-08-21 04:32:53 +00:00
2026-08-01 03:24:36 -07:00
2026-07-13 19:07:58 -07:00
2026-08-03 00:20:53 -07:00
2026-08-10 19:31:21 -07:00
2026-08-01 01:15:10 -07:00
2026-08-01 06:09:04 -07:00
2026-08-20 00:54:56 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 00:26:15 -07:00
2026-08-03 00:20:53 -07:00
2026-08-09 15:16:12 -07:00
2026-08-20 03:55:39 +00:00
2026-08-03 00:20:53 -07:00
2026-07-26 13:15:36 -07:00
2026-08-20 03:55:38 +00:00
2026-08-15 17:36:32 -07:00
2026-08-12 22:18:18 -07:00
2026-07-31 10:27:18 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-26 09:06:41 -07:00
2026-08-19 21:42:29 -07:00
2026-08-08 23:05:29 -07:00
2026-08-04 00:20:08 -07:00
2026-08-01 03:24:36 -07:00
2026-08-03 03:01:24 -07:00
2026-08-10 16:53:51 -07:00
2026-08-20 03:55:38 +00:00
2026-07-26 16:16:27 -07:00
2026-08-03 00:20:53 -07:00
2026-07-30 07:53:28 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-16 21:09:58 -07:00
2026-08-03 00:20:53 -07:00
2026-07-20 18:16:58 -07:00
2026-08-07 01:36:34 -07:00
2026-08-03 00:20:53 -07:00
2026-07-21 20:05:39 -07:00
2026-08-03 00:20:53 -07:00
2026-07-28 17:35:07 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 23:36:32 -07:00
2026-08-03 00:20:53 -07:00
2026-08-09 04:37:47 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-20 03:55:38 +00:00
2026-08-03 00:20:53 -07:00
2026-06-29 12:23:20 -07:00
2026-08-19 18:16:49 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-11 13:34:27 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-07 01:36:34 -07:00
2026-08-12 21:24:53 -07:00
2026-08-19 19:59:04 -07:00
2026-08-14 23:33:36 -07:00
2026-08-15 15:07:24 -07:00
2026-08-19 19:46:35 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00