gsxdsm
d07a5d6ce5
Offload background integrity_check off the main event loop
...
The boot-time integrity check (scheduleBackgroundIntegrityCheck, ~60s
after init) ran PRAGMA integrity_check on the live connection, walking
every page and freezing the event loop for several seconds — the largest
single read-contention stall in normal operation.
Offload it to the sqlite3 CLI in a child process (async spawn), matching
the existing out-of-process pattern used by quickCheckSqliteFile and
.recover. The CLI connection is opened -readonly so it can never
checkpoint or write the live WAL; this works because the live process
holds the DB open (so the -shm exists). When the CLI is unavailable or
can't open read-only, fall back to the in-process check (verified=false),
preserving today's behavior on those environments.
- New integrityCheckSqliteFileAsync(dbPath, limit) module helper.
- New private runBackgroundIntegrityCheck() seam (offload + fallback) so
the scheduler has one testable, deterministic policy point.
- Background scheduler callback is now async (IIFE + finally) with errors
swallowed so a background timer can't crash the process.
VACUUM is intentionally NOT offloaded: the call graph shows it is invoked
only by the `fn db vacuum` CLI command and tests, never from the periodic
maintenance loop, so it is not a background event-loop stall — and an
out-of-process VACUUM on a live WAL DB would add corruption surface for no
hot-path benefit.
Tests updated to the async/offloaded seam (deterministic regardless of
whether the sqlite3 CLI exists in the environment), plus coverage for the
new helper.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 14:12:59 -07:00
gsxdsm
849eefa35e
Merge pull request #1692 from Runfusion/fix/sqlite-read-contention
...
Reduce SQLite read contention: bound WAL growth + release vacuum lock
2026-06-20 13:53:35 -07:00
gsxdsm
61c29cc6b4
Reduce SQLite read contention: bound WAL growth + release vacuum lock
...
Investigation of reported DB read contention found two cross-process
contention sources in the SQLite layer (single synchronous node:sqlite
connection per process, WAL mode):
- Unbounded WAL on central-db and archive-db. Neither set
journal_size_limit, so their WAL never truncated back down after a
checkpoint and every reader paid an ever-growing WAL-index scan. Add
journal_size_limit=4MB (matching db.ts) plus explicit
synchronous=FULL/wal_autocheckpoint=1000 for intent. central-db is the
most cross-process-shared DB; archive-db had the same latent gap.
- vacuum() held the EXCLUSIVE lock past its own runtime. Resetting
locking_mode to NORMAL does not drop the WAL exclusive lock until the
connection next touches the DB, so other processes stayed locked out of
reads (SQLITE_BUSY) until some unrelated query ran. A plain read does
NOT release it in WAL mode (verified); a PASSIVE checkpoint does. Run
one in the finally, guard the locking_mode reset so it can't mask the
original error or skip the release, and log swallowed failures.
Tests: assert the new PRAGMAs on central-db and archive-db, and that a
second connection can read immediately after vacuum() returns.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 13:24:38 -07:00
gsxdsm
7e7eb6299d
Harden orphan-worktree/stale-task-dir cleanup (code-review follow-up)
...
Addresses findings from a multi-agent review of the two prior fixes.
P0 (executor.ts): the stale-conflict recovery force-removed worktreePath with
no bounds check; that path can come from a git admin entry resolving outside
.worktrees/. Now refuses unless the path is inside the worktrees dir, not a
symlink (realpathSync), not a registered worktree, and not actively owned, and
re-verifies liveness in the catch instead of trusting the error string. Also
excludes spawn failures (spawn git ENOENT) from the stale-path classification.
worktree-pool.ts: resolveGitdirPointer -> dotGitPointerIsDangling. Reaps only
when a .git link's gitdir target is confirmed missing; a real .git dir,
unparseable pointer, or any read/stat failure is treated as NOT dangling
(conservative) so a transient read error on a live worktree can't trigger rm.
Drops the string|"directory"|null sentinel union.
core store.ts: bypass the reconcile recency window when the live task table is
empty (corruption/restore: surviving task.json keep old mtimes) and when
fusion.db was auto-recovered on startup, so .recover row loss isn't stranded.
Adds an ignoreRecencyWindow option.
Tests: executor recovery + out-of-bounds refusal, unparseable .git skip,
recency boundary, empty-DB/forced bypass. engine 135 + core 12 green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 12:46:34 -07:00
gsxdsm
26ebb9206f
Stop reconcile from resurrecting long-deleted task dirs
...
On restart, reconcileOrphanedTaskDirs re-imported ancient .fusion/tasks/<id>/
directories that had no DB row, surfacing old low-numbered tasks (FN-001, ...)
onto the live board — looking like "all task IDs reset / starting over".
The sweep is meant to recover dirs that appear after store init (heartbeat
races) or rows lost to recent DB corruption. Modern deletes leave a soft-delete
tombstone (caught by taskIdExistsAnywhere), but legacy hard-deletes left none,
so a months-old task.json with no DB row was silently re-imported.
Gate recovery on a 7-day recency window (task.json mtime). Older orphans are
skipped (reason: stale-orphan-dir-beyond-recency-window) and left for explicit
recovery or directory cleanup; heartbeat-race and recent-corruption recovery
still work. Adds a regression test for the stale-dir skip.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 12:00:51 -07:00
gsxdsm
c0d78f19c5
FN-6795: update quarantine ledger after rescue triage
...
Refresh the test quarantine records after loaded-lane rescue verification.
- document the FN-6795 CLI and core quarantine triage outcomes
- rescue passing core and CLI test files by removing their ledger/config excludes
- retain CLI package-lane-only timeout quarantines and add the newly observed bin test flake
Files changed:
docs/testing.md | 4 ++++
packages/cli/vitest.config.ts | 10 +++++++---
packages/core/vitest.config.ts | 4 +++-
scripts/lib/test-quarantine.json | 25 +++++--------------------
4 files changed, 19 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-6795
Fusion-Task-Lineage: b4460fc7-848f-4d54-89b4-cfd4d4533d57
2026-06-20 10:28:25 -07:00
gsxdsm
52924ba23d
FN-6759: add built-in lead-generation workflow
...
Add a selectable business workflow for managing lead-generation tasks.
- Register a built-in lead-generation workflow with custom business columns, lead fields, and stage prompts.
- Cover workflow registration, column traits, field metadata, compilation, and IR round-tripping with core tests.
- Document the workflow catalog entry and add a minor changeset for the published CLI package.
Files changed:
.changeset/fn-6759-lead-generation-workflow.md | 5 +
docs/workflow-steps.md | 4 +
.../builtin-lead-generation-workflow-ir.test.ts | 123 ++++++++++++++++++
.../core/src/__tests__/builtin-workflows.test.ts | 10 ++
.../src/builtin-lead-generation-workflow-ir.ts | 141 +++++++++++++++++++++
packages/core/src/builtin-workflows.ts | 20 +++
packages/core/src/index.ts | 1 +
7 files changed, 304 insertions(+)
Fusion-Task-Id: FN-6759
Fusion-Task-Lineage: 6c724f84-a6a6-4b01-93ec-cabb9387be2f
2026-06-20 08:43:35 -07:00
gsxdsm
281ce35829
FN-6761: add built-in marketing workflow
...
Add a content-focused workflow while preserving standard Fusion lifecycle and merge behavior.
- Register builtin:marketing in the built-in workflow catalog and default-enabled workflow order.
- Define marketing-specific columns, content brief/draft/editorial prompts, lifecycle traits, and merge primitives.
- Cover the marketing workflow in built-in workflow tests and document it in workflow-step docs.
- Add a minor changeset for the published Fusion package.
Files changed:
.changeset/fn-6761-marketing-workflow.md | 5 +
docs/workflow-steps.md | 3 +
.../core/src/__tests__/builtin-workflows.test.ts | 64 +++++++++++-
packages/core/src/builtin-marketing-workflow-ir.ts | 116 +++++++++++++++++++++
packages/core/src/builtin-workflows.ts | 24 +++++
packages/core/src/index.ts | 1 +
6 files changed, 209 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6761
Fusion-Task-Lineage: 3242eceb-570f-47f8-8750-dc3acc971bbd
2026-06-20 08:20:39 -07:00
gsxdsm
254f31ebb6
FN-6790: quiesce deferred task-created writes on close
...
Rescue task-document coverage by making TaskStore teardown stop late deferred task-created filesystem work.
- Track deferred title write and task-created hook phases so close can drain active work.
- Skip late deferred task-created work once a store is closing to avoid recreating removed fixture roots.
- Update task-document regression coverage, harness teardown awaiting, and rescue documentation while keeping task-documents loaded.
Files changed:
docs/testing.md | 4 ++
packages/core/src/__tests__/store-test-helpers.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 39 ++++++++++-
packages/core/src/store.ts | 75 +++++++++++++++-------
packages/core/vitest.config.ts | 3 +
5 files changed, 96 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-6790
Fusion-Task-Lineage: c458fc4a-b2b4-4cc4-9d88-da8c43f6916d
2026-06-20 05:53:46 -07:00
gsxdsm
7f3e94292c
FN-6760: add built-in design workflow
...
Add a built-in workflow path for UI-heavy implementation work with a required design review gate.
- Register builtin:design as a selectable built-in workflow after implementation and before standard review/merge.
- Define design review criteria covering hierarchy, spacing, typography, design tokens, component reuse, responsiveness, and design-language fit.
- Add catalog coverage and update workflow documentation to list the new Design workflow.
- Add a minor changeset for the published Fusion package.
Files changed:
.changeset/fn-6760-design-workflow.md | 5 +++++
docs/getting-started.md | 2 +-
docs/workflow-editor.md | 4 ++++
docs/workflow-steps.md | 1 +
.../core/src/__tests__/builtin-workflows.test.ts | 23 +++++++++++++++++++++
packages/core/src/builtin-workflows.ts | 24 ++++++++++++++++++++++
6 files changed, 58 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6760
Fusion-Task-Lineage: 2682ce3f-a89d-4237-b2cf-675439eea1d6
2026-06-20 05:14:25 -07:00
gsxdsm
c32c925321
FN-6783: recover orphaned task dirs into the task index
...
Reconcile on-disk task.json records that are missing from SQLite without resurrecting tombstoned IDs.
- Add TaskStore orphaned task directory scanning with metadata validation, FTS-safe insertion, cache updates, lifecycle events, and run-audit entries.
- Run the reconcile during store init and self-healing maintenance for tasks created after startup.
- Cover recovery, skip, and maintenance behavior with core and engine regression tests.
- Document task index reconciliation and add the published package changeset.
Files changed:
.changeset/fn-6783-orphaned-task-dir-reconcile.md | 5 +
AGENTS.md | 1 +
docs/architecture.md | 2 +
docs/storage.md | 8 +
.../store-orphaned-task-dir-reconcile.test.ts | 179 +++++++++++++++++++++
packages/core/src/store.ts | 170 ++++++++++++++++++-
.../self-healing-orphaned-task-dirs.test.ts | 40 +++++
packages/engine/src/self-healing.ts | 14 ++
8 files changed, 412 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-6783
Fusion-Task-Lineage: 5c8d4690-5278-4c29-8f02-32d9f01d581d
2026-06-20 04:40:31 -07:00
gsxdsm
5117944371
FN-6720: add productivity task duration stats
...
Adds completed-task active-duration analytics to the Command Center Productivity surface.\n\n- Aggregate average, median, p90, total, and completed-task duration metrics from done tasks with recorded active time.\n- Render duration stat cards with unavailable dash sentinels and export matching CSV rows.\n- Cover analytics, dashboard, route, CSV, mobile/tablet layout, and documentation behavior.\n\nFiles changed:\n .changeset/soft-badgers-measure.md | 5 +\n docs/architecture.md | 4 +-\n docs/dashboard-guide.md | 2 +-\n docs/storage.md | 2 +\n .../src/__tests__/productivity-analytics.test.ts | 105 ++++++++++++++++++++-\n packages/core/src/productivity-analytics.ts | 83 +++++++++++++++-\n .../__tests__/CommandCenter.mobile-scroll.test.tsx | 16 ++++\n .../__tests__/CommandCenter.tablet-layout.test.tsx | 19 ++++\n .../command-center/areas/ProductivityArea.tsx | 65 ++++++++++++-\n .../command-center/areas/__tests__/areas.test.tsx | 65 ++++++++++++-\n .../components/command-center/areas/areaShared.ts | 12 +++\n .../src/__tests__/command-center-csv.test.ts | 8 ++\n .../register-command-center-routes.test.ts | 22 +++++\n packages/dashboard/src/command-center-csv.ts | 5 +\n 14 files changed, 404 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-6720
Fusion-Task-Lineage: aa0980eb-d156-4dca-b6b8-1788570c166b
2026-06-19 17:25:35 -07:00
gsxdsm
711bf3e1b8
FN-6746: attribute token analytics per runtime model
...
Persist and expand per-model token usage so Command Center reports every model used by a task.
- Add a nullable per-model token usage column and task model bucket types.
- Merge session token deltas into provider/model buckets while retaining task-level totals.
- Expand model/provider analytics from per-model buckets with legacy fallbacks for older rows.
- Cover persistence, migration, aggregation, and session accumulation behavior with tests.
- Document the per-model storage contract alongside existing token analytics tables.
Files changed:
docs/storage.md | 2 +
packages/core/src/__tests__/db-migrate.test.ts | 62 ++++++++++
.../core/src/__tests__/store-persistence.test.ts | 49 ++++++++
.../core/src/__tests__/token-analytics.test.ts | 127 ++++++++++++++++++++-
packages/core/src/db.ts | 13 ++-
packages/core/src/index.ts | 2 +-
packages/core/src/store.ts | 7 +-
packages/core/src/token-analytics.ts | 58 ++++++++--
packages/core/src/types.ts | 32 ++++++
.../src/__tests__/session-token-usage.test.ts | 23 ++++
packages/engine/src/executor.ts | 20 +++-
packages/engine/src/session-token-usage.ts | 50 +++++++-
packages/engine/src/step-session-executor.ts | 7 ++
13 files changed, 429 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-6746
Fusion-Task-Lineage: 1b1a3b31-b669-4e89-ac38-a871f3349015
2026-06-19 16:47:34 -07:00
gsxdsm
fc0636fe90
FN-6748: add Air dashboard theme
...
Adds a minimal, borderless Air color theme across dashboard theme selection and bootstrap validation.
- Register Air in the core theme union, dashboard theme options, and browser/desktop bootstrap validators.
- Add dark and light Air token blocks with flattened chrome styling and matching swatch samples.
- Cover Air registration and CSS invariants with a focused dashboard test.
- Document the Air theme alongside the existing Shadcn theme in dashboard theming guidance.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/core/src/types.ts | 2 +
packages/dashboard/app/__tests__/air-theme.test.ts | 58 ++++++++++++
.../dashboard/app/components/ThemeSelector.css | 14 +++
packages/dashboard/app/components/themeOptions.ts | 1 +
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 101 +++++++++++++++++++++
packages/desktop/src/renderer/index.html | 1 +
8 files changed, 179 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6748
Fusion-Task-Lineage: a0caf14f-673d-485c-8886-97e4b273b624
2026-06-19 16:47:34 -07:00
gsxdsm
e19f7c2008
FN-6747: add shadcn dashboard theme
...
Add a shadcn-inspired dashboard theme across the theme picker, persisted startup validation, and public theme tokens.
- Register the Shadcn color theme in core and dashboard theme option lists.
- Add zinc-neutral dark and light CSS tokens with Geist typography, 1px borders, subtle shadows, and neutralized glow effects.
- Add theme swatches, documentation, startup allow-list support, regression coverage, and a published package changeset.
Files changed:
.changeset/shadcn-dashboard-theme.md | 5 +
docs/dashboard-guide.md | 2 +-
packages/core/src/types.ts | 1 +
.../dashboard/app/components/ThemeSelector.css | 14 ++
packages/dashboard/app/components/themeOptions.ts | 1 +
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 28 ++++
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 166 +++++++++++++++++++++
8 files changed, 217 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6747
Fusion-Task-Lineage: cf0d6732-aa4f-457d-ae6c-e54fca0191b2
2026-06-19 16:47:34 -07:00
gsxdsm
59d3eee7f4
FN-6721: estimate productivity hours saved
...
Estimate human hours saved from productivity LOC analytics and expose it consistently.
- Add a shared human-lines-per-hour conversion and hoursSaved summary to productivity analytics.
- Show human hours saved in the Command Center productivity area with unavailable-state handling.
- Include hoursSaved in productivity CSV exports, docs, tests, and the release changeset.
Files changed:
.changeset/fuzzy-productivity-hours.md | 5 ++++
docs/architecture.md | 4 +--
docs/storage.md | 4 +--
.../src/__tests__/productivity-analytics.test.ts | 29 ++++++++++++++++------
packages/core/src/index.ts | 3 ++-
packages/core/src/productivity-analytics.ts | 28 +++++++++++++++++++--
.../command-center/areas/ProductivityArea.tsx | 24 ++++++++++++++++++
.../command-center/areas/__tests__/areas.test.tsx | 9 ++++++-
.../src/__tests__/command-center-csv.test.ts | 29 +++++++++++++++++++++-
.../register-command-center-routes.test.ts | 1 +
packages/dashboard/src/command-center-csv.ts | 1 +
11 files changed, 120 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-6721
Fusion-Task-Lineage: 80114bfc-7d7f-4659-983a-9488660e5f0f
2026-06-19 16:47:34 -07:00
gsxdsm
c158dda8a6
FN-6745: add xhigh thinking level support
...
Adds the xhigh reasoning option across settings, task flows, APIs, and model adapter tests.
- Extend the shared thinking-level enum, validation paths, generated resource types, and settings documentation for `xhigh`.
- Surface `xhigh` in task, agent, and global model selectors with localized labels.
- Cover task route handling, task form rendering, and Pi adapter mapping behavior with regression tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-6745-xhigh-thinking-level.md | 5 +
docs/settings-reference.md | 2 +-
.../core/src/__tests__/thinking-levels.test.ts | 9 ++
packages/core/src/types.ts | 10 +-
packages/dashboard/app/api/legacy.ts | 6 +-
.../dashboard/app/components/AgentDetailView.tsx | 2 +-
.../dashboard/app/components/ModelSelectorTab.tsx | 1 +
.../dashboard/app/components/NewAgentDialog.tsx | 3 +-
packages/dashboard/app/components/NewTaskModal.tsx | 2 +-
.../dashboard/app/components/TaskDetailModal.tsx | 2 +-
packages/dashboard/app/components/TaskForm.tsx | 2 +
.../app/components/__tests__/TaskForm.test.tsx | 14 +++
.../settings/sections/GlobalModelsSection.tsx | 1 +
.../src/__tests__/routes-tasks-ops.test.ts | 8 +-
.../dashboard/src/__tests__/routes-tasks.test.ts | 8 +-
packages/dashboard/src/agent-generation.ts | 4 +-
packages/dashboard/src/agent-onboarding.ts | 4 +-
.../src/routes/register-task-workflow-routes.ts | 5 +-
packages/engine/src/__tests__/pi.test.ts | 25 ++++
packages/i18n/locales/en/app.json | 3 +
packages/i18n/locales/es/app.json | 3 +
packages/i18n/locales/fr/app.json | 3 +
packages/i18n/locales/ko/app.json | 3 +
packages/i18n/locales/zh-CN/app.json | 3 +
packages/i18n/locales/zh-TW/app.json | 3 +
packages/i18n/src/resources.d.ts | 126 ++++++++++++++++++++-
26 files changed, 229 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-6745
Fusion-Task-Lineage: 779e1517-607b-482b-83a1-0f2bb94ae736
2026-06-19 16:47:34 -07:00
gsxdsm
8d2b396e85
FN-6741: rescue core quarantine entries
...
Rescue the loaded @fusion/core quarantine batch while keeping the remaining lock flake quarantined.
- Remove rescued core test files from the quarantine ledger and Vitest exclude list.
- Close the settings-export TaskStore before fixture cleanup to release resources deterministically.
- Re-quarantine the store-concurrent-writes broad-lane SQLite lock flake observed during merge verification.
- Document the rescue evidence and remaining deletion-ratchet follow-up.
Files changed:
docs/testing.md | 8 ++++++-
.../core/src/__tests__/settings-export.test.ts | 5 ++++
packages/core/vitest.config.ts | 11 +++++----
scripts/lib/test-quarantine.json | 27 +---------------------
4 files changed, 19 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-6741
Fusion-Task-Lineage: 064367a6-f1c4-4685-a766-37bf2204a42c
2026-06-19 16:47:34 -07:00
gsxdsm
87f18f87ed
FN-6705: add plugin activation analytics
...
Record plugin activation events and expose them to Command Center analytics.
- Add plugin activation persistence, aggregation helpers, and exports.
- Record load/reload activation events through the plugin loader and store APIs.
- Surface plugin activation counts in the Command Center Ecosystem area and API route.
- Cover migrations, aggregation behavior, plugin loader recording, route auth, UI rendering, and quarantined flaky suites.
Files changed:
.changeset/fn-6705-plugin-activation-analytics.md | 5 +
docs/architecture.md | 2 +-
docs/dashboard-guide.md | 2 +-
packages/cli/vitest.config.ts | 8 +
packages/core/src/__tests__/db-migrate.test.ts | 34 ++---
packages/core/src/__tests__/db.test.ts | 59 ++++----
packages/core/src/__tests__/goals-schema.test.ts | 6 +-
packages/core/src/__tests__/insight-store.test.ts | 12 +-
.../src/__tests__/merge-request-record.test.ts | 3 +-
packages/core/src/__tests__/mission-store.test.ts | 6 +-
.../__tests__/plugin-activation-analytics.test.ts | 67 ++++++++
packages/core/src/__tests__/plugin-loader.test.ts | 168 ++++++++++++++++++++-
packages/core/src/__tests__/run-audit.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 3 +-
.../src/__tests__/store-plugin-activations.test.ts | 52 +++++++
packages/core/src/__tests__/task-documents.test.ts | 3 +-
packages/core/src/db.ts | 35 ++++-
packages/core/src/index.ts | 8 +
packages/core/src/plugin-activation-analytics.ts | 104 +++++++++++++
packages/core/src/plugin-loader.ts | 27 ++++
packages/core/src/store.ts | 24 ++-
packages/core/src/types.ts | 22 +++
packages/core/vitest.config.ts | 12 ++
.../command-center/areas/EcosystemArea.tsx | 40 +++--
.../command-center/areas/__tests__/areas.test.tsx | 52 ++++++-
.../register-command-center-routes.auth.test.ts | 1 +
.../register-command-center-routes.test.ts | 29 ++++
.../src/routes/register-command-center-routes.ts | 20 +++
.../src/store/__tests__/roadmap-store.test.ts | 9 +-
scripts/boot-smoke.mjs | 24 ++-
scripts/lib/test-quarantine.json | 55 +++++++
31 files changed, 799 insertions(+), 99 deletions(-)
Fusion-Task-Id: FN-6705
Fusion-Task-Lineage: 12ed6227-f935-4038-bbe9-a605a054850e
2026-06-19 16:47:33 -07:00
gsxdsm
26e5514a8e
FN-6724: add Factory Mono theme
...
Add a monochrome Factory theme with red accents and no glow effects.
- Register Factory Mono across theme validation, typing, selector UI, and startup hydration.
- Define dark and light Factory Mono CSS tokens, swatches, red CTA accents, uppercase controls, and glow-free active states.
- Cover Factory Mono token behavior with a theme hook regression test and document the expanded theme count.
- Add a minor changeset for the published Fusion package.
Files changed:
.changeset/factory-mono-theme.md | 5 +
docs/dashboard-guide.md | 2 +-
packages/core/src/types.ts | 1 +
.../dashboard/app/components/ThemeSelector.css | 14 ++
.../dashboard/app/components/ThemeSelector.tsx | 1 +
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 28 ++++
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 177 +++++++++++++++++++++
8 files changed, 228 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6724
Fusion-Task-Lineage: 861fbcef-d1b1-4bfb-bd60-0196ce825771
2026-06-19 16:47:33 -07:00
gsxdsm
4373946a07
chore(release): v0.44.0
...
Version bump via changesets.
2026-06-19 07:34:26 -07:00
gsxdsm
47e7b4a150
FN-6704: capture merge LOC for productivity analytics
...
Capture merge-time diff stats so Command Center Productivity can report real Lines changed when available.
- Add nullable additions/deletions columns to task commit associations with migration and storage normalization.
- Persist git shortstat counts from merge association paths without blocking merges when stats are unavailable.
- Aggregate Productivity LOC from recorded commit stats while preserving the unavailable sentinel for historical unknowns.
- Cover migration, store upsert, analytics, and merger association stats behavior with tests and documentation.
Files changed:
.changeset/fn-6704-command-center-loc.md | 5 ++
docs/architecture.md | 4 +-
docs/storage.md | 3 +
packages/core/src/__tests__/db-migrate.test.ts | 32 ++++----
packages/core/src/__tests__/db.test.ts | 90 ++++++++++++++++------
.../src/__tests__/productivity-analytics.test.ts | 47 +++++++++--
packages/core/src/__tests__/store-upsert.test.ts | 40 ++++++++++
packages/core/src/db.ts | 14 +++-
packages/core/src/productivity-analytics.ts | 56 +++++++++-----
packages/core/src/store.ts | 17 +++-
packages/core/src/task-lineage.ts | 2 +
packages/core/src/types.ts | 2 +
.../merger-commit-association-stats.test.ts | 90 ++++++++++++++++++++++
packages/engine/src/merger-ai.ts | 2 +
packages/engine/src/merger.ts | 17 +++-
15 files changed, 349 insertions(+), 72 deletions(-)
Fusion-Task-Id: FN-6704
Fusion-Task-Lineage: f079fecb-eade-4318-bc55-23aa48097b4a
2026-06-19 06:51:57 -07:00
gsxdsm
898ac1e85f
FN-6698: back command center signals with incidents
...
Replace the Command Center signals placeholders with incidents-backed analytics.
- Add core signal aggregation over the incidents table with date filtering, breakdowns, and MTTR handling.
- Expose the signals analytics through the Command Center API and update dashboard areas to consume real data.
- Cover empty, scoped, auth, and rendered signal states with tests and update docs/changeset.
Files changed:
.changeset/command-center-signals.md | 5 +
docs/architecture.md | 1 +
docs/dashboard-guide.md | 6 +-
.../core/src/__tests__/signals-analytics.test.ts | 114 ++++++++++++
packages/core/src/index.ts | 8 +
packages/core/src/signals-analytics.ts | 195 +++++++++++++++++++++
.../components/command-center/CommandCenter.tsx | 49 +-----
.../command-center/areas/EcosystemArea.tsx | 9 +-
.../command-center/areas/ProductivityArea.tsx | 3 +
.../command-center/areas/SignalsArea.tsx | 63 +------
.../register-command-center-routes.auth.test.ts | 1 +
.../register-command-center-routes.test.ts | 54 ++++++
.../src/routes/register-command-center-routes.ts | 23 +++
13 files changed, 431 insertions(+), 100 deletions(-)
Fusion-Task-Id: FN-6698
Fusion-Task-Lineage: 9ce41fb2-9a92-4863-8aa7-ae124294fe09
2026-06-19 06:04:20 -07:00
gsxdsm
94a081f4f3
FN-6666: store GitHub issue closure timestamps
...
Persist GitHub source issue closure timestamps so Fixed by Fusion analytics can use exact close dates.
- add nullable sourceIssueClosedAt storage, migration coverage, serialization, and task source issue typing
- persist observed or newly closed GitHub issue closed timestamps during source issue reconciliation
- update GitHub issue analytics to prefer sourceIssueClosedAt with updatedAt fallback and cover the behavior in tests
- document the stored timestamp and publish a patch changeset
Files changed:
.changeset/fn-6666-source-issue-closed-at.md | 5 ++
docs/dashboard-guide.md | 2 +-
docs/storage.md | 2 +
packages/core/src/__tests__/db-migrate.test.ts | 94 +++++++++++++++++----
packages/core/src/__tests__/db.test.ts | 89 ++++++++++++++------
.../src/__tests__/github-issue-analytics.test.ts | 47 ++++++++++-
packages/core/src/db-migrate.ts | 5 +-
packages/core/src/db.ts | 12 ++-
packages/core/src/github-issue-analytics.ts | 28 +++----
packages/core/src/store.ts | 7 +-
packages/core/src/types.ts | 6 ++
.../__tests__/github-tracking-reconciler.test.ts | 80 +++++++++++++++++-
packages/dashboard/src/__tests__/github.test.ts | 95 +++++++++++++++++++++-
.../dashboard/src/github-tracking-reconciler.ts | 37 ++++++++-
packages/dashboard/src/github.ts | 20 ++++-
15 files changed, 457 insertions(+), 72 deletions(-)
Fusion-Task-Id: FN-6666
Fusion-Task-Lineage: 0fa8e824-14de-400e-b2a3-aa55d126e218
2026-06-18 18:48:05 -07:00
gsxdsm
36f1feef31
FN-6655: add Command Center team analytics
...
Adds a live Team area to Command Center with per-agent analytics and supporting API data.\n\n- Add read-only core aggregation for agent tokens, cost, changed files, and task status counts.\n- Expose the team metrics through the Command Center API and render a responsive Team dashboard with charts and tables.\n- Cover aggregation, route, desktop, and mobile Command Center behavior with tests.\n- Document the Team area and add a patch changeset for the published CLI bundle.\n\nFiles changed:\n .changeset/fn-6655-command-center-team-view.md | 5 +\n docs/dashboard-guide.md | 2 +\n packages/core/src/__tests__/team-analytics.test.ts | 315 +++++++++++++++++++++\n packages/core/src/index.ts | 7 +\n packages/core/src/team-analytics.ts | 315 +++++++++++++++++++++\n .../components/command-center/CommandCenter.tsx | 9 +\n .../__tests__/CommandCenter.mobile-scroll.test.tsx | 22 ++\n .../__tests__/CommandCenter.test.tsx | 148 +++++++++-\n .../components/command-center/areas/TeamArea.tsx | 265 +++++++++++++++++\n .../app/components/command-center/areas/areas.css | 89 ++++++\n .../register-command-center-routes.auth.test.ts | 1 +\n .../register-command-center-routes.test.ts | 69 +++++\n .../src/routes/register-command-center-routes.ts | 24 ++\n 13 files changed, 1269 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6655
Fusion-Task-Lineage: 366170f4-a250-49ce-8ca6-aea865ab0b84
2026-06-18 17:52:08 -07:00
gsxdsm
317b08b227
FN-6669: price token costs from usage snapshots
...
Resolved-model task usage now contributes priced Command Center token costs without mutating model-resolution fields.
- Use token usage provider/model snapshots before legacy task model columns for cost attribution.
- Cover model, provider, node, agent, and time-series analytics with snapshot pricing tests.
- Document snapshot-first cost attribution and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-6669-resolved-model-cost.md | 5 ++
docs/dashboard-guide.md | 2 +-
docs/storage.md | 2 +-
.../core/src/__tests__/token-analytics.test.ts | 82 ++++++++++++++++++++++
packages/core/src/token-analytics.ts | 9 ++-
5 files changed, 97 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6669
Fusion-Task-Lineage: 193a51f7-3328-44b2-b28b-25cd4f61d360
2026-06-18 17:14:19 -07:00
gsxdsm
ef544597da
FN-6665: group token analytics by runtime model
...
Record runtime model snapshots so token analytics group usage by the model that actually generated it.
- Add token-usage provider/model snapshot columns, store mapping, and migration support.
- Preserve actually-used session model metadata during executor/session token accumulation without changing task model overrides.
- Prefer runtime model snapshots in token provider/model aggregation and cover the behavior with regression tests and docs.
Files changed:
.changeset/fn-6665-tokens-by-model.md | 5 ++
docs/dashboard-guide.md | 2 +-
docs/storage.md | 2 +
.../core/src/__tests__/store-token-usage.test.ts | 4 ++
.../core/src/__tests__/token-analytics.test.ts | 54 ++++++++++++++++++++-
packages/core/src/db.ts | 12 ++++-
packages/core/src/store.ts | 10 +++-
packages/core/src/token-analytics.ts | 12 ++++-
packages/core/src/types.ts | 10 ++++
.../src/__tests__/session-token-usage.test.ts | 55 ++++++++++++++++++++--
packages/engine/src/executor.ts | 37 +++++++++++++--
packages/engine/src/session-token-usage.ts | 7 +++
12 files changed, 194 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-6665
Fusion-Task-Lineage: e103de14-6298-4a9e-93af-4dd15798fde5
2026-06-18 16:58:11 -07:00
gsxdsm
64092ca0aa
FN-6654: add Command Center agent-run sheets
...
Surface agent heartbeat-run analytics in the Command Center activity views and exports.
- Add agent-run summary and daily aggregation to activity analytics with zero-value fallback for older databases.
- Render overview and Activity stat cards plus a daily agent-runs sparkline.
- Include agent-run values in Activity CSV exports, docs, release notes, and regression coverage.
Files changed:
.changeset/fn-6654-agent-runs-sheets.md | 5 +
docs/dashboard-guide.md | 5 +-
.../core/src/__tests__/activity-analytics.test.ts | 66 +++++++++++++
packages/core/src/activity-analytics.ts | 102 +++++++++++++++++++--
.../components/command-center/CommandCenter.tsx | 7 +-
.../__tests__/CommandCenter.test.tsx | 27 +++++-
.../command-center/areas/ActivityArea.tsx | 37 +++++++-
.../command-center/areas/__tests__/areas.test.tsx | 50 +++++++++-
.../src/__tests__/command-center-csv.test.ts | 46 +++++++++-
.../register-command-center-routes.test.ts | 14 +++
packages/dashboard/src/command-center-csv.ts | 12 ++-
11 files changed, 348 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-6654
Fusion-Task-Lineage: d5c78ec1-8aef-4fdf-8a11-ee337da4cb00
2026-06-18 16:51:56 -07:00
gsxdsm
504305e1cb
FN-6653: add GitHub issue analytics to Command Center
...
Add Command Center analytics for GitHub issue activity using local task-store data.
- Aggregate filed and fixed GitHub issue counts by day and repository in core.
- Expose the GitHub analytics endpoint and CSV export fields through dashboard routes.
- Add a GitHub Command Center area with trend and repository visualizations.
- Cover analytics aggregation, API responses, CSV output, and dashboard rendering with tests.
- Document the dashboard GitHub analytics surface and add a patch changeset.
Files changed:
.../fn-6653-command-center-github-issue-stats.md | 5 +
docs/dashboard-guide.md | 2 +
.../src/__tests__/github-issue-analytics.test.ts | 242 +++++++++++++++++++++
packages/core/src/github-issue-analytics.ts | 196 +++++++++++++++++
packages/core/src/index.ts | 7 +
.../components/command-center/CommandCenter.tsx | 5 +
.../__tests__/CommandCenter.mobile-scroll.test.tsx | 10 +
.../__tests__/CommandCenter.test.tsx | 35 ++-
.../components/command-center/areas/GithubArea.tsx | 111 ++++++++++
.../command-center/areas/__tests__/areas.test.tsx | 73 +++++++
.../register-command-center-routes.auth.test.ts | 1 +
.../register-command-center-routes.test.ts | 66 ++++++
packages/dashboard/src/command-center-csv.ts | 20 ++
.../src/routes/register-command-center-routes.ts | 25 +++
14 files changed, 796 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6653
Fusion-Task-Lineage: fe1b0484-779e-4602-a7c2-9ba41a84916e
2026-06-18 16:18:52 -07:00
gsxdsm
f41732d04b
FN-6652: add live token usage timeline
...
Adds live token-over-time analytics and charting to Command Center.
- Add optional token analytics time-series buckets with hour, day, and week granularity.
- Surface live-polled token series data through the Command Center tokens API.
- Render an animated, reduced-motion-safe tokens-over-time chart with granularity controls.
- Cover analytics bucketing, API query parsing, and Command Center chart behavior with tests.
Files changed:
.changeset/fn-6652-token-usage-over-time.md | 5 +
docs/dashboard-guide.md | 4 +-
.../core/src/__tests__/token-analytics.test.ts | 76 ++++++++++++
packages/core/src/index.ts | 2 +
packages/core/src/token-analytics.ts | 65 ++++++++++-
.../components/command-center/CommandCenter.css | 24 +++-
.../components/command-center/CommandCenter.tsx | 12 +-
.../__tests__/CommandCenter.test.tsx | 39 ++++++-
.../command-center/__tests__/charts.test.tsx | 44 +++++++
.../components/command-center/areas/TokensArea.tsx | 46 +++++++-
.../command-center/areas/__tests__/areas.test.tsx | 128 ++++++++++++++++++++-
.../app/components/command-center/areas/areas.css | 57 +++++++++
.../command-center/areas/useAnalyticsArea.ts | 26 ++++-
.../command-center/charts/TokenSeriesChart.tsx | 52 +++++++++
.../components/command-center/charts/charts.css | 76 ++++++++++++
.../register-command-center-routes.test.ts | 38 +++++-
.../src/routes/register-command-center-routes.ts | 15 +++
17 files changed, 691 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-6652
Fusion-Task-Lineage: ebfd1b5d-5b6c-48ef-bce3-f18bbc1605fa
2026-06-18 15:27:57 -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
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
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
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
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
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
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
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
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
gsxdsm
cc793987b2
FN-6596: guard compound engineering debug launches
...
Guard Compound Engineering debug stage launches against stale stage settings and artifacts.
- Add source-level coverage proving stale enabledStages snapshots do not block registered CE stages, including debug.
- Add dist freshness checks for the disabledStages opt-out launch model so stale compiled plugin artifacts fail fast.
- Mirror newly observed core suite-load flakes in the quarantine ledger and Vitest excludes.
Files changed:
packages/core/vitest.config.ts | 5 ++
.../src/__tests__/dist-freshness.test.ts | 38 +++++++++++++++
.../src/__tests__/stage-launch-guard.test.ts | 57 ++++++++++++++++++++++
scripts/lib/test-quarantine.json | 10 ++++
4 files changed, 110 insertions(+)
Fusion-Task-Id: FN-6596
Fusion-Task-Lineage: 3cd75e5f-c6f8-4bde-8202-54eeac82b894
2026-06-17 17:21:22 -07:00
gsxdsm
e064becba5
FN-6583: reject dangling workflow edges
...
Workflow validation now rejects unresolved graph endpoints before editor evidence can miss fail-closed gaps.
- Validate every top-level workflow edge source and target against declared nodes.
- Cover dangling source and target endpoints while preserving valid linear and rework-region edges.
- Add desktop compact-graph cycle rejection coverage for the workflow editor toast path.
Files changed:
packages/core/src/__tests__/workflow-ir.test.ts | 80 ++++++++++++++++++++++
packages/core/src/workflow-ir.ts | 17 +++++
.../__tests__/WorkflowNodeEditor.test.tsx | 22 ++++++
3 files changed, 119 insertions(+)
Fusion-Task-Id: FN-6583
Fusion-Task-Lineage: 24bcb426-1c98-408d-9a50-562911143231
2026-06-17 14:56:07 -07:00
gsxdsm
167084f19e
FN-6585: add workflow restart durability coverage
...
Add focused store-level coverage for preserving explicit workflow selections across restarts.
- Cover default, custom, built-in, and create-time workflow selection persistence after reopening the disk-backed task store.
- Verify branch progress and foreach step instances survive restarts for selected custom workflows.
- Assert missing custom workflow definitions fail closed without corrupting existing selections.
Files changed:
.../__tests__/workflow-restart-durability.test.ts | 288 +++++++++++++++++++++
1 file changed, 288 insertions(+)
Fusion-Task-Id: FN-6585
Fusion-Task-Lineage: 20ac9893-68e2-48bf-98f7-cd7dd963d2ed
2026-06-17 14:52:56 -07:00
gsxdsm
556ddd4491
FN-6591: stabilize dist task-list barrel tests
...
Stabilize the @fusion/core task-list dist barrel guard without weakening its coverage.
- Load the built dist core barrel once in beforeAll when dist artifacts exist.
- Reuse the cached runtime module across dist export and fn_task_list surface assertions.
- Keep the source barrel and real runtime export path coverage intact while reducing duplicate dynamic import pressure.
Files changed:
.../core/src/__tests__/task-list-format.test.ts | 33 ++++++++++++++--------
1 file changed, 21 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-6591
Fusion-Task-Lineage: 4de45ab8-fdb3-4ed0-bf21-afcc2fb49902
2026-06-17 14:52:56 -07:00
gsxdsm
c94fb194c4
FN-6584: keep title summarizer out of workflow lanes
...
Clarify that title summarization remains project/global-scoped instead of a workflow model lane.
- Remove title summarizer entries from the workflow model lane catalog and display grouping.
- Add regression coverage for dashboard workflow settings and core built-in workflow setting parity.
- Update settings documentation to point title summarizer configuration at Project Models.
Files changed:
docs/settings-reference.md | 29 +++++++++++++--------
.../core/src/__tests__/settings-parity.test.ts | 6 +++++
.../app/components/WorkflowSettingsPanel.tsx | 22 +++++-----------
.../__tests__/WorkflowSettingsPanel.test.tsx | 30 +++++++++++++++++++++-
.../__tests__/workflow-setting-display.test.ts | 24 +++++++++++++++++
.../app/components/workflow-setting-display.ts | 12 +++------
6 files changed, 87 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-6584
Fusion-Task-Lineage: 2246213d-8775-4074-ae8e-04b9afe28f96
2026-06-17 14:52:56 -07:00
gsxdsm
8037ef15a3
Merge main into feature/factory-view: reconcile lazy-view inventory to 23
...
Resolves conflicts in the lazy-loaded heavy-views inventory. main independently
grew the curated list to 22 (adding AppModals lazy modals); this branch added the
Command Center view. Combined count is 23 — updated the AGENTS.md prose/inventory
and the lazy-loaded-views-docs test contract (count + length assertions) to 23,
keeping main's richer "App-level and AppModals" wording.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 11:46:31 -07:00
gsxdsm
a84a8e1793
FN-6570: guard task list formatting fallback
...
Prevent fn_task_list surfaces from crashing when the runtime core namespace lacks the clamp export.
- Add a shared defensive task-list formatter with a bounded fallback clamp.
- Route CLI, dashboard planning-board, and engine triage fn_task_list output through the formatter.
- Cover missing, throwing, and non-string clamp behavior in core and CLI tests.
- Document the resilient task-list formatting behavior and add a patch changeset.
Files changed:
.changeset/fn-6570-task-list-resolve-fix.md | 5 ++
docs/cli-reference.md | 2 +-
packages/cli/src/__tests__/extension.test.ts | 57 +++++++++++++++++++++-
packages/cli/src/extension.ts | 8 ++-
.../core/src/__tests__/task-list-format.test.ts | 49 ++++++++++++++++++-
packages/core/src/index.ts | 2 +-
packages/core/src/task-list-format.ts | 35 +++++++++++++
packages/dashboard/src/planning-board-tools.ts | 8 ++-
packages/engine/src/triage.ts | 8 ++-
9 files changed, 164 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-6570
Fusion-Task-Lineage: 455f38a8-5e4f-4643-a3ce-088ef0c92b01
2026-06-17 06:14:10 -07:00
gsxdsm
e2a3a37b26
FN-6569: make auto-merge retry cap configurable
...
Adds a project setting that controls how many auto-merge conflict retries run before recovery paths give up.
- Add maxAutoMergeRetries to project settings defaults, schema, types, and dashboard controls.
- Resolve the retry cap in engine merge handling, self-healing recovery, stall detection, and blocker fanout logic.
- Cover custom retry caps with core, dashboard, and engine regression tests.
Files changed:
.changeset/fn-6569-max-auto-merge-retries.md | 5 ++
docs/architecture.md | 2 +-
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 12 ++++
packages/core/src/in-review-stall.ts | 16 ++++-
packages/core/src/index.ts | 1 +
packages/core/src/settings-schema.ts | 6 ++
packages/core/src/task-priority.ts | 4 +-
packages/core/src/types.ts | 8 +++
.../dashboard/app/components/SettingsModal.tsx | 8 +++
.../components/settings/sections/MergeSection.tsx | 26 +++++++
.../app/hooks/__tests__/useBlockerFanout.test.ts | 5 +-
packages/dashboard/app/hooks/useBlockerFanout.ts | 3 +-
.../auto-merge-retry-cap-settings.test.ts | 79 ++++++++++++++++++++++
packages/engine/src/project-engine.ts | 77 +++++++++++++--------
packages/engine/src/self-healing.ts | 30 +++++---
16 files changed, 236 insertions(+), 47 deletions(-)
Fusion-Task-Id: FN-6569
Fusion-Task-Lineage: 42242d6a-68bc-41f1-b2d9-af2e6f168eed
2026-06-17 04:51:31 -07:00
gsxdsm
d17a6dbd74
FN-6535: harden task list dist runtime coverage
...
Add regression coverage that exercises fn_task_list through the built @fusion/core dist exports.
- Expand core task-list formatting tests from export checks to a runtime-shaped fn_task_list execution path.
- Add a CLI extension regression test that mocks @fusion/core to the built dist barrel before executing fn_task_list.
- Cover broad and filtered task-list truncation paths with dependency rendering to catch missing clampTaskListText exports.
Files changed:
packages/cli/src/__tests__/extension.test.ts | 82 ++++++++++++++-
.../core/src/__tests__/task-list-format.test.ts | 110 ++++++++++++++++++++-
2 files changed, 190 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6535
Fusion-Task-Lineage: dd405811-5655-406d-92e6-53f0e35ac217
2026-06-17 02:50:29 -07:00