Commit Graph

13502 Commits

Author SHA1 Message Date
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
9ba6a67695 fix: create CLI GitHub tracking issues synchronously before process exit
The task-created hook (GitHub tracking issue creation) was deferred behind
the fire-and-forget auto-title-summarize chain whenever autoSummarizeTitles
is on and the task has a long description and no title — i.e. for every
'fn task create'. The short-lived CLI process closed the store and exited
before the deferred chain ran, so tasks ended up with
githubTracking.enabled=true but no issue (observed on FN-9045..FN-9061).

fn task create now suppresses the deferred hook and calls
createTrackingIssueForTask directly after create, printing the linked
issue; exports that helper from @fusion/dashboard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 21:55:49 -07:00
gsxdsm
41d415fe70 FN-9051: report blocked workspace finalization
Prevent workspace merge entry points from treating an unfinalized task as a successful merge.

- Add a typed blocked-finalization result and engine handling that avoids retries, failure parking, and branch promotion.
- Return blocked outcomes through dashboard and CLI merge surfaces.
- Cover blocked finalization behavior and publish a patch changeset.

Files changed:
 .changeset/fn-9051-workspace-blocked-finalize.md   |   7 ++
 packages/cli/src/commands/__tests__/task.test.ts   |  38 ++++++++
 packages/cli/src/commands/dashboard.ts             |  22 +++--
 packages/cli/src/commands/task.ts                  |  19 ++--
 .../engine/src/__tests__/project-engine.test.ts    | 105 ++++++++++++++++++++-
 .../engine/src/__tests__/workspace-merger.test.ts  |   1 +
 packages/engine/src/index.ts                       |   1 +
 packages/engine/src/merge/merger-ai.ts             |  28 +++++-
 packages/engine/src/project-engine.ts              |  42 ++++++++-
 9 files changed, 240 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-9051

Fusion-Task-Lineage: 89d5fcbb-1a00-4429-87ea-fc3e34db2706

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 21:51:45 -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
d6da58d89a FN-9054: reclaim archived workspace land leases
Reclaim stale workspace land leases when their owners are terminal.

- Treat archived and soft-deleted workspace task owners as terminal after the existing staleness floor.
- Preserve active and merge-pending lease protections while recording terminal reclaim reasons.
- Cover archived, renamed archive lane, deleted, missing, and protected-owner lease cases.

Files changed:
 AGENTS.md                                          |   2 +-
 .../src/__tests__/self-healing-workspace.test.ts   | 150 +++++++++++++++++++++
 packages/engine/src/self-healing.ts                |  50 ++++---
 packages/engine/src/util/run-audit.ts              |   2 +-
 4 files changed, 185 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-9054

Fusion-Task-Lineage: 747e62f2-732a-4640-8d49-c08869a47964

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 21:39:30 -07:00
gsxdsm
010e619628 FN-9046: fix scoped pnpm dependent selector
Correct workspace merge verification to test changed packages with their dependents.

- Use pnpm's valid leading dependents selector for scoped merge tests.
- Cover single, multiple, and shell-metacharacter package selectors.
- Add a patch changeset for the verification fix.

Files changed:
 .changeset/fn-9046-pnpm-filter-selector.md         |  7 +++++
 .../src/__tests__/merger-verification.test.ts      | 33 +++++++++++++++++++---
 .../src/merge/merger-workspace-test-commands.ts    | 11 ++++++--
 3 files changed, 45 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-9046

Fusion-Task-Lineage: 07186296-36b7-42bb-aaa8-739dbf5e00d5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 21:32:58 -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
66b1c046c5 test: assert Memory Keeper in fresh-project built-in agent listings
Fusion-Task-Id: automation

FN-8932 seeds the durable Memory Keeper alongside the four routed workflow principals, so fn_list_agents and fn_agent_org_chart now enumerate five built-in agents on a fresh project. Update the two extension.test.ts assertions from count 4 to 5 and assert Memory Keeper is present.
2026-08-14 17:04:07 -07:00
gsxdsm
25b03d6e70 FN-9043: fix workspace completion commit detection
Resolve workspace configuration consistently so task completion observes commits across acquired repositories.

