Commit Graph

9197 Commits

Author SHA1 Message Date
gsxdsm
2367918fdf FN-6650: add Overview analytics charts
Add graph-rich Overview visuals to the Command Center using existing analytics data.

- Add tokens-by-model, tool-category, and daily activity chart cards to the Overview tab.
- Style the chart section with responsive dashboard-token layouts and reduced-motion safeguards.
- Cover populated, partial, edge-case, and mobile-scroll chart rendering in tests.
- Document the Overview charts and add a patch changeset for the published CLI package.

Files changed:
 .../fn-6650-command-center-overview-charts.md      |   5 +
 docs/dashboard-guide.md                            |   2 +-
 .../components/command-center/CommandCenter.css    | 111 +++++++++++++++++++++
 .../components/command-center/CommandCenter.tsx    |  73 +++++++++++++-
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |  73 +++++++++++++-
 .../__tests__/CommandCenter.test.tsx               |  58 +++++++++++
 6 files changed, 313 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6650
Fusion-Task-Lineage: 227f5809-ed71-42fb-8847-b137dbef6ac7
2026-06-18 14:38:07 -07:00
gsxdsm
538bf42e32 fix(dev): rebuild core+engine+dashboard on dev/local startup + stale-dist check
pnpm dev/local dashboard prebuild now rebuilds @fusion/core and @fusion/engine alongside the dashboard UI (was client-only), and startup warns loudly when built dist/ is older than src/. Prevents the FN-6638 class where landed engine fixes silently never run because the process loads stale dist.
2026-06-18 13:41:37 -07:00
gsxdsm
b6823af049 fix(FN-6648): treat completed in-review tasks as benign despite lingering non-user paused flag
The paused-after-completion graceful-exit path finalizes a fully completed task to in-review while leaving a non-user paused:true flag set (handoffToReview/applyInReviewEnterEffects clear status/blockedBy but not paused). handleGraphFailure's completion-finalized guards required paused!==true, so once the volatile completion markers were lost (execute() re-entry deletes completionFinalizedTaskIds; teardown overwrites provenance to hard-cancel) the trailing graph failure was misclassified as an operator-action pause abort and the completed task was parked status:failed (FN-6638 recurrence). Drop the paused!==true requirement from alreadyFinalizedToReview and suppressFinalizedCompletionAbort, and gate genuinePauseAbort's bare paused clause on the completion suppression. Genuine userPaused/global-pause/in-progress tasks are unaffected.

Fusion-Task-Id: FN-6648
2026-06-18 13:21:59 -07:00
gsxdsm
16b6e5decb FN-6638: stabilize mobile terminal font metrics
Stabilize terminal font metric remeasurement across mobile and attach surfaces.

- Add a shared terminal font metric wait helper that falls back from full font stacks to concrete individual font families before remeasurement.
- Reapply font options, refit, resize, and refresh SessionTerminal after font metrics settle to cover attached CLI terminals.
- Pin text-size adjustment on xterm measurement subtrees so mobile WebKit cannot inflate ASCII cell metrics.
- Extend terminal preference and rendering tests, documentation, and changeset coverage for the recurrence.

Files changed:
 .changeset/fn-6638-terminal-render.md              |   5 +
 .../xterm-async-font-remeasure-paste-dedupe.md     |  20 +++-
 .../dashboard/app/__tests__/terminal-input.test.ts |  26 +++++
 .../dashboard/app/components/SessionTerminal.css   |  10 ++
 .../dashboard/app/components/SessionTerminal.tsx   |  29 ++++++
 .../dashboard/app/components/TerminalModal.css     |  10 ++
 .../dashboard/app/components/TerminalModal.tsx     |  24 ++---
 .../components/__tests__/SessionTerminal.test.tsx  |  41 +++++++-
 .../components/__tests__/TerminalModal.test.tsx    |  38 ++++++++
 .../utils/__tests__/terminalPreferences.test.ts    |  29 +++++-
 .../dashboard/app/utils/terminalPreferences.ts     | 107 +++++++++++++++++++++
 11 files changed, 319 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6638

Fusion-Task-Lineage: edbf071d-a0c1-4955-95ff-83e6996f4674
2026-06-18 13:19:43 -07:00
gsxdsm
a6a3260fa3 FN-6647: preserve completed handoffs after graph aborts
Persist completed workflow handoffs so trailing graph aborts stay benign after executor cleanup.

- Derive finalized completion state from persisted task rows when volatile executor markers are gone.
- Keep genuine pause, global-pause, merge-seam, incomplete, and failed/error rows on their existing failure paths.
- Expand executor recovery tests for no-commit completions, terminal rows, stale marker cleanup, and durable classifier controls.
- Document the persisted completion-finalize classifier contract.

Files changed:
 docs/architecture.md                               |   2 +-
 .../engine/src/__tests__/executor-recovery.test.ts | 164 ++++++++++++++++++---
 packages/engine/src/executor.ts                    |  18 ++-
 3 files changed, 160 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-6647

Fusion-Task-Lineage: 71605a4c-4077-4219-bfa9-44bba2d8372c
2026-06-18 12:36:48 -07:00
gsxdsm
09c54c5d6c FN-6646: speed up shared branch lifecycle tests
Reduce shared-branch lifecycle slow-test overhead while preserving routing coverage.

- Disable optional merge preflight branches in the shared-branch lifecycle fixture settings.
- Stage synthetic member branches through one quoted shell script instead of repeated Node fs and git orchestration.
- Reuse the shared fixture settings across all lifecycle cases.

Files changed:
 .../shared-branch-group-lifecycle.slow.test.ts     | 53 ++++++++++++++++------
 1 file changed, 40 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6646

Fusion-Task-Lineage: ad94a2ec-5914-490f-96e8-c1448a801584
2026-06-18 11:57:44 -07:00
gsxdsm
3b32b535d0 FN-6644: preserve finalized graph aborts
Keep no-commit completion handoffs in review when teardown reclassifies their abort provenance.

- Track completed finalize-to-review handoffs with a durable executor marker.
- Suppress false operator-action graph failures after hard-cancel teardown overwrites completion-finalize provenance.
- Cover preserved user/global pause, merge-seam, hard-cancel, terminal, and redispatch cleanup behavior.
- Document the finalized completion abort exception and add a patch changeset.

Files changed:
 .changeset/fn-6644-finalize-to-review-abort-overwrite.md  |   5 +
 docs/architecture.md                                      |   2 +-
 packages/engine/src/__tests__/executor-recovery.test.ts   | 300 +++++++++++++++++++++
 packages/engine/src/executor.ts                           |  40 ++-
 4 files changed, 342 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-6644
