Commit Graph

1424 Commits

Author SHA1 Message Date
gsxdsm
43456664cf FN-6331: remove Beads repository guidance
Remove Beads-specific repository guidance and documentation from the project.

- Delete the Beads/Dolt sync evaluation document and remove it from docs indexes/tests.
- Remove bd/Beads issue-tracking and session-push instructions from AGENTS.md and contributing docs.
- Keep the Dolt ignore rule generic rather than tied to bd initialization.

Files changed:
 .gitignore                                         |   2 +-
 AGENTS.md                                          | 113 -----
 docs/README.md                                     |   1 -
 docs/beads-dolt-sync-evaluation.md                 | 501 ---------------------
 docs/contributing.md                               |  57 ---
 .../cli/src/__tests__/docs-readme-index.test.ts    |   1 -
 6 files changed, 1 insertion(+), 674 deletions(-)

Fusion-Task-Id: FN-6331

Fusion-Task-Lineage: d7498df6-6bc6-4a6d-b09b-d640184dc586
2026-06-12 21:50:49 -07:00
gsxdsm
508551c593 FN-6299: allow archiving tasks from any column
Allow task archiving from every live board column while preserving a safe restore target.

- Record the pre-archive column and restore archived tasks to that column, downgrading active execution columns to todo.
- Expose archive actions and CLI/tooling documentation for all non-archived tasks.
- Expand store, dashboard, and route tests for archive/unarchive behavior across columns.
- Quarantine the flaky core db test observed during verification and add the published package changeset.

Files changed:
 .changeset/fn-6299-archive-any-column.md           |  5 ++
 docs/cli-reference.md                              |  4 ++
 docs/task-management.md                            |  9 +--
 .../cli/skill/fusion/references/extension-tools.md |  6 +-
 .../skill/fusion/references/fusion-capabilities.md |  4 +-
 packages/cli/src/bin.ts                            |  2 +-
 packages/cli/src/extension.ts                      | 18 ++---
 .../src/__tests__/store-archive-search.test.ts     | 76 +++++++++++++++++-----
 packages/core/src/store.ts                         | 61 ++++++++++++-----
 packages/core/src/types.ts                         |  4 ++
 packages/core/vitest.config.ts                     |  1 +
 packages/dashboard/app/components/TaskCard.tsx     |  2 +-
 .../dashboard/app/components/TaskDetailModal.tsx   |  2 +-
 .../app/components/__tests__/TaskCard.test.tsx     | 35 +++++++++-
 ...etailModal.responsive-and-dependencies.test.tsx | 26 ++++++++
 .../src/__tests__/routes-tasks-ops.test.ts         |  8 +--
 .../src/routes/register-task-workflow-routes.ts    |  9 +--
 scripts/lib/test-quarantine.json                   |  5 ++
 18 files changed, 215 insertions(+), 62 deletions(-)

Fusion-Task-Id: FN-6299

Fusion-Task-Lineage: fd5b5c12-35b8-4843-ab4e-14608d1ea395
2026-06-12 21:50:49 -07:00
gsxdsm
9d0573a2ee Merge pull request #1663 from plarson/fix/fn-343-merge-worktree-cleanup
fix: classify harmless merge worktree cleanup failures
2026-06-12 21:34:51 -07:00
gsxdsm
167f9b0542 FN-6324: allow opted-in engineer backlog auto-claim
Engineer backlog auto-claim now respects an explicit opt-in while keeping the default executor-only behavior.

- Add engineerBacklogAutoClaim settings and runtime overrides for backlog pickup role checks.
- Update heartbeat auto-claim filtering, logs, and no-task prompt guidance for opted-in engineer agents.
- Cover executor/default engineer/opted-in engineer routing with core and heartbeat tests.
- Document the setting and record quarantined unrelated temp-root flakes seen during verification.

Files changed:
 .changeset/FN-6324-engineer-backlog-auto-claim.md  |  5 ++
 docs/agents.md                                     |  3 +
 docs/settings-reference.md                         |  1 +
 .../core/src/__tests__/agent-role-policy.test.ts   | 33 +++++++++-
 packages/core/src/agent-role-policy.ts             | 11 +++-
 packages/core/src/settings-schema.ts               |  1 +
 packages/core/src/types.ts                         |  4 ++
 packages/core/vitest.config.ts                     |  6 ++
 .../src/__tests__/heartbeat-executor.test.ts       | 70 ++++++++++++++++++++++
 packages/engine/src/agent-heartbeat.ts             | 65 +++++++++++++++-----
 scripts/lib/test-quarantine.json                   | 20 +++++++
 11 files changed, 199 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6324

Fusion-Task-Lineage: 4d124d98-4ad1-44ce-a76c-f1db3199b3c6
2026-06-12 19:45:37 -07:00
gsxdsm
e7bb23be66 FN-6330: document bd workflow in contributing guide
Document the repository-local Beads issue workflow for contributors.

- Add the bd ready/claim/create/close/sync workflow with expected outcomes.
- Document Beads issue types and priority levels.
- Clarify that local Beads tracking is separate from the Fusion storage evaluation.

Files changed:
 docs/contributing.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

Fusion-Task-Id: FN-6330

Fusion-Task-Lineage: 9a56def0-40bf-4e61-8582-4bb66e382a3a
2026-06-12 19:35:13 -07:00
gsxdsm
f19c4d64ee FN-6316: collapse task chat tool and thinking entries
Make task-detail agent chat easier to scan during tool-heavy sessions.

- Group consecutive tool, result, and error entries into collapsed summaries with status counts.
- Render thinking output in expanded-by-default collapsible blocks.
- Add responsive styling, docs, and regression coverage for grouped transcript segments.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/TaskChatTab.css  | 120 +++++++++++++--
 packages/dashboard/app/components/TaskChatTab.tsx  | 161 ++++++++++++++++++---
 .../app/components/__tests__/TaskChatTab.test.tsx  | 100 +++++++++++--
 4 files changed, 337 insertions(+), 46 deletions(-)

Fusion-Task-Id: FN-6316

Fusion-Task-Lineage: 84c83ea1-fa9a-4e30-9794-ae95e29f989e
2026-06-12 19:30:53 -07:00
gsxdsm
869a4f77da FN-6329: prevent Quick Chat keyboard board shift
Keep the mobile board layout stable while Quick Chat owns the keyboard viewport.

- Treat fullscreen mobile overlays as suppressors for App-level footer hiding.
- Pass Quick Chat mobile open state into the shared keyboard flag helper.
- Cover iOS, Android, modal, and non-mobile keyboard flag behavior.
- Document the Quick Chat mobile keyboard board-shift root cause and fix.

Files changed:
 .../quick-chat-mobile-keyboard-board-shift.md      | 58 ++++++++++++++++++++++
 packages/dashboard/app/App.tsx                     |  4 +-
 .../utils/__tests__/mobileBarKeyboardFlags.test.ts | 57 ++++++++++++++++++++-
 .../dashboard/app/utils/mobileBarKeyboardFlags.ts  | 10 +++-
 4 files changed, 126 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6329

