Commit Graph

2961 Commits

Author SHA1 Message Date
gsxdsm
fe910fcce7 FN-9122: align merge gate timing and policy baselines
Re-establish a trustworthy W33 merge-gate timing baseline without weakening blocking coverage.

- Document the controlled W33 re-measurement and future regression protocol.
- Align static-validator test ledgers with all 15 canonical gate checks.
- Correct gate composition, engine-core inventory, and bundle metrics in testing guidance.

Files changed:
 .../merge-gate-w33-walltime-regression.md          | 82 ++++++++++++++++++++++
 docs/testing.md                                    | 12 ++--
 .../__tests__/engine-vitest-gate-policy.test.mjs   | 12 ++++
 scripts/__tests__/run-static-gate-checks.test.mjs  |  2 +
 scripts/__tests__/verify-fast.test.mjs             |  8 +++
 5 files changed, 111 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-9122

Fusion-Task-Lineage: 47ace0d7-902d-4ea5-848d-3d2386867c42

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-16 03:49:28 -07:00
gsxdsm
111c6c96cc FN-9117: Preserve Planning Mode answers across session hydration
Keep visible Planning Mode controls bound to the current turn during asynchronous refreshes.

- preserve active question and plan-review workspaces during same-session hydration
- submit from live session state and retain dirty answers across response identity changes
- add desktop and mobile regression coverage for deferred hydration and stale Stop polling
- document the ownership race and add a patch changeset

Files changed:
 .changeset/fn-9117-planning-turn-ownership.md      |   7 +
 .../suite-only-flakes-observed-register.md         |  24 ++++
 .../dashboard/app/components/PlanningModeModal.tsx | 141 ++++++++++++---------
 .../PlanningModeModal.planning-flow.test.tsx       | 132 +++++++++++++++++++
 .../PlanningModeModal.ui-interactions.test.tsx     |  20 +++
 5 files changed, 265 insertions(+), 59 deletions(-)

Fusion-Task-Id: FN-9117

Fusion-Task-Lineage: 18d63f63-b532-49eb-a6d1-241e31c5b2c7

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-16 02:26:42 -07:00
gsxdsm
3272affbb3 FN-9120: Fence Create Room agent roster loads
Keep Create Room picker state accurate across overlapping agent roster requests.

- Track explicit idle, loading, loaded, and failed picker phases.
- Ignore stale close, reopen, project-change, and unmount request completions.
- Reconcile selected members and cover ordering, failure, empty, duplicate, desktop, and mobile states.
- Document the loaded-lane flake investigation and add a patch changeset.

Files changed:
 .changeset/fn-9120-create-room-picker.md           |   7 ++
 .../suite-only-flakes-observed-register.md         |  17 +++
 .../dashboard/app/components/CreateRoomModal.tsx   |  50 ++++++--
 .../components/__tests__/CreateRoomModal.test.tsx  | 126 ++++++++++++++++-----
 4 files changed, 165 insertions(+), 35 deletions(-)

Fusion-Task-Id: FN-9120

Fusion-Task-Lineage: 5c9ff011-7653-40ab-a7c1-e3464ca3eaf5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-16 01:50:38 -07:00
gsxdsm
7527d2651f FN-9116: fence planning reconciliation by turn ownership
Prevent stale Planning Mode snapshots and recovery callbacks from replacing a newer interview turn.

- track session-load and turn epochs across response reconciliation, polling, streaming, and automatic retry
- fence loading-poll fetches at launch so accepted SSE questions and newer responses retain ownership
- add desktop and mobile race-ordering coverage and document the resolved suite-only flake
- publish a patch changeset for the operator-visible recovery fix

Files changed:
 .changeset/fn-9116-planning-reconciliation.md      |   7 +
 .../suite-only-flakes-observed-register.md         |  19 +
 .../dashboard/app/components/PlanningModeModal.tsx | 109 ++++-
 .../PlanningModeModal.planning-flow.test.tsx       | 502 ++++++++++++++++++++-
 4 files changed, 614 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-9116

Fusion-Task-Lineage: b861176e-9104-4caf-8b6c-e645972aa5f6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-16 00:59:48 -07:00
gsxdsm
9a9e591b72 FN-9115: clarify and expand agent skill selection
Clarify automatic skill availability while making forced-reading selections easier to manage.

- Replace the skill picker with a searchable multi-select checkbox list and explicit loading, error, empty, and unavailable states.
- Label forced, disabled, and undiscovered skills consistently across agent detail and list views, including a clear None state.
- Update localized guidance, documentation, regression coverage, and the published package changeset.

Files changed:
 .changeset/fn-9115-skills-ui.md                    |   7 +
 docs/dashboard-guide.md                            |   4 +
 .../agent-detail-settings-theme-styling.test.ts    |   3 +-
 .../dashboard/app/components/AgentDetailView.css   |   7 +-
 .../dashboard/app/components/AgentDetailView.tsx   |  35 ++-
 packages/dashboard/app/components/AgentsView.css   |   4 +
 packages/dashboard/app/components/AgentsView.tsx   |  13 +-
 .../dashboard/app/components/NewAgentDialog.tsx    |   5 +-
 .../dashboard/app/components/SkillMultiselect.css  | 258 +++------------------
 .../dashboard/app/components/SkillMultiselect.tsx  | 178 +++++---------
 .../AgentDetailView.mobile-scroll.test.tsx         |   4 +-
 .../AgentDetailView.skills-procedure.test.tsx      |  59 +++--
 .../app/components/__tests__/AgentsView.test.tsx   |  19 +-
 .../components/__tests__/SkillMultiselect.test.tsx |  81 ++++---
 .../__tests__/useDiscoveredSkillsCache.test.ts     |  16 ++
 .../app/hooks/useDiscoveredSkillsCache.ts          |  13 +-
 .../app/utils/__tests__/agentSkills.test.ts        |  28 +++
 packages/dashboard/app/utils/agentSkills.ts        |  69 +++++-
 packages/i18n/locales/en/app.json                  |  21 +-
 packages/i18n/locales/es/app.json                  |  21 +-
 packages/i18n/locales/fr/app.json                  |  21 +-
 packages/i18n/locales/ko/app.json                  |  21 +-
 packages/i18n/locales/pt-BR/app.json               |  21 +-
 packages/i18n/locales/zh-CN/app.json               |  21 +-
 packages/i18n/locales/zh-TW/app.json               |  21 +-
 25 files changed, 493 insertions(+), 457 deletions(-)

Fusion-Task-Id: FN-9115

Fusion-Task-Lineage: 18229b87-d0dc-41e7-9333-2d12df852486

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 23:14:24 -07:00
gsxdsm
6c2c880699 chore: refresh test velocity baseline and shard-timing snapshot post-trim
Measured wall times: gate 14.0s, boot smoke 20.4s (-6.3s), changed-only
pnpm test 17.5s; quarantine ledger 0. Shard-timing snapshot rebuilt
from today's CI shard artifacts (run 31929730933) plus a locally
measured full dashboard suite so dashboard lane weighting keeps its
per-file data. The trim shows: the former top-6 core PG offenders are
gone from the slowest-20 (sqlite-migrator 2m29s serial -> 20.4s;
SettingsModal.general off the table entirely). Caveat: the dashboard
rows come from the pre-trim analysis measurement, so entries like
SettingsModal.scheduling-merge (30.2s, now ~13s) are pessimistic until
the next dashboard re-measure.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 23:05:20 -07:00
gsxdsm
c59afeb15f docs: record PlanningModeModal duplicate-response flake sighting (register entry 8)
One clean solo-lane sighting of the parametrized duplicate-response
reconciliation test (mobile row; the desktop row failed once earlier
under a contaminated concurrent run, recorded as context). Third
distinct flaky test in this suite plus one prior FN-8936 stabilization
— the AGENTS.md repeated-quarantine rule calls that a subsystem
product-race smell, so the product-path audit is filed as FN-9116
rather than stabilizing a fourth time.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 22:52:18 -07:00
gsxdsm
87e673baf7 feat(merge): remove the pre-commit diff-volume gate
The gate blocked approved clean-room squashes on per-file shrinkage with no
override path ("AI merge diff-volume gate blocked the approved squash").
Removed by operator decision: delete checkDiffVolume/DiffVolumeRegressionError,
the merge:diff-volume-blocked audit event, the runDiffVolumeGate call sites in
every legacy squash finalizer, the AI-merge pre-land check, and the
mergeDiffVolume* settings. File scope remains the pre-land guard; the
post-squash audit policy remains the shrinkage backstop.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 22:42:39 -07:00
gsxdsm
9f5f981e33 FN-9114: expose enabled skills and enforce agent skill reads
Make project-enabled skills available across agent sessions while preserving explicit per-agent skills as observable read-first requirements.

