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
Fusion (runfusion.ai)
0b17d7915c
fix(FN-5103): complete Step 8 — resolve verification regressions
...
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:55 -07:00
Fusion (runfusion.ai)
0abb1fad2c
feat(FN-5103): expose rebase landed-files capture helper for reliability tests
...
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:55 -07:00
Fusion (runfusion.ai)
3e7073ab84
test(FN-5103): address review gaps in landed-files coverage
...
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:55 -07:00
Fusion (runfusion.ai)
03212ce00b
test(FN-5103): complete Step 6 — add landed-files attribution reliability coverage
...
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:55 -07:00
Fusion (runfusion.ai)
20ab2f0172
feat(FN-5103): complete Step 3 — skip reconcile for restricted landed-files capture
...
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:55 -07:00
Fusion (runfusion.ai)
d6be8fc771
feat(FN-5103): complete Step 2 — restrict rebase landed-files capture
...
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:54 -07:00
Fusion (runfusion.ai)
3ac14a3605
fix(FN-5103): expose own commit shas in attribution helper
...
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:54 -07:00
Fusion (runfusion.ai)
654e59199b
feat(FN-5112): complete Step 3 — reviewer LLM defense-in-depth
...
Fusion-Task-Id: FN-5112
Fusion-Task-Lineage: 692fba2a-5856-4256-8144-d87bda56e1aa
2026-05-19 01:02:38 -07:00
Fusion (runfusion.ai)
574d661134
feat(FN-5112): complete Step 2 — gate fn_review_spec on dangling-ref detector
...
Fusion-Task-Id: FN-5112
Fusion-Task-Lineage: 692fba2a-5856-4256-8144-d87bda56e1aa
2026-05-19 01:02:38 -07:00
Fusion (runfusion.ai)
b5e257d6e3
feat(FN-5112): complete Step 1 — dangling task-doc reference detector
...
Fusion-Task-Id: FN-5112
Fusion-Task-Lineage: 692fba2a-5856-4256-8144-d87bda56e1aa
2026-05-19 01:02:38 -07:00
Fusion (runfusion.ai)
cc6bd1e724
feat(FN-5102): complete Step 4 and 5 — verify and document
...
Fusion-Task-Id: FN-5102
Fusion-Task-Lineage: 13be2941-176e-4a6e-b6fc-2bb644f7444a
2026-05-18 23:50:00 -07:00
Fusion (runfusion.ai)
a43c0cfb18
test(FN-5102): expand agent-surface github tracking regressions
...
Fusion-Task-Id: FN-5102
Fusion-Task-Lineage: 13be2941-176e-4a6e-b6fc-2bb644f7444a
2026-05-18 23:50:00 -07:00
Fusion (runfusion.ai)
000fa3d6bb
feat(FN-5102): complete Step 2 — prefill agent github tracking
...
Fusion-Task-Id: FN-5102
Fusion-Task-Lineage: 13be2941-176e-4a6e-b6fc-2bb644f7444a
2026-05-18 23:50:00 -07:00
Fusion (runfusion.ai)
13977f4682
test(FN-5102): harden repro mock to keep hook deterministic
...
Fusion-Task-Id: FN-5102
Fusion-Task-Lineage: 13be2941-176e-4a6e-b6fc-2bb644f7444a
2026-05-18 23:50:00 -07:00
Fusion (runfusion.ai)
780cf6b3d8
test(FN-5102): add failing agent tracking flag repro
...
Fusion-Task-Id: FN-5102
Fusion-Task-Lineage: 13be2941-176e-4a6e-b6fc-2bb644f7444a
2026-05-18 23:50:00 -07:00
Fusion (runfusion.ai)
76790c424f
feat(FN-5053): fix verification gate registration for workspace test stabil
...
Fix FN-5053 restores workspace test stability for the verification gate by adjusting the duplicate guard and task workflow route registration, with updated coverage in the branch-conflicts and diff-volume-gate test suites.
Fusion-Task-Id: FN-5053
Fusion-Task-Lineage: cc8a561a-fd56-4275-b06c-0966c80c2868
2026-05-18 23:14:27 -07:00
Fusion (runfusion.ai)
65f9995b26
test(FN-5090): align attribution test shape with commit metadata
...
Fusion-Task-Id: FN-5090
Fusion-Task-Lineage: 9d74fe7a-d54c-460f-9db9-1c90475ec832
2026-05-18 22:44:49 -07:00
Fusion (runfusion.ai)
45fa52d735
feat(FN-5090): complete Step 1 — add shared commit attribution helper
...
Fusion-Task-Id: FN-5090
Fusion-Task-Lineage: 9d74fe7a-d54c-460f-9db9-1c90475ec832
2026-05-18 22:44:41 -07:00
Fusion (runfusion.ai)
d8a04ff5a7
feat(FN-5099): complete Step 4 — pass verification gates
...
Fusion-Task-Id: FN-5099
Fusion-Task-Lineage: 26353f25-da61-4b61-8fd2-69915a984cc4
2026-05-18 22:34:21 -07:00
Fusion (runfusion.ai)
12adde0ab9
feat(FN-5052): complete Step 8 — documentation and delivery
...
Fusion-Task-Id: FN-5052
Fusion-Task-Lineage: 607cd9e6-e4d0-4572-b183-8253d127209f
2026-05-18 21:55:51 -07:00
Fusion (runfusion.ai)
a0b75579b8
feat(FN-5094): merge fusion/fn-5094
...
Commits merged:
- merge fusion/fn-5094
Files changed:
.../self-healing-stale-merger-status.test.ts | 200 +++++++++++++++++++++
packages/engine/src/branch-conflicts.ts | 6 +-
packages/engine/src/run-audit.ts | 2 +
packages/engine/src/self-healing.ts | 67 ++++++-
4 files changed, 271 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-5094
Fusion-Task-Lineage: c6c9710c-51fe-40e9-bfad-bfb6d589c7f4
2026-05-18 21:54:39 -07:00
Fusion (runfusion.ai)
12d718166c
test(FN-5094): complete Step 4 — add inline attribution coverage
...
Fusion-Task-Id: FN-5094
Fusion-Task-Lineage: c6c9710c-51fe-40e9-bfad-bfb6d589c7f4
2026-05-18 21:44:35 -07:00
gsxdsm
a25ef82e13
fix(FN-5092): clear transient "merging" status on self-healing auto-finalize paths
...
The merger maintains a single mergeActive slot per project; while a task
holds it, no other in-review task can be picked up. When the merger
sets task.status="merging" but the task is then completed via a
self-healing recovery path instead of the merger's own completeTask(),
the status field is never cleared. The mergeActive slot stays leaked
indefinitely, and the entire merger queue stalls.
Concrete failure: FN-5052 landed via FN-4499 auto-recover-branch-misbound
on 2026-05-18 15:48 with mergeConfirmed=true. Status field stayed at
"merging". 12.5 hours later, FN-5083, FN-5060, FN-5053, FN-5092, and
every other in-review task were waiting on the merger queue with no
merger activity at all.
Two self-healing → done paths were missing the status clear:
- recoverBranchMisboundInReviewTasks() (self-healing.ts ~5031):
branch-tip-misbound recovery moves an in-review task to done after
detecting its work landed on main via a different commit. The merger's
completeTask() correctly clears status before moveTask(); this path
did not.
- proven-no-op finalize in recoverNoOpReviewTasks() (self-healing.ts
~3460): for tasks proven already on main (FN-4500 classifier), the
updateTask({ mergeDetails, modifiedFiles }) patch did not include
status: null. Same leak class.
Both now follow the pattern from merger.ts completeTask() and
project-engine.ts auto-merge already-confirmed:
updateTask({ status: null, error: null, paused: false }) before
moveTask("done").
FN-5052 task.json patched to clear the existing stale status as part
of this commit so the running engine releases its mergeActive slot
on next sweep.
Fusion-Task-Id: FN-5092
2026-05-18 21:24:02 -07:00
gsxdsm
fac81b8432
fix(FN-5090): use live merge-base in classifyForeignOnlyContamination
...
When task.baseCommitSha becomes stale (because main has advanced past
it via legitimate merges of OTHER tasks), git log baseSha..branchName
includes commits that are already on main with foreign task-id
attribution. classifyForeignOnlyContamination then returns
kind="ambiguous" — own commits AND foreign commits in range — and the
contamination recovery skips, blocking the merger handoff
indefinitely.
This stranded FN-5092 after manual merges of FN-5060/FN-5090/FN-5053
moved main forward without updating downstream tasks' baseCommitSha.
Fix: when git merge-base(branch, main) is a descendant of the
persisted baseSha, prefer the live merge-base for the contamination
classification range. Fail open to persisted baseSha on any git
error. Also pass the effective base to classifyBootstrapMisbinding
so both classifiers see consistent input.
Fusion-Task-Id: FN-5090
2026-05-18 21:23:19 -07:00