Fusion-Task-Lineage: 569fa84f-2cbe-45ae-b12c-874dd45cea73
2026-06-18 11:18:03 -07:00
gsxdsm
b1e57d38a0 FN-6645: add workflow PUT validation regressions
Strengthen workflow route regression coverage for invalid selection requests.

- Verify malformed and non-string workflowId bodies return 400 without clearing the existing task selection.
- Assert unknown and uncompilable workflow selections preserve state, return the expected errors, and do not emit SSE.
- Cover successful select and clear mutations emitting exactly one workflow:updated event.

Files changed:
 .../src/__tests__/workflow-routes.test.ts          | 72 +++++++++++++++++++++-
 1 file changed, 70 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6645

Fusion-Task-Lineage: 5f7e6ef9-d0d7-44d0-8422-8ce3d29d32b9
2026-06-18 11:12:00 -07:00
gsxdsm
c0af47db02 FN-6643: harden workflow selection rejection coverage
Strengthen custom-workflow backend coverage for invalid explicit selections.

- Document the fail-closed workflow selection invariant for task creation paths.
- Expand unknown workflow id coverage from createTask to createTaskWithReservedId.
- Assert rejected reserved-id creation leaves no task row or workflow selection state.

Files changed:
 packages/core/src/__tests__/workflow-selection-store.test.ts | 27 ++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6643

Fusion-Task-Lineage: aa36b684-efa8-4d7c-8a22-838e231fb47a
2026-06-18 11:01:12 -07:00
gsxdsm
b480699e06 FN-6642: rescue dashboard flaky test coverage
Rescue the dashboard quarantine candidates by restoring stable shared mocks and refreshing quarantine evidence.

- Remove QuickEntryBox and chat-routes from the dashboard quarantine config and ledger.
- Add iterable chat task document tool mocks across dashboard session test helpers.
- Refresh the test velocity baseline and history with zero quarantined tests.

Files changed:
 docs/test-velocity-baseline.md                     |  20 ++--
 .../src/__tests__/session-error-recovery.test.ts   |   2 +
 .../session-persistence-roundtrip.test.ts          |   2 +
 .../src/__tests__/session-reconnect.test.ts        |   2 +
 .../src/__tests__/session-resume-history.test.ts   |   2 +
 packages/dashboard/src/test/mockCoreEngine.ts      |   6 ++
 packages/dashboard/vitest.config.ts                |  13 ++-
 scripts/lib/test-quarantine.json                   |  10 --
 scripts/test-velocity-history.json                 | 111 +++++++++++++++++++++
 9 files changed, 144 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-6642

Fusion-Task-Lineage: 76e51d76-ce9a-4e68-9aa0-ad83cdf351a9
2026-06-18 09:16:32 -07:00
gsxdsm
0ed46d9007 FN-6640: expose planning task document tools
Expose planning-lane task document tools with chat-style explicit task targeting.

- Add task document read/write tools to both planning agent creation paths.
- Cover non-streaming and streaming planning tool assembly plus explicit task_id document behavior.
- Update agent docs and generated skill tool references for chat/planning parity.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6640-planning-document-tools.md      |   5 +
 docs/agents.md                                     |   2 +-
 .../cli/skill/fusion/references/engine-tools.md    |   4 +-
 .../planning-document-tools-exposure.test.ts       | 139 +++++++++++++++++++++
 packages/dashboard/src/planning.ts                 |   7 ++
 5 files changed, 154 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6640

Fusion-Task-Lineage: 6a9225cf-fbe7-4a87-8927-e01355a38e92
2026-06-18 07:23:02 -07:00
gsxdsm
b1a2aeebf2 FN-6635: expose task document tools to chat agents
Expose task document read/write tools to dashboard chat agents with explicit task targeting.

- Add chat-specific fn_task_document_write/read factories that require task_id and reuse task document read behavior.
- Wire dashboard chat custom tools to include task document tools when a scoped task store is available.
- Cover chat document tool exposure and explicit-task document operations with engine and dashboard tests.
- Document chat availability and add a published package changeset.

Files changed:
 .changeset/fn-6635-chat-task-documents.md          |   5 +
 docs/agents.md                                     |   1 +
 .../cli/skill/fusion/references/engine-tools.md    |   4 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   |  78 +++++++++++
 packages/dashboard/src/chat.ts                     |  15 ++-
 .../src/__tests__/agent-document-tools.test.ts     | 108 +++++++++++++++
 packages/engine/src/agent-tools.ts                 | 145 ++++++++++++++++-----
 packages/engine/src/index.ts                       |   3 +
 8 files changed, 318 insertions(+), 41 deletions(-)

Fusion-Task-Id: FN-6635

Fusion-Task-Lineage: 25e701d4-7670-470b-9dea-df49884f7b21
2026-06-18 07:06:00 -07:00
gsxdsm
d6415bfc41 FN-6639: enlarge task chat send icon
Increase the task detail chat send glyph so it fills the mobile button more clearly.

- Raise the task chat send button icon token from 24px to 32px on desktop and mobile.
- Add regression coverage that checks the icon-to-button fill ratio stays at least 75%.

Files changed:
 packages/dashboard/app/components/TaskChatTab.css       |  7 +++++--
 .../app/components/__tests__/TaskChatTab.test.tsx       | 17 +++++++++++++++--
 2 files changed, 20 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6639
Fusion-Task-Lineage: fcd83c46-b408-4561-82e1-631e329459b8
2026-06-18 07:00:54 -07:00
gsxdsm
301ae7f0d3 FN-6636: rescue Paperclip spawn tests
Rescue the Paperclip CLI spawn coverage by making fake child events deterministic and re-enabling the suite.

- Route mintAgentApiKeyViaCli cases through the shared fake spawn helper so close and error events are emitted after listener registration.
- Document the async import/listener-order requirement that caused the quarantine.
- Remove paperclip-client.test.ts from the quarantine ledger and Vitest exclude list so the rescued tests run.

Files changed:
 .../src/__tests__/paperclip-client.test.ts         | 134 +++++++--------------
 .../vitest.config.ts                               |   2 -
 scripts/lib/test-quarantine.json                   |   5 -
 3 files changed, 44 insertions(+), 97 deletions(-)

Fusion-Task-Id: FN-6636

Fusion-Task-Lineage: 79038ab3-0aa6-465e-9c6e-f6bc83fcd407
2026-06-18 06:56:36 -07:00
gsxdsm
a76ebdf781 FN-6637: align chat multipart 400 regression test
Keep the chat route regression test focused on missing multipart content without adding attachments.\n\n- Update the multipart 400-path test to send an empty multipart request.\n- Document why attachment-only multipart requests remain valid for chat sends.\n\nFiles changed:\n packages/dashboard/src/__tests__/chat-routes.test.ts | 13 +++++--------\n 1 file changed, 5 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-6637