- resolve all enabled discovered skills without using agent metadata as an availability filter
- carry forced skill intent through PI, plugin, chat, workflow, merger, and heartbeat session paths
- report resolved and unavailable forced skills in session summaries and diagnostics
- document the updated skill model and add release notes and regression coverage

Files changed:
 .changeset/fn-9114-forced-skills.md                |   7 +
 docs/PLUGIN_AUTHORING.md                           |   2 +-
 docs/agents.md                                     |  10 +-
 docs/diagnostics.md                                |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/__tests__/skill-settings.test.ts |   9 +
 .../dashboard/src/__tests__/chat-manager.test.ts   |  26 ++-
 packages/dashboard/src/chat.ts                     |  10 +
 .../engine/src/__tests__/agent-skills-flow.test.ts |  14 +-
 .../compound-engineering-skill-resolution.test.ts  |   2 +-
 .../engine/src/__tests__/heartbeat-skills.test.ts  |  41 ++++
 .../__tests__/hermes-runtime-integration.test.ts   |  63 +++++-
 .../engine/src/__tests__/merger-skills.test.ts     |  33 ++-
 packages/engine/src/__tests__/pi.test.ts           |  35 ++-
 .../__tests__/plugin-skill-body-delivery.test.ts   |   8 +-
 .../src/__tests__/plugin-skill-integration.test.ts |   3 +-
 .../src/__tests__/session-skill-context.test.ts    |  40 ++--
 .../engine/src/__tests__/skill-resolver.test.ts    |  38 +++-
 .../__tests__/step-execute-skill-loading.test.ts   |   6 +
 packages/engine/src/agents/agent-runtime.ts        |   2 +
 .../engine/src/agents/agent-session-helpers.ts     |  88 ++++++-
 .../src/cli-runtime/session-skill-context.ts       | 117 ++++------
 packages/engine/src/cli-runtime/skill-resolver.ts  | 252 +++++++++------------
 .../engine/src/executor/execute-workflow-step.ts   |  14 ++
 packages/engine/src/executor/run-implementation.ts |   5 +
 packages/engine/src/pi.ts                          |  28 ++-
 26 files changed, 576 insertions(+), 281 deletions(-)

Fusion-Task-Id: FN-9114

Fusion-Task-Lineage: fe63ebd1-f947-40d7-be7b-c13d7f1c35c9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 21:57:22 -07:00
gsxdsm
d4d13e2fa5 FN-9111: Add global Quick Add Enter-save preference
Add an operator-level setting that controls whether plain Enter saves a Quick Add task while preserving Cmd/Ctrl+Enter submission.

- add the global quickAddSubmitOnEnter setting, defaults, settings UI, and app context
- update Quick Add keyboard handling with multiline and duplicate/in-flight safeguards
- add focused settings and keyboard regression coverage, localization, documentation, and a release changeset

Files changed:
 .changeset/fn-9111-quick-add-enter.md              |   7 ++
 docs/dashboard-guide.md                            |   2 +
 docs/settings-reference.md                         |   1 +
 .../core/src/__tests__/settings-defaults.test.ts   |  10 ++
 packages/core/src/config/settings-schema.ts        |   5 +
 packages/core/src/types/settings/settings-scope.ts |   5 +
 packages/dashboard/app/App.tsx                     |   4 +
 .../dashboard/app/components/QuickEntryBox.tsx     |  24 ++++-
 .../QuickEntryBox.submit-on-enter.test.tsx         | 118 +++++++++++++++++++++
 .../__tests__/SettingsModal.general.test.tsx       |  18 ++++
 .../app/components/settings/save-split.ts          |   1 +
 .../sections/GlobalGeneralSection.search.ts        |   9 ++
 .../settings/sections/GlobalGeneralSection.tsx     |  10 ++
 .../settings-default-descriptions.test.tsx         |   1 +
 .../__tests__/useQuickAddSubmitOnEnter.test.tsx    |  24 +++++
 packages/dashboard/app/hooks/useAppSettings.ts     |   4 +
 .../app/hooks/useQuickAddSubmitOnEnter.ts          |  21 ++++
 packages/i18n/locales/en/app.json                  |   2 +
 packages/i18n/locales/es/app.json                  |   4 +-
 packages/i18n/locales/fr/app.json                  |   4 +-
 packages/i18n/locales/ko/app.json                  |   4 +-
 packages/i18n/locales/pt-BR/app.json               |   4 +-
 packages/i18n/locales/zh-CN/app.json               |   4 +-
 packages/i18n/locales/zh-TW/app.json               |   4 +-
 packages/i18n/src/resources.d.ts                   |   4 +-
 25 files changed, 284 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-9111

Fusion-Task-Lineage: 246153a8-5127-48df-838c-d9b60920cd91

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 21:24:25 -07:00
gsxdsm
d9fcabfaef FN-9112: default Memory Keeper heartbeats to disabled
Default built-in Memory Keeper agents to opt-in heartbeat scheduling while retaining operator choices.

- Provision new Memory Keeper agents with heartbeat disabled and hourly scheduling preconfigured.
- Preserve explicit heartbeat settings during startup convergence and avoid no-op rewrites.
- Add provisioning coverage, operator documentation, and a release changeset.

Files changed:
 .../fn-9112-memory-keeper-heartbeat-default-off.md |  7 +++
 docs/agents.md                                     |  2 +-
 .../__tests__/memory-agent-provisioning.test.ts    | 59 +++++++++++++++++++---
 packages/core/src/agents/agent-store.ts            | 34 ++++++++++---
 4 files changed, 86 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-9112

Fusion-Task-Lineage: 49edc6d9-3d9b-412f-91a5-c26f4a26a662

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 20:17:07 -07:00
gsxdsm
2a9ae0aca3 FN-9109: add resilient cross-runtime Cursor fallback
Route eligible CLI fallback failures into one bounded, auditable Cursor runtime handoff.

- defer cursor-cli fallback selection until a retryable primary prompt failure
- serialize concurrent swaps, retry the primary after failed handoffs, and dispose replacements safely
- transfer text-only conversation context within strict turn and total character limits
- document routing behavior and cover provider, runtime, concurrency, and failure cases

Files changed:
 .../fn-9109-cross-runtime-cursor-fallback.md       |   7 +
 AGENTS.md                                          |   2 +
 docs/cursor-cli-contract.md                        |   8 +
 .../src/__tests__/cli-provider-routing.test.ts     |  18 +-
 .../cli-runtime-routing-conformance.test.ts        |  64 ++++-
 .../src/__tests__/cross-runtime-fallback.test.ts   | 146 +++++++++++
 .../engine/src/agents/agent-session-helpers.ts     | 211 ++++++----------
 packages/engine/src/agents/cli-provider-routing.ts |   4 +-
 .../engine/src/agents/cross-runtime-fallback.ts    | 277 +++++++++++++++++++++
 packages/engine/src/util/run-audit.ts              |   8 +
 10 files changed, 602 insertions(+), 143 deletions(-)

Fusion-Task-Id: FN-9109

Fusion-Task-Lineage: 30664371-8410-4d6f-a263-cc86c8e0dc72

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 19:10:55 -07:00
gsxdsm
872d260ab8 FN-9104: Add mailbox recommendation task actions
Add guarded task creation directly to completed-task recommendation notices.

- Render live recommendation details and task actions in mailbox detail and conversation surfaces.
- Prevent duplicate creates, expose existing task links, and support unavailable and retry states.
- Cover desktop and mobile surfaces, update notice copy and documentation, and add a release changeset.

Files changed:
 .../fn-9104-mailbox-recommendation-create.md       |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 .../__tests__/task-recommendation-notice.test.ts   |   7 ++
 packages/core/src/task-recommendation-notice.ts    |   9 +-
 packages/dashboard/app/components/MailboxModal.tsx |   3 +
 .../app/components/MailboxTaskRecommendations.css  |   9 ++
 .../app/components/MailboxTaskRecommendations.tsx  | 127 +++++++++++++++++++++
 packages/dashboard/app/components/MailboxView.tsx  |   3 +
 .../MailboxTaskRecommendations.surfaces.test.tsx   |  77 +++++++++++++
 .../__tests__/MailboxTaskRecommendations.test.tsx  |  72 ++++++++++++
 10 files changed, 311 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-9104

Fusion-Task-Lineage: 94f53bfe-f57f-42ee-970e-56658129c1e0

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 17:36:32 -07:00
gsxdsm
43a42d8b7b FN-9107: preserve mission completion triggers after reconciliation failures
Keep scheduler mission completion handling active when best-effort reconciliation fails.

- isolate pre- and post-resolution reconciliation failures without suppressing mission execution
- cover custom completion columns, failed in-place updates, fallback behavior, and slice guards
- document the resilience contract and add a patch changeset