Fusion-Task-Lineage: f7c37252-c0ea-44f0-b4e3-5aa2022cf7bc
2026-06-12 19:22:11 -07:00
gsxdsm
1d190f37ed FN-6322: validate settings scopes workflow payload
Clarify and cover the settings scopes response shape including workflow settings.

- Document that GET /api/settings/scopes returns workflowSettings with global and project scopes.
- Assert workflowSettings is always a non-null object for default and project-scoped route tests.
- Preserve exact workflow setting payload coverage when workflow overrides are present.

Files changed:
 docs/settings-reference.md                               |  2 +-
 packages/dashboard/src/__tests__/routes-settings.test.ts | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6322

Fusion-Task-Lineage: 08796f9d-be99-46a1-8326-251a8d79dda4
2026-06-12 19:17:25 -07:00
gsxdsm
0a135c9367 FN-6315: Scroll task chat to latest output
Ensure the task-details Chat transcript opens at the newest agent output without breaking live scroll-away behavior.

- Track active-state transitions and initial log population to snap populated transcripts to the bottom.
- Preserve existing near-bottom live-follow behavior and inactive cached scroll bookkeeping.
- Cover initial desktop/mobile load, reactivation, delayed population, and empty transcript cases.
- Document the updated Chat tab behavior and add a published package patch changeset.

Files changed:
 .changeset/fn-6315-chat-scroll-bottom.md           |   5 +
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/TaskChatTab.tsx  |  25 ++-
 .../app/components/__tests__/TaskChatTab.test.tsx  | 182 ++++++++++++++++++++-
 4 files changed, 211 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6315

Fusion-Task-Lineage: 6cd7c418-124f-4730-a533-cc866f9a16a8
2026-06-12 18:26:45 -07:00
gsxdsm
8f66a41c1c FN-6308: parallelize dashboard quality lanes
Reduce dashboard quality gate wall-clock by orchestrating existing Vitest lanes with bounded concurrency.

- Add a dashboard quality orchestrator that runs app/API lanes through the existing heap wrapper with safe concurrency and failure short-circuiting.
- Route dashboard quality scripts through the orchestrator while preserving compatibility lane scripts and shard boundaries.
- Export project glob metadata and strengthen guards for lane parity, heap usage, and settings route response expectations.
- Document the new dashboard quality orchestration model and measured FN-6308 timing results.

Files changed:
 docs/test-speed-audit-FN-5048.md                   |   8 +-
 docs/testing.md                                    |  35 +++-
 packages/dashboard/package.json                    |  14 +-
 .../scripts/__tests__/run-quality-tests.test.ts    | 110 ++++++++++
 packages/dashboard/scripts/run-quality-tests.mjs   | 221 +++++++++++++++++++++
 .../__tests__/dashboard-test-config-guard.test.ts  | 134 ++++++++++---
 .../src/__tests__/routes-settings.test.ts          |  14 +-
 packages/dashboard/vitest.config.ts                |  49 ++++-
 8 files changed, 540 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-6308

Fusion-Task-Lineage: 05a465fd-8eef-4c03-baa3-2b7cb024fef0
2026-06-12 18:18:24 -07:00
gsxdsm
0d51a58d09 FN-6320: enable active task chat steering
Allow task chat steering whenever an in-progress task has an active assigned or checked-out agent session.

- Treat in-progress sessions as steerable unless they are explicitly paused, waiting, failed, or needing replan.
- Keep in-review steering constrained to review and merge statuses while honoring paused states.
- Cover queued, cleared, checked-out, blocked, and non-board task states in TaskChatTab tests.
- Update dashboard docs to describe active, assigned, non-paused chat sessions.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/TaskChatTab.tsx  | 16 +++--
 .../app/components/__tests__/TaskChatTab.test.tsx  | 81 ++++++++++++++++++++--
 3 files changed, 89 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-6320

Fusion-Task-Lineage: bdc7df52-5d1f-4882-82a7-9fe32496e1d1
2026-06-12 18:03:51 -07:00
gsxdsm
bd87ce7d7e FN-6304: add optional workflow steps
Allow workflows to define default-on optional steps and expose browser verification as a togglable workflow option.

- Add core optional-step helpers, IR metadata, compiler support, exports, and regression coverage.
- Mark browser verification optional in the built-in coding workflow and document optional workflow-step behavior.
- Add dashboard/API support for optional step defaults and enabled-state presentation with localized label cleanup.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6304-optional-workflow-steps.md      |  5 ++
 docs/task-management.md                            |  2 +-
 docs/workflow-steps.md                             |  8 ++
 packages/core/src/__tests__/workflow-ir.test.ts    | 45 +++++++++++
 .../src/__tests__/workflow-optional-steps.test.ts  | 88 ++++++++++++++++++++++
 packages/core/src/builtin-coding-workflow-ir.ts    |  1 +
 packages/core/src/index.ts                         |  3 +
 packages/core/src/store.ts                         |  3 +
 packages/core/src/workflow-compiler.ts             | 30 +++++++-
 packages/core/src/workflow-ir-types.ts             | 11 +++
 packages/core/src/workflow-ir.ts                   | 32 +++++++-
 packages/core/src/workflow-optional-steps.ts       | 46 +++++++++++
 packages/dashboard/app/api/legacy.ts               | 10 +++
 .../dashboard/app/components/InlineCreateCard.css  | 20 +++++
 .../dashboard/app/components/InlineCreateCard.tsx  | 87 ++++++++++++++++-----
 .../app/components/WorkflowResultsTab.tsx          | 44 +++++++++--
 .../components/__tests__/InlineCreateCard.test.tsx | 41 +++++++++-
 .../__tests__/WorkflowResultsTab.test.tsx          | 58 +++++++++++++-
 .../src/__tests__/workflow-routes.test.ts          | 22 ++++++
 .../src/routes/register-workflow-routes.ts         | 16 +++-
 packages/i18n/locales/en/app.json                  |  6 +-
 packages/i18n/locales/es/app.json                  |  3 -
 packages/i18n/locales/fr/app.json                  |  3 -
 packages/i18n/locales/ko/app.json                  |  3 -
 packages/i18n/locales/zh-CN/app.json               |  3 -
 packages/i18n/locales/zh-TW/app.json               |  3 -
 packages/i18n/src/resources.d.ts                   |  6 +-
 27 files changed, 543 insertions(+), 56 deletions(-)

Fusion-Task-Id: FN-6304

Fusion-Task-Lineage: 385f8ae1-494f-4e2b-a6e9-3a2d2bbe7f71
2026-06-12 17:57:19 -07:00
gsxdsm
0cd2ae1032 FN-6314: allow chat steering during review sessions
Task Chat can now steer active assigned sessions while tasks are being reviewed or merged.

