Commit Graph

2154 Commits

Author SHA1 Message Date
Fusion (runfusion.ai)
93b11c6c0c feat(FN-5241): add atomic in-review handoff seam with executor/self-healing
The merge introduces an atomic review handoff seam in the core store (`packages/core/src/store.ts`) and migrates executor and self-healing transitions to use it, replacing the previous multi-step mutable-state handoff with a single transactional operation. Extensive reliability backstops and regress

Fusion-Task-Id: FN-5241
2026-05-20 01:01:08 -07:00
gsxdsm
e908cbcb42 fix(FN-5291): downgrade file-scope invariant failures 2026-05-19 23:00:11 -07:00
gsxdsm
98033bc869 feat(engine): guard one engine per project per machine
Adds a per-machine singleton lock that engages in
ProjectEngineManager.createAndStart() before any engine subsystems
spin up. Two fn dashboard processes can no longer run engines for the
same project on the same host — previously they would share .fusion/
state and corrupt worktrees / task rows for in-process projects.

The guard combines two independent checks:
  - A proper-lockfile file at <project>/.fusion/engine.lock with
    stale-lock recovery (auto-released on process death).
  - A loopback listener on a hashed per-project address — UDS on
    POSIX, named pipe on Windows. Stale UDS files are probed and
    unlinked before a retry bind.

Failures raise EngineAlreadyRunningError. Both guards are released
from stopAll() and pauseProject(); a release on engine.start()
failure lets retries re-acquire cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 22:50:39 -07:00
Fusion (runfusion.ai)
17eb85ed81 feat(FN-5266): add metadata-driven pre-commit identity guard
Implements metadata-driven pre-commit identity guard hooks in the worktree layer, replacing static hook bodies with configurable metadata; adds regression tests covering shared-hook worktrees and the metadata-driven lock behavior.

Fusion-Task-Id: FN-5266
2026-05-19 21:08:21 -07:00
Fusion (runfusion.ai)
b078a8135e feat(FN-5232): add deterministic verification-followup deduplication to pre
Implements deterministic followup deduplication for the project engine, routing eval and PR followups through a new `verification-followup-dedup` helper that excludes the parent task to prevent self-referential loops, with tests covering eval-followups, merge-error-recovery, PR comments, and the new

