Fusion Agent
db254241f1
FN-180: enforce merge execution and current review gates
Prevent merge progression while execution is active and require current, content-matched review approval before finalization.
- Add shared pre-merge approval and content descriptor gates.
- Exclude actively executing tasks from merge and reconcile confirmed merges safely.
- Centralize step reopening and strengthen merge lifecycle, audit, and regression coverage.
Files changed:
...80-merge-execution-exclusion-and-review-gate.md | 7 +
docs/architecture.md | 1 +
docs/run-audit.md | 2 +
docs/testing.md | 5 +
docs/workflow-steps.md | 2 +
.../confirmed-merge-reconciliation.test.ts | 17 ++
.../src/__tests__/pre-merge-approval-gate.test.ts | 33 ++++
.../__tests__/pre-merge-approval-workspace.test.ts | 30 +++
.../src/__tests__/required-pre-merge-steps.test.ts | 47 ++++-
packages/core/src/__tests__/task-merge.test.ts | 9 +-
packages/core/src/db/legacy-adoption.ts | 7 +
packages/core/src/index.gate.ts | 11 +-
packages/core/src/index.ts | 11 +-
.../src/merge/confirmed-merge-reconciliation.ts | 34 ++++
.../core/src/merge/merge-content-descriptor.ts | 10 +
packages/core/src/merge/pre-merge-approval.ts | 71 +++++++
.../core/src/merge/required-pre-merge-steps.ts | 69 +++++++
packages/core/src/merge/task-merge.ts | 35 ++--
packages/core/src/task-store/merge-queue-ops.ts | 50 ++---
.../src/workflows/workflow-step-reopen-policy.ts | 18 ++
.../__tests__/ChatView.core-contracts.test.tsx | 5 +-
.../__tests__/ChatView.core-interactions.test.tsx | 5 +-
.../components/__tests__/ChatView.core.test.tsx | 5 +-
.../components/__tests__/ChatView.draft.test.tsx | 5 +-
.../__tests__/ChatView.message-edit.test.tsx | 5 +-
.../__tests__/ChatView.mobile-render.test.tsx | 5 +-
.../components/__tests__/ChatView.mobile.test.tsx | 5 +-
.../__tests__/ChatView.scroll-to-top.test.tsx | 5 +-
.../__tests__/ChatView.sessions-rooms.test.tsx | 5 +-
.../__tests__/ChatView.thinking-level.test.tsx | 5 +-
.../confirmed-merge-must-finalize.test.ts | 32 ++++
.../src/__tests__/executor-step-session.test.ts | 29 ++-
.../src/__tests__/manual-merge-bypass.test.ts | 1 +
.../merge-abort-clears-transient-status.test.ts | 66 ++++---
.../merge-content-descriptor-doors.test.ts | 28 +++
.../__tests__/merge-execution-exclusion.test.ts | 65 +++++++
.../__tests__/merge-gate-single-authority.test.ts | 28 +++
.../src/__tests__/merge-inflight-revoke.test.ts | 26 +++
.../merge-worktree-removal-live-session.test.ts | 29 +++
.../engine/src/__tests__/merger-ai-cleanup.test.ts | 8 +-
.../src/__tests__/merger-merge-lifecycle.test.ts | 11 +-
.../__tests__/step-reopen-single-authority.test.ts | 116 ++++++++++++
.../workflow-graph-optional-step-fix.test.ts | 10 +
.../engine/src/__tests__/workspace-merger.test.ts | 13 +-
.../engine/src/executor/cleanup-merge-state.ts | 45 +----
.../src/executor/finalize-already-reviewed-task.ts | 20 +-
.../src/executor/recover-failed-pre-merge-step.ts | 7 +-
.../src/executor/reopen-last-step-for-revision.ts | 41 +----
.../request-pre-merge-optional-step-fix.ts | 13 +-
packages/engine/src/executor/reset-merge-state.ts | 7 +-
.../src/executor/review-convergence-ladder.ts | 6 +
packages/engine/src/executor/run-implementation.ts | 33 +++-
.../engine/src/merge/auto-merge-finalization.ts | 49 +++--
packages/engine/src/merge/merge-content-capture.ts | 49 +++++
.../engine/src/merge/merge-execution-exclusion.ts | 47 +++++
packages/engine/src/merge/merger-ai.ts | 204 ++++++++++++++++-----
packages/engine/src/merge/merger-errors.ts | 13 ++
packages/engine/src/merger.ts | 29 ++-
packages/engine/src/project-engine.ts | 153 ++++++++++++----
.../engine/src/run-audit/run-audit-catalogue.ts | 12 ++
packages/engine/src/self-healing.ts | 36 ++--
packages/engine/src/util/run-audit.ts | 4 +
.../engine/src/worktree/review-diff-fingerprint.ts | 36 +++-
.../src/worktree/workspace-review-evidence.ts | 2 +-
64 files changed, 1420 insertions(+), 367 deletions(-)
Fusion-Task-Id: FN-180
Fusion-Task-Lineage: 4c2cdae0-be25-49c9-a918-60768ddc7686
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 09:22:26 +00:00
..
2026-08-23 09:22:26 +00:00
2026-08-21 07:44:32 -07:00
2026-08-23 01:36:33 +00:00
2026-04-18 23:41:47 -07:00
2026-08-15 15:07:24 -07:00
2026-08-16 21:09:58 -07:00