- Permit composer steering for in-review reviewing, merging, merging-fix, and fixing statuses when an agent is assigned or checked out.
- Keep paused, user-paused, unassigned, todo, and done tasks disabled with clearer active-session messaging.
- Cover in-review steering and disabled-session states in TaskChatTab tests and update dashboard documentation.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/TaskChatTab.tsx  | 13 +++--
 .../app/components/__tests__/TaskChatTab.test.tsx  | 61 ++++++++++++++++++++--
 3 files changed, 67 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6314

Fusion-Task-Lineage: 42c0f4f7-58f5-4e0c-837f-9f4b7c497fa3
2026-06-12 16:10:02 -07:00
Phil Larson
4f803b8625 feat(FN-343): complete Step 5 — document cleanup diagnostics and changeset
Fusion-Task-Id: FN-343

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-06-12 15:50:53 -07:00
gsxdsm
2b5c4ae745 FN-6307: trim dashboard test waits
Trim heavyweight dashboard test paths while preserving coverage and recording the timing evidence.

- Seed the planning route rate limiter directly so boundary assertions avoid 999 duplicate HTTP session creations.
- Replace negative wait polling in NewTaskModal and heartbeat saturation assertions with direct checks after the triggering event settles.
- Document FN-6307 timing measurements and note the unrelated pre-existing settings-route failures observed during verification.

Files changed:
 docs/test-speed-audit-FN-5048.md                   | 20 +++++++++++++
 .../app/components/__tests__/NewTaskModal.test.tsx |  8 ++----
 .../src/__tests__/routes-planning.test.ts          | 33 +++++++++++++---------
 3 files changed, 41 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6307

Fusion-Task-Lineage: b32b22e7-6729-4bd0-bc3a-ad053178bb1c
2026-06-12 14:58:59 -07:00
gsxdsm
039d3ce440 FN-6236: move fast triage into workflow settings
Move fast triage prompting into the workflow/settings prompt model.

- Add a core-owned fast triage prompt and expose the workflow prompt mode type.
- Add a fast-mode builtin workflow variant and route triage prompt selection through workflow settings.
- Remove the engine-local fast triage prompt constant and update triage tests for workflow-driven fast mode.
- Document the fast triage prompt mode setting and add a patch changeset.

Files changed:
 .changeset/FN-6236-fast-mode-workflow-variant.md   |   7 +
 docs/settings-reference.md                         |   2 +
 packages/core/src/__tests__/agent-prompts.test.ts  |  16 +-
 .../builtin-workflow-settings-triage.test.ts       |   5 +
 packages/core/src/agent-prompts.ts                 | 221 +++++++++++++++++++
 packages/core/src/builtin-workflow-prompts.ts      |  12 +-
 packages/core/src/builtin-workflow-settings.ts     |  18 +-
 packages/core/src/index.ts                         |   5 +
 packages/core/src/types.ts                         |   4 +
 .../triage-duplicate-search-regression.test.ts     |  18 +-
 .../triage-fast-mode-workflow-variant.test.ts      | 219 +++++++++++++++++++
 .../triage-planning-prompt-single-source.test.ts   |   8 +-
 packages/engine/src/__tests__/triage.test.ts       |  64 +++---
 packages/engine/src/triage.ts                      | 235 ++-------------------
 14 files changed, 565 insertions(+), 269 deletions(-)

Fusion-Task-Id: FN-6236

Fusion-Task-Lineage: 369954d8-41e7-4d88-aa6d-e6bbca077d50
2026-06-12 14:39:51 -07:00
gsxdsm
ba610a1c0e FN-6296: fix stuck-kill force-requeue cleanup
Reap hung executor surfaces before requeueing stuck-kill timeout tasks.

- terminate spawned child agents and active session surfaces before clearing execution guards
- remove stale worktrees during force-requeue while preserving concurrent recovery ownership
- add regression coverage and architecture notes for the cleanup contract

Files changed:
 docs/architecture.md                               |   2 +
 .../engine/src/__tests__/executor-recovery.test.ts | 248 ++++++++++++++++++++-
 packages/engine/src/executor.ts                    |  61 ++++-
 3 files changed, 305 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6296

Fusion-Task-Lineage: a393e2b1-a72c-4d7b-9de2-6bf7268986d4
2026-06-12 14:08:52 -07:00
gsxdsm
283adce4d0 FN-6295: move AI merge clean rooms into worktrees
Move AI-merge clean-room worktrees into the configured worktrees directory while preserving legacy cleanup.

- Resolve AI-merge roots through the configured worktrees directory using a hidden .ai-merge container.
- Keep local git excludes and stale cleanup compatible with legacy .fusion/ai-merge and tmpdir locations.
- Exclude the .ai-merge container from worktree pool and self-healing one-level sweeps.
- Add regression coverage for path resolution, cleanup, orphan reap, and cap enforcement behavior.
- Update architecture and agent guidance for the relocated clean-room root.

Files changed:
 AGENTS.md                                          |  2 +-
 docs/architecture.md                               |  4 +-
 .../engine/src/__tests__/merger-ai-cleanup.test.ts | 50 +++++++++----
 .../__tests__/self-healing-tempdir-sweep.test.ts   | 87 +++++++++++++++++++---
 .../engine/src/__tests__/worktree-paths.test.ts    | 24 ++++++
 .../engine/src/__tests__/worktree-pool.test.ts     | 55 ++++++++++++++
 packages/engine/src/merger-ai.ts                   | 27 +++++--
 packages/engine/src/self-healing.ts                | 25 +++----
 packages/engine/src/worktree-paths.ts              | 17 +++++
 packages/engine/src/worktree-pool.ts               | 10 +--
 10 files changed, 247 insertions(+), 54 deletions(-)

Fusion-Task-Id: FN-6295
Fusion-Task-Lineage: d95d32c2-3253-4964-b68a-252b4cb65109
2026-06-12 12:49:34 -07:00
gsxdsm
0897b2a0bf FN-6281: add bounded graph resume retries
Add a narrow persisted retry path for transient workflow-graph failures during resume after restart or unpause.

- Persist graphResumeRetryCount with schema migration, store round-tripping, manual retry reset, and task serialization coverage.
- Retry only no-progress execute-seam graph failures immediately following resume markers, then clear transient status/error and re-run within a capped budget.
- Preserve terminal graph failure handling for explicit reasons, durable task failures, completed progress, non-resume cases, and exhausted retry budgets.
- Document the resume-limbo retry contract and add a patch changeset for @runfusion/fusion.

