Commit Graph

198 Commits

Author SHA1 Message Date
Fusion (runfusion.ai)
2739259fea fix(FN-4700): finalize benign no-change evidence and docs
Fusion-Task-Id: FN-4700
Fusion-Task-Lineage: 87097576-c2be-4be4-8e10-9af85831fe5d
2026-05-15 20:18:56 -07:00
Fusion (runfusion.ai)
dacf45cba8 feat(FN-4700): complete Step 2 — add no-changes-finalized classifier
Fusion-Task-Id: FN-4700
Fusion-Task-Lineage: 87097576-c2be-4be4-8e10-9af85831fe5d
2026-05-15 20:18:55 -07:00
Fusion (runfusion.ai)
6c542462ed feat(FN-4688): complete Step 1 — ungate rebase base persistence
Fusion-Task-Id: FN-4688
Fusion-Task-Lineage: 49abde1d-3480-4127-beb0-5dadce30b9e1
2026-05-15 16:50:00 -07:00
Fusion (runfusion.ai)
e4769ea889 feat(FN-4640): wire sandbox auditor through executor and merger
Fusion-Task-Id: FN-4640
Fusion-Task-Lineage: 4a91265f-1714-4854-b08d-7ddb06074253
2026-05-15 16:19:42 -07:00
Fusion
6f7ca7921f feat(FN-4656): complete Step 3 — gate unproven finalize and auto-retry
Fusion-Task-Id: FN-4656
Fusion-Task-Lineage: 81e8bd91-bc02-4bb7-a590-0e6e84e3535f
2026-05-15 14:06:28 -07:00
Fusion
b8337a9dcd feat(FN-4656): complete Step 1 — add owned landed evidence classifier
Fusion-Task-Id: FN-4656
Fusion-Task-Lineage: 81e8bd91-bc02-4bb7-a590-0e6e84e3535f
2026-05-15 14:06:28 -07:00
Fusion
3ffc1e689e feat(FN-4646): complete Step 2 — capture landed files at merge time
Fusion-Task-Id: FN-4646
Fusion-Task-Lineage: f921098e-3407-40fa-984d-720e0c3248c7
2026-05-15 13:22:19 -07:00
Fusion
5d3409a9da test(FN-4636): complete Step 5 — add sandbox wiring integration coverage
Fusion-Task-Id: FN-4636
Fusion-Task-Lineage: 38ff2f48-4cb1-42c2-8f64-eb3b8d3d7f2c
2026-05-15 10:24:01 -07:00
Fusion
3c595ce223 feat(FN-4636): complete Step 4 — wire command runners through sandbox backend
Fusion-Task-Id: FN-4636
Fusion-Task-Lineage: 38ff2f48-4cb1-42c2-8f64-eb3b8d3d7f2c
2026-05-15 10:24:01 -07:00
Fusion
2799c101ac feat(FN-4606): complete Step 3 — route engine call sites
Ref: Runfusion/Fusion#321
Fusion-Task-Id: FN-4606
Fusion-Task-Lineage: 94b23f37-944e-4bcd-bfa1-67d0a8c0a267
2026-05-15 09:19:58 -07:00
Fusion
38267f479f feat(FN-4559): complete remaining recovery, tests, and docs
Fusion-Task-Id: FN-4559
Fusion-Task-Lineage: 9276f683-657c-4604-aaef-143da488b287
2026-05-15 00:50:11 -07:00
Fusion
941213ec14 feat(FN-4559): complete Step 2 — recover finalize callsites and commitSha propagation
Fusion-Task-Id: FN-4559
Fusion-Task-Lineage: 9276f683-657c-4604-aaef-143da488b287
2026-05-15 00:50:11 -07:00
Fusion
d934273072 feat(FN-4559): complete Step 1 — shared detector and finalize classification
Fusion-Task-Id: FN-4559
Fusion-Task-Lineage: 9276f683-657c-4604-aaef-143da488b287
2026-05-15 00:50:11 -07:00
Fusion
8bfad91c81 test(FN-4518): cover rebase base SHA persistence in merger details
Fusion-Task-Id: FN-4518
Fusion-Task-Lineage: 48749dec-b2c9-484b-a13e-ffacc1fa9014
2026-05-14 17:04:16 -07:00
Fusion
31dd80ba10 feat(FN-4526): complete Step 1 — refresh post-push merge stats
Fusion-Task-Id: FN-4526
Fusion-Task-Lineage: 38dc93d6-3e56-4e22-aaaa-d09b2eed43e5
2026-05-14 14:38:46 -07:00
Fusion
9da675d0ab fix(FN-4475): complete Step 1 — centralize empty cherry-pick guard
Fusion-Task-Id: FN-4475
Fusion-Task-Lineage: cb285fff-18e6-4bad-8f22-9158c99337f5
2026-05-14 08:23:43 -07:00
Fusion
af3550bb64 feat(FN-4366): enforce readonly tool allowlist for workflow steps
Added a readonly tool allowlist enforcement for workflow steps, blocking execution of state-mutating tools (`fn_task_update`, `fn_task_move`, etc.) during workflow step runs. The policy is wired into the executor and merger execution paths, with tests covering allowlist enforcement and a documentati