- Add a host-scoped, memoized workspace configuration resolver and preserve live configuration through executor dependency bags.
- Resolve workspace configuration before planning, worktree, graph, cleanup, and task-done paths.
- Aggregate workspace commit observations and cover partial-repository completion cases.

Files changed:
 .changeset/fn-9043-workspace-no-commits.md         |   7 ++
 .../executor-workspace-config-propagation.test.ts  | 116 +++++++++++++++++++++
 .../engine/src/executor/cleanup-task-worktree.ts   |   6 +-
 .../create-authoritative-workflow-seams.ts         |   6 +-
 packages/engine/src/executor/deps-bags.ts          |  74 ++++++++++---
 .../executor/ensure-graph-custom-node-worktree.ts  |  14 ++-
 .../executor/ensure-task-worktree-for-planning.ts  |   8 +-
 packages/engine/src/executor/get-worktree-path.ts  |   3 +
 packages/engine/src/executor/mark-stuck-aborted.ts |   6 +-
 .../engine/src/executor/run-graph-custom-node.ts   |   8 +-
 packages/engine/src/executor/run-implementation.ts |   6 +-
 .../src/executor/workspace-config-resolver.ts      |  40 +++++++
 .../src/executor/worktree-task-done-scope-leak.ts  |   8 +-
 .../src/executor/worktree-verify-invariants.ts     |  44 ++++----
 14 files changed, 287 insertions(+), 59 deletions(-)

Fusion-Task-Id: FN-9043

Fusion-Task-Lineage: fc012b8e-c9cb-47e8-81a7-c9590a63a980

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 14:24:26 -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
9c83812351 fix(ci): unblock check:lane-wiring for the task-recommendations read
check:lane-wiring runs in CI's Lint gate and has been failing on main since FN-9037 landed
`listTaskRecommendations`, so it blocks every PR in the repo, not just the one that hit it.

Recorded rather than rewired, because this is the false-positive shape the escape hatch exists
for. The guard catches a callee silently falling back to a LEGACY COLUMN LITERAL when a caller
omits the lane; `listTaskRecommendationsImpl` falls back to
`resolveProjectColumnsForRoles(store, ["complete"])`, which reads the board's own lanes. Real
callers already pass a resolved set — the dashboard route resolves `completeColumns` before
calling — so the fallback only serves the pass-through wrapper. Resolving again in the wrapper
would duplicate that query on every call for no behavioural difference.

The reason lives at the call site as well as in the baseline, since a bare count in a JSON file
is exactly the kind of entry that later reads as unexplained debt.

Baseline diff verified to be a single added entry (store.ts: 1) — nothing else raised or lowered.

Verified: check:lane-wiring exits 0, core typecheck clean, eslint clean, FNXC date check clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 23:46:57 -07:00
gsxdsm
9d31396f7a FN-9031: strengthen computer snapshot action fencing
Serialize computer snapshots and actions through a durable app-scoped fence.

- Hold the fence from snapshot acquisition or element resolution through OS action consumption.
- Report snapshot consumption only when the expected latest pointer was invalidated.
- Heartbeat and token-check directory locks for safe crash recovery and add command-fence coverage.

Files changed:
 .../commands/__tests__/computer-commands.test.ts   | 26 +++++++++-
 .../__tests__/computer-snapshot-index.test.ts      |  2 +-
 packages/cli/src/commands/computer.ts              | 37 ++++++++-----
 .../cli/src/commands/computer/snapshot-store.ts    | 60 ++++++++++++++++------
 4 files changed, 93 insertions(+), 32 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 17:44:02 -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
2dcead4c8f FN-9035: prevent static computer commands in shipped skills
Keep bundled computer-use guidance limited to runtime discovery so command syntax cannot drift.

- Scan all shipped skill markdown files, including plugin skills
- Reject static `fn computer` commands outside the computer-use discovery stub
- Assert the discovery stub exposes only its supported JSON probes

Files changed:
 packages/cli/src/commands/__tests__/computer-use-skill.test.ts | 50 ++++++++++++++++++++--
 1 file changed, 47 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-9035