Fusion-Task-Id: FN-5232
2026-05-19 19:28:05 -07:00
gsxdsm
87da1cb757 test(dashboard): align github-tracking-documentation phrases with current docs
The doc was rewritten to cover "every task-creation path" (with an
explicit enumeration of surfaces) instead of the older "task creation
flows (including ...)" wording, and uses "best-effort and non-blocking"
instead of "Creation is best-effort and non-blocking". Update the
documentation contract test to match the current phrasing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Fusion-Task-Id: FN-5208
2026-05-19 19:23:47 -07:00
Fusion (runfusion.ai)
7fe6cd362a fix(FN-5188): complete Step 5 — restore green verification
Fusion-Task-Id: FN-5188
Fusion-Task-Lineage: 6d238ff1-2d69-44e7-8694-ec19e412f8ef
2026-05-19 17:27:21 -07:00
Fusion (runfusion.ai)
9c59f1da0d test(FN-5188): add orphan-rescue fresh-db reliability backstop
Fusion-Task-Id: FN-5188
Fusion-Task-Lineage: 6d238ff1-2d69-44e7-8694-ec19e412f8ef
2026-05-19 17:27:20 -07:00
Fusion (runfusion.ai)
4b2a77b631 feat(FN-5188): complete Step 3 — gate fresh-db orphan rescue
Fusion-Task-Id: FN-5188
Fusion-Task-Lineage: 6d238ff1-2d69-44e7-8694-ec19e412f8ef
2026-05-19 17:27:20 -07:00
Fusion (runfusion.ai)
dc8dd33f80 test(FN-5189): complete Step 4 — add supervision regression test
Fusion-Task-Id: FN-5189
Fusion-Task-Lineage: 4caa3f0a-af81-4c60-88e8-de229ed72e08
2026-05-19 17:19:03 -07:00
Fusion (runfusion.ai)
818db4a714 feat(FN-5189): complete Step 3 — migrate supervised spawns
Fusion-Task-Id: FN-5189
Fusion-Task-Lineage: 4caa3f0a-af81-4c60-88e8-de229ed72e08
2026-05-19 17:19:02 -07:00
Fusion (runfusion.ai)
23dae4b495 test(FN-5168): complete Step 6 — verification gates green
Fusion-Task-Id: FN-5168
Fusion-Task-Lineage: 0c865d3e-0886-4e51-a7ff-cb4c713dcc54
2026-05-19 16:15:25 -07:00
Fusion (runfusion.ai)
7ac8a73f1b test(FN-5168): complete Step 5 — reliability interaction regression
Fusion-Task-Id: FN-5168
Fusion-Task-Lineage: 0c865d3e-0886-4e51-a7ff-cb4c713dcc54
2026-05-19 16:15:25 -07:00
Fusion (runfusion.ai)
368c4c37fe feat(FN-5168): complete Step 3 — no-progress churn terminalization
Fusion-Task-Id: FN-5168
Fusion-Task-Lineage: 0c865d3e-0886-4e51-a7ff-cb4c713dcc54
2026-05-19 16:15:25 -07:00
Fusion (runfusion.ai)
af830a74cc fix(FN-5168): preserve tracking through loop recovery
Fusion-Task-Id: FN-5168
Fusion-Task-Lineage: 0c865d3e-0886-4e51-a7ff-cb4c713dcc54
2026-05-19 16:15:24 -07:00
Fusion (runfusion.ai)
af16608810 feat(FN-5168): complete Step 2 — executor feeds ignored step-update churn
Fusion-Task-Id: FN-5168
Fusion-Task-Lineage: 0c865d3e-0886-4e51-a7ff-cb4c713dcc54
2026-05-19 16:15:24 -07:00
Fusion (runfusion.ai)
913167c736 feat(FN-5168): complete Step 1 — detector signal for ignored step-update churn
Fusion-Task-Id: FN-5168
Fusion-Task-Lineage: 0c865d3e-0886-4e51-a7ff-cb4c713dcc54
2026-05-19 16:15:24 -07:00
Fusion (runfusion.ai)
b39c2dd071 feat(FN-5153): deliver soft-delete verification gate
Completes FN-5153 by delivering the soft-delete verification gate with a new end-to-end test suite covering the full soft-delete lifecycle and a documentation matrix summarizing the gate behavior. Updates the dashboard test file and adds a brief entry to AGENTS.md to surface the new feature.