Files changed:
 .changeset/fn-6281-graph-resume-retry.md           |   5 +
 docs/architecture.md                               |   1 +
 packages/core/src/__tests__/db-migrate.test.ts     |  30 +--
 packages/core/src/__tests__/db.test.ts             |  44 ++---
 packages/core/src/__tests__/goals-schema.test.ts   |   2 +-
 packages/core/src/__tests__/insight-store.test.ts  |  10 +-
 .../core/src/__tests__/manual-retry-reset.test.ts  |   1 +
 .../src/__tests__/merge-request-record.test.ts     |   2 +-
 packages/core/src/__tests__/mission-store.test.ts  |   2 +-
 packages/core/src/__tests__/run-audit.test.ts      |   4 +-
 .../core/src/__tests__/store-merge-queue.test.ts   |   2 +-
 .../core/src/__tests__/store-persistence.test.ts   |  22 +++
 packages/core/src/__tests__/task-documents.test.ts |   2 +-
 packages/core/src/db.ts                            |  10 +-
 packages/core/src/manual-retry-reset.ts            |   1 +
 packages/core/src/store.ts                         |  14 +-
 packages/core/src/types.ts                         |   5 +
 .../engine/src/__tests__/executor-recovery.test.ts | 201 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |  54 ++++++
 19 files changed, 359 insertions(+), 53 deletions(-)

Fusion-Task-Id: FN-6281

Fusion-Task-Lineage: f9061445-8624-465a-9255-c3d02eac1bdb
2026-06-12 11:10:12 -07:00
gsxdsm
36ba1b9d68 FN-6292: prevent dependency-blocking file leases
Prevent dependency waiters from holding file-scope leases that can block their own dependencies.

- Exclude in-progress tasks with unmet scheduling dependencies from active overlap lease maps.
- Add self-healing recovery for existing dependency/lease circular waits with triple-proof auditing.
- Cover scheduler and self-healing behavior with regression tests and document the new audit events.

Files changed:
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   5 +-
 packages/engine/src/__tests__/scheduler.test.ts    | 108 +++++++++++++
 packages/engine/src/__tests__/self-healing.test.ts | 172 ++++++++++++++++++++-
 packages/engine/src/scheduler.ts                   |  67 +++++---
 packages/engine/src/self-healing.ts                | 132 ++++++++++++++++
 6 files changed, 462 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6292
Fusion-Task-Lineage: 7c0e852d-bdb1-4775-a6b7-2b60b7583da1
2026-06-12 10:49:02 -07:00
gsxdsm
4bd6024ef7 FN-6300: add live task chat tab
Add a live chat-style task detail tab for following and steering active agent work.

- Add TaskChatTab with grouped agent log bubbles, live-follow scrolling, and steering message composer.
- Share chat input autosize helpers between ChatView and task chat.
- Wire the Chat tab into task detail navigation with localized labels and regression coverage.

Files changed:
 docs/dashboard-guide.md                            |   2 +
 .../dashboard/app/components/AgentLogViewer.tsx    |   2 +-
 packages/dashboard/app/components/ChatView.tsx     |  25 +-
 packages/dashboard/app/components/TaskChatTab.css  | 193 ++++++++++++++
 packages/dashboard/app/components/TaskChatTab.tsx  | 276 +++++++++++++++++++++
 .../dashboard/app/components/TaskDetailModal.tsx   |  13 +-
 .../app/components/__tests__/TaskChatTab.test.tsx  | 181 ++++++++++++++
 .../TaskDetailModal.attachments-and-tabs.test.tsx  |  19 +-
 .../TaskDetailModal.definition-actions.test.tsx    | 104 ++++----
 ...etailModal.responsive-and-dependencies.test.tsx |   2 +-
 packages/dashboard/app/utils/chatInputAutosize.ts  |  18 ++
 packages/i18n/locales/en/app.json                  |   1 +
 packages/i18n/locales/es/app.json                  |   1 +
 packages/i18n/locales/fr/app.json                  |   1 +
 packages/i18n/locales/ko/app.json                  |   1 +
 packages/i18n/locales/zh-CN/app.json               |   1 +
 packages/i18n/locales/zh-TW/app.json               |   1 +
 17 files changed, 757 insertions(+), 84 deletions(-)

Fusion-Task-Id: FN-6300
Fusion-Task-Lineage: 1eb8a17b-3ca5-4cba-81c6-ac7ccce0a113
2026-06-12 10:00:08 -07:00
gsxdsm
7ffea9f4a6 FN-6290: expose Google Generative AI custom providers
Expose Google Generative AI as a selectable custom-provider API type across settings UI and docs.

- Add Google Generative AI options to custom-provider add and edit dropdowns.
- Cover add, edit, and existing Google-provider selection behavior with dashboard tests.
- Document the supported API type and add localized provider labels.
- Add a changeset for the published Fusion package.

Files changed:
 .changeset/fn-6290-expose-google-generative-ai.md  |  5 ++
 docs/dashboard-guide.md                            |  5 +-
 docs/settings-reference.md                         |  2 +-
 .../app/components/CustomProvidersSection.tsx      |  2 +
 .../__tests__/CustomProvidersSection.test.tsx      | 62 ++++++++++++++++++++++
 packages/i18n/locales/en/app.json                  |  1 +
 packages/i18n/locales/es/app.json                  |  1 +
 packages/i18n/locales/fr/app.json                  |  1 +
 packages/i18n/locales/ko/app.json                  |  1 +
 packages/i18n/locales/zh-CN/app.json               |  1 +
 packages/i18n/locales/zh-TW/app.json               |  1 +
 11 files changed, 79 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6290

Fusion-Task-Lineage: 295cbba2-cae1-4998-9456-d6a306be6e34
2026-06-12 07:13:00 -07:00
gsxdsm
2085610e9e FN-6246: move AI merge clean rooms into repo storage
Move AI merge clean-room worktrees into a repo-local ignored root while preserving legacy temp cleanup.

- Add repo-local `.fusion/ai-merge` resolution and ignore handling for AI merge worktrees.
- Sweep both repo-local clean rooms and legacy tempdir worktrees with active-session and age safeguards.
- Prune stale git worktree metadata after cleanup and classify missing clean-room errors as transient.
- Update cleanup tests, architecture docs, and changeset coverage for the relocation.

Files changed:
 .changeset/fn-6246-ai-merge-cleanroom-relocation.md       |   5 +
 AGENTS.md                                          |   2 +-
 docs/architecture.md                               |   6 +-
 .../merger-ai-cleanup-active-session.test.ts       |  22 ++-
 .../engine/src/__tests__/merger-ai-cleanup.test.ts |  48 +++++-
 .../ai-merge-worktree-cleanup.test.ts              |  26 ++-
 .../__tests__/self-healing-tempdir-sweep.test.ts   |  34 ++++
 .../transient-merge-error-classifier.test.ts       |   2 +
 packages/engine/src/merger-ai.ts                   | 144 ++++++++++-------
 packages/engine/src/self-healing.ts                | 180 ++++++++++++---------
 .../engine/src/transient-merge-error-classifier.ts |  14 +-
 11 files changed, 325 insertions(+), 158 deletions(-)

Fusion-Task-Id: FN-6246
Fusion-Task-Lineage: f6fe8ef2-aa7b-4cc3-903f-b7a5cc165487
2026-06-12 06:49:29 -07:00
gsxdsm
40b9d553dd FN-6286: document custom provider model selection
Document how custom providers are configured and surfaced in model pickers.