Fusion-Task-Lineage: 63145e30-1a72-4fdd-8b60-e4eba65bb7aa
2026-06-18 06:46:57 -07:00
gsxdsm
ab8ecb2206 FN-6634: remove engine merge trait hook registration
Remove the engine-side merge trait hook registration so core remains the sole owner of in-review field effects.

- Stop exporting or registering engine merge-trait onEnter/onExit hooks that collide with core workflow move effects.
- Document the store-owned merge queue handoff and core-owned scheduler-state clearing contract.
- Update merge-trait tests to assert ctx-shaped hook invocation and in-review scheduler state cleanup.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6634-merge-trait-hook-collision.md  |   5 +
 packages/engine/src/__tests__/merge-trait.test.ts | 103 +++++++++-------
 packages/engine/src/index.ts                      |   1 -
 packages/engine/src/merge-trait.ts                | 138 +++++++---------------
 4 files changed, 107 insertions(+), 140 deletions(-)

Fusion-Task-Id: FN-6634

Fusion-Task-Lineage: fe7e2259-e354-4457-afd3-7ff25e5a1504
2026-06-18 06:41:22 -07:00
gsxdsm
3d28b3b212 FN-6632: preserve reattached chat stream chunks
Seed streaming accumulators from durable in-flight snapshots so reattached chat bubbles keep prior chunks.

- Add initial text, thinking, and tool-call snapshots to chat stream handlers.
- Wire main chat and QuickChat reattach flows to seed handler accumulators before replayed deltas arrive.
- Cover text, thinking, and tool-call continuation across shared handler, main chat, and QuickChat tests.
- Document the reattach accumulator invariant and add a published package changeset.

Files changed:
 .changeset/fn-6632-chat-stream-reattach.md         |   5 +
 docs/architecture.md                               |   2 +-
 docs/dashboard-guide.md                            |   2 +-
 .../__tests__/createChatStreamHandlers.test.ts     |  63 +++++++
 .../dashboard/app/hooks/__tests__/useChat.test.ts  | 182 +++++++++++++++++++++
 .../app/hooks/__tests__/useQuickChat.test.ts       | 147 +++++++++++++++++
 .../app/hooks/createChatStreamHandlers.ts          |  19 ++-
 packages/dashboard/app/hooks/useChat.ts            |   7 +
 packages/dashboard/app/hooks/useQuickChat.ts       |   7 +
 9 files changed, 429 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-6632
Fusion-Task-Lineage: e2f2eb42-08aa-4bae-a79f-60cfc9fb03d4
2026-06-18 06:36:03 -07:00
gsxdsm
dae0bde6f1 FN-6633: guide chat agents to ask questions for options
Encourage dashboard chat agents to turn option sets into selectable ask-question cards.

- Expand chat-lane prompt guidance so options, choices, and alternatives use `fn_ask_question` instead of prose-only lists.
- Cover the guidance in chat manager tests and assert the prompt is passed to resolved sessions.
- Record the patch changeset and quarantine unrelated flaky dashboard tests observed during verification.

Files changed:
 .changeset/fn-6633-chat-question-guidance.md          |  5 +++++
 packages/dashboard/src/__tests__/chat-manager.test.ts | 14 +++++++++++++-
 packages/dashboard/src/chat.ts                        |  5 ++++-
 packages/dashboard/vitest.config.ts                   |  9 ++++++++-
 scripts/lib/test-quarantine.json                      | 10 ++++++++++
 5 files changed, 40 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6633
Fusion-Task-Lineage: e59371d3-b198-4fe8-a70c-b94994060c59
2026-06-18 06:31:26 -07:00
gsxdsm
58a34e9cf0 FN-6631: fix Command Center completion gauges
Fix Command Center completion analytics and add futuristic activity visualizations.

- Compute SDLC completion rate as a triage cohort conversion capped between zero and one.
- Add a radial completion gauge plus a live activity strip with compact throughput sparkline styling.
- Cover the analytics and chart behavior with targeted tests, docs, and a patch changeset.

Files changed:
 .changeset/fn-6631-command-center-rate-gauge.md    |   5 +
 docs/dashboard-guide.md                            |   4 +-
 .../core/src/__tests__/activity-analytics.test.ts  |  32 +++++-
 packages/core/src/activity-analytics.ts            |  23 +++-
 .../components/command-center/CommandCenter.css    | 128 ++++++++++++++++++++-
 .../components/command-center/CommandCenter.tsx    |  45 +++++++-
 .../app/components/command-center/SdlcFunnel.tsx   |  17 ++-
 .../__tests__/CommandCenter.test.tsx               |  12 +-
 .../command-center/__tests__/SdlcFunnel.test.tsx   |   2 +
 .../command-center/__tests__/charts.test.tsx       |  26 ++++-
 .../command-center/charts/RadialGauge.tsx          |  50 ++++++++
 .../components/command-center/charts/charts.css    |  83 +++++++++++++
 .../vitest.config.ts                               |   2 +
 scripts/lib/test-quarantine.json                   |   8 +-
 14 files changed, 402 insertions(+), 35 deletions(-)

Fusion-Task-Id: FN-6631
Fusion-Task-Lineage: 0d09f18a-5f93-4dc8-8786-889f32eb63e8
2026-06-18 06:25:08 -07:00
gsxdsm
673a8a64c3 FN-6630: return text for empty task-list columns
Ensure filtered fn_task_list calls always return host-safe text for empty target columns.

- Add explicit empty-state copy for column filters with no matching tasks.
- Keep formatter fallback output non-empty before returning tool content.
- Cover empty active-column filters and existing small listings in CLI extension tests.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6630-task-list-empty-column.md |  5 ++++
 packages/cli/src/__tests__/extension.test.ts | 36 +++++++++++++++++++++++++++-
 packages/cli/src/extension.ts                | 15 ++++++++++--
 3 files changed, 53 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6630

Fusion-Task-Lineage: e371bf11-5841-47d0-ac72-4cdf2f1716ba
2026-06-18 04:53:50 -07:00
gsxdsm
4929198b5a FN-6629: Lower task-list text budget
Keep fn_task_list responses below host text imageification thresholds.\n\n- Lower the shared task-list text clamp to a 3,000 character host-safe budget.\n- Reuse the shared budget in CLI, dashboard, and engine fallback formatters.\n- Cover realistic column-filtered fn_task_list outputs and fallback budget behavior with regression tests.\n- Add a patch changeset for the published Fusion package.\n\nFiles changed:\n .changeset/fn-6629-task-list-budget.md             |  5 ++\n packages/cli/src/__tests__/extension.test.ts       | 88 ++++++++++++++++++++++\n packages/cli/src/extension.ts                      |  7 +-\n .../core/src/__tests__/task-list-format.test.ts    | 25 ++++++\n packages/core/src/task-list-format.ts              |  5 +-\n .../src/__tests__/planning-board-tools.test.ts     |  4 +-\n packages/dashboard/src/planning-board-tools.ts     |  8 +-\n packages/engine/src/__tests__/triage.test.ts       |  4 +-\n packages/engine/src/triage.ts                      |  7 +-\n 9 files changed, 144 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6629