Fusion-Task-Id: FN-4366
2026-05-14 06:24:03 -07:00
Fusion
880f755787 test(FN-4433): complete Step 3 — cover file-scope violation audit emission
Fusion-Task-Id: FN-4433
Fusion-Task-Lineage: 63ee20ca-1e04-4b42-b386-a1e586aac889
2026-05-14 04:37:43 -07:00
Fusion
2c5d0aba4c feat(FN-4433): complete Step 2 — emit audit event on file scope violation
Fusion-Task-Id: FN-4433
Fusion-Task-Lineage: 63ee20ca-1e04-4b42-b386-a1e586aac889
2026-05-14 04:37:43 -07:00
Fusion
a89256b173 fix(FN-4432): tighten merger log typing for audit helper
Fusion-Task-Id: FN-4432
Fusion-Task-Lineage: ac5d5aa4-1c6e-4cd1-a779-c58f62ee0357
2026-05-13 23:59:19 -07:00
Fusion
ce21271e59 test(FN-4432): complete Step 3 — cover post-merge audit failure emission
Fusion-Task-Id: FN-4432
Fusion-Task-Lineage: ac5d5aa4-1c6e-4cd1-a779-c58f62ee0357
2026-05-13 23:59:19 -07:00
Fusion
21a2dacbb9 feat(FN-4432): complete Step 2 — emit post-merge audit failure events
Fusion-Task-Id: FN-4432
Fusion-Task-Lineage: ac5d5aa4-1c6e-4cd1-a779-c58f62ee0357
2026-05-13 23:59:19 -07:00
Fusion
0aa014abb6 fix(FN-4344): normalize cache lookup commands for optional verification settings
Fusion-Task-Id: FN-4344
Fusion-Task-Lineage: 5c3fc80e-619d-4daf-a224-580cea402b4c
2026-05-13 21:59:15 -07:00
Fusion
c3da1684ce feat(FN-4344): complete Step 1 — add multi-ref audit verification lookup
Fusion-Task-Id: FN-4344
Fusion-Task-Lineage: 5c3fc80e-619d-4daf-a224-580cea402b4c
2026-05-13 21:59:15 -07:00
Fusion
8ff216c822 feat(FN-4424): complete Step 2 — add empty cherry-pick detection
Fusion-Task-Id: FN-4424
Fusion-Task-Lineage: 0a3120bf-9f09-45de-bda7-a59c5842b2d9
2026-05-13 20:56:33 -07:00
Fusion
cfaac5dc54 feat(FN-4379): complete Step 2 — orphan-only scope recovery implementation
Fusion-Task-Id: FN-4379
Fusion-Task-Lineage: 88ee0f49-1db2-40e6-8781-7ecbc4dcbdc8
2026-05-13 14:22:23 -07:00
Fusion
b7b0ba6460 feat(FN-4309): guard squash commits against gitignored files
- Unstage gitignored paths before squash merge commit creation using git check-ignore
- Re-run the guard on the verification-fix squash restore path to keep ignored artifacts out of final merges
- Add merger tests covering forced .fusion artifacts, spaced ignored paths, and ignored-only squash results
- Document the gitignored-path merge guard and add a published package changeset

Fusion-Task-Id: FN-4309
2026-05-13 13:18:12 -07:00
Fusion
2b2dc08b02 feat(FN-4333): complete Step 2 — wire audit mode and verified-rebase short-circuit
Fusion-Task-Id: FN-4333
Fusion-Task-Lineage: 39442c0b-046e-4a34-8bdd-0f4c60bea451
2026-05-13 10:45:52 -07:00
gsxdsm
e787036b80 feat(FN-4333): emergency hot-fix for post-merge audit blocks
Stop the post-merge audit from parking tasks as `failed` when deterministic
merge verification already proved the merged tree. Adds `postMergeAuditMode`
project setting (`block` | `warn` | `off`, default `block`) and a
verified-tree short-circuit for rebase-strategy overlap-only findings.

- packages/engine/src/merger.ts: new `resolvePostMergeAuditAction` helper
  + audit call site gated on `postMergeAuditMode` and verification-cache
  lookup. Rebase + overlap-only + verified-tree → pass through with a
  short-circuit log entry instead of throwing SquashAuditError.
- packages/core/src/types.ts, settings-schema.ts, index.ts: new
  `PostMergeAuditMode` type, `postMergeAuditMode` field on Settings,
  default `block`, exports `normalizePostMergeAuditMode`.