Fusion-Task-Id: FN-5153
2026-05-19 15:52:09 -07:00
gsxdsm
b7e57f84a9 chore: minor cleanups — docs index, test-project fixture, empty catches, triage timestamp guard
- Add diagnostics.md and FN-4886/FN-5048 entries to docs/README.md index
- Fix test-project.test.ts spy target (updateSettings → init) to match fixture flow
- Remove unused DEFAULT_PROJECT_SETTINGS import and skip empty settings patch
- Add explanatory comments to empty catch blocks in secrets-env-writer
- Refine near-duplicate timestamp guard in triage for cleaner NaN handling
2026-05-19 14:22:11 -07:00
Fusion (runfusion.ai)
41d18b3f6d fix(FN-5150): unblock workspace gates with near-duplicate timestamp guard
Fusion-Task-Id: FN-5150
Fusion-Task-Lineage: 09bf24f1-5d23-4049-bd5e-7afbea0a59ae
2026-05-19 12:13:46 -07:00
Fusion (runfusion.ai)
4d9068d927 test(FN-5152): cover same-millisecond near-duplicate finalize race
Fusion-Task-Id: FN-5152
Fusion-Task-Lineage: 954570d8-82e1-4519-a739-c52ee790d2db
2026-05-19 11:30:55 -07:00
Fusion (runfusion.ai)
80ffed7a47 fix(FN-5152): clarify newer-task near-duplicate archive rule
Fusion-Task-Id: FN-5152
Fusion-Task-Lineage: 954570d8-82e1-4519-a739-c52ee790d2db
2026-05-19 11:30:55 -07:00
Fusion (runfusion.ai)
2c6662f13b fix(FN-5152): complete Step 7 — clear verification lint issue
Fusion-Task-Id: FN-5152
Fusion-Task-Lineage: 954570d8-82e1-4519-a739-c52ee790d2db
2026-05-19 11:30:55 -07:00
Fusion (runfusion.ai)
8364be83d6 test(FN-5152): complete Step 6 — add near-duplicate reliability interaction tests
Fusion-Task-Id: FN-5152
Fusion-Task-Lineage: 954570d8-82e1-4519-a739-c52ee790d2db
2026-05-19 11:30:55 -07:00
Fusion (runfusion.ai)
d9a66571d0 feat(FN-5152): complete Step 5 — add triage near-duplicate backstop
Fusion-Task-Id: FN-5152
Fusion-Task-Lineage: 954570d8-82e1-4519-a739-c52ee790d2db
2026-05-19 11:30:55 -07:00
Fusion (runfusion.ai)
5e3d57b1cc test(FN-5147): complete Step 6 — stabilize verification coverage
Fusion-Task-Id: FN-5147
Fusion-Task-Lineage: 2a0e5bd4-b2ea-498c-95ef-85126819e824
2026-05-19 10:07:44 -07:00
Fusion (runfusion.ai)
405a6ea02d test(FN-5147): complete Step 5 — add autoMerge-off in-review reliability backstop
Fusion-Task-Id: FN-5147
Fusion-Task-Lineage: 2a0e5bd4-b2ea-498c-95ef-85126819e824
2026-05-19 10:07:44 -07:00
Fusion (runfusion.ai)
17cf473703 feat(FN-5147): complete Step 3 — gate remaining in-review mutators
Fusion-Task-Id: FN-5147
Fusion-Task-Lineage: 2a0e5bd4-b2ea-498c-95ef-85126819e824
2026-05-19 10:07:44 -07:00
Fusion (runfusion.ai)
59c68043aa fix(FN-5147): gate foreign-only in-review recovery when autoMerge is disabled
Fusion-Task-Id: FN-5147
Fusion-Task-Lineage: 2a0e5bd4-b2ea-498c-95ef-85126819e824
2026-05-19 10:07:44 -07:00
Fusion (runfusion.ai)
59c9f7bbe0 feat(FN-5147): complete Step 2 — normalize in-review autoMerge gate docs/order
Fusion-Task-Id: FN-5147
Fusion-Task-Lineage: 2a0e5bd4-b2ea-498c-95ef-85126819e824
2026-05-19 10:07:44 -07:00
Fusion (runfusion.ai)
a249490ef9 test(FN-5147): add autoMerge-off sweep guards coverage
Fusion-Task-Id: FN-5147
Fusion-Task-Lineage: 2a0e5bd4-b2ea-498c-95ef-85126819e824
2026-05-19 10:07:44 -07:00
Fusion (runfusion.ai)
44ea2a7075 feat(FN-5147): complete Step 2 — gate mutating in-review sweeps
Fusion-Task-Id: FN-5147
Fusion-Task-Lineage: 2a0e5bd4-b2ea-498c-95ef-85126819e824
2026-05-19 10:07:44 -07:00
Fusion (runfusion.ai)
9fdb98061a test(FN-5137): reset executor mocks in soft-delete guard tests
Fusion-Task-Id: FN-5137
Fusion-Task-Lineage: bb2e2e56-d64c-46ca-a6c8-abda13029fc2
2026-05-19 07:45:12 -07:00
Fusion (runfusion.ai)
f74c0d5105 test(FN-5137): complete Step 4-6 — soft-delete regression coverage
Fusion-Task-Id: FN-5137
Fusion-Task-Lineage: bb2e2e56-d64c-46ca-a6c8-abda13029fc2
2026-05-19 07:45:12 -07:00
Fusion (runfusion.ai)
9b6513af71 fix(FN-5137): complete Step 2-3 — guard deleted tasks in snapshot and executor
Fusion-Task-Id: FN-5137
Fusion-Task-Lineage: bb2e2e56-d64c-46ca-a6c8-abda13029fc2
2026-05-19 07:45:12 -07:00
Fusion (runfusion.ai)
4eccbe2fb5 feat(FN-5137): complete Step 1 — invalidate on task deleted
Fusion-Task-Id: FN-5137
Fusion-Task-Lineage: bb2e2e56-d64c-46ca-a6c8-abda13029fc2
2026-05-19 07:45:11 -07:00
Fusion (runfusion.ai)
2c7ae1c1a4 feat(FN-5131): add lineage-unlink flag to triage parent deletes
Adds a `lineage-unlink` flag to triage parent deletes (FN-5131), enabling the split-into-subtasks path to break parent-child lineage on deletion. The primary addition is a comprehensive new test covering that split scenario, with minor adjustments to two existing lineage-related test files.