Files changed:
 .changeset/fn-9107-mission-trigger.md              |   7 +
 docs/missions.md                                   |   2 +-
 .../mission-validation-trigger-gap.test.ts         |  40 ++++--
 .../scheduler-mission-move-trigger.test.ts         | 153 +++++++++++++++++++++
 packages/engine/src/scheduler.ts                   |  20 ++-
 5 files changed, 203 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-9107

Fusion-Task-Lineage: a492d0c0-79ca-4dba-a7bc-c8fa54415f28

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 17:06:39 -07:00
gsxdsm
84bbdadab4 Merge branch 'mission/M-MSU1HV06-000V-4HPI' 2026-08-15 17:01:23 -07:00
gsxdsm
920bf8b022 FN-9105: document boot-smoke anomaly remeasurement
Confirm the W33 spike as cold-start variance and preserve a repeatable diagnosis protocol.

- Record five sequential phase-timed samples and the 20.5-second median threshold.
- Link the controlled remeasurement protocol from the testing guide.
- Explain the timing snapshot handoff and why incomplete CI artifacts were not published.
- Preserve the no-appeasement requirement beside boot-smoke phase timing.

Files changed:
 .../boot-smoke-w33-walltime-anomaly.md             | 100 +++++++++++++++++++++
 docs/testing.md                                    |   2 +-
 scripts/boot-smoke.mjs                             |   7 ++
 3 files changed, 108 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-9105

Fusion-Task-Lineage: 6956b037-db0f-4560-bb04-136080a975b5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 16:59:37 -07:00
gsxdsm
5e5b0dbb8f FN-9098: bridge scoped Fusion tools into Cursor
Publish engine-owned Fusion tools to Cursor through a crash-safe, worktree-scoped MCP bridge.

- preserve operator MCP configuration with locking, journaling, quarantine, and lease reconciliation
- enforce identity-scoped fn_* provenance so injected custom and MCP tools are never exposed
- secure loopback dispatch with per-session tokens, heartbeats, cleanup, and normalized tool events
- document the Cursor contract and cover bridge lifecycle, config hygiene, and failure handling

Files changed:
 .changeset/fn-9098-cursor-mcp-bridge.md            |   7 +
 docs/cursor-cli-contract.md                        | 140 ++-------------
 docs/mcp.md                                        |   4 +
 .../src/__tests__/agent-session-helpers.test.ts    |  24 +++
 .../src/__tests__/step-session-executor.test.ts    |  16 ++
 .../src/__tests__/web-fetch-universal.test.ts      |   4 +-
 packages/engine/src/agent-heartbeat.ts             |   3 +-
 packages/engine/src/agents/agent-runtime.ts        |   9 +
 .../engine/src/agents/agent-session-helpers.ts     |  26 +--
 packages/engine/src/execution/reviewer.ts          |   1 +
 .../engine/src/execution/step-session-executor.ts  |  31 ++--
 .../engine/src/executor/execute-workflow-step.ts   |   4 +-
 packages/engine/src/merger.ts                      |   4 +-
 plugins/fusion-plugin-cursor-runtime/README.md     |  18 +-
 plugins/fusion-plugin-cursor-runtime/package.json  |   2 +-
 .../src/__tests__/cursor-mcp-config.test.ts        | 100 +++++++++++
 .../cursor-mcp-server-failure.stream.jsonl         |   3 +
 .../fixtures/cursor-mcp-tool-call.stream.jsonl     |   4 +
 .../src/__tests__/runtime-adapter.test.ts          |  57 +++++-
 .../src/__tests__/worktree-hygiene.test.ts         |  52 ++++++
 .../src/cursor-mcp-config.ts                       | 196 +++++++++++++++++++++
 .../src/mcp-schema-server.cjs                      | 155 ++++++++++++++++
 .../src/prompt-transport.ts                        |   4 +-
 .../src/runtime-adapter.ts                         |  67 +++++--
 .../src/tool-bridge.ts                             |  48 +++++
 .../src/tool-mapping.ts                            |  11 ++
 plugins/fusion-plugin-cursor-runtime/src/types.ts  |   6 +-
 .../src/worktree-hygiene.ts                        | 117 ++++++++++++
 28 files changed, 934 insertions(+), 179 deletions(-)

Fusion-Task-Id: FN-9098

Fusion-Task-Lineage: 11b6cb10-ce0e-4f33-9007-c83f2bbf82ea

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 16:51:54 -07:00
gsxdsm
6a2de64381 fix: normalize Anthropic storage ids at the ModelRuntime.login choke point
Third incident of the same class (#1857/FN-7391, FN-9101, GitHub #3462):
Fusion's Anthropic auth-card/storage ids (anthropic-subscription,
anthropic-api-key) leaking into pi, which only registers the execution
provider 'anthropic'. FusionAuthStorage.login is the single seam that hands
a provider id to ModelRuntime.login; it now normalizes via
toExecutionModelProviderId so a future caller bug degrades to a correct
upstream anthropic login instead of a hard 'Unknown provider' failure, with
a regression test pinning the seam. The invariant, incident history, and
guard inventory are captured in
docs/solutions/integration-issues/anthropic-storage-ids-are-never-pi-provider-ids.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 14:52:38 -07:00
gsxdsm
c0e568bf78 FN-9100: fix staged Cursor core imports in CLI builds
Ensure staged plugin core runtime imports resolve reliably in packaged CLI builds.

- Export Cursor runtime core helpers from the CLI runtime shim.
- Guard staged plugin imports against undeclared or unavailable core exports.
- Add Cursor bundle coverage and document the focused packaging test.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-9100-staged-plugin-core-shim.md      |   7 +
 docs/testing.md                                    |   1 +
 .../__tests__/plugin-sdk-core-runtime-shim.test.ts |  40 +++-
 .../__tests__/staged-plugin-core-imports.test.ts   | 221 +++++++++++++++++++++
 packages/cli/src/plugin-sdk-core-runtime-shim.mjs  |  10 +-
 5 files changed, 272 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-9100

Fusion-Task-Lineage: 4c25ef74-065d-4e5a-86f2-e6f9a22500b3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 12:04:30 -07:00
gsxdsm
b6efd89ae5 FN-9097: add Cursor CLI execution runtime
Add a supervised Cursor CLI runtime for routed Cursor model sessions.

- Stream Cursor prompt output into Fusion session callbacks with resume support.
- Support Windows Cursor shims, inactivity-based supervision, and cursor-agent to cursor fallback execution.
- Route Cursor CLI models through the bundled plugin and document the runtime contract.

Files changed:
 .changeset/fn-9097-cursor-cli-runtime.md           |   7 ++
 docs/cursor-cli-contract.md                        |  21 ++++
 docs/settings-reference.md                         |   4 +-
 .../cli-runtime-routing-conformance.test.ts        |  11 +-
 .../engine/src/agents/agent-session-helpers.ts     |   6 +-
 packages/engine/src/agents/cli-provider-routing.ts |  27 ++---
 plugins/fusion-plugin-cursor-runtime/README.md     |  21 ++++
 plugins/fusion-plugin-cursor-runtime/package.json  |   1 +
 .../src/__tests__/cli-spawn.test.ts                |  25 ++++-
 .../src/__tests__/prompt-transport.test.ts         |  58 ++++++++++
 .../src/__tests__/runtime-adapter.test.ts          |  44 +++++---
 .../src/__tests__/stream-parser.test.ts            |  12 +++
 .../fusion-plugin-cursor-runtime/src/cli-spawn.ts  |  57 +++++++++-
 plugins/fusion-plugin-cursor-runtime/src/index.ts  |   4 +-
 .../src/prompt-transport.ts                        | 120 +++++++++++++++++++++
 .../src/runtime-adapter.ts                         |  59 ++++++----
 .../src/stream-parser.ts                           |  43 ++++++++
 plugins/fusion-plugin-cursor-runtime/src/types.ts  |  18 ++--
 pnpm-lock.yaml                                     |   3 +
 19 files changed, 458 insertions(+), 83 deletions(-)

Fusion-Task-Id: FN-9097

Fusion-Task-Lineage: a4eed861-6059-4528-9f80-3426f5ccad58

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 08:51:35 -07:00
gsxdsm
1d3f6c198c FN-9096: route CLI models through installed runtimes
Route every CLI-provider selection through an explicit installed-runtime policy.

- Centralize CLI provider classifications, runtime hints, fallback behavior, and actionable missing-runtime errors.
- Validate routing coverage statically and add conformance and integration tests for CLI runtime paths.
- Document runtime routing behavior and add a published CLI changeset.