Fusion-Task-Lineage: 5049fd29-1b3b-4968-b09e-1bb7be9d52ff

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 17:01:39 -07:00
gsxdsm
1788dc0506 FN-9033: harden macOS computer-use permission handling
Treat missing osascript as an explicit automation denial while preserving replay failures.

- Track missing osascript separately from indeterminate permission probes.
- Block all macOS automation paths before execution when osascript is unavailable.
- Preserve replay permission and timeout errors, mapping only stale locators to element errors.
- Add coverage for replay failures and missing-binary enforcement.

Files changed:
 .../__tests__/computer-adapter-registry.test.ts    | 87 +++++++++++++++++++++-
 .../commands/__tests__/computer-commands.test.ts   | 29 +++++++-
 .../cli/src/commands/computer/adapter-macos.ts     | 52 +++++++------
 3 files changed, 142 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-9033
Fusion-Task-Lineage: 48e77cc5-cd71-49f1-a163-13d68a81d1d4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 16:55:23 -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
gsxdsm
f6518b4275 FN-9029: keep release-gate verdicts transient
Keep release-gate verdicts restricted to fresh task-list responses.

- Strip release-gate data from SSE and non-board task paths.
- Reject stale initial verdicts before rendering promote controls.
- Cover server persistence, SSE payload, and client freshness boundaries.

Files changed:
 .../dashboard/app/hooks/__tests__/useTasks.test.ts | 115 +++++++++++++++++++++
 packages/dashboard/app/hooks/useTasks.ts           |  80 +++++++++-----
 .../app/utils/__tests__/releaseGate.test.ts        |   9 ++
 .../routes-tasks-release-gate-transient.test.ts    | 103 ++++++++++++++++++
 .../src/__tests__/sse-task-deleted-payload.test.ts |  10 +-
 packages/dashboard/src/sse.ts                      |  26 +++--
 6 files changed, 305 insertions(+), 38 deletions(-)

Fusion-Task-Id: FN-9029

Fusion-Task-Lineage: cf764f3e-c6f5-4fa1-b608-ebb8d547cfdd

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 15:43:16 -07:00
gsxdsm
f88031172e FN-9036: restore i18n parity coverage for native auto-merge
Ensure configured translation catalogs retain GitHub native auto-merge settings keys.

- Derive supported locales from the i18next configuration
- Assert native auto-merge labels and help text in every secondary locale
- Remove the core locale-list dependency from the parity test

Files changed:
 packages/i18n/src/__tests__/parity.test.ts | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-9036

Fusion-Task-Lineage: aba3a8d8-8f4e-43b9-9fe9-6c2a80cde666

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 15:33:26 -07:00
gsxdsm
74a0bdb25c FN-9032: harden knowledge-graph artifact validation
Reject malformed or contradictory graph cache artifacts and rebuild them as a complete set.

- Require exact persisted record shapes and valid import references before cache reuse
- Detect invalid import ownership and duplicate extractor identities during consistency checks
- Cover cache recovery cases and document the all-or-nothing artifact policy
- Add a patch changeset for the published CLI package

Files changed:
 .../fn-9032-knowledge-graph-artifact-validation.md |  7 +++++
 docs/knowledge-graph.md                            |  2 +-
 .../graph-artifact-not-gitignored.test.ts          | 13 ++++++---
 .../__tests__/graph-builder-incremental.test.ts    | 29 +++++++++++++++++++-
 .../__tests__/graph-serialization.test.ts          | 31 +++++++++++++++++++++
 .../__tests__/graph-store-recovery.test.ts         | 14 ++++++++++
 .../src/knowledge-graph/graph-serialization.ts     | 32 ++++++++++++++--------
 packages/core/src/knowledge-graph/graph-store.ts   | 18 ++++++++++++
 8 files changed, 129 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-9032

Fusion-Task-Lineage: d53934f6-2735-42ab-a41e-4421890277be

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 15:30:53 -07:00
gsxdsm
958b08e237 FN-9027: sort insights newest first
Present Insights in newest-first order without changing store ordering.

- Sort each visible category by creation time descending with deterministic ID tie-breaking
- Keep malformed timestamps last and preserve their source order
- Cover network, cached, archive, and rendered ordering behavior
- Add a patch changeset for the published CLI package