Fusion-Task-Lineage: 6ec7cd33-d4e5-4c12-8512-c3823a9dfb3e
2026-06-18 03:24:57 -07:00
gsxdsm
4dd533753e FN-6626: close cached CLI extension task stores
Close cached TaskStore handles so CLI extension task-tool tests shut down cleanly.\n\n- Add deterministic cached-store shutdown for the CLI extension and invoke it from extension teardown.\n- Expose the shutdown helper for tests and call it after canonical-project-root task-tool cases.\n- Add a patch changeset for the published @runfusion/fusion package.\n\nFiles changed:\n .changeset/fn-6626-close-cached-stores.md             |  5 +++++\n .../cli/src/__tests__/extension-task-tools.test.ts    |  8 ++++++++\n packages/cli/src/extension.ts                         | 19 ++++++++++++++++++-\n 3 files changed, 31 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6626

Fusion-Task-Lineage: 65791502-8992-4037-8ca0-fe21c8283506
2026-06-18 02:39:10 -07:00
gsxdsm
316968f0d3 FN-6628: Document Command Center dashboard view
Document the Command Center dashboard surface and its lazy-loaded view inventory entry.

- Add Command Center navigation, feature, and data-state guidance to the dashboard guide.
- Update the lazy-loaded heavy views count and include CommandCenter in the inventory.

Files changed:
 docs/dashboard-guide.md | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6628

Fusion-Task-Lineage: e4a25b2d-919e-443f-b17c-c1f64f96d8ed
2026-06-18 01:50:32 -07:00
gsxdsm
d3ea8dff33 FN-6627: guard dist-barrel tests on complete core dist
Align dist-barrel regression guards so partial @fusion/core dist artifacts skip instead of failing mismatched dependency checks.

- Add a shared @fusion/test-utils predicate for complete built core dist barrels.
- Use the predicate in CLI and core dist-barrel regression tests before importing runtime dist modules.
- Cover absent and partial dist directories with focused predicate tests.

Files changed:
 packages/cli/src/__tests__/extension.test.ts       |  9 +++--
 .../src/__test-utils__/__tests__/core-dist.test.ts | 46 ++++++++++++++++++++++
 packages/core/src/__test-utils__/workspace.ts      | 11 ++++++
 .../core/src/__tests__/task-list-format.test.ts    | 17 ++++----
 4 files changed, 72 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-6627

Fusion-Task-Lineage: a05ad009-229d-44c2-a49d-2d9b3f3d6094
2026-06-18 01:45:18 -07:00
gsxdsm
b6ac5f2e51 FN-6608: bound engine verification runs
Add durable engine-level guardrails for verification command timeouts.

- Add project-level verificationCommandTimeoutMs settings plumbing and docs.
- Enforce configured verification budgets and hard caps in executor and merger verification paths.
- Detect marathon verification commands, soft-cap them by default, and require allowFullSuite for explicit full-suite runs.
- Cover timeout defaults, marathon detection, and guidance updates with engine/core tests.

Files changed:
 .changeset/fn-6608-verification-bound.md           |   5 +
 docs/settings-reference.md                         |   1 +
 docs/testing.md                                    |   2 +
 .../src/__tests__/settings-consistency.test.ts     |   5 +
 packages/core/src/agent-prompts.ts                 |   6 +-
 packages/core/src/settings-schema.ts               |   7 +-
 packages/core/src/types.ts                         |   6 +
 .../engine/src/__tests__/executor-core.test.ts     |   3 +
 .../src/__tests__/run-verification-command.test.ts | 176 ++++++++++++++++++++-
 packages/engine/src/executor.ts                    |  11 +-
 packages/engine/src/merger.ts                      |   9 +-
 packages/engine/src/run-verification-tool.ts       | 142 +++++++++++++++--
 packages/engine/src/verification-utils.ts          |  13 +-
 13 files changed, 360 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-6608
Fusion-Task-Lineage: c593a96d-eb8b-492c-82c7-8943c239f588
2026-06-18 01:27:09 -07:00
gsxdsm
d0be3e462d FN-6610: harden engine test isolation recovery
Harden shared test isolation seams so engine tests survive mid-run cleanup.

- Recreate owned worker roots, HOME directories, and cwd before child-process launches.
- Add regression coverage for tmpdir redirect, HOME, cwd, SQLite, and git config recovery.
- Revalidate worktree database scratch directories before direct SQLite opens and document the rescue pattern.

Files changed:
 docs/testing.md                                    |  2 +
 packages/core/src/__test-utils__/vitest-setup.ts   | 92 ++++++++++++++++++----
 .../__tests__/vitest-setup-tmp-redirect.test.ts    | 33 ++++++++
 .../src/__tests__/executor-step-session.test.ts    |  6 +-
 .../src/__tests__/worktree-db-hydrate.test.ts      | 22 +++++-
 5 files changed, 135 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6610

Fusion-Task-Lineage: 18233ee2-1dfe-4b0d-bd12-e4f5b7f9cc29
2026-06-18 01:20:03 -07:00
gsxdsm
4315cd01c6 FN-6598: suppress stuck detection during verification
Treat bounded verification subprocesses as healthy activity so progressing tasks avoid false stuck-loop recovery.

- Bracket fn_run_verification commands with stuck-detector start/end signals.
- Suppress loop and no-progress churn while verification is active, with timeout-bounded cleanup.
- Add regression coverage for verification heartbeats, compact-and-resume recovery, and no-progress churn behavior.
- Document verification suppression in reliability guidance.

Files changed:
 docs/architecture.md                               |   5 +-
 docs/testing.md                                    |   1 +
 .../src/__tests__/executor-step-session.test.ts    |  10 +-
 .../non-progress-churn.test.ts                     |  55 +++++++++
 .../src/__tests__/run-verification-command.test.ts |  45 ++++++-
 .../src/__tests__/stuck-task-detector.test.ts      | 136 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |   2 +
 packages/engine/src/run-verification-tool.ts       |  33 +++--
 packages/engine/src/stuck-task-detector.ts         |  69 +++++++++++
 9 files changed, 341 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-6598