- Add Custom Providers dashboard guide coverage for adding, editing, deleting, detecting models, and masked API key behavior.
- Explain that saved custom provider models appear in Project Models and workflow model dropdowns.
- Add a stable settings-reference anchor for the customProviders setting.

Files changed:
 docs/dashboard-guide.md    | 64 ++++++++++++++++++++++++++++++++++++++++++++++
 docs/settings-reference.md |  2 +-
 2 files changed, 65 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6286

Fusion-Task-Lineage: 79520376-d448-4048-af43-a532fba68853
2026-06-12 05:26:08 -07:00
gsxdsm
ec4b247a86 FN-6284: refire deferred agent assignments
Ensure assigned agents resume task work even when their heartbeat loop is idle.

- add deferred assignment refiring when an agent is assigned work without an active heartbeat run
- track in-process runtime activity so scheduled work is not double-started
- cover idle, active, and concurrent heartbeat assignment paths with scheduler and runtime tests
- document the deferred assignment wake-up behavior and add a changeset

Files changed:
 .changeset/fn-6284-deferred-assignment-refire.md   |   5 +
 docs/agents.md                                     |   2 +
 docs/architecture.md                               |   1 +
 .../src/__tests__/heartbeat-scheduler.test.ts      | 174 ++++++++++++++++++++-
 packages/engine/src/agent-heartbeat.ts             | 109 ++++++++++++-
 .../runtimes/__tests__/in-process-runtime.test.ts  |  24 +++
 packages/engine/src/runtimes/in-process-runtime.ts |   3 +
 7 files changed, 311 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6284
Fusion-Task-Lineage: cf8a9abe-163e-45c6-961a-095891e45ea5
2026-06-12 03:00:45 -07:00
gsxdsm
44b756d927 FN-6258: allow deferred built-in workflow selection
Allow branching built-in workflows to stay selectable while deferring legacy step materialization.\n\n- Treat interpreter-deferred built-in compile errors as valid zero-step selections or default fallbacks.\n- Update builtin:coding merge-region layout expectations and documentation for workflow-native merge primitives.\n- Cover explicit selection, create-time selection, and project-default fallback cases for deferred built-ins.\n- Add a patch changeset for the published CLI package.\n\nFiles changed:\n .changeset/fuzzy-workflows-branching.md            |  5 ++\n docs/workflow-steps.md                             |  4 +-\n .../core/src/__tests__/builtin-workflows.test.ts   | 53 +++++++++++++++--\n packages/core/src/builtin-workflows.ts             | 10 +++-\n packages/core/src/store.ts                         | 43 ++++++++++----\n packages/core/src/workflow-compiler.ts             | 66 +++++-----------------\n 6 files changed, 109 insertions(+), 72 deletions(-)

Fusion-Task-Id: FN-6258

Fusion-Task-Lineage: 0958f522-029e-4f2a-9292-b408c2a4c208
2026-06-11 22:48:59 -07:00
gsxdsm
2efa833357 FN-6250: add Compound Engineering session cancellation
Add cancel controls and backend support for preserving interrupted Compound Engineering sessions.

- Add an orchestrator cancel path and POST route that stops live work without deleting session history.
- Wire dashboard APIs, hooks, and UI buttons to cancel active, launching, or awaiting-input sessions.
- Cover cancellation behavior across orchestrator, routes, hooks, flow controls, and session panel tests.
- Document the cancel versus discard workflow in plugin docs and README.

Files changed:
 docs/plugins/compound-engineering.md               |  13 ++-
 .../fusion-plugin-compound-engineering/README.md   |  11 ++-
 .../src/__tests__/orchestrator-cancel.test.ts      | 101 +++++++++++++++++++++
 .../src/__tests__/session-routes.test.ts           |  35 +++++++
 .../src/dashboard/CeFlow.tsx                       |  16 +++-
 .../src/dashboard/CompoundEngineeringView.css      |  20 ++++
 .../src/dashboard/CompoundEngineeringView.tsx      |  40 +++++++-
 .../src/dashboard/__tests__/CeFlow.test.tsx        |  20 ++++
 .../__tests__/CompoundEngineeringView.test.tsx     |  53 ++++++++++-
 .../hooks/__tests__/useCeSessions.test.tsx         |  44 ++++++++-
 .../src/dashboard/hooks/api.ts                     |  10 ++
 .../src/dashboard/hooks/useCeSessions.ts           |  23 ++++-
 .../src/routes/session-routes.ts                   |  11 +++
 .../src/session/orchestrator.ts                    |  20 ++++
 14 files changed, 404 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6250

Fusion-Task-Lineage: e9997056-364c-44e1-b846-00b08a1ff8fc
2026-06-11 22:42:21 -07:00
gsxdsm
73990e4212 FN-6253: index workflow policy ownership map
Index the workflow policy ownership documentation from the docs landing page.

- Add workflow-policy-ownership-map.md to docs/README.md's reference table.
- Summarize the map's merge, retry, scheduling, and recovery policy coverage.

Files changed:
 docs/README.md | 1 +
 1 file changed, 1 insertion(+)

Fusion-Task-Id: FN-6253

Fusion-Task-Lineage: bf04e915-7cd1-436c-9edc-a0bde285f551
2026-06-11 22:31:35 -07:00
gsxdsm
d23c5d901f FN-6247: refresh PR controls from live auto-merge setting
Keep task detail PR and review affordances synchronized with the current project auto-merge setting.

- Thread the live auto-merge value into task detail modals and list split-pane detail views.
- Prefer the live auto-merge setting over the stale fetched modal snapshot while preserving task-level overrides.
- Cover PR and review tab behavior for auto-merge on/off and document the dashboard behavior.
- Evict flaky engine gate entries and add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6247-automerge-off-modal-stale.md    |   5 +
 docs/dashboard-guide.md                            |   1 +
 packages/dashboard/app/App.tsx                     |   3 +-
 packages/dashboard/app/components/AppModals.tsx    |   2 +
 packages/dashboard/app/components/ListView.tsx     |   3 +
 .../dashboard/app/components/TaskDetailModal.tsx   |   4 +-
 .../__tests__/TaskDetailModal.create-pr.test.tsx   | 171 ++++++++++++++++++++-
 packages/engine/vitest.config.ts                   |   2 -
 8 files changed, 182 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6247