Files changed:
 .changeset/insights-newest-first.md                |   7 ++
 .../app/components/__tests__/InsightsView.test.tsx |  41 ++++++++
 .../app/hooks/__tests__/useInsights.test.ts        | 106 ++++++++++++++++++++-
 packages/dashboard/app/hooks/useInsights.ts        |  26 ++++-
 4 files changed, 178 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-9027

Fusion-Task-Lineage: b9fecbeb-b8b8-49b1-b7db-c4dfda81fcbe

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 15:12:08 -07:00
gsxdsm
8b00bab0b0 chore(release): v0.76.0
Version bump via changesets.
2026-08-13 01:41:54 -07:00
gsxdsm
a1ea7fe562 chore(release): v0.76.0-beta.3
Version bump via changesets.
2026-08-13 01:34:18 -07:00
gsxdsm
6243c2c3f2 FN-9026: move terminal display toggles to header
Move desktop terminal pin and pop-out controls beside the close button.

- Render shared non-mobile display-mode controls in the terminal header
- Keep footer actions focused on terminal session controls
- Update styling, documentation, regression tests, and release metadata

Files changed:
 .changeset/terminal-toolbar-display-toggles.md     |  7 ++
 docs/dashboard-guide.md                            | 12 +--
 .../dashboard/app/components/TerminalModal.css     |  4 +-
 .../dashboard/app/components/TerminalModal.tsx     | 67 ++++++++-------
 .../components/__tests__/TerminalModal.test.tsx    | 99 ++++++++++++++++++----
 5 files changed, 134 insertions(+), 55 deletions(-)

Fusion-Task-Id: FN-9026

Fusion-Task-Lineage: 5b61d4c9-a3d4-41e1-9d89-4c8189f5b8fb

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 01:28:14 -07:00
gsxdsm
401b057965 FN-9025: align Quick Add tablet actions edge-to-edge
Make Quick Add action controls use the mobile edge-to-edge layout at tablet widths.

- Add a tablet-specific responsive action-row layout.
- Preserve centered desktop controls and existing mobile behavior.
- Cover tablet spacing declarations and add a patch changeset.

Files changed:
 .changeset/fn-9025-quick-add-tablet-spacing.md     |  7 ++++
 .../quick-entry-action-row-centering.css.test.ts   | 35 +++++++++++++++---
 .../dashboard/app/components/QuickEntryBox.css     | 41 ++++++++++++++++++++--
 3 files changed, 75 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-9025

Fusion-Task-Lineage: 8850dd57-c99e-4f18-98d5-576c0bc7e665

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 00:50:50 -07:00
gsxdsm
d9bf93a5fa docs: correct W33 velocity baseline quarantine-count history row
The previous-week row showed quarantine count 1 with a -1 delta; the ledger
was already empty at that capture, so the row and the #leads snippet now read 0 (0).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 00:32:17 -07:00
gsxdsm
0e98d9b213 FN-9024: center Quick Add action row on tablet
Center Quick Add actions as a single desktop and tablet cluster while preserving the mobile layout.

- Center the base action row and remove greedy split alignment.
- Retain the <=768px edge-to-edge mobile layout.
- Add a regression test and a patch changeset.

Files changed:
 .changeset/fn-9024-quick-add-center-action-row.md  |   7 ++
 .../quick-entry-action-row-centering.css.test.ts   | 138 +++++++++++++++++++++
 .../dashboard/app/components/QuickEntryBox.css     |  28 +++--
 3 files changed, 166 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-9024

Fusion-Task-Lineage: e6c6d9b5-e9cf-4d37-9d62-fedd1986d7cc

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 22:40:12 -07:00
gsxdsm
c791c0b199 FN-9023: restore non-English catalog key parity
Restore localized settings and task recommendation copy across secondary catalogs.

- Add missing GitHub auto-merge and terminal-wedge notification translations.
- Complete Portuguese recommendation and merge-setting translations.
- Remove the stale Portuguese ephemeral-worker setting key.