Fusion-Task-Lineage: 5449b413-c500-46aa-b46d-cf94c2d88710
2026-06-18 00:39:01 -07:00
gsxdsm
c623b5108f FN-6624: document fn_ask_question engine tool
Keep the Fusion skill engine-tool reference aligned with the registered chat question tool.\n\n- Add fn_ask_question to engine-tools.md with its chat scope and question schema.\n- Improve the skill-sync drift assertion so missing engine tools are reported directly.\n\nFiles changed:\n packages/cli/skill/fusion/references/engine-tools.md | 2 ++\n packages/cli/src/__tests__/skill-sync.test.ts        | 6 +++++-\n 2 files changed, 7 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6624

Fusion-Task-Lineage: 94917a44-cdf0-4da1-bb59-f3a7526ed48a
2026-06-18 00:26:48 -07:00
gsxdsm
98ccf8a293 FN-6625: classify completion finalization aborts
Prevent completed no-commit executions that already advanced to review from being re-parked as pause-abort failures.

- Add completion-finalize pause-abort provenance and exclude it from genuine pause handling after review handoff.
- Mark paused-after-completion finalization paths with the new provenance before handing tasks to review.
- Cover the finalize-to-review abort recovery path with executor regression tests and document the lifecycle exception.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6625-finalize-to-review-abort.md     |   5 +
 docs/architecture.md                               |   2 +-
 .../engine/src/__tests__/executor-recovery.test.ts | 158 ++++++++++++++++++++-
 packages/engine/src/executor.ts                    |  26 +++-
 4 files changed, 185 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6625

Fusion-Task-Lineage: 728f6fe5-4c27-4597-b17e-e16ff97b9277
2026-06-18 00:01:32 -07:00
gsxdsm
cdadac1662 FN-6622: wire dashboard interviews to session skills
Dashboard interview lanes now request the same role-fallback and enabled plugin skills as agent-acting sessions.

- Add skillSelection to agent onboarding and milestone/slice interview agent creation.
- Thread the plugin runner through mission interview and onboarding routes.
- Cover enabled and disabled plugin skill selection behavior in dashboard tests.
- Document the newly covered dashboard interview lanes and add a minor changeset.

Files changed:
 .../fn-6622-session-skill-interview-lanes.md       |  5 ++
 docs/agents.md                                     |  2 +-
 .../src/__tests__/agent-onboarding.test.ts         | 68 ++++++++++++++++++++++
 .../__tests__/milestone-slice-interview.test.ts    | 66 +++++++++++++++++++++
 packages/dashboard/src/agent-onboarding.ts         | 10 +++-
 .../dashboard/src/milestone-slice-interview.ts     | 39 ++++++++++---
 packages/dashboard/src/mission-routes.ts           | 10 ++--
 ...gister-agent-import-export-generation-routes.ts |  3 +-
 8 files changed, 187 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6622

Fusion-Task-Lineage: 5e3dded1-1866-4b76-8302-253e5b3867fa
2026-06-17 22:21:34 -07:00
gsxdsm
29b27a7ebb FN-6620: categorize Fusion tool analytics
Improve Command Center tool analytics so Fusion tool calls land in meaningful buckets.

- categorize Fusion task, planning, research, agent, skills, secrets, workflow, GitHub, and memory tool families
- re-bucket historical tool_call rows whose stored category was missing or `other` while preserving explicit custom categories
- cover categorization and aggregation behavior with core tests
- add a patch changeset for the published CLI package

Files changed:
 .changeset/fn-6620-tool-categories.md              |  5 ++
 packages/core/src/__tests__/tool-analytics.test.ts | 33 +++++++++++
 packages/core/src/__tests__/usage-events.test.ts   | 69 +++++++++++++++++++---
 packages/core/src/tool-analytics.ts                | 22 +++++--
 packages/core/src/usage-events.ts                  | 66 ++++++++++++++++++++-
 5 files changed, 178 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-6620

Fusion-Task-Lineage: a8f2525e-7aff-4576-89e2-6b142792f380
2026-06-17 21:45:50 -07:00
gsxdsm
ae3e57572f FN-6618: consolidate dashboard relative-time formatting
Centralize duplicated dashboard relative-time bucket logic while preserving surface-specific copy.

- Route activity log, mailbox, git manager, project card, and task detail timestamps through the shared relative-time helper.
- Keep specialized freshness labels local where seconds granularity or prefixed sync/check status copy differs from the generic helper.
- Extend component tests to cover the preserved timestamp wording and invalid/future-date behavior.

Files changed:
 .../dashboard/app/components/ActivityLogModal.tsx  | 36 ++++++++++------
 .../app/components/AgentReflectionsTab.tsx         |  7 ++-
 .../dashboard/app/components/GitManagerModal.tsx   | 34 ++++++++++-----
 packages/dashboard/app/components/MailboxModal.tsx | 38 ++++++++++------
 packages/dashboard/app/components/MailboxView.tsx  | 38 ++++++++++------
 packages/dashboard/app/components/PrChecksList.tsx |  4 ++
 packages/dashboard/app/components/ProjectCard.tsx  | 35 ++++++++++-----
 packages/dashboard/app/components/RoutineCard.tsx  |  3 ++
 .../dashboard/app/components/TaskDetailModal.tsx   | 37 ++++++++++------
 .../components/__tests__/ActivityLogModal.test.tsx | 41 +++++++++++++++++-
 .../components/__tests__/GitManagerModal.test.tsx  | 36 +++++++++++++++-
 .../app/components/__tests__/MailboxModal.test.tsx | 35 ++++++++++++++-
 .../app/components/__tests__/MailboxView.test.tsx  | 35 ++++++++++++++-
 .../app/components/__tests__/ProjectCard.test.tsx  | 50 +++++++++++++++++++++-
 .../__tests__/TaskDetailModal.rendering.test.tsx   | 44 +++++++++++++++++++
 .../dashboard/app/hooks/useNodeSettingsSync.ts     |  3 ++
 16 files changed, 398 insertions(+), 78 deletions(-)

Fusion-Task-Id: FN-6618

Fusion-Task-Lineage: ac24de7c-3333-43f7-83c1-aa4c2a3dbe31
2026-06-17 21:37:18 -07:00
gsxdsm
cee24b8b8d FN-6619: wire overview to analytics
Command Center Overview now reports live analytics instead of placeholder empty data.

- Fetch token, tool, activity, and best-effort signal analytics for the overview cards.
- Show loading and error states around the core overview metrics while preserving the throughput section.
- Cover populated, empty, error, date-range, and mobile overview behavior in tests.

Files changed:
 .../components/command-center/CommandCenter.tsx    | 154 ++++++++++----
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |  64 +++++-
 .../__tests__/CommandCenter.test.tsx               | 233 ++++++++++++++++++++-
 3 files changed, 408 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-6619