Fusion-Task-Lineage: 1321c03a-216d-4b15-bf4f-95621d68c9ae
2026-06-11 22:11:44 -07:00
gsxdsm
65251d2e6b FN-6252: stop agent pauses from pausing tasks
Agent pause and sleep flows now leave task pause state under explicit task controls.\n\n- Remove automatic task pausing from heartbeat pauseAgent and dashboard fallback state changes.\n- Default resume task cascade to off while retaining legacy opt-in unpause cleanup.\n- Cover agent sleep, heartbeat execution, and dashboard fallback pause behavior with regression tests.\n- Document task pause ownership and add a patch changeset.\n\nFiles changed:\n .changeset/fn-6252-no-agent-task-autopause.md      |  5 ++\n docs/agents.md                                     |  2 +-\n docs/architecture.md                               |  4 ++\n .../src/__tests__/routes-agent-runs.test.ts        | 32 +++++++++\n .../src/routes/register-agent-runtime-routes.ts    | 17 -----\n .../src/__tests__/heartbeat-executor.test.ts       | 75 ++++++++++++++++++++--\n packages/engine/src/agent-heartbeat.ts             | 29 +++------\n 7 files changed, 121 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-6252

Fusion-Task-Lineage: f7a0ef30-0c99-4f9c-b0c1-43217d613187
2026-06-11 22:03:29 -07:00
gsxdsm
c0ff360737 FN-6243: keep mobile auto-merge toggles visible
Keep the mobile dashboard pinned while offscreen auto-merge controls are toggled.

- Reset document horizontal scroll during mobile board stabilization and immediately after auto-merge toggles.
- Cover portrait and landscape mobile scroll realignment in the auto-merge integration test.
- Document the real-browser blank-dashboard root cause and add a patch changeset.

Files changed:
 .changeset/FN-6243-mobile-auto-merge-blank.md      |  5 ++
 ...bile-auto-merge-toggle-document-scroll-blank.md | 55 ++++++++++++++++++++++
 packages/dashboard/app/components/Board.tsx        | 47 ++++++++++++++++--
 ...-merge-toggle-blank.mobile-integration.test.tsx | 49 +++++++++++++++++++
 4 files changed, 152 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6243

Fusion-Task-Lineage: 91f74de2-667f-4732-a840-47b792288bec
2026-06-11 21:26:59 -07:00
gsxdsm
e22afece56 FN-6233: add typed triage policy settings
Render triage planning thresholds from typed workflow settings instead of hard-coded prompt constants.

- Add typed triage threshold/default workflow settings, migration coverage, exports, and docs.
- Render built-in triage prompt placeholders before engine prompt execution and tests.
- Remove the duplicate standard triage prompt from engine in favor of the core workflow IR source.
- Add regression coverage for default and customized triage policy rendering.

Files changed:
 .changeset/FN-6233-triage-threshold-settings.md    |   7 +
 docs/settings-reference.md                         |  19 ++
 docs/workflow-steps.md                             |   2 +-
 packages/core/src/__tests__/agent-prompts.test.ts  |  16 +-
 .../builtin-workflow-settings-triage.test.ts       |  63 ++++
 .../src/__tests__/settings-consistency.test.ts     |  24 +-
 .../core/src/__tests__/settings-migration.test.ts  |  12 +-
 .../src/__tests__/workflow-ir-settings.test.ts     |  11 +-
 packages/core/src/agent-prompts.ts                 |  20 +-
 packages/core/src/builtin-workflow-settings.ts     | 154 ++++++++-
 packages/core/src/index.ts                         |   7 +-
 packages/core/src/moved-settings.ts                |  13 +-
 .../triage-planning-prompt-single-source.test.ts   |   9 +-
 .../__tests__/triage-threshold-settings.test.ts    |  84 +++++
 packages/engine/src/__tests__/triage.test.ts       |  17 +-
 packages/engine/src/triage.ts                      | 343 +--------------------
 packages/engine/vitest.config.ts                   |   5 +-
 17 files changed, 423 insertions(+), 383 deletions(-)

Fusion-Task-Id: FN-6233

Fusion-Task-Lineage: b2a986df-fa37-4297-a359-84d8463b0867
2026-06-11 20:53:01 -07:00
gsxdsm
905d5bf849 FN-6228: prioritize project model overrides
Ensure saved project model settings outrank stale durable-agent runtime models across AI lanes.

- Document the updated task, heartbeat, validator, merger, and summarizer model precedence.
- Add model-resolution regression coverage for project lanes, globals, defaults, runtime fallback, and test-mode mock forcing.
- Route AI merge body summarization through the shared title-summarizer settings resolver.
- Preserve upstream triage prompt coverage for TRIAGE_POLICY_PROMPT while resolving conflicts.

Files changed:
 docs/agents.md                                     |  18 +--
 docs/settings-reference.md                         |  32 ++--
 .../core/src/__tests__/model-resolution.test.ts    |  98 ++++++++++++
 packages/core/vitest.config.ts                     |   1 +
 .../src/__tests__/agent-session-helpers.test.ts    | 173 +++++++++++++++++++++
 .../src/__tests__/merger-ai-merge-body.test.ts     |  85 +++++++++-
 packages/engine/src/agent-session-helpers.ts       |   4 +
 packages/engine/src/merger.ts                      |  26 +---
 8 files changed, 392 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-6228

Fusion-Task-Lineage: a6c03f2a-dde7-4037-bdcd-a1c92a8b7fae
2026-06-11 20:44:52 -07:00
gsxdsm
7763ba5fab FN-6278: preflight reusable merge worktree cwd
Stabilize reusable merge worktree cwd resolution before merge-runner git spawns.

- Add a reusable merge integration root preflight that detects missing, empty, or de-registered task worktrees before using them as cwd.
- Reacquire/repair unusable reuse-task-worktree roots before merge execution and reject unusable roots during handoff.
- Cover vanished and unregistered worktree recovery paths plus focused preflight unit cases.
- Document the FN-6278 preflight behavior alongside transient merge recovery and merge integration worktree contracts.

Files changed:
 docs/architecture.md                               |   4 +-
 .../__tests__/merger-integration-worktree.test.ts  |  82 ++++++++
 .../merge-runner-spawn-enoent-prevention.test.ts   | 233 +++++++++++++++++++++
 packages/engine/src/merger-integration-worktree.ts |  71 +++++++
 packages/engine/src/merger.ts                      |  19 +-
 5 files changed, 396 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6278

Fusion-Task-Lineage: ceecf70f-9e2d-4ffe-8c6f-a9a5b673d72d
2026-06-11 20:27:29 -07:00
gsxdsm
64d831576d FN-6225: persist workflow model lanes on Settings save
Persist default workflow model lane edits through the Settings modal's primary save path.

- Register a Project Models section save handler so workflow lane overrides flush before closing Settings.
- Surface typed workflow setting rejections without closing the modal or showing a success toast.
- Remove the separate workflow-model save button and update coverage/docs for the unified save behavior.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 docs/settings-reference.md                         | 17 +++++---
 .../dashboard/app/components/SettingsModal.tsx     | 11 ++++-
 .../components/__tests__/SettingsModal.test.tsx    | 50 ++++++++++++++++------
 .../settings/sections/ProjectModelsSection.tsx     | 42 ++++++++++--------
 .../app/components/settings/sections/context.ts    |  3 ++
 6 files changed, 83 insertions(+), 42 deletions(-)