Files changed:
 .changeset/fn-9023-i18n-parity.md    |  7 +++++++
 packages/i18n/locales/es/app.json    |  8 ++++++--
 packages/i18n/locales/fr/app.json    |  8 ++++++--
 packages/i18n/locales/ko/app.json    |  8 ++++++--
 packages/i18n/locales/pt-BR/app.json | 30 ++++++++++++++++++++++++------
 packages/i18n/locales/zh-CN/app.json |  8 ++++++--
 packages/i18n/locales/zh-TW/app.json |  8 ++++++--
 7 files changed, 61 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-9023

Fusion-Task-Lineage: a348310e-02d3-4aed-a0c3-2882cd54f5b1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 22:25:49 -07:00
gsxdsm
f7bf3f91d1 FN-9022: add task recommendations to Insights
Expose actionable task recommendations in the Insights view.

- Add recommendation list API, client hook, and Insights rendering states.
- Localize recommendation content and document the Insights workflow.
- Cover recommendation retrieval, routes, hooks, API, and view behavior.

Files changed:
 .changeset/fn-9022-insights-recommendations.md     |   7 ++
 docs/architecture.md                               |   1 +
 docs/dashboard-guide.md                            |   3 +-
 .../__tests__/task-recommendations-list.test.ts    | 136 +++++++++++++++++++++
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/store.ts                         |   5 +-
 packages/core/src/task-store/reads.ts              |  48 +++++++-
 packages/core/src/types.ts                         |   4 +
 packages/core/src/types/task/task-core.ts          |  19 +++
 packages/dashboard/app/__tests__/api-tasks.test.ts |  24 ++++
 packages/dashboard/app/api/legacy.ts               |   3 +
 packages/dashboard/app/api/tasks/tasks.ts          |  22 ++++
 packages/dashboard/app/components/InsightsView.css |  27 ++++
 packages/dashboard/app/components/InsightsView.tsx |  47 +++++--
 .../app/components/__tests__/InsightsView.test.tsx | 117 ++++++++++++++++++
 .../hooks/__tests__/useTaskRecommendations.test.ts | 130 ++++++++++++++++++++
 .../dashboard/app/hooks/useTaskRecommendations.ts  | 116 ++++++++++++++++++
 .../__tests__/task-recommendation-routes.test.ts   |  26 ++++
 .../src/routes/register-task-workflow-routes.ts    |  33 +++++
 packages/i18n/locales/en/app.json                  |  11 +-
 packages/i18n/locales/es/app.json                  |  11 +-
 packages/i18n/locales/fr/app.json                  |  11 +-
 packages/i18n/locales/ko/app.json                  |  11 +-
 packages/i18n/locales/pt-BR/app.json               |  11 +-
 packages/i18n/locales/zh-CN/app.json               |  11 +-
 packages/i18n/locales/zh-TW/app.json               |  11 +-
 packages/i18n/src/resources.d.ts                   |   9 ++
 27 files changed, 835 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-9022

Fusion-Task-Lineage: b83f1074-37af-4f87-9ec0-2bd9bb9bf64d

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 22:18:18 -07:00
gsxdsm
19dffe36f6 fix(engine): make the planning->plan-review handoff atomic so planned cards stop stranding in Todo
Triage announced specification completion before its finally block marked the
plan work item terminal, so the Plan Review seeder saw its own still-running
predecessor as an "active continuation", bailed, and the discarded result
silently stranded the card until FN-8592 self-healing re-seeded it ~10 minutes
later (529 occurrences in 18 days).

- seedStrandedPlanReviewContinuation gains retirePredecessorId: idle check
  excludes the named predecessor, then retires it and installs the successor in
  ONE transaction under the task lock; a bailed seed mutates nothing.
- triage threads planningWorkItemId through PlanningHandoffReport; the runtime
  reaction passes it as retirePredecessorId.
- reactToSpecificationComplete consumes the seed result: typed quiet parks
  (incl. new "no-pre-release-plan-review"), bounded retries with a fresh
  task/IR snapshot per attempt (mid-retry pause/needs-replan honored), loud
  warning naming self-healing on exhaustion.
- Tests: PG both-orderings/no-mutation-on-bail/cross-task cases, direct engine
  seeder handoff cases, reaction retry/park/pause/replan cases.
- docs/solutions: new planning-handoff-race writeup; graph-entry-contract doc
  reclassifies the FN-8592 sweep as backstop-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 21:24:53 -07:00