Fusion-Task-Lineage: 603bcbd1-7913-4014-aea7-9a941e16e29a
2026-06-17 21:29:50 -07:00
gsxdsm
0453a65bf1 FN-6613: inject skills into agent session lanes
Ensure every agent-acting session lane requests available agent and plugin skills.\n\n- Add skill selection context to planning, mission interview, workflow design, memory insight, and cron automation sessions.\n- Thread plugin runners through dashboard session creation, retry, reconnect, and route registration paths.\n- Cover skill injection behavior with dashboard and cron runner regression tests.\n- Document which agent session lanes request skills and which utility-only lanes remain exempt.\n- Add a minor changeset for the published CLI package.\n\nFiles changed:\n .changeset/fn-6613-session-skill-lanes.md          |   5 +\n docs/agents.md                                     |   1 +\n .../src/__tests__/mission-interview.test.ts        |  55 ++++++\n .../src/__tests__/planning-skill-selection.test.ts | 130 +++++++++++++\n .../src/__tests__/session-error-recovery.test.ts   |   6 +\n .../session-persistence-roundtrip.test.ts          |   6 +\n .../src/__tests__/session-reconnect.test.ts        |   6 +\n .../src/__tests__/session-resume-history.test.ts   |   6 +\n packages/dashboard/src/mission-interview.ts        |  23 ++-\n packages/dashboard/src/mission-routes.ts           |   4 +-\n packages/dashboard/src/planning.ts                 |  32 +++-\n .../register-settings-memory-worktrunk.test.ts     | 203 ++++++++++++++++++++-\n .../routes/__tests__/workflow-design-route.test.ts |  56 +++++-\n .../src/routes/register-integrated-routers.ts      |   2 +-\n .../src/routes/register-planning-subtask-routes.ts |   5 +\n .../src/routes/register-settings-memory-routes.ts  |  33 +++-\n .../src/routes/register-workflow-routes.ts         |  16 +-\n packages/dashboard/src/test/mockCoreEngine.ts      |   9 +\n packages/engine/src/__tests__/cron-runner.test.ts  |  17 ++\n packages/engine/src/cron-runner.ts                 |   7 +\n 20 files changed, 599 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6613

Fusion-Task-Lineage: 985fa9fb-0381-4abf-930f-b547a475c4ed
2026-06-17 21:12:53 -07:00
gsxdsm
0767d1bf81 FN-6616: generalize bundled plugin freshness guard
Generalize stale-artifact detection so all staged bundled CLI plugins are checked consistently.

- Add reusable bundled plugin freshness helpers and coverage for missing, fresh, and stale artifact cases.
- Centralize staged bundled plugin id lists for runtime bundling and staged raw-src plugin checks.
- Assert tsup output leaves every staged bundled plugin loadable and document the broader freshness guard.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6616-bundled-plugin-freshness.md     |   5 +
 docs/PLUGIN_AUTHORING.md                           |   8 ++
 .../__tests__/bundled-plugin-freshness.test.ts     |  75 +++++++++++++
 .../cli/src/plugins/bundled-plugin-freshness.ts    | 118 +++++++++++++++++++++
 .../cli/src/plugins/staged-bundled-plugin-ids.ts   |  22 ++++
 packages/cli/tsup.config.ts                        |  41 ++++---
 6 files changed, 257 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-6616

Fusion-Task-Lineage: 3804827b-8f64-4268-a7bb-31a4b4ca9a87
2026-06-17 20:45:32 -07:00
gsxdsm
1020b3f83f FN-6606: restore CE sync lane coverage
Restore the compound-engineering broad lane tests after the timeout could not be reproduced on the stabilized shared test infrastructure.

- Re-enable the compound-engineering sync and work-bridge tests by clearing their Vitest quarantine excludes.
- Remove the stale quarantine ledger entries now that the broad package lane stayed stable under verification.

Files changed:
 plugins/fusion-plugin-compound-engineering/vitest.config.ts | 10 ++++------
 scripts/lib/test-quarantine.json                            | 13 +------------
 2 files changed, 5 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-6606

Fusion-Task-Lineage: f357c626-c181-44a7-a463-c53644566ca1
2026-06-17 20:19:55 -07:00
gsxdsm
fbd9ad2f3b FN-6617: add weekly test velocity baseline
Adds a report-only weekly baseline for test feedback-loop velocity.

- Add a test:velocity script that measures gate, boot smoke, and changed-only test durations and regenerates a #leads-ready report.
- Track committed baseline history, slowest-file summaries, and quarantine deletion-clock counts.
- Document the weekly refresh workflow in testing guidance and agent instructions.

Files changed:
 AGENTS.md                                         |   4 +-
 docs/test-velocity-baseline.md                    |  92 ++++++
 docs/testing.md                                   |  18 ++
 package.json                                      |   1 +
 scripts/__tests__/test-velocity-baseline.test.mjs | 121 ++++++++
 scripts/test-velocity-baseline.mjs                | 339 ++++++++++++++++++++++
 scripts/test-velocity-history.json                | 231 +++++++++++++++
 7 files changed, 805 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6617

Fusion-Task-Lineage: 50a07298-74ec-4481-b288-4fadb7d3d29b
2026-06-17 20:09:05 -07:00
gsxdsm
a013bc0309 FN-6607: align step tools with zero-based prompt steps
Align executor step tools and review bookkeeping with the 0-based Step N labels agents see in PROMPT.md.

- Treat fn_task_update and fn_review_step step parameters as 0-indexed values, including validation, logs, checkpoints, and review verdict maps.
- Update executor/reviewer/step-runner guidance and generated tool docs to describe Step 0 semantics consistently.
- Adjust affected executor and reliability tests and add coverage proving Step 0 progress, review, and revise handling work without off-by-one shifts.
- Add a patch changeset for the published Fusion CLI package.

Files changed:
 .changeset/fn-6607-step-numbering.md               |   5 +
 .../cli/skill/fusion/references/engine-tools.md    |   4 +-
 .../engine/src/__tests__/executor-pause.test.ts    |   2 +-
 .../executor-review-step-indexing.test.ts          |  18 +-
 .../src/__tests__/executor-review-verdicts.test.ts |  18 +-
 .../executor-step-numbering-zero-based.test.ts     | 196 +++++++++++++++++++++
 .../src/__tests__/executor-step-session.test.ts    |  24 ++-
 ...executor-task-done-revise-verdict-guard.test.ts |   4 +-
 .../executor-pending-review-skip-retry.test.ts     |   8 +-
 .../task-done-refusal-x-invariant.test.ts          |   2 +-
 packages/engine/src/__tests__/step-runner.test.ts  |   4 +-
 packages/engine/src/executor.ts                    |  57 +++---
 packages/engine/src/reviewer.ts                    |   3 +
 packages/engine/src/step-runner.ts                 |   6 +-
 14 files changed, 284 insertions(+), 67 deletions(-)