Fusion-Task-Id: FN-6225

Fusion-Task-Lineage: 98338f85-c742-46c2-8bdf-f676a6f7e32e
2026-06-11 20:21:30 -07:00
gsxdsm
ac342f5012 FN-6220: harden AI merge worktree cleanup
Harden AI merge cleanup so temporary clean-room worktrees are removed and audited reliably.

- Canonicalize AI merge cleanup paths and prune stale git worktree metadata after removals.
- Treat already-absent or de-registered cleanup paths as idempotent success while still auditing genuine failures.
- Add regression coverage for successful, no-op, retry, thrown, orphaned, and dangling-registration cleanup paths.
- Document the inline and self-healing cleanup lifecycle for AI merge temp worktrees.

Files changed:
 docs/architecture.md                               |   4 +-
 .../engine/src/__tests__/merger-ai-cleanup.test.ts |  28 +-
 .../ai-merge-worktree-cleanup.test.ts              | 284 +++++++++++++++++++++
 packages/engine/src/merger-ai.ts                   | 108 +++++---
 4 files changed, 392 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-6220

Fusion-Task-Lineage: b002313c-4349-49c2-8d0f-cd1853369d84
2026-06-11 20:02:21 -07:00
gsxdsm
1c2b68386b FN-6210: cap chat sidebar width during keyboard flicker
Keep the chat sidebar bounded when tablet keyboard viewport changes briefly report mobile sizing.

- Add a desktop max-width guard to the chat sidebar with a mobile override.
- Cover simulated tablet keyboard viewport-mode flicker in the mobile render tests.
- Document the ChatView sidebar defense alongside the tablet viewport-mode solution.

Files changed:
 .../ui-bugs/tablet-keyboard-viewport-mode-flip.md  |  3 ++
 packages/dashboard/app/components/ChatView.css     |  2 +
 .../__tests__/ChatView.mobile-render.test.tsx      | 53 ++++++++++++++++++++++
 3 files changed, 58 insertions(+)

Fusion-Task-Id: FN-6210

Fusion-Task-Lineage: b3aca9d5-dc16-45e2-8f2c-5c2d51c7d021
2026-06-11 19:51:19 -07:00
gsxdsm
02ae5a9340 FN-6213: prevent keyboard from forcing mobile layout
Keep tablet and desktop layouts stable when the virtual keyboard shrinks viewport height.

- Gate short-height mobile detection on phone-class physical screen size.
- Reuse the shared mobile viewport helper across board, terminal, and workflow editor layout decisions.
- Cover tablet keyboard and landscape phone viewport behavior with regression tests and document the UI bug pattern.
- Preserve quarantine exclusions while resolving the squash merge conflict.

Files changed:
 .../ui-bugs/tablet-keyboard-viewport-mode-flip.md  | 54 +++++++++++++
 packages/dashboard/app/components/Board.tsx        |  4 +-
 .../dashboard/app/components/SessionTerminal.tsx   | 16 +---
 .../app/components/WorkflowNodeEditor.tsx          | 41 +++++-----
 .../__tests__/SessionTerminal.mobile.test.tsx      | 57 ++++++++++----
 .../app/hooks/__tests__/useViewportMode.test.ts    | 90 +++++++++++++++++++++-
 packages/dashboard/app/hooks/useViewportMode.ts    | 26 ++++++-
 packages/engine/vitest.config.ts                   |  1 +
 scripts/lib/test-quarantine.json                   |  5 ++
 9 files changed, 239 insertions(+), 55 deletions(-)

Fusion-Task-Id: FN-6213

Fusion-Task-Lineage: 01af6489-8c34-4318-9cff-1bceb1fa5a5d
2026-06-11 19:37:25 -07:00
gsxdsm
9a71b1c7d1 FN-6242: recover transient spawn merge failures
Recover retry-exhausted in-review merge tasks when the merger failed before spawning its git command.

- Classify spawn ENOTDIR and spawn ENOENT errors as bounded transient merge failures.
- Requeue retry-exhausted in-review tasks for auto-merge while preserving the transient recovery budget.
- Cover the classifier and self-healing recovery paths for process-spawn failures.
- Document the transient merge recovery classes and bounded budget behavior.

Files changed:
 docs/architecture.md                               |   1 +
 packages/engine/src/__tests__/self-healing.test.ts | 101 +++++++++++++++++++++
 .../transient-merge-error-classifier.test.ts       |  40 ++++++++
 .../engine/src/transient-merge-error-classifier.ts |  11 +++
 4 files changed, 153 insertions(+)

Fusion-Task-Id: FN-6242
Fusion-Task-Lineage: 3ca0ab1b-7184-4808-85ad-3becc9c99329
2026-06-11 18:41:49 -07:00
gsxdsm
94c3cce7bc FN-6257: make AI merge cleanup idempotent for absent worktrees
AI merge cleanup now tolerates already-removed worktrees without failing a landed merge.

- Treat ENOENT and de-registered worktree removal errors as successful idempotent cleanup.
- Register AI merge temp paths before worktree creation and keep raw/canonical paths active.
- Add cleanup regression coverage and include the cleanup suite in reliability tests.
- Document the idempotent cleanup telemetry contract.

Files changed:
 docs/architecture.md                               |   2 +-
 .../engine/src/__tests__/merger-ai-cleanup.test.ts |  48 +++++++-
 .../ai-merge-cleanup-enoent-idempotent.test.ts     | 128 +++++++++++++++++++++
 packages/engine/src/merger-ai.ts                   |  73 +++++++++---
 packages/engine/vitest.config.ts                   |   5 +-
 5 files changed, 239 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-6257

Fusion-Task-Lineage: c669fa1e-2c92-4e2f-8726-4939a3146955
2026-06-11 18:14:45 -07:00
gsxdsm
9a78814418 FN-6245: keep default auto-merge tasks on live settings
Keep tasks without explicit auto-merge overrides tied to the live global setting instead of freezing it at review entry.

- Stop in-review entry effects from copying the project autoMerge setting onto tasks.
- Preserve explicit per-task auto-merge overrides while allowing default tasks to follow later global toggles.
- Add regression coverage for move-to-review behavior and live auto-merge resolution.
- Document the default auto-merge behavior and add a patch changeset.

Files changed:
 .changeset/fn-6245-automerge-toggle.md             |  5 ++
 docs/settings-reference.md                         |  2 +-
 .../__tests__/move-task-characterization.test.ts   | 48 ++++++++++++++---
 packages/core/src/__tests__/store-movement.test.ts | 63 +++++++++++++++-------
 packages/core/src/__tests__/task-merge.test.ts     | 12 ++++-
 packages/core/src/default-workflow-hooks.ts        | 28 ++++++----
 packages/core/src/store.ts                         | 13 ++---
 7 files changed, 121 insertions(+), 50 deletions(-)