gsxdsm
ea53cbd4ff FN-9021: send mailbox notices for task recommendations
Completed tasks now optionally send captured recommendations to the operator mailbox.

- Add idempotent, non-blocking mailbox notices after accepted task completion.
- Expose a project setting and localized dashboard control for recommendation notices.
- Cover notification dispatch, settings parity, and completion-path behavior with tests.

Files changed:
 .../fn-9021-recommendation-mailbox-notice.md       |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   1 +
 .../core/src/__tests__/settings-parity.test.ts     |   2 +
 .../__tests__/task-recommendation-notice.test.ts   |  77 +++++++++++++
 packages/core/src/config/settings-schema.ts        |   2 +
 packages/core/src/index.ts                         |   9 ++
 packages/core/src/task-recommendation-notice.ts    | 122 +++++++++++++++++++++
 packages/core/src/types/settings/settings-scope.ts |   6 +
 .../__tests__/SettingsModal.general.test.tsx       |  10 ++
 .../app/components/settings/section-keys.ts        |   1 +
 .../settings/sections/GeneralSection.tsx           |  15 +++
 .../settings-default-descriptions.test.tsx         |   1 +
 .../executor-task-recommendations.test.ts          |  39 ++++++-
 .../executor/completion-recommendation-notice.ts   |  52 +++++++++
 .../engine/src/executor/create-task-done-tool.ts   |  12 ++
 packages/engine/src/executor/plan-review-no-op.ts  |  12 ++
 packages/engine/src/runtimes/in-process-runtime.ts |  14 +++
 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                   |  40 ++++++-
 26 files changed, 442 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-9021
Fusion-Task-Lineage: f6c5c93c-a3b6-470b-9efb-79e6b4003985
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 21:15:53 -07:00
gsxdsm
6d2c1bf0c9 FN-9020: parallelize boot smoke preflights
Reduce durable boot-smoke latency while preserving its CLI, initialization, health, and shutdown assertions.

- Run independent help and init preflights concurrently with bounded async child processes.
- Add phase timing diagnostics and deterministic init failure classification.
- Cover phase scheduling and isolated environment behavior, and document the diagnostics flag.

Files changed:
 docs/testing.md                       |   4 +-
 scripts/__tests__/boot-smoke.test.mjs |  65 ++++++++++-
 scripts/boot-smoke.mjs                | 201 +++++++++++++++++++++++++---------
 3 files changed, 214 insertions(+), 56 deletions(-)

Fusion-Task-Id: FN-9020

Fusion-Task-Lineage: 1f5d3d7f-dc0c-4d16-a4ab-fd5e3952dbdf

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 19:45:40 -07:00
gsxdsm
f8f828357f FN-9018: refresh W33 test velocity baseline
Refresh the weekly test-velocity report with the latest captured measurements.

- Update baseline metrics, deltas, quarantine status, and #leads summary.
- Append the W33 measurement and slowest-test metadata to the velocity history.

Files changed:
 docs/test-velocity-baseline.md     |  24 ++++----
 scripts/test-velocity-history.json | 114 +++++++++++++++++++++++++++++++++++++
 2 files changed, 126 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-9018

Fusion-Task-Lineage: b4d91cfd-2d5d-4e5a-ac9a-e62c50915f49

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 19:10:03 -07:00
gsxdsm
c7451ec6b2 chore(release): v0.76.0-beta.2
Version bump via changesets.
2026-08-12 17:37:09 -07:00
gsxdsm
e7d0c37c4e test(sse): drive agent-activity durable poll via env seam instead of 2.1s real sleep
Replace the fixed ~2.1s real time-wait in the agent-activity SSE durable
integration test with a bounded FUSION_AGENT_ACTIVITY_POLL_MS env test-seam
(default 2000ms unchanged in production) and poll for the delivered frame.
Removes an FN-5048 real time-wait anti-pattern; production behavior unchanged.
2026-08-12 17:03:11 -07:00
gsxdsm
cc1041207c FN-9012: hide empty task Recommendations tabs
Show Recommendations only for completed tasks with task-owned recommendations.