Fusion-Task-Id: FN-6607

Fusion-Task-Lineage: 1b1fb1d8-07ca-4a33-84f5-1dab83388c01
2026-06-17 19:52:20 -07:00
gsxdsm
4c3186d0d1 FN-6615: prefer fresh plugin source over stale dist
Plugin entry resolution now avoids stale gitignored dist output in dev worktrees.

- Prefer bundled plugin entries when present, preserving published tarball behavior.
- Choose src/index.ts over dist/index.js when source files are newer than dist output.
- Cover CLI and core plugin loaders with freshness and sync tests.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6615-prefer-fresh-src.md             |  5 ++
 .../__tests__/bundled-plugin-install.test.ts       | 46 ++++++++---
 .../resolve-plugin-entry-path-sync.test.ts         | 50 ++++++++++--
 packages/cli/src/plugins/bundled-plugin-install.ts | 93 ++++++++++++++++++----
 packages/core/src/__tests__/plugin-loader.test.ts  | 71 ++++++++++++++++-
 packages/core/src/plugin-loader.ts                 | 93 ++++++++++++++++++----
 6 files changed, 313 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-6615

Fusion-Task-Lineage: 3d9abfa8-a405-47fa-8330-451c26a0ee75
2026-06-17 19:46:47 -07:00
gsxdsm
f150a176b4 FN-6612: add test feedback-loop baseline reporting
Add a weekly baseline workflow for tracking test feedback-loop speed and flake pressure.

- Add a stdlib-only script to record gate and pnpm test timings alongside slowest test files and quarantine counts.
- Publish generated markdown and JSON baseline artifacts for #leads reporting.
- Document the weekly refresh process and add package scripts plus coverage for the baseline helper.

Files changed:
 docs/test-feedback-loop-baseline.md               |  48 ++++++
 docs/test-feedback-loop-baselines.json            | 122 ++++++++++++++
 docs/testing.md                                   |  12 ++
 package.json                                      |   1 +
 scripts/__tests__/test-feedback-baseline.test.mjs |  90 ++++++++++
 scripts/test-feedback-baseline.mjs                | 192 ++++++++++++++++++++++
 6 files changed, 465 insertions(+)

Fusion-Task-Id: FN-6612

Fusion-Task-Lineage: 72bdc070-50e3-4e6b-a07d-3b8aeb9c2e92
2026-06-17 19:25:06 -07:00
gsxdsm
c4878514f9 FN-6600: harden core worker-root teardown retries
Harden the core Vitest worker-root cleanup path and rescue the related broad-suite quarantines.

- Increase bounded retries for transient ENOTEMPTY/EBUSY worker-root cleanup races.
- Add teardown coverage proving transient ENOTEMPTY retries remove the worker root.
- Remove rescued core quarantine entries from the ledger and Vitest exclude list.
- Document the FN-6600 core cleanup rescue pattern in testing guidance.

Files changed:
 docs/testing.md                                    |  2 ++
 .../core/src/__test-utils__/vitest-teardown.ts     |  7 +++++-
 .../vitest-teardown-worker-root-cleanup.test.ts    | 27 ++++++++++++++++++++++
 packages/core/vitest.config.ts                     |  6 +++--
 scripts/lib/test-quarantine.json                   | 15 ------------
 5 files changed, 39 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-6600

Fusion-Task-Lineage: 107fb5cf-82c8-4e65-915d-0ef69725369b
2026-06-17 19:19:05 -07:00
gsxdsm
7f4f611367 FN-6611: clarify engineer backlog auto-claim routing
Clarifies why engineer agents see but do not auto-claim backlog tasks without opt-in.

- Surface actionable project and per-agent opt-in guidance in no-task heartbeat prompts.
- Include eligible backlog candidates in the blocked engineer guidance so routing remains visible.
- Cover disabled engineer auto-claim scenarios with prompt assertions.
- Update agent and settings docs with the visible configuration paths.

Files changed:
 docs/agents.md                                        |  2 +-
 docs/settings-reference.md                            |  2 +-
 .../engine/src/__tests__/heartbeat-executor.test.ts   | 11 +++++++++--
 packages/engine/src/agent-heartbeat.ts                | 19 ++++++++++++++++---
 4 files changed, 27 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6611

Fusion-Task-Lineage: ffcafc50-1664-4807-826c-cccf68d31012
2026-06-17 19:11:31 -07:00
gsxdsm
5c0c162a2b FN-6609: fix command center CSS token hygiene
Command Center styles now rely on canonical muted text and shadow tokens.

- Replace deprecated --text-secondary usages in command center styles with --text-muted.
- Remove the raw rgba fallback from the date range popover shadow token.
- Document the command-center styling token requirements with FNXC comments.

Files changed:
 .../app/components/command-center/CommandCenter.css   | 13 +++++++++----
 .../app/components/command-center/DateRangePicker.css |  8 ++++++--
 .../components/command-center/MissionControlPanel.css | 11 ++++++++---
 .../app/components/command-center/areas/areas.css     | 19 ++++++++++++-------
 .../app/components/command-center/charts/charts.css   | 11 ++++++++---
 5 files changed, 43 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-6609
Fusion-Task-Lineage: 8a02f4a3-a881-4db6-893e-363b74cbfba8
2026-06-17 18:54:24 -07:00
gsxdsm
1bd8f6de6f FN-6603: fix mobile terminal font measurement
Stabilize terminal glyph measurement by keeping monospace text fonts ahead of symbols fallbacks.

- Move the Fusion Terminal Nerd Font Symbols face behind real monospace fonts in the shared xterm font stack and terminal presets.
- Document the mobile WebKit cell-measurement hazard and keep SessionTerminal aligned with the shared preference path.
- Add regression coverage for mobile wide-glyph spacing, preference presets, and terminal input rendering.
- Add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-6603-terminal-render.md              |  5 +++
 .../xterm-symbols-nerd-font-unicode-range.md       | 17 ++++++---
 .../dashboard/app/__tests__/terminal-input.test.ts | 42 ++++++++++++++++++++--
 .../dashboard/app/components/SessionTerminal.tsx   |  3 ++
 .../dashboard/app/components/TerminalModal.css     |  5 ++-
 .../__tests__/SessionTerminal.mobile.test.tsx      | 22 +++++++++++-
 .../components/__tests__/SessionTerminal.test.tsx  | 23 ++++++++++--
 .../dashboard/app/utils/terminalPreferences.ts     | 14 +++++---
 8 files changed, 115 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6603