Files changed: .changeset/fn-9096-cli-runtime-routing.md          |   7 +
 docs/settings-reference.md                         |  29 +++
 docs/testing.md                                    |   6 +-
 package.json                                       |   6 +-
 .../src/__tests__/cli-provider-routing.test.ts     |  74 ++++++++
 .../__tests__/cli-runtime-routing-check.test.ts    |  25 +++
 .../cli-runtime-routing-conformance.test.ts        | 210 +++++++++++++++++++++
 .../__tests__/hermes-runtime-integration.test.ts   |  28 +++
 .../engine/src/agents/agent-session-helpers.ts     | 166 ++++------------
 packages/engine/src/agents/cli-provider-routing.ts | 174 +++++++++++++++++
 scripts/check-cli-runtime-routing.mjs              |  26 +++
 scripts/lib/cli-runtime-routing-check.mjs          |  84 +++++++++
 12 files changed, 701 insertions(+), 134 deletions(-)

Fusion-Task-Id: FN-9096

Fusion-Task-Lineage: f9f6a434-b28d-4ebb-816a-53ca75efc2c4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 07:19:29 -07:00
gsxdsm
284feeaf11 FN-9092: prevent model menus from dismissing host dialogs
Keep portaled model-menu interaction from propagating to host dialog dismissal.

- Mark model-menu portal surfaces and stop their pointer events from reaching dialog backdrops.
- Apply the dismissal guard across agent, chat, floating-window, and model-selection dialogs.
- Close enabled overlays on valid touch taps while suppressing duplicate compatibility mouse closes.
- Add desktop and mobile regression coverage for portal-host dismissal behavior.

Files changed:
 .../fn-9092-model-filter-dialog-dismissal.md       |   7 +
 .../ui-bugs/portaled-model-menu-host-dismissal.md  |  19 +++
 packages/dashboard/app/components/AgentsView.tsx   |   6 +
 .../app/components/ChatThinkingLevelControl.tsx    |  17 ++-
 packages/dashboard/app/components/ChatView.tsx     |  38 +++--
 .../app/components/CustomModelDropdown.tsx         |  13 +-
 .../dashboard/app/components/FloatingWindow.tsx    |  17 +--
 .../app/components/ModelSelectionModal.tsx         |  17 +--
 .../dashboard/app/components/NewAgentDialog.tsx    |  12 +-
 .../dashboard/app/components/QuickEntryBox.tsx     |   5 +-
 .../ChatThinkingLevelControl.portal.test.tsx       |   9 ++
 .../__tests__/CustomModelDropdown.test.tsx         |  24 ++-
 .../__tests__/ModelSelectionModal.test.tsx         |   3 +-
 .../NewAgentDialog.portal-dismissal.test.tsx       |  77 ++++++++++
 .../components/__tests__/NewAgentDialog.test.tsx   |  11 ++
 .../model-menu-filter-host-dismissal.test.tsx      | 163 +++++++++++++++++++++
 .../app/hooks/__tests__/useOverlayDismiss.test.tsx |   7 +-
 packages/dashboard/app/hooks/useOverlayDismiss.ts  |  26 +++-
 .../app/utils/__tests__/portalSurfaces.test.ts     |  31 ++++
 packages/dashboard/app/utils/portalSurfaces.ts     |  31 ++++
 20 files changed, 469 insertions(+), 64 deletions(-)

Fusion-Task-Id: FN-9092

Fusion-Task-Lineage: a0d0b84d-2efe-4a67-9485-77c08f7cc57e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 06:42:39 -07:00
gsxdsm
b26894e0dd FN-9095: move spec alignment details to Definition tab bottom
Place low-frequency spec alignment provenance after plan and relationship content.\n\n- Move the Definition-tab spec-lock report to the final section.\n- Cover populated, unavailable, and absent spec-lock report states.\n- Document the placement and add a patch changeset.\n\nFiles changed:\n .changeset/fn-9095-spec-alignment-position.md      |  7 ++\n docs/dashboard-guide.md                            |  2 +-\n .../dashboard/app/components/TaskDetailModal.tsx   | 87 +++++++++++-----------\n .../__tests__/TaskDetailModal.spec-lock.test.tsx   | 63 ++++++++++++++++\n 4 files changed, 115 insertions(+), 44 deletions(-)

Fusion-Task-Id: FN-9095

Fusion-Task-Lineage: c017325c-b7c1-4f0e-abab-49462903a778

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 06:09:09 -07:00
gsxdsm
8d8ea26cb2 FN-9094: omit unsupported Grok auto-update flag
Align Grok ACP expectations with the released CLI contract.

- Update runtime routing and adapter assertions to omit --no-auto-update by default.
- Cover explicit false and default argument behavior in ACP settings tests.
- Document the released CLI incompatibility and opt-in escape hatch.

Files changed:
 docs/grok-cli-contract.md                                  |  7 ++++---
 packages/engine/src/__tests__/grok-runtime-routing.test.ts | 14 +++++++++-----
 .../src/__tests__/acp-settings.test.ts                     |  2 ++
 .../src/__tests__/runtime-adapter.test.ts                  | 14 ++++++++++----
 4 files changed, 25 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-9094

Fusion-Task-Lineage: f776e401-8473-45b2-a8b2-8d8251b4713e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 05:58:36 -07:00
gsxdsm
9fa8b386ee FN-9059: add durable workspace coordination leases
Prevent overlapping multi-node workspace operations and duplicate repository landings.

- Add durable coordination leases, fence tokens, and land-intent persistence.
- Fence workspace merge dispatches and repository publication across engine nodes.
- Reconcile expired coordination state safely and cover lease lifecycle behavior.

Files changed:
 .../fn-9059-workspace-durable-coordination.md      |   7 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   2 +
 docs/multi-project.md                              |  48 ++++
 .../workspace-coordination-leases.pg.test.ts       |  56 ++++
 .../__tests__/postgres/workspace-leases.pg.test.ts | 112 ++++++++
 packages/core/src/engine-node-identity.ts          |  22 ++
 packages/core/src/index.ts                         |   3 +
 .../0060_fn_9059_workspace_coordination_leases.sql |  10 +
 packages/core/src/postgres/schema-applier.ts       |  13 +-
 packages/core/src/postgres/schema/project.ts       |  31 ++
 packages/core/src/store.ts                         |  18 ++
 packages/core/src/task-store/workspace-leases.ts   | 261 +++++++++++++++++
 packages/core/src/tasks/workspace-lease-types.ts   |  24 ++
 .../engine/src/__tests__/project-engine.test.ts    |  69 ++++-
 .../src/__tests__/self-healing-workspace.test.ts   |  63 ++++-
 .../workspace-durable-coordination.test.ts         |  49 ++++
 .../src/__tests__/workspace-merger-lease.test.ts   | 312 ++++++++++++++++++++-
 packages/engine/src/merge/merger-ai.ts             | 277 ++++++++++++++++--
 packages/engine/src/merge/workspace-fence-ref.ts   | 171 +++++++++++
 packages/engine/src/project-engine.ts              | 175 ++++++++++--
 packages/engine/src/runtimes/in-process-runtime.ts |   4 +-
 packages/engine/src/self-healing.ts                | 191 ++++++++++++-
 packages/engine/src/util/run-audit.ts              |   2 +
 .../engine/src/worktree/worktree-acquisition.ts    |  43 ++-
 25 files changed, 1901 insertions(+), 63 deletions(-)

Fusion-Task-Id: FN-9059

Fusion-Task-Lineage: e51e3f54-69ee-4337-a218-4895d87474aa

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 03:22:13 -07:00
gsxdsm
2f99a8fb59 FN-9052: add atomic workspace worktree entry merges
Serialize per-repository workspace worktree state updates across concurrent Fusion processes.

- Add advisory-locked store-level per-entry workspace worktree merges.
- Route acquisition, landing, failure, and recovery updates through atomic merges.
- Cover concurrent sibling repository writes and document the invariant.

Files changed:
 .../fn-9052-workspace-worktree-atomic-merge.md     |  7 ++
 docs/architecture.md                               |  1 +
 ...workspace-worktrees-concurrent-merge.pg.test.ts | 90 ++++++++++++++++++++++
 packages/core/src/store.ts                         | 10 ++-
 packages/core/src/task-store/task-mutation-ops.ts  | 52 ++++++++++++-
 packages/core/src/types.ts                         |  2 +
 packages/core/src/types/task/task-core.ts          | 17 +++-
 .../merge-orphan-body-durable-writes.test.ts       |  8 ++
 .../src/__tests__/self-healing-workspace.test.ts   | 49 +++++++++---
 .../src/__tests__/workspace-merger-lease.test.ts   | 12 +++
 .../engine/src/__tests__/workspace-merger.test.ts  | 12 +--
 .../worktree-acquisition-workspace.test.ts         | 82 +++++++++++++++++++-
 packages/engine/src/merge/merger-ai.ts             | 21 ++---
 .../engine/src/merge/workspace-land-failure.ts     | 19 +++--
 packages/engine/src/self-healing.ts                | 15 +++-
 .../engine/src/worktree/worktree-acquisition.ts    | 25 +++---
 16 files changed, 370 insertions(+), 52 deletions(-)