Fusion-Task-Id: FN-6245
Fusion-Task-Lineage: 1f349f0c-e513-4d82-b77a-9d0c353c163c
2026-06-11 18:08:17 -07:00
gsxdsm
39b2478f01 FN-6227: handle non-empty worktree removals
Recover native worktree cleanup when git refuses to remove a non-empty worktree.

- Detect recoverable git worktree remove errors and fall back to filesystem removal plus admin pruning.
- Add a worktree remove fallback audit event for recovery visibility.
- Cover non-empty removal recovery with unit and real-git regression tests.
- Keep flaky-test quarantine exclusions merged with current main.

Files changed:
 docs/architecture.md                               |   4 +-
 ...tree-remove-non-empty-recovery.real-git.test.ts | 139 +++++++++++++++++++++
 .../engine/src/__tests__/worktree-backend.test.ts  | 113 ++++++++++++++++-
 packages/engine/src/run-audit.ts                   |   1 +
 packages/engine/src/worktree-backend.ts            |  57 ++++++++-
 packages/engine/vitest.config.ts                   |   1 +
 scripts/lib/test-quarantine.json                   |   5 +
 7 files changed, 311 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6227

Fusion-Task-Lineage: 98673303-8109-4fe8-8d9f-eb867fb28bdd
2026-06-11 16:15:07 -07:00
gsxdsm
3e69d3990d FN-6244: protect active AI merge worktrees
Ensure AI merge cleanup only reaps stale, inactive temp worktrees.

- Register live AI merge clean-room paths in the active session registry while merges run.
- Add a minimum temp-worktree reap age and conservative lookup-error handling to sweep and prune paths.
- Expand cleanup tests and release the repaired AI merge cleanup test from quarantine.

Files changed:
 docs/architecture.md                               |  2 +-
 .../engine/src/__tests__/merger-ai-cleanup.test.ts | 38 ++++++++++++++--
 .../__tests__/self-healing-tempdir-sweep.test.ts   | 52 +++++++++++++++++++---
 packages/engine/src/active-session-registry.ts     |  2 +-
 packages/engine/src/merger-ai.ts                   | 29 +++++++++++-
 packages/engine/src/self-healing.ts                | 28 +++++++++---
 packages/engine/vitest.config.ts                   |  1 -
 scripts/lib/test-quarantine.json                   |  5 ---
 8 files changed, 132 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-6244

Fusion-Task-Lineage: 5c8ced12-d38f-4e45-9ea0-119b3236a2cb
2026-06-11 15:54:49 -07:00
gsxdsm
c285f3fb88 FN-6218: restore pi upgrade compatibility
Restore Pi-upgraded workspaces to keep Fusion resources accessible and recover title generation when configured models go stale.

- Mark read-only Fusion/Pi provider settings views as project-trusted so extension loading keeps working after Pi upgrades.
- Retry task title summarization with automatic model resolution when the configured provider model is missing from the Pi registry.
- Cover provider settings trust behavior and stale summarizer fallback paths with regression tests.
- Document the read-only settings trust contract and add a patch changeset.

Files changed:
 .changeset/fn-6218-pi-upgrade-regressions.md       |   5 +
 docs/settings-reference.md                         |   2 +
 docs/task-management.md                            |   2 +
 .../commands/__tests__/provider-settings.test.ts   |  16 ++++
 packages/cli/src/commands/provider-settings.ts     |   5 +
 packages/core/src/__tests__/ai-summarize.test.ts   | 102 +++++++++++++++++++++
 packages/core/src/ai-summarize.ts                  |  85 ++++++++++++-----
 .../src/__tests__/pi-create-fn-agent.test.ts       |  32 +++++++
 packages/engine/src/pi.ts                          |   7 +-
 9 files changed, 233 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6218

Fusion-Task-Lineage: 3d6aca32-a56a-43a0-a57b-8e6abc839ce9
2026-06-11 09:51:49 -07:00
gsxdsm
36f5ecdaba FN-6226: skip fast-mode workflow graph validation nodes
Fast execution mode now bypasses custom pre-merge workflow graph validation consistently.

- Skip custom graph prompt, script, and gate nodes for fast-mode tasks while preserving human waits and CLI-agent work.
- Add regression coverage for fast-mode custom workflow behavior and standard-mode/null-mode validation.
- Document fast-mode workflow graph bypass behavior and record the published package changeset.
- Quarantine the unrelated self-healing real-git flake from the engine core gate.

Files changed:
 .changeset/FN-6226-fast-mode-workflows.md          |   5 +
 docs/task-management.md                            |   6 +-
 docs/workflow-steps.md                             |   2 +-
 .../__tests__/executor-fast-mode-workflows.test.ts | 280 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |  16 ++
 packages/engine/vitest.config.ts                   |   1 +
 scripts/lib/test-quarantine.json                   |   5 +
 7 files changed, 313 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6226

Fusion-Task-Lineage: 68d88a7a-e157-4d18-a2c2-9065946066de
2026-06-11 09:21:23 -07:00
gsxdsm
1f366c8de1 FN-6229: enforce symptom verification in triage and review
Require bug-class specs and reviews to prove original symptoms are reproduced and fixed.

- Add Symptom Verification guidance to triage prompt templates and self-review rules.
- Teach reviewer prompts to REVISE missing symptom verification or green-build-only acceptance.
- Document symptom-based acceptance alongside Surface Enumeration and cover the prompt contracts with tests.

Files changed:
 AGENTS.md                                      |  1 +
 docs/testing.md                                | 12 +++++++++++
 packages/engine/src/__tests__/reviewer.test.ts | 29 +++++++++++++++++++++++++-
 packages/engine/src/__tests__/triage.test.ts   | 23 +++++++++++++++++---
 packages/engine/src/reviewer.ts                |  2 ++
 packages/engine/src/triage.ts                  | 20 ++++++++++++++++++
 6 files changed, 83 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6229

Fusion-Task-Lineage: 01ad963f-c62b-410f-8571-57bc68307288
2026-06-11 09:21:23 -07:00
gsxdsm
82b89bd695 Merge pull request #1577 from Runfusion/feature/workflow-owned-merge-s04-builtin-ir-regions
refactor(workflow): S04 built-in merge retry recovery IR regions
2026-06-11 07:55:41 -07:00
gsxdsm
3e06bc6c69 Merge pull request #1576 from Runfusion/feature/workflow-owned-merge-s03-generic-scheduler-claim
refactor(workflow): S03 generic scheduler claim path
2026-06-11 07:54:57 -07:00
gsxdsm
6261f99184 Merge pull request #1575 from Runfusion/feature/workflow-owned-merge-s02-merge-request-projection
refactor(workflow): S02 merge request projection onto work items
2026-06-11 07:51:58 -07:00
gsxdsm
46db9a7759 Merge pull request #1571 from Runfusion/feature/workflow-owned-merge-retry-scheduling-plan
refactor(workflow): add workflow-owned merge migration slice
2026-06-11 07:50:32 -07:00