Fusion-Task-Id: FN-5131

Fusion-Task-Lineage: cb720e8f-8c49-42e4-873a-9949f3ba3427
2026-05-19 07:20:28 -07:00
Fusion (runfusion.ai)
d9d3ea7fba test(FN-5128): complete Step 3 — add hydration soft-delete regressions
Fusion-Task-Id: FN-5128
Fusion-Task-Lineage: 1e8d4dd4-9712-496f-a64b-ae85198d93e8
2026-05-19 05:57:57 -07:00
Fusion (runfusion.ai)
530a9c8fa4 feat(FN-5128): complete Step 2 — add soft-delete guard to hydration
Fusion-Task-Id: FN-5128
Fusion-Task-Lineage: 1e8d4dd4-9712-496f-a64b-ae85198d93e8
2026-05-19 05:57:57 -07:00
Fusion (runfusion.ai)
dd78e42f75 fix(FN-5093): complete Step 7-8 — verification fixes and changeset
Fusion-Task-Id: FN-5093
Fusion-Task-Lineage: fe96617a-88f8-4a3c-b96c-c516d2206331
2026-05-19 03:54:49 -07:00
Fusion (runfusion.ai)
8029227451 test(FN-5093): complete Step 5 — add reliability interaction backstop
Fusion-Task-Id: FN-5093
Fusion-Task-Lineage: fe96617a-88f8-4a3c-b96c-c516d2206331
2026-05-19 03:54:49 -07:00
Fusion (runfusion.ai)
275cee9c78 feat(FN-5093): complete Step 4 — add self-healing in-review-stalled surfacing
Fusion-Task-Id: FN-5093
Fusion-Task-Lineage: fe96617a-88f8-4a3c-b96c-c516d2206331
2026-05-19 03:54:49 -07:00
Fusion (runfusion.ai)
85cb845b87 fix(FN-5091): harden maxAutoMergeRetries settings parsing
Fusion-Task-Id: FN-5091
Fusion-Task-Lineage: f59dc7dd-abc2-4d1d-a755-1fe446314131
2026-05-19 03:21:18 -07:00
Fusion (runfusion.ai)
e698d44914 feat(FN-5091): complete Step 4 — wire self-healing reporter pass
Fusion-Task-Id: FN-5091
Fusion-Task-Lineage: f59dc7dd-abc2-4d1d-a755-1fe446314131
2026-05-19 03:21:17 -07:00
Fusion (runfusion.ai)
2bc1c023c8 feat(FN-5091): complete Step 3 — add dependency blocked todo reporter
Fusion-Task-Id: FN-5091
Fusion-Task-Lineage: f59dc7dd-abc2-4d1d-a755-1fe446314131
2026-05-19 03:21:17 -07:00
Fusion (runfusion.ai)
353845a6b8 feat(FN-5034): complete Step 5 — add stale paused todo self-healing surfacing
Fusion-Task-Id: FN-5034
Fusion-Task-Lineage: 1e315656-30d8-41d2-9802-0d9e155f0ba8
2026-05-19 03:10:25 -07:00
Fusion (runfusion.ai)
e53cf7e0b1 fix(FN-5089): add trailer settings typing defaults
Fusion-Task-Id: FN-5089
Fusion-Task-Lineage: ad7ea32a-c024-45bb-b68e-b65665b9b7c6
2026-05-19 02:34:37 -07:00
Fusion (runfusion.ai)
6c40b0685d test(FN-5089): cover lowercase metadata normalization
Fusion-Task-Id: FN-5089
Fusion-Task-Lineage: ad7ea32a-c024-45bb-b68e-b65665b9b7c6
2026-05-19 02:34:35 -07:00
Fusion (runfusion.ai)
ac9c83c106 test(FN-5089): add commit-msg hook coverage and wiring
Fusion-Task-Id: FN-5089
Fusion-Task-Lineage: ad7ea32a-c024-45bb-b68e-b65665b9b7c6
2026-05-19 02:34:35 -07:00
Fusion (runfusion.ai)
96eb610800 feat(FN-5089): complete Step 1 — add commit-msg hook installer
Fusion-Task-Id: FN-5089
Fusion-Task-Lineage: ad7ea32a-c024-45bb-b68e-b65665b9b7c6
2026-05-19 02:34:35 -07:00