Fusion-Task-Id: FN-9052

Fusion-Task-Lineage: 2168085a-74a7-4a0f-954e-50db99eb98b7

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 01:14:43 -07:00
gsxdsm
7bb7d450e6 FN-9062: surface workspace repository land status
Expose per-repository workspace landing progress and failures in Task Detail.

- Persist display-only repository land failure breadcrumbs during merge and recovery
- Render landed, pending, and failed repository statuses with partial-land detail
- Document the workspace status behavior and add coverage for UI and recovery paths

Files changed:
 .changeset/fn-9062-workspace-land-status.md        |   7 ++
 docs/dashboard-guide.md                            |   4 +
 packages/core/src/types/task/task-core.ts          |  11 ++-
 .../dashboard/app/components/TaskDetailModal.css   |  33 +++++++
 .../app/components/WorkspaceWorktreesSummary.tsx   | 106 ++++++++-------------
 .../__tests__/WorkspaceWorktreesSummary.test.tsx   |  46 ++++++++-
 .../src/__tests__/self-healing-workspace.test.ts   |  19 ++++
 .../engine/src/__tests__/workspace-merger.test.ts  |   6 ++
 packages/engine/src/merge/merger-ai.ts             |   7 +-
 .../engine/src/merge/workspace-land-failure.ts     |  21 ++++
 packages/engine/src/self-healing.ts                |  16 ++++
 11 files changed, 208 insertions(+), 68 deletions(-)

Fusion-Task-Id: FN-9062

Fusion-Task-Lineage: 8c12b9f9-f6ed-4766-a6f1-49cdf9ea8926

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 00:48:23 -07:00
gsxdsm
43889bc684 FN-9058: block workspace main-checkout edits
Prevent workspace tasks from completing after task-era edits in configured sub-repository main checkouts.

- Detect dirty and recent commit evidence across every workspace main checkout before invariant checks.
- Block attributable edits with bounded retries while warning safely for inconclusive evidence.
- Add audit telemetry, documentation, changeset, and real-git regression coverage.

Files changed:
 .../fn-9058-workspace-main-checkout-guard.md       |   7 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   1 +
 .../engine/src/__tests__/_workspace-fixture.ts     |   3 +-
 .../executor-workspace-main-checkout-guard.test.ts | 164 +++++++++++++++++++++
 packages/engine/src/executor/execution-prompt.ts   |   3 +-
 .../src/executor/workspace-main-checkout-guard.ts  | 128 ++++++++++++++++
 .../src/executor/worktree-verify-invariants.ts     |  45 +++++-
 packages/engine/src/util/run-audit.ts              |   2 +
 9 files changed, 351 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-9058

Fusion-Task-Lineage: b5dd58bd-4bd9-41fd-b3d5-e07270f3abca

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 00:41:44 -07:00
gsxdsm
c7779e44ac FN-9055: guard archive disposal of live workspace worktrees
Prevent archive cleanup from removing worktrees that still belong to live tasks.

- Add shared archive liveness evaluation and transactional refusal guards.
- Require CLI and extension archive operations to refuse live tasks unless a human uses --force.
- Protect baseline archive worktree disposal and cover CLI, core, and engine paths with tests.

Files changed:
 .changeset/fn-9055-archive-live-worktree-guard.md  |  7 ++
 docs/cli-reference.md                              |  4 +-
 docs/task-management.md                            |  4 +-
 .../extension-task-archive-live-guard.test.ts      | 82 +++++++++++++++++++
 packages/cli/src/bin.ts                            |  6 +-
 packages/cli/src/commands/__tests__/task.test.ts   | 66 ++++++++++++++-
 packages/cli/src/commands/task.ts                  | 49 +++++++++---
 packages/cli/src/extension.ts                      | 25 ++++--
 .../src/__tests__/archive-live-task-guard.test.ts  | 70 ++++++++++++++++
 .../postgres/archive-live-task-fence.pg.test.ts    | 69 ++++++++++++++++
 .../src/__tests__/task-archive-liveness.test.ts    | 19 +++++
 packages/core/src/index.ts                         | 10 +++
 packages/core/src/store.ts                         |  4 +-
 .../core/src/task-store/archive-lifecycle-2.ts     | 27 +++++--
 packages/core/src/task-store/archive-lifecycle.ts  | 20 ++---
 .../src/task-store/async/async-archive-lineage.ts  | 17 +++-
 packages/core/src/tasks/task-archive-liveness.ts   | 56 +++++++++++++
 ...chive-baseline-disposer-live-task-guard.test.ts | 93 ++++++++++++++++++++++
 .../healing/archive-worktree-disposer-install.ts   | 15 +++-
 19 files changed, 592 insertions(+), 51 deletions(-)

Fusion-Task-Id: FN-9055

Fusion-Task-Lineage: 08644626-cc61-4854-abb9-5b415ddc9491

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 00:35:12 -07:00
gsxdsm
1372218b1f FN-9047: invalidate stale workspace landing proof after revert
Preserve workspace landing attribution while allowing cleanly reverted work to land again.

- Record a per-repository revert boundary after clean git-mode workspace reverts.
- Reject recorded and trailer landing proof at or behind that boundary, then clear it on a fresh landing.
- Persist boundaries through the revert route and cover re-land behavior with git tests.

Files changed:
 .changeset/fn-9047-workspace-revert-landed-sha.md  |  7 +++
 docs/architecture.md                               |  2 +
 packages/core/src/types/task/task-core.ts          |  7 ++-
 .../src/routes/register-session-diff-routes.ts     |  2 +-
 .../src/routes/register-task-workflow-routes.ts    | 11 ++++
 .../task-revert.workspace.real-git.test.ts         | 27 ++++++++++
 ...orkspace-land-predicate.revert-boundary.test.ts | 60 ++++++++++++++++++++++
 packages/engine/src/execution/task-revert.ts       | 42 +++++++++++++--
 packages/engine/src/index.ts                       |  1 +
 packages/engine/src/merge/merger-ai.ts             |  5 +-
 .../engine/src/merge/workspace-land-predicate.ts   | 25 +++++++--
 packages/engine/src/self-healing.ts                |  9 +++-
 12 files changed, 185 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-9047

Fusion-Task-Lineage: 8ac41347-3c76-4f54-8d69-f16f82084305

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 00:02:52 -07:00
gsxdsm
4bc0a32d60 FN-9050: enforce AI squash scope and diff-volume gates
Validate approved AI squashes before any integration ref advances.

- Enforce task file scope and diff-volume checks for single-repo and workspace lands.
- Reset rejected clean rooms to the integration tip so invalid approved squashes cannot be recovered on retry.
- Add audit events, documentation, a changeset, and regression coverage for land gates.

Files changed:
 .changeset/fn-9050-ai-merge-scope-gates.md         |   7 +
 docs/architecture.md                               |   2 +
 docs/workflow-steps.md                             |   4 +-
 .../src/__tests__/merger-ai-squash-gates.test.ts   | 188 +++++++++++++++++++++
 .../__tests__/merger-file-scope-invariant.test.ts  |  29 ++++
 .../__tests__/workspace-merger-scope-gates.test.ts | 118 +++++++++++++
 .../engine/src/merge/merger-ai-squash-gates.ts     |  66 ++++++++
 packages/engine/src/merge/merger-ai.ts             |  21 ++-
 .../engine/src/merge/merger-diff-volume-gate.ts    |  14 +-
 packages/engine/src/merge/merger-file-scope.ts     |  33 +++-
 packages/engine/src/util/run-audit.ts              |   1 +
 11 files changed, 474 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-9050

Fusion-Task-Lineage: 9ecd8b8c-5c00-45ea-98e9-2aa8a8040c53

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 23:42:52 -07:00
gsxdsm
6896f1d7f3 FN-9045: wire workspace mode toggle to workspace config
Connect workspace-mode settings updates to the runtime workspace configuration lifecycle.

- Synchronize workspace.json and config.json when workspace mode changes.
- Reconcile settings events and executor state after successful or failed toggles.
- Add dashboard route, UI copy, localization, documentation, and regression coverage.