Fusion-Task-Lineage: b5d90064-1bfd-4da9-8d89-c95cf6fcec0c
2026-06-17 18:48:53 -07:00
gsxdsm
19aac38c51 FN-6605: load chat skill slash commands
Load dashboard chat slash-command skill requests into model-loop sessions.

- Parse /skill:{name} tokens in main chat, QuickChat, and room responders.
- Merge typed skill requests with existing agent and plugin skill selection while preserving normal filters.
- Strip slash-command tokens from model prompts without mutating persisted chat history.
- Cover slash-command parsing, deduplication, prompt stripping, and room responder skill selection.
- Document dashboard chat skill command behavior and add a published package changeset.

Files changed:
 .changeset/fn-6605-chat-skill-slash-command.md     |   5 +
 docs/agents.md                                     |   1 +
 docs/dashboard-guide.md                            |   1 +
 .../dashboard/src/__tests__/chat-manager.test.ts   | 158 +++++++++++++++++++++
 .../dashboard/src/__tests__/chat.rooms.test.ts     |  46 ++++++
 packages/dashboard/src/chat.ts                     | 100 ++++++++++++-
 6 files changed, 307 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6605

Fusion-Task-Lineage: 4ad2e015-30a5-4608-b69c-e42e46166f0e
2026-06-17 18:37:01 -07:00
gsxdsm
b20def94d2 FN-6592: rescue mission restart integration coverage
Rescue mission integration restart coverage while keeping unrelated core quarantines intact.

- Close reopened TaskStore handles during mission integration restart tests.
- Add restart-fidelity assertions for empty and populated mission hierarchy read paths.
- Document that mission-integration stays out of the core quarantine list.

Files changed:
 .../core/src/__tests__/mission-integration.test.ts | 140 +++++++++++++++++----
 packages/core/vitest.config.ts                     |   4 +-
 2 files changed, 121 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6592

Fusion-Task-Lineage: 292caa5d-eb18-4356-bcaf-a9c1796a7815
2026-06-17 18:25:10 -07:00
gsxdsm
076ab9fed0 FN-6604: increase task chat send icon size
Increase the Task Detail chat send glyph so it is visibly larger on mobile without changing the touch target.

- Switch the task chat send button icon token from space-lg to space-xl for desktop and mobile rules.
- Add CSS token resolution coverage so the task chat send glyph must exceed the default medium icon size.
- Keep desktop and mobile send button touch target sizing unchanged.

Files changed:
 packages/dashboard/app/components/TaskChatTab.css  |  7 ++--
 .../app/components/__tests__/TaskChatTab.test.tsx  | 37 +++++++++++++++++++---
 2 files changed, 38 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6604

Fusion-Task-Lineage: d1708d43-fe1b-4eb2-ab6a-c5954ff00a87
2026-06-17 18:18:56 -07:00
gsxdsm
1d76e9d02c FN-6602: delay scripted terminal input until PTY readiness
Wait for new terminal sessions to become ready before injecting saved-script commands.

- Add PTY readiness tracking with first-output, quiet-window, timeout, and cleanup resolution paths.
- Wait for readiness before messaging script routes write generated command input.
- Cover readiness timing, cleanup behavior, and route-level delayed write behavior with tests.

Files changed:
 .../src/__tests__/scripts-routes.routes.test.ts    |  54 ++++++++
 .../src/__tests__/terminal-service.test.ts         | 143 ++++++++++++++++++++-
 .../src/routes/register-messaging-scripts.ts       |   5 +
 packages/dashboard/src/terminal-service.ts         |  91 +++++++++++++
 4 files changed, 292 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6602

Fusion-Task-Lineage: a38a7222-ecb7-4567-9d47-946678088076
2026-06-17 18:08:55 -07:00
gsxdsm
ca14a12b94 FN-6601: consolidate relative-time bucket formatting
Consolidate dashboard relative-time calculations behind a shared bucket helper while preserving each surface's display behavior.

- Add getRelativeTimeBucket to centralize parsing, boundary math, and bucket metadata.
- Route ActivityFeed, AgentLogViewer, MissionManager, and PlanningModeModal timestamp labels through the shared helper.
- Extend unit coverage for bucket boundaries plus surface-specific just-now and future timestamp behavior.

Files changed:
 packages/dashboard/app/components/ActivityFeed.tsx | 36 ++++++----
 .../dashboard/app/components/AgentLogViewer.tsx    | 36 ++++++----
 .../dashboard/app/components/MissionManager.tsx    | 32 +++++----
 .../dashboard/app/components/PlanningModeModal.tsx | 35 ++++++----
 .../app/components/__tests__/ActivityFeed.test.tsx |  8 +++
 .../components/__tests__/AgentLogViewer.test.tsx   |  8 +++
 .../app/utils/__tests__/relativeTimeAgo.test.ts    | 77 +++++++++++++++++++++-
 packages/dashboard/app/utils/relativeTimeAgo.ts    | 66 +++++++++++++++----
 8 files changed, 236 insertions(+), 62 deletions(-)

Fusion-Task-Id: FN-6601

Fusion-Task-Lineage: 3521afa0-f3ce-49a4-8861-efd4f64f9a69
2026-06-17 17:57:19 -07:00
gsxdsm
5b9ff047d3 FN-6599: preserve chat thread during streaming attach
Keep existing chat history visible when attaching to an in-flight streaming response.

- Commit attach-triggered message loads for the streaming session before active session refs settle.
- Avoid clearing cached main chat messages on attach cache misses while fetching prior thread history.
- Add regression coverage for main chat and QuickChat streaming thread visibility, plus quarantine ledger updates.

Files changed:
 .changeset/fn-6599-chat-streaming-thread.md        |   5 +
 docs/architecture.md                               |   1 +
 docs/dashboard-guide.md                            |   2 +-
 packages/core/vitest.config.ts                     |   1 +
 .../__tests__/ChatView.streaming-thread.test.tsx   | 168 +++++++++++++++++++++
 .../dashboard/app/hooks/__tests__/useChat.test.ts  |  51 +++++++
 .../app/hooks/__tests__/useQuickChat.test.ts       |  39 +++++
 packages/dashboard/app/hooks/useChat.ts            |  37 +++--
 packages/dashboard/app/hooks/useQuickChat.ts       |  27 ++--
 scripts/lib/test-quarantine.json                   |   5 +
 10 files changed, 307 insertions(+), 29 deletions(-)

Fusion-Task-Id: FN-6599

Fusion-Task-Lineage: b2c94391-6a5b-4048-836d-e4bc56e16786
2026-06-17 17:49:20 -07:00