- packages/engine/src/__tests__/post-merge-audit-action.test.ts: unit
  tests for the decision helper.
- packages/dashboard/app/components/SettingsModal.tsx: settings UI row.
- .changeset: minor bump for @runfusion/fusion.

The FN-3936 silent-drop guard is preserved: duplicate-subject findings
still block in `block` mode and squash-strategy audits still block
(no equivalent deterministic guarantee).

Fusion-Task-Id: FN-4333
2026-05-13 09:06:20 -07:00
Fusion
8c4fbd5a61 feat(FN-4080): complete Step 2 — route thinking persistence by agent kind
Fusion-Task-Id: FN-4080
Fusion-Task-Lineage: 086863ba-7100-41ab-9cfc-197301fbcab0
2026-05-13 06:29:36 -07:00
Fusion
173bae9d2c feat(FN-4108): persist scope override fields (+4 more)
Commits merged:
- test(FN-4073): finalize invariant regression coverage
- feat(FN-4073): complete Step 4 — document merge invariant
- feat(FN-4073): complete Step 3 — enforce squash file-scope invariant
- feat(FN-4073): complete Step 2 — add file-scope invariant helper
- feat(FN-4073): complete Step 1 — persist scope override fields

Files changed:
.changeset/FN-4073-file-scope-invariant.md         |   9 +
 AGENTS.md                                          |   6 +
 packages/core/src/__tests__/store-update.test.ts   |  18 ++
 packages/core/src/db.ts                            |   2 +
 packages/core/src/store.ts                         |  34 +-
 packages/core/src/types.ts                         |   8 +
 .../__tests__/merger-file-scope-invariant.test.ts  | 357 +++++++++++++++++++++
 .../engine/src/__tests__/merger-test-helpers.ts    |   5 +
 packages/engine/src/merger.ts                      | 155 ++++++++-
 9 files changed, 582 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-4108