Files changed:
 .changeset/fn-9045-workspace-mode-toggle.md        |   7 +
 docs/settings-reference.md                         |   2 +-
 .../settings-workspace-toggle-side-effect.test.ts  | 178 +++++++++++++++++++++
 .../src/__tests__/workspace-mode-toggle.test.ts    |  71 ++++++++
 packages/core/src/git/git-repository.ts            | 147 ++++++++++++++++-
 packages/core/src/index.gate.ts                    |   6 +
 packages/core/src/index.ts                         |   6 +
 packages/core/src/task-store/settings-ops.ts       |  86 +++++++++-
 packages/core/src/types/settings/settings-scope.ts |  11 +-
 .../settings/sections/GeneralSection.tsx           |  10 +-
 .../settings-workspace-mode-route.test.ts          | 148 +++++++++++++++++
 .../src/routes/register-settings-memory-routes.ts  |  18 +++
 .../executor-workspace-toggle-invalidation.test.ts |  64 ++++++++
 .../engine/src/executor/task-executor-state.ts     |   6 +
 .../src/executor/workspace-config-resolver.ts      |  16 +-
 packages/engine/src/runtimes/in-process-runtime.ts |  12 ++
 packages/i18n/locales/en/app.json                  |   2 +-
 packages/i18n/locales/es/app.json                  |   4 +-
 packages/i18n/locales/fr/app.json                  |   4 +-
 packages/i18n/locales/ko/app.json                  |   4 +-
 packages/i18n/locales/pt-BR/app.json               |   4 +-
 packages/i18n/locales/zh-CN/app.json               |   4 +-
 packages/i18n/locales/zh-TW/app.json               |   4 +-
 23 files changed, 791 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-9045

Fusion-Task-Lineage: e382726f-8409-4983-94ef-93f341a6adbf

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 23:33:36 -07:00
gsxdsm
892afaaf03 FN-9048: clear disposed workspace state on unarchive
Prevent disposed workspace metadata from being revived when archived tasks return.

- Reconcile missing workspace and singular worktree paths during archive restore.
- Preserve surviving workspace entries and cover archive-to-restore recovery behavior.
- Document the restore lifecycle and add a patch changeset.

Files changed:
 .changeset/fn-9048-workspace-unarchive.md          |   7 ++
 docs/task-management.md                            |   2 +-
 .../archive-restore-workspace-worktrees.pg.test.ts |  70 +++++++++++++
 .../core/src/task-store/archive-lifecycle-2.ts     |   8 +-
 .../src/task-store/async/async-archive-lineage.ts  |  43 ++++++++
 .../src/__tests__/self-healing-workspace.test.ts   | 111 ++++++++++++++++++++-
 6 files changed, 236 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-9048

Fusion-Task-Lineage: fa9b9359-5fab-497f-87ce-0174d8069d99

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 23:22:05 -07:00
gsxdsm
db8e715452 FN-9056: reclaim safe terminal workspace worktrees
Reclaim safely abandoned workspace worktrees and canonical task branches without disrupting live or recoverable tasks.

- Tear down eligible complete, idle failed, and soft-deleted per-repository worktrees with bounded retries.
- Veto live, paused, scheduled-recovery, ambiguous, and unsafe-path cleanup candidates.
- Verify failed-task landing evidence against each repository integration branch before deleting canonical branches.
- Cover liveness and stale landed-SHA safety regressions.

Files changed:
 .changeset/fn-9056-workspace-terminal-teardown.md  |   7 +
 AGENTS.md                                          |   2 +-
 docs/architecture.md                               |   1 +
 .../src/__tests__/self-healing-workspace.test.ts   | 319 ++++++++++++++++++++-
 .../engine/src/executor/cleanup-task-worktree.ts   |   8 +-
 packages/engine/src/self-healing.ts                | 268 ++++++++++++-----
 packages/engine/src/util/run-audit.ts              |   7 +-
 7 files changed, 525 insertions(+), 87 deletions(-)

Fusion-Task-Id: FN-9056

Fusion-Task-Lineage: 4353f7d9-063b-442b-88d3-6f3da1c9aae8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 23:14:19 -07:00
gsxdsm
d77b427b8c FN-9063: document multi-repository workspace mode
Document workspace setup, operation, recovery, and lifecycle guidance for operators.

- Add a dedicated multi-repository workspace guide.
- Link workspace mode from onboarding, settings, task management, and project documentation.
- Cover the documentation contract with focused dashboard tests.

Files changed:
 docs/README.md                                     |   1 +
 docs/getting-started.md                            |   2 +-
 docs/multi-project.md                              |   2 +-
 docs/settings-reference.md                         |   1 +
 docs/task-management.md                            |   4 +-
 docs/workspaces.md                                 | 129 +++++++++++++++++++++
 packages/dashboard/src/__tests__/workspace-documentation.test.ts |  74 ++++++++++++
 7 files changed, 209 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-9063

Fusion-Task-Lineage: b79baa34-fcd7-47ed-89de-b4637160c305

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 22:25:15 -07:00
gsxdsm
ebd345da0f FN-9060: reconcile zero-acquire workspace completion reviews
Align workspace completion and per-repo review behavior for tasks with no acquired worktrees.

- Centralize zero-acquire classification for completion and review paths.
- Approve proven commit-free tasks and immediately route deterministic unavailable reviews.
- Add regression coverage, workflow documentation, and a patch changeset.

Files changed:
 .changeset/fn-9060-workspace-zero-acquire.md       |  7 +++
 docs/workflow-steps.md                             |  2 +-
 .../__tests__/executor-workspace-taskdone.test.ts  | 14 +++++
 .../src/__tests__/executor-workspace.test.ts       | 10 ++--
 .../src/__tests__/reviewer-workspace.test.ts       | 37 +++++++++++++-
 .../src/__tests__/workflow-step-review.test.ts     | 14 +++++
 .../src/__tests__/workspace-zero-acquire.test.ts   | 59 ++++++++++++++++++++++
 packages/engine/src/execution/reviewer.ts          |  7 +++
 .../create-authoritative-workflow-seams.ts         | 26 ++++++++--
 .../src/executor/workspace-review-per-repo.ts      | 32 +++++++++---
 .../engine/src/executor/workspace-zero-acquire.ts  | 53 +++++++++++++++++++
 .../engine/src/executor/worktree-verify-invariants.ts | 31 ++++++++----
 .../engine/src/workflows/workflow-node-handlers.ts | 14 +++--
 13 files changed, 274 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-9060

Fusion-Task-Lineage: eb88f881-7db2-49d2-b79a-796eacd4fa40

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 22:16:44 -07:00
gsxdsm
da4e4bca44 FN-9053: prevent workspace acquisition from persisting singular worktrees
Keep workspace tasks classified as multi-repository throughout sub-repository worktree acquisition.

- Suppress singular worktree and branch persistence for workspace sub-repo acquisition.
- Preserve the single-repository persistence contract and add regression coverage for acquisition failures.
- Document the workspace acquisition-state invariant and add a patch changeset.

Files changed:
 .../fn-9053-workspace-acquisition-atomicity.md     |  7 ++
 docs/architecture.md                               |  1 +
 .../worktree-acquisition-workspace.test.ts         | 98 ++++++++++++++++++++--
 .../engine/src/worktree/worktree-acquisition.ts    | 66 +++++++++------
 4 files changed, 142 insertions(+), 30 deletions(-)

Fusion-Task-Id: FN-9053

Fusion-Task-Lineage: e27d1e90-fc99-4bb6-ac83-033f71abc521

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 22:03:16 -07:00
gsxdsm
495845023d FN-9061: gate workspace foreach worktree isolation
Reject unsupported workspace projects before per-instance foreach worktree allocation.

- Add a workspace-isolation guard at graph execution and worktree allocation seams.
- Propagate workspace configuration probing through foreach dependencies.
- Cover workspace and non-workspace behavior, and document the limitation.

Files changed: .../fn-9061-foreach-workspace-isolation-gate.md    |  7 +++
 docs/workflow-steps.md                             |  2 +
 .../workflow-foreach-workspace-isolation.test.ts   | 72 ++++++++++++++++++++++
 .../src/__tests__/workflow-graph-foreach.test.ts   | 56 +++++++++++++++++
 .../src/executor/build-foreach-worktree-deps.ts    | 34 +++++++++-
 packages/engine/src/executor/deps-bags.ts          |  1 +
 .../src/workflows/workflow-graph-executor.ts       |  3 +
 .../engine/src/workflows/workflow-graph-foreach.ts | 17 +++++
 .../src/workflows/workflow-graph-task-runner.ts    |  2 +
 9 files changed, 193 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-9061

Fusion-Task-Lineage: 38772936-a45f-41f1-b7ee-7999997404db

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 21:44:18 -07:00
gsxdsm
52a28d39ff feat: add per-task GitHub tracking overrides to task create (fn_task_create + CLI)
fn_task_create gains github_tracking/github_repo params and fn task create
gains --github/--no-github/--github-repo flags, resolved through
resolveTaskGithubTracking (task > project > global). CLI create now also
honors the project/global tracking-enabled default it previously ignored;
explicit disables persist enabled:false so later default flips cannot
re-enable a task.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 21:12:15 -07:00
gsxdsm
0188d9427b FN-9044: group workspace tasks by acquired worktrees
Show workspace-mode task cards in their own worktree group instead of Unassigned.