- Gate tab visibility and reconciliation on matching task-detail recommendation data.
- Cover empty, populated, stale-detail, and task-switch recommendation states.
- Document the behavior and add a patch changeset.

Files changed:
 .changeset/fn-9012-recommendations-tab-visibility.md      |   7 +
 docs/dashboard-guide.md                                    |   2 +-
 packages/dashboard/app/components/TaskDetailModal.tsx      |  33 ++-
 packages/dashboard/app/components/TaskRecommendationsTab.tsx |   2 +-
 packages/dashboard/app/components/__tests__/TaskDetailModal.summary-tab.test.tsx | 305 +++++++++++++++++----
 5 files changed, 289 insertions(+), 60 deletions(-)

Fusion-Task-Id: FN-9012

Fusion-Task-Lineage: 2dd3b1c6-ab08-43e3-9c9e-c8d3d9cf4692

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 16:24:54 -07:00
gsxdsm
fc56161c9d FN-9014: add chat and mailbox message archiving
Add archived-message lifecycle support across chat and mailbox views.

- Persist archive state with a PostgreSQL migration and message-store APIs.
- Expose archive, restore, and permanent-delete messaging endpoints.
- Add archived-message views and archive-by-default actions with regression coverage.
- Document storage behavior and add a release changeset.

Files changed:
 .changeset/fn-9014-message-archive.md              |   7 ++
 docs/dashboard-guide.md                            |   7 +-
 docs/storage.md                                    |   2 +-
 .../__tests__/postgres/message-store.pg.test.ts    |  34 +++++++
 .../src/__tests__/postgres/schema-applier.test.ts  |   9 +-
 .../core/src/async-stores/async-message-store.ts   |  73 +++++++++++---
 .../migrations/0058_fn_9014_message_archive.sql    |  13 +++
 packages/core/src/postgres/schema-applier.ts       |  14 ++-
 packages/core/src/postgres/schema/project.ts       |   2 +
 packages/core/src/stores/message-store.ts          |  68 ++++++++++---
 packages/core/src/types/messaging/messages.ts      |   9 ++
 packages/dashboard/app/api/chat/messaging.ts       |  37 +++++--
 packages/dashboard/app/api/legacy.ts               |   2 +
 packages/dashboard/app/components/ChatView.tsx     |  21 +++-
 packages/dashboard/app/components/MailboxModal.tsx |  74 ++++++++++++--
 packages/dashboard/app/components/MailboxView.tsx  | 108 +++++++++++++++++++--
 .../__tests__/ChatView.core-contracts.test.tsx     |  24 +++++
 .../components/__tests__/ChatView.test-harness.tsx |   3 +
 .../app/components/__tests__/MailboxModal.test.tsx |   6 +-
 .../app/components/__tests__/MailboxView.test.tsx  |  10 +-
 .../dashboard/app/hooks/__tests__/useChat.test.ts  |  35 ++++++-
 packages/dashboard/app/hooks/useChat.ts            |  38 +++++++-
 .../__tests__/messaging-archive-routes.test.ts     |  86 ++++++++++++++++
 .../src/routes/register-messaging-scripts.ts       |  33 ++++++-
 24 files changed, 635 insertions(+), 80 deletions(-)

Fusion-Task-Id: FN-9014

Fusion-Task-Lineage: 1dbd02c3-1180-4d72-8cbc-9594e5f355dc

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 16:03:30 -07:00
gsxdsm
8699ff41e2 FN-9016: add manager evaluation tools
Enable managers to review report evaluations and record coaching follow-ups.

- Add manager-scoped evaluation read and follow-up extension tools.
- Enforce management-subtree access through action gating and regression tests.
- Document the tool surface and add a minor release changeset.

Files changed:
 .changeset/fn-9016-manager-eval-tools.md           |   7 +
 docs/agent-tool-surface-full-loop.md               |   4 +-
 docs/agents.md                                     |   8 +-
 packages/cli/skill/fusion/SKILL.md                 |   2 +-
 .../cli/skill/fusion/references/extension-tools.md |  22 ++
 .../skill/fusion/references/fusion-capabilities.md |   2 +
 .../__tests__/extension-manager-eval-tools.test.ts | 159 +++++++++++++++
 packages/cli/src/extension.ts                      | 227 +++++++++++++++++++++
 .../engine/src/__tests__/agent-action-gate.test.ts |   1 +
 .../src/__tests__/gating-classifications.test.ts   |   1 +
 .../src/__tests__/permanent-agent-gating.test.ts   |   1 +
 .../engine/src/execution/gating-classifications.ts |   8 +
 12 files changed, 438 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-9016