2026-05-12 21:52:58 -07:00
Fusion
8fa3e8bfd1 feat(FN-4072): add diff volume gate to merger
Added a diff volume gate to the merger that blocks or warns on large diffs before merge completes. The feature includes a new `merger-diff-volume-gate` module wired into the merger, configurable via project settings, with tests covering all gate paths. Also updated docs and the changeset for the `@r

Fusion-Task-Id: FN-4072
2026-05-12 18:26:58 -07:00
Fusion
55663219c1 feat(FN-4069): add direct merge commit routing to merger
Adds direct merge commit routing to the merger, allowing non-squash merges to bypass the squash-audit path when configured. The feature includes new `mergeCommitStrategy` settings, updated dashboard UI, expanded merger lifecycle tests, and documentation.

Fusion-Task-Id: FN-4069
2026-05-12 17:04:33 -07:00
Fusion
0d0796ab7b feat(FN-4071): add overlap guard to prevent concurrent merge conflicts
Implements an overlap guard for the merger that prevents concurrent merges of tasks with conflicting file changes, wired through a new overlap-aware fallback strategy and exposed via a dashboard setting. The feature includes a 406-line test suite for the overlap guard, a 203-line lifecycle integrati

Fusion-Task-Id: FN-4071
2026-05-12 09:06:54 -07:00
Fusion
5d03d355cd feat(FN-4067): add squash audit gate to merger with integration tests
Adds a squash-merge audit gate that verifies duplicate-cherry-pick commits and file-overlap losses after any squash merge into main, restoring the post-squash audit step to the merge workflow with test coverage for both the audit logic and the broader merger lifecycle.

Fusion-Task-Id: FN-4067

Fusion-Task-Lineage: 593aa917-5640-495b-b1ae-80c3eaa09d01
2026-05-12 07:47:11 -07:00
Fusion
fab4ed4e61 feat(FN-4062): add global thinking log setting to persist agent reasoning a
Adds a global `thinkingLogEnabled` setting that gates AI thinking log persistence across the engine (executor, reviewer, merger, triage, step-session) and exposes the control in the dashboard Settings modal, with tests verifying settings parity and modal behavior.

Fusion-Task-Id: FN-4062
2026-05-11 21:48:26 -07:00
Fusion
b56306c422 feat(FN-3905): use merger session model for post-merge workflow steps
The merge implements post-merge model resolution, using the merger's own session model for executing post-merge prompt workflow steps instead of falling back to executor model defaults. Tests cover the resolution hierarchy, and documentation clarifies the precedence order for downstream consumers.

Fusion-Task-Id: FN-3905
2026-05-11 09:32:53 -07:00
Fusion
94fb1cc2ef feat(FN-4001): merge fusion/fn-4001
Commits merged:
- merge fusion/fn-4001

Files changed:
packages/cli/src/__tests__/bundle-output.test.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Fusion-Task-Id: FN-4001
2026-05-11 08:02:53 -07:00
Fusion
161bfa9571 feat(FN-3834): short-circuit no-op merges and auto-finalize review tasks
Merged FN-3834 to add a no-op merge recovery flow to the merger, including a branch-ahead detector, short-circuit logic to exclude no-op merges from the mergeable sweep, and finalization of no-op review tasks — backed by substantial test coverage across merger and self-healing modules.

Fusion-Task-Id: FN-3834
2026-05-11 06:47:43 -07:00
Fusion
5386d38567 feat(FN-3990): add task lineage identity and association storage
Adds task lineage storage infrastructure (FN-3990 Step 2), introducing a dedicated `task-lineage.ts` module and related types to track task identity and association relationships, with corresponding database schema and store support plus tests and documentation for the lineage reconciliation process

Fusion-Task-Id: FN-3990
2026-05-11 06:47:43 -07:00
Fusion
9d785a7ed6 feat(FN-3816): add merger self-healing for missing workspace and environmen
Implements merger self-healing with a missing workspace entry detector, bootstrap recovery path, and environment fault retry handling, plus supporting tests for merge error recovery and verification utilities, alongside documentation updates.

Fusion-Task-Id: FN-3816
2026-05-10 23:36:10 -07:00
Fusion
bcb4107a1a feat(FN-3932): add orphaned finalize-reset autostash safeguard in merger
The merger gains a safeguard that automatically stashes work when a finalize-reset leaves orphaned records, preventing merge-state corruption. Core exports the new orphan record type, project-engine wires the safeguard, and documentation traces the provenance flow; tests were added for the recovery

Fusion-Task-Id: FN-3932
2026-05-10 15:34:09 -07:00
Fusion
bb9816b8c8 feat(FN-3217): honor resolved merge target across completion flows
- Add merge target branch resolver contract to core types and exports
- Update task lifecycle completion path to resolve and propagate merge target branch
- Use resolved merge target in merger execution instead of stale/default branch assumptions
- Expand core and CLI tests for merge-target resolution behavior and add changeset for @runfusion/fusion

Fusion-Task-Id: FN-3217
2026-05-09 23:06:21 -07:00
Fusion
18e0a4e22e feat(FN-3892): honor assigned runtime model for merger sessions
- Add resolveMergerSessionModel helper to centralize merger model selection precedence
- Route merger session creation paths through the helper for commit, push/rebase, and autostash recovery flows
- Add comprehensive engine tests for merger model resolution and fallback behavior
- Document merger model hierarchy in settings reference and add a patch changeset for @runfusion/fusion

Fusion-Task-Id: FN-3892
2026-05-09 21:41:20 -07:00
Fusion
d604d090a8 feat(FN-3863): add stash recovery dashboard surface and API routes
Merged FN-3863 brings stash recovery to the dashboard via three coordinated steps: engine-side orphan stash surfacing API in `merger.ts`, dashboard API routes for stash recovery data, and a new `StashRecoveryView` component with mobile support and inspect-diff row actions, integrated into the header

Fusion-Task-Id: FN-3863
2026-05-09 19:49:02 -07:00
Fusion
4c46b76fc1 feat(FN-3827): sweep stale autostashes after merge completion
Merger now properly cleans up autostash git refs that survive past their useful lifetime, fixing race conditions during restore/cleanup and adding scheduled stale-sweep runs in the engine. The feature includes docs for the autostash lifecycle, new test coverage for the cleanup and sweep paths, and a

Fusion-Task-Id: FN-3827
2026-05-09 18:46:29 -07:00
Fusion
7ed685a21b feat(FN-3899): add chat rooms with send routing and delete-room UI
This merge delivers chat rooms with room send routing and delete-room UI in the dashboard (FN-3899), including fixes for bundled plugin view imports and a release changeset. Supporting changes include a merger improvement that tightens scope-warning diff base when baseBranch is missing, companies.sh

Fusion-Task-Id: FN-3899
2026-05-09 16:29:11 -07:00
gsxdsm
200ea8ead0 fix(engine): tighten merger scope-warning diff base when baseBranch is missing
Mirrors dashboard `resolveDiffBase` display-recovery: when `baseBranch` is
absent, compute `merge-base(HEAD, main)` and prefer it over a stale
`baseCommitSha` only if it strictly descends that SHA. Pre-merge rebase
on legacy/imported tasks (no recorded baseBranch) was producing inflated
"N files changed outside declared File Scope" warnings — FN-3898 surfaced
17 ghost files for a 3-file change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:06:42 -07:00
Fusion
8cbbf4761f test(FN-3842): align finalize-result assertions and docs 2026-05-09 10:31:05 -07:00
Fusion
a22044b134 fix(FN-3842): log pre-attempt baseline at in-merge finalize 2026-05-09 10:31:05 -07:00