- Classify workspace worktree groups with stable identifiers and repository counts.
- Render localized workspace headers and appropriate group icons.
- Cover workspace grouping across utilities, columns, lanes, and group headers.
- Document the board behavior and add a patch changeset.

Files changed:
 .changeset/fn-9044-workspace-worktree-grouping.md  |  7 ++
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/Column.tsx       |  4 +-
 .../dashboard/app/components/WorktreeGroup.tsx     | 20 ++++--
 .../app/components/__tests__/Column.test.tsx       | 32 ++++++++-
 .../app/components/__tests__/Lane.test.tsx         | 24 ++++++-
 .../__tests__/worktree-grouping-workspace.test.tsx | 66 +++++++++++++++++
 .../app/utils/__tests__/worktreeGrouping.test.ts   | 82 ++++++++++++++++++++++
 packages/dashboard/app/utils/worktreeGrouping.ts   | 37 ++++++++--
 packages/i18n/locales/en/app.json                  |  4 +-
 packages/i18n/src/resources.d.ts                   |  4 +-
 11 files changed, 267 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-9044

Fusion-Task-Lineage: d342d4fb-9fab-4efd-813f-2a3091d7c414

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 20:50:55 -07:00
gsxdsm
ba643fc384 FN-9042: fix dashboard update installation feedback
Make dashboard update actions report clear terminal outcomes and avoid unsupported installs.

- Distinguish update checks, no-op responses, installation failures, and unsupported installation methods.
- Block source-checkout, Homebrew, and missing-npm global installation attempts with actionable guidance.
- Surface update results in dashboard controls and cover API, updater, and UI behavior with tests.

Files changed:
 .changeset/fn-9042-update-now-outcomes.md          |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/dashboard/app/api/settings/settings.ts    |   2 +
 .../dashboard/app/components/SettingsModal.tsx     |  18 +--
 .../app/components/UpdateAvailableBanner.tsx       |  11 +-
 .../__tests__/SettingsModal.general.test.tsx       |  20 ++++
 .../__tests__/UpdateAvailableBanner.test.tsx       |  19 ++++
 .../dashboard/src/__tests__/auto-update.test.ts    |  38 ++++++-
 .../dashboard/src/__tests__/update-check.test.ts   |  19 +++-
 packages/dashboard/src/auto-update.ts              |  33 +++++-
 .../__tests__/register-update-check-routes.test.ts | 104 ++++++++++++++++++
 .../src/routes/register-update-check-routes.ts     |  28 +++--
 packages/dashboard/src/server.ts                   |   9 +-
 packages/dashboard/src/update-check.ts             | 122 ++++++++++-----------
 15 files changed, 338 insertions(+), 96 deletions(-)

Fusion-Task-Id: FN-9042

Fusion-Task-Lineage: 22ae5540-e5b5-43cf-ad16-c7aa05782593

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 12:59:23 -07:00
gsxdsm
b7604a94bf FN-9041: remove agent state-change activity logs
Remove durable agent state-change events and hide retained state-change rows from activity displays.

- Stop AgentStore update and reconciliation paths from writing state-change activity events.
- Filter historical state-change events in activity stores and panels while retaining live roster notifications.
- Document the retained activity contract, add coverage, and include a patch changeset.

Files changed:
 .changeset/fn-9041-removal.md                      |  7 ++++
 docs/agent-activity-contract.md                    |  4 ++
 docs/architecture.md                               |  2 +-
 docs/dashboard-guide.md                            |  2 +-
 .../src/__tests__/agent-activity-writers.test.ts   | 23 ++++++-----
 packages/core/src/agents/agent-store.ts            | 28 +++++--------
 .../app/components/agentsOrgChartActivity.ts       | 12 ++++++
 .../command-center/AgentActivityPanel.tsx          | 25 +++++++----
 .../__tests__/AgentActivityPanel.test.tsx          | 48 ++++++++++++++++++++++
 .../app/hooks/__tests__/agentActivityStore.test.ts | 39 +++++++++++++++++-
 packages/dashboard/app/hooks/agentActivityStore.ts |  3 +-
 11 files changed, 153 insertions(+), 40 deletions(-)

Fusion-Task-Id: FN-9041

Fusion-Task-Lineage: 532724b1-5945-4904-b5cd-2c27909805de

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 12:41:03 -07:00
gsxdsm
873f339ddd FN-9040: show backup status and preserve schedules
Expose database backup inventory and schedule execution evidence while keeping scheduled backups due after unchanged settings saves.

- Display backup files, empty and error states, and automatic schedule details in Settings.
- Reconcile the shared backup routine at engine startup and retain its next run when settings are unchanged.
- Add API, localization, documentation, and regression coverage for backup status and scheduling.

Files changed:
 .changeset/fn-9040-database-backups-visibility.md  |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   4 +
 .../src/__tests__/backup-schedule-status.test.ts   | 124 +++++++++++++++++++++
 .../core/src/automation/global-routine-store.ts    |  31 +++++-
 packages/core/src/backup/backup.ts                 |  95 ++++++++++++++--
 packages/core/src/index.gate.ts                    |   4 +-
 packages/core/src/index.ts                         |   4 +-
 .../app/api/agents/agent-import-generation.ts      |  14 +++
 packages/dashboard/app/api/legacy.ts               |   1 +
 .../dashboard/app/components/SettingsModal.tsx     |  12 +-
 .../__tests__/SettingsModal.test-harness.tsx       |   7 +-
 .../__tests__/SettingsModalNodeRouting.test.tsx    |   2 +-
 .../components/__tests__/settings-mobile.test.tsx  |   2 +-
 .../settings/sections/DatabaseBackupsSection.css   |  24 ++++
 .../settings/sections/DatabaseBackupsSection.tsx   |  67 ++++++-----
 .../__tests__/DatabaseBackupsSection.test.tsx      |  45 ++++++++
 .../register-system-maintenance-routes.test.ts     |  47 +++++++-
 .../routes/register-system-maintenance-routes.ts   |  46 ++++++--
 .../src/__tests__/in-process-runtime.pg.test.ts    |  15 ++-
 packages/engine/src/runtimes/in-process-runtime.ts |  13 +++
 packages/i18n/locales/en/app.json                  |  17 ++-
 packages/i18n/locales/es/app.json                  |  17 ++-
 packages/i18n/locales/fr/app.json                  |  17 ++-
 packages/i18n/locales/ko/app.json                  |  17 ++-
 packages/i18n/locales/pt-BR/app.json               |  17 ++-
 packages/i18n/locales/zh-CN/app.json               |  17 ++-
 packages/i18n/locales/zh-TW/app.json               |  17 ++-
 packages/i18n/src/resources.d.ts                   |  28 ++++-
 29 files changed, 623 insertions(+), 90 deletions(-)

Fusion-Task-Id: FN-9040

Fusion-Task-Lineage: 29a803a2-0784-4a99-b7cb-2f67d105254b

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 17:22:46 -07:00
gsxdsm
bebb46ff41 FN-9037: add indexed recommendation task lookups
Keep recommendation task creation responsive without changing duplicate-intake semantics.

- Add project-scoped proposal claim and source-lineage persistence reads with supporting indexes.
- Use bounded lookups for recommendation replay and same-agent duplicate intake.
- Resolve terminal lanes from each candidate's workflow and cover the indexed query paths.

Files changed:
 .changeset/fn-9037-recommendation-create-perf.md   |   7 ++
 docs/storage.md                                    |   4 +
 .../intake-duplicate-terminal-lanes.test.ts        |   3 +-
 .../postgres/proposal-claim-lookup.pg.test.ts      | 106 +++++++++++++++++++++
 .../__tests__/same-agent-duplicate-intake.test.ts  |  14 ++-
 .../0059_fn_9037_tasks_source_agent_index.sql      |   3 +
 packages/core/src/postgres/schema-applier.ts       |  12 ++-
 packages/core/src/postgres/schema/project.ts       |   3 +
 packages/core/src/store.ts                         |   8 +-
 .../core/src/task-store/async/async-persistence.ts |  40 ++++++++
 packages/core/src/task-store/reads.ts              |  18 +++-
 packages/core/src/task-store/task-creation.ts      |  10 +-
 .../__tests__/task-recommendation-routes.test.ts   |  38 +++++++-
 .../src/routes/register-task-workflow-routes.ts    |  20 ++--
 14 files changed, 259 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-9037