Fusion-Task-Lineage: 1ad7c344-0f3c-4565-aabc-acb51481431d

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 15:51:22 -07:00
gsxdsm
366dfe123e FN-9015: refresh Grok runtime model example
Refresh the Grok runtime README with the current flagship model invocation.

- Update the optional Grok ACP command to use grok-4.6.
- Document why the illustrative model identifier tracks the provider default.

Files changed:
 plugins/fusion-plugin-grok-runtime/README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-9015

Fusion-Task-Lineage: 6dd04810-fe06-4462-82b9-5abb38e229c0

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 15:40:14 -07:00
gsxdsm
e144e8c195 FN-9009: align Quick Add merger model row
Make the Quick Add merger model row consistent with the other role selectors.

- Label the top-level merger selector as Merger
- Align the merger icon spacing with other model menu rows
- Cover role labels, spacing, and override navigation

Files changed:
 .changeset/fn-9009-quick-add-merger-label.md       |  7 ++++
 .../dashboard/app/components/QuickEntryBox.tsx     | 25 ++++++++++---
 .../components/__tests__/QuickEntryBox.test.tsx    | 41 +++++++++++++++++++---
 3 files changed, 65 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-9009

Fusion-Task-Lineage: bfc915d6-7a8d-4f08-86e8-c270b5783458

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 15:19:49 -07:00
gsxdsm
b0f623b100 FN-9013: fix mission feature reconciliation
Preserve mission-store method receivers so active mission reconciliation completes reliably.

- Invoke optional listFeatures with its mission-store receiver.
- Contain reconciliation failures to individual slices and continue remaining work.
- Cover synchronous, asynchronous, fallback, and failing-slice behavior.

Files changed:
 .changeset/fn-9013-scheduler-listfeatures-receiver.md     |   7 ++
 .../mission-stranded-feature-retriage.test.ts      | 109 +++++++++++++++++++++
 packages/engine/src/scheduler.ts                   |  51 ++++++----
 3 files changed, 146 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-9013

Fusion-Task-Lineage: 2745383a-3780-4fa4-bf07-bc75419d3384

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 15:14:32 -07:00
gsxdsm
02f7b589e2 FN-9011: fix model dropdown provider toggles
Keep portaled model-provider toggles interactive when hosts use document-level outside-close handlers.

- Stop pointer and mouse events at the portaled dropdown boundary.
- Cover outside-close, multiple-instance, modal, desktop, and mobile toggle interactions.
- Add a patch changeset for the dropdown fix.

Files changed:
 .changeset/fn-9011-model-dropdown-toggle.md        |  7 ++
 .../app/components/CustomModelDropdown.tsx         | 17 ++++
 .../__tests__/CustomModelDropdown.test.tsx         | 95 +++++++++++++++++++++-
 3 files changed, 118 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-9011

Fusion-Task-Lineage: 37559d4e-27df-4ad5-8b3e-4ec28d55e2e6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 15:08:09 -07:00
gsxdsm
6e04b31579 FN-9010: fix Quick Add model filtering
Keep the Quick Add model filter focused and functional within its portaled menu.

- Exempt form controls and the nested model dropdown from the composer focus guard.
- Add desktop and mobile regression coverage for filtering model choices.
- Add a patch changeset for the Quick Add filter fix.

Files changed:
 .changeset/fix-quick-add-model-filter.md           |   7 ++
 .../dashboard/app/components/QuickEntryBox.tsx     |  14 ++-
 .../__tests__/QuickEntryBox-model-filter.test.tsx  | 113 +++++++++++++++++++++
 3 files changed, 133 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-9010

Fusion-Task-Lineage: da86e2d8-8722-4598-b25e-786b5850971c

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 15:02:18 -07:00