Fusion-Task-Lineage: ea44d65c-98cc-4a5b-a116-b3c28f14c292
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 17:13:56 -07:00
gsxdsm
dad726c777 FN-9038: add Knowledge Graph tab to Memory view
Expose knowledge graph data in the Memory view through a localized, resilient dashboard panel.

- Add protected knowledge graph API routes and access helpers.
- Add a Memory view tab, graph panel, loading/error states, and localized labels.
- Document graph navigation and cover access, route, hook, and component behavior.

Files changed:
 .changeset/fn-9038-knowledge-graph-tab.md          |   7 +
 docs/dashboard-guide.md                            |   2 +
 docs/knowledge-graph.md                            |  10 ++
 packages/dashboard/app/api/legacy.ts               |  17 ++-
 packages/dashboard/app/api/system/index.ts         |   1 +
 .../dashboard/app/api/system/knowledge-graph.ts    |  23 +++
 .../app/components/KnowledgeGraphPanel.css         |  35 +++++
 .../app/components/KnowledgeGraphPanel.tsx         |  68 +++++++++
 packages/dashboard/app/components/MemoryView.tsx   |  15 +-
 .../__tests__/KnowledgeGraphPanel.test.tsx         |  49 +++++++
 .../app/components/__tests__/MemoryView.test.tsx   |  13 ++
 .../app/hooks/__tests__/useKnowledgeGraph.test.ts  |  66 +++++++++
 packages/dashboard/app/hooks/useKnowledgeGraph.ts  |  94 ++++++++++++
 .../src/__tests__/knowledge-graph-access.test.ts   |  88 ++++++++++++
 packages/dashboard/src/knowledge-graph-access.ts   | 160 +++++++++++++++++++++
 .../register-knowledge-graph-routes.test.ts        |  75 ++++++++++
 .../src/routes/register-knowledge-routes.ts        | 120 ++++++++++++++++
 packages/i18n/locales/en/app.json                  |  15 +-
 packages/i18n/locales/es/app.json                  |  15 +-
 packages/i18n/locales/fr/app.json                  |  15 +-
 packages/i18n/locales/ko/app.json                  |  15 +-
 packages/i18n/locales/pt-BR/app.json               |  15 +-
 packages/i18n/locales/zh-CN/app.json               |  15 +-
 packages/i18n/locales/zh-TW/app.json               |  15 +-
 24 files changed, 939 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-9038

Fusion-Task-Lineage: 4200e214-ad22-4f92-b980-c9bcb8ffd3b9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 16:48:01 -07:00
gsxdsm
d1bb5f4eb0 FN-9039: fix voice runtime detection and add recheck action
Correct voice runtime detection for CommonJS Sherpa bindings and let operators re-check a repaired runtime.

- Resolve default and module.exports CommonJS bindings before reporting compatibility.
- Add a runtime re-check API and disabled-state Settings action.
- Localize and document the recovery flow with route, service, and UI coverage.

Files changed:
 .changeset/fn-9039-voice-runtime-interop.md        |  7 ++++
 docs/dashboard-guide.md                            |  2 +-
 docs/settings-reference.md                         | 11 +++--
 .../settings/__tests__/VoiceInputSection.test.tsx  | 47 ++++++++++++++++++++++
 .../settings/sections/VoiceInputSection.tsx        | 13 ++++++
 packages/dashboard/src/routes/README.md            | 11 +++--
 .../routes/__tests__/register-voice-routes.test.ts | 30 ++++++++++++++
 .../dashboard/src/routes/register-voice-routes.ts  | 10 ++++-
 .../dashboard/src/stt/__tests__/voice-stt.test.ts  | 37 ++++++++++++++++-
 packages/dashboard/src/stt/parakeet-service.ts     | 30 ++++++++++++--
 packages/i18n/locales/en/app.json                  |  4 +-
 packages/i18n/locales/es/app.json                  |  4 +-
 packages/i18n/locales/fr/app.json                  |  4 +-
 packages/i18n/locales/ko/app.json                  |  4 +-
 packages/i18n/locales/pt-BR/app.json               |  4 +-
 packages/i18n/locales/zh-CN/app.json               |  4 +-
 packages/i18n/locales/zh-TW/app.json               |  4 +-
 packages/i18n/src/resources.d.ts                   |  4 +-
 18 files changed, 206 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-9039

Fusion-Task-Lineage: 50858063-5b0a-4fec-8c34-171d58a288b6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 16:39:11 -07:00
gsxdsm
7673f2e839 FN-9031: enforce snapshot consumption after computer actions
Computer-use actions now consume the captured app snapshot and require a fresh state capture before another element-targeted action.

- Add app-scoped, serialized snapshot-pointer consumption with stale-state diagnostics.
- Mark successful action results as consuming their snapshot and cover action/replay behavior.
- Document the enforced snapshot → act → snapshot loop and add a CLI changeset.

Files changed:
 .../fn-9031-computer-use-snapshot-consumption.md   |  7 ++
 docs/cli-reference.md                              |  2 +-
 docs/computer-use.md                               | 11 +--
 .../commands/__tests__/computer-commands.test.ts   | 88 ++++++++++++++++++++--
 .../commands/__tests__/computer-contract.test.ts   |  7 +-
 .../__tests__/computer-snapshot-index.test.ts      | 52 ++++++++++++-
 .../commands/__tests__/computer-use-guide.test.ts  |  4 +
 packages/cli/src/commands/computer.ts              | 37 ++++++---
 .../cli/src/commands/computer/adapter-macos.ts     |  4 +-
 packages/cli/src/commands/computer/contract.ts     | 17 ++++-
 packages/cli/src/commands/computer/guide.ts        |  4 +-
 .../cli/src/commands/computer/snapshot-store.ts    | 79 +++++++++++++++++--
 12 files changed, 272 insertions(+), 40 deletions(-)

Fusion-Task-Id: FN-9031

Fusion-Task-Lineage: f196b7ca-ce3f-4a50-98d2-d6ac8bf184ac

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 16:31:44 -07:00
gsxdsm
d3e51f566e FN-9030: resolve computer state at project root
Resolve computer-use state once per invocation at the containing Fusion project root.

- Add a state-root resolver shared by computer command adapters and snapshot storage.
- Preserve capture and replay snapshots across working directories while isolating projects.
- Cover root resolution and cross-directory state behavior, and document the storage contract.
- Add a patch changeset for the CLI fix.

Files changed:
 .../fn-9030-computer-use-project-local-state.md    |  7 ++
 docs/computer-use.md                               |  2 +-
 .../commands/__tests__/computer-commands.test.ts   | 76 ++++++++++++++++++++++
 .../__tests__/computer-snapshot-index.test.ts      | 14 ++++
 .../commands/__tests__/computer-state-root.test.ts | 49 ++++++++++++++
 packages/cli/src/commands/computer.ts              |  9 ++-
 packages/cli/src/commands/computer/state-root.ts   | 18 +++++
 7 files changed, 171 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-9030

Fusion-Task-Lineage: a0cb48ee-fd7f-4966-9930-cde273027eca

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 16:08:52 -07:00
gsxdsm
cb4ab3b6da FN-9028: guard automatic mission rollup status writers
Protect automatic mission and milestone status rollups with a durable writer-coverage ratchet.

- Add source-level coverage for every computed mission and milestone status writer.
- Verify core persistence and engine reconciliation preserve blocked and archived intent.
- Document shared rollup-ownership guard requirements.

Files changed:
 docs/missions.md                                   |   2 +-
 .../mission-rollup-status-writer-ratchet.test.ts   | 170 +++++++++++++++++++++
 .../mission-status-recompute-guard.test.ts         |  11 ++
 .../__tests__/postgres/mission-store.pg.test.ts    |  43 ++++--
 packages/core/src/missions/mission-types.ts        |   4 +-
 .../mission-autopilot-rollup-guard.test.ts         | 115 ++++++++++++++
 6 files changed, 331 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-9028

Fusion-Task-Lineage: 89b72b57-fc73-4268-a639-5edac05ff8f8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 16:01:57 -07:00
gsxdsm
d39c0ae9eb FN-9034: use package-local Vitest for scoped runs
Resolve Quality file-scoped tests against the execution worktree's package metadata.

- Run scoped tests through each package's local Vitest binary
- Omit the removed basic reporter and preserve safe path handling
- Cover worktree resolution, package grouping, and reporter behavior

Files changed:
 .changeset/fn-9034-file-scoped-vitest.md           |   7 +
 docs/testing.md                                    |   4 +
 .../src/__tests__/command-presets.test.ts          | 222 +++++++++++++++++++--
 .../src/routes/create-routes.ts                    |   5 +
 .../src/runner/command-presets.ts                  | 115 ++++++++++-
 5 files changed, 336 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-9034

Fusion-Task-Lineage: f78159b6-2f1e-47bb-a367-e8e4324143e5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 15:55:37 -07:00