gsxdsm
8dc9973997
FN-6937: remove stale session cross-tab quarantine
...
Remove the orphaned session-cross-tab quarantine ledger entry after confirming the test remains active and rescued.
- Document FN-6937's rescue proof and ledger/config lockstep expectation in testing guidance.
- Keep the dashboard Vitest quarantine list empty with a note explaining the stale ledger-only cleanup.
- Remove the session-cross-tab row from the flaky-test quarantine ledger.
Files changed:
docs/testing.md | 8 ++++++--
packages/dashboard/vitest.config.ts | 3 +++
scripts/lib/test-quarantine.json | 8 +-------
3 files changed, 10 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-6937
Fusion-Task-Lineage: 34a67bf3-2a7f-49ea-93ab-68fadc81f893
2026-06-23 00:26:16 -07:00
gsxdsm
8f4897d3aa
FN-6905: add build preflight to velocity measurement
...
Add a non-measured build setup step so velocity baselines do not misclassify missing dist artifacts as lane time.
- Run a default `pnpm build` preflight before measured test velocity lanes, with an explicit skip flag for pre-built CI.
- Add injectable command-runner coverage for preflight ordering, failure reporting, and skip behavior.
- Document the preflight behavior in the generated baseline report and testing docs.
Files changed:
docs/test-velocity-baseline.md | 2 +
docs/testing.md | 4 +-
scripts/__tests__/test-velocity-baseline.test.mjs | 159 ++++++++++++++++++++++
scripts/test-velocity-baseline.mjs | 38 +++++-
4 files changed, 195 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-6905
Fusion-Task-Lineage: 3016a542-4395-4d06-9f2e-1a91f4939e07
2026-06-21 22:29:13 -07:00
gsxdsm
1e81f99f72
FN-6877: stabilize dashboard changed-mode affected runs
...
Stabilize changed-mode affected runs by giving dashboard its own memory envelope.
- Generalize scoped affected memory-envelope handling beyond the engine lane.
- Run @fusion/dashboard changed-mode Vitest scopes in a 6144 MB, single-worker envelope.
- Cover dashboard and engine scoped partitioning/env contracts with script tests.
- Document the dashboard changed-mode OOM/SIGKILL guard and remeasurement expectations.
Files changed:
docs/testing.md | 6 +-
scripts/__tests__/test-changed.test.mjs | 112 +++++++++++++++++++++++++++-----
scripts/test-changed.mjs | 67 +++++++++++++++----
3 files changed, 155 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-6877
Fusion-Task-Lineage: 084df464-ebda-4578-bfac-305800da5b6c
2026-06-21 16:48:20 -07:00
gsxdsm
2ecf78af28
FN-6860: rescue dashboard quarantine coverage
...
Rescue dashboard process lifecycle coverage and clear stale quarantine state.
- Track dev server lifecycle work so stale probes and output parsing cannot race cleanup.
- Assert duplicate URL detection suppression and fallback probe cleanup across failure, restart, stop, and cleanup paths.
- Remove rescued dashboard tests from quarantine config and ledger, and document the loaded-shard proof.
Files changed:
docs/testing.md | 4 ++
.../src/__tests__/dev-server-process.test.ts | 28 +++++++-
packages/dashboard/src/dev-server-process.ts | 74 +++++++++++++++++-----
packages/dashboard/vitest.config.ts | 5 +-
scripts/lib/test-quarantine.json | 13 +---
5 files changed, 95 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-6860
Fusion-Task-Lineage: abd22a00-e08e-4f65-bebc-c663c715b40e
2026-06-21 13:25:41 -07:00
gsxdsm
d57538581d
FN-6854: isolate engine affected tests
...
Stabilize changed-test runs by giving the engine affected Vitest lane its own memory envelope.
- Split @fusion/engine out from other scoped affected-package Vitest runs.
- Apply a capped heap and single-worker settings to the isolated engine lane while preserving watchdog timing.
- Cover the partitioning and environment behavior with script tests and document the envelope.
Files changed:
docs/testing.md | 3 +++
scripts/__tests__/test-changed.test.mjs | 45 +++++++++++++++++++++++++++++++++
scripts/test-changed.mjs | 40 ++++++++++++++++++++++++++---
3 files changed, 84 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6854
Fusion-Task-Lineage: 144acf15-4ccb-4974-b06c-99cdcc2814dd
2026-06-21 13:25:41 -07:00
gsxdsm
c18e827b90
FN-6839: await CLI cached store shutdown
...
Rescue the retained CLI quarantine by making TaskStore shutdown deterministic before fixture cleanup.
- Await cached extension TaskStore closes and clear the cache before asynchronous shutdown drains.
- Update CLI fixtures to await direct and cached store closure, with a regression proving cached close is awaited.
- Remove rescued CLI quarantine entries/excludes and document the loaded-suite rescue with a patch changeset.
Files changed:
.changeset/fn-6839-close-cached-stores.md | 5 ++
CLAUDE.md | 1 +
docs/testing.md | 4 ++
.../extension-agent-set-instructions.test.ts | 2 +-
.../__tests__/extension-goal-tools-audit.test.ts | 2 +-
.../cli/src/__tests__/extension-goal-tools.test.ts | 2 +-
.../cli/src/__tests__/extension-insights.test.ts | 6 +--
.../__tests__/extension-mission-goal-tools.test.ts | 2 +-
.../cli/src/__tests__/extension-task-tools.test.ts | 16 ++++---
packages/cli/src/__tests__/extension.test.ts | 56 +++++++++++-----------
.../src/__tests__/research-extension-tools.test.ts | 4 +-
packages/cli/src/extension.ts | 16 +++----
packages/cli/vitest.config.ts | 6 +--
scripts/lib/test-quarantine.json | 15 ------
14 files changed, 68 insertions(+), 69 deletions(-)
Fusion-Task-Id: FN-6839
Fusion-Task-Lineage: ea0c7c77-bb59-4db4-931d-5e052a1043e5
2026-06-21 09:00:40 -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
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
24fd4952bb
FN-6753: isolate routes-auth from dashboard backfill
...
Preserve auth route coverage by moving the suite out of the contended API backfill shard.\n\n- Add routes-auth to the curated dashboard API quality shard.\n- Document the FN-6753 suite-load coupling classification and shard-isolation remedy.\n\nFiles changed:\n docs/testing.md | 4 ++++\n packages/dashboard/vitest.config.ts | 7 ++++++-\n 2 files changed, 10 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6753
Fusion-Task-Lineage: 4da2f45f-87ba-4b80-baed-68dbde93a09e
2026-06-20 00:30:54 -07:00
gsxdsm
1a565a368b
FN-6744: rescue WorkflowNodeEditor merge seam guard
...
Rescue the WorkflowNodeEditor quarantine by making duplicate merge seam detection reliable during initial canvas load.
- Derive fragment seam conflicts from the loaded workflow IR until React Flow nodes materialize.
- Treat IR merge nodes as merge seams so duplicate merge fragments are rejected consistently.
- Cover desktop and mobile duplicate merge fragment insertion paths and remove the test from quarantine.
- Document the FN-6744 rescue evidence and deletion-ratchet update.
Files changed:
docs/testing.md | 6 +++-
.../app/components/WorkflowNodeEditor.tsx | 11 +++++--
.../__tests__/WorkflowNodeEditor.test.tsx | 34 ++++++++++++++++------
.../app/components/workflow-flow-mapping.ts | 10 +++++++
packages/dashboard/vitest.config.ts | 8 +++--
scripts/lib/test-quarantine.json | 5 ----
6 files changed, 54 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-6744
Fusion-Task-Lineage: 0f5b167a-8efc-4458-ac9d-e719320b751f
2026-06-19 18:38:17 -07:00
gsxdsm
f01ede2523
FN-6742: rescue session cross-tab tests
...
Rescue the dashboard session cross-tab test before its deletion-ratchet deadline.
- Dispose the API router and session cleanup scheduler before closing test stores.
- Hide unused TaskStore EventEmitter hooks in the route-only harness to avoid background route subscribers reopening temp fixtures.
- Remove the session-cross-tab quarantine ledger entry and dashboard Vitest exclude in lockstep.
- Document the rescue evidence and teardown pattern for future dashboard session tests.
Files changed:
docs/testing.md | 6 ++++-
.../src/__tests__/session-cross-tab.test.ts | 30 +++++++++++++++++++---
packages/dashboard/vitest.config.ts | 5 +++-
scripts/lib/test-quarantine.json | 5 ----
4 files changed, 36 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-6742
Fusion-Task-Lineage: e26d70eb-f139-45f7-8ddd-bde2d172c291
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
2da55a8994
FN-6740: document quarantine ratchet follow-ups
...
Document the same-day flaky-test quarantine audit and ownership plan.\n\n- Record the 2026-06-19 quarantine batch expiration date and ledger/config lockstep status.\n- Split follow-up ownership across CLI, core, and dashboard quarantine rescue/delete work.\n- Add an FNXC comment explaining why the coordinated audit should stay scoped by subsystem.\n\nFiles changed:\n docs/testing.md | 4 ++++\n 1 file changed, 4 insertions(+)
Fusion-Task-Id: FN-6740
Fusion-Task-Lineage: eba08900-18d6-4768-ac8a-c673f89537ca
2026-06-19 16:47:33 -07:00
gsxdsm
259cdfb531
FN-6734: stabilize CLI extension test cleanup
...
Stabilize the CLI extension regression lane by closing cached stores before temp fixture removal.
- Close extension store caches and manually created TaskStore/AgentStore handles before deleting per-test fixture roots.
- Add a regression guard for the cached TaskStore close-before-remove invariant.
- Reduce oversized task-list truncation fixtures while preserving bounded-output assertions.
- Document the CLI affected-lane rescue pattern for store leaks, fixture sizing, and runtime-dist mocking order.
Files changed:
docs/testing.md | 4 +
.../extension-agent-set-instructions.test.ts | 3 +-
.../__tests__/extension-goal-tools-audit.test.ts | 3 +-
.../cli/src/__tests__/extension-goal-tools.test.ts | 3 +-
.../cli/src/__tests__/extension-insights.test.ts | 3 +-
.../__tests__/extension-mission-goal-tools.test.ts | 3 +-
packages/cli/src/__tests__/extension.test.ts | 221 +++++++++++++--------
.../src/__tests__/research-extension-tools.test.ts | 40 +++-
8 files changed, 186 insertions(+), 94 deletions(-)
Fusion-Task-Id: FN-6734
Fusion-Task-Lineage: efe91c0f-f84c-471c-8067-65a244b2aec7
2026-06-19 16:47:33 -07:00
gsxdsm
3383a095b7
FN-6694: add workflow reliability release-check harness
...
Add an on-demand executable release-check lane for custom workflow reliability signoff.
- Add a manifest-backed release-check runner with dry-run, JSON output, validation, and targeted Vitest command planning.
- Define the custom workflow reliability checklist seams and cover runner validation, planning, reporting, and failure behavior with node tests.
- Document the QA signoff command and manifest mapping while keeping the lane out of the merge gate.
Files changed:
docs/custom-workflow-reliability-acceptance-map.md | 29 +-
docs/testing.md | 3 +
package.json | 1 +
.../workflow-reliability-release-check.test.mjs | 138 +++++++++
.../lib/workflow-reliability-release-check.json | 102 +++++++
scripts/workflow-reliability-release-check.mjs | 312 +++++++++++++++++++++
6 files changed, 579 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6694
Fusion-Task-Lineage: 21d45bb5-6c45-4cb7-8b29-9eaea8b29ad4
2026-06-19 05:13:39 -07:00
gsxdsm
87e87a8f1a
FN-6693: enforce dashboard CSS token references
...
Extend the dashboard CSS token guard and replace stale custom-property references with defined design tokens.
- Add a dashboard-wide CSS token validity test that scans component/app CSS for undefined custom-property references.
- Include dashboard CSS tests in the dashboard Vitest config and document the guard in testing guidance.
- Remap undefined CSS variables across dashboard components and command-center styles to existing semantic or local tokens.
Files changed:
docs/testing.md | 3 +
.../dashboard-css-token-validity.css.test.ts | 165 +++++++++++++++++++++
.../dashboard/app/components/ActiveAgentsPanel.css | 10 +-
.../dashboard/app/components/AgentLogViewer.css | 2 +-
.../app/components/AgentReflectionsTab.css | 10 +-
packages/dashboard/app/components/AgentsView.css | 6 +-
.../dashboard/app/components/BranchGroupCard.css | 6 +-
packages/dashboard/app/components/ChatView.css | 12 +-
.../app/components/CliBinaryInstallBanner.css | 2 +-
.../dashboard/app/components/CliBinaryPanel.css | 2 +-
.../app/components/ConversationHistory.css | 12 +-
.../dashboard/app/components/DashboardLoader.css | 2 +-
.../dashboard/app/components/DesktopLaunchGate.css | 4 +-
.../dashboard/app/components/DirectoryPicker.css | 2 +-
.../dashboard/app/components/FileMentionPopup.css | 4 +-
.../dashboard/app/components/GitHubImportModal.css | 10 +-
packages/dashboard/app/components/GoalsView.css | 2 +-
.../dashboard/app/components/GroupTaskModal.css | 18 +--
packages/dashboard/app/components/InsightsView.css | 10 +-
packages/dashboard/app/components/Lane.css | 8 +-
.../dashboard/app/components/LanguageSelector.css | 8 +-
packages/dashboard/app/components/MailboxModal.css | 62 ++++----
.../app/components/MergeAdvanceNotice.css | 2 +-
.../dashboard/app/components/MissionManager.css | 10 +-
.../app/components/MobileWorkflowGraphView.css | 2 +-
.../app/components/ModelOnboardingModal.css | 12 +-
.../app/components/OnboardingDisclosure.css | 4 +-
.../dashboard/app/components/PlanningModeModal.css | 2 +-
.../dashboard/app/components/PluginManager.css | 58 ++++----
.../components/PostOnboardingRecommendations.css | 4 +-
.../dashboard/app/components/PullRequestView.css | 32 ++--
packages/dashboard/app/components/QuickChatFAB.css | 4 +-
.../dashboard/app/components/QuickEntryBox.css | 6 +-
.../dashboard/app/components/ReliabilityView.css | 6 +-
packages/dashboard/app/components/ScriptsModal.css | 34 ++---
.../dashboard/app/components/SessionTerminal.css | 28 ++--
.../dashboard/app/components/SettingsModal.css | 6 +-
.../dashboard/app/components/SkillMultiselect.css | 2 +-
packages/dashboard/app/components/TaskCard.css | 24 +--
.../dashboard/app/components/TaskDocumentsTab.css | 8 +-
.../dashboard/app/components/TaskFieldsSection.css | 20 +--
.../dashboard/app/components/TerminalModal.css | 22 +--
.../app/components/WorkflowFieldsPanel.css | 6 +-
.../app/components/WorkflowNodeEditor.css | 30 ++--
.../dashboard/app/components/WorkspaceSelector.css | 2 +-
.../components/command-center/CommandCenter.css | 106 ++++++-------
.../components/command-center/DateRangePicker.css | 18 +--
.../command-center/MissionControlPanel.css | 14 +-
.../app/components/command-center/SdlcFunnel.css | 2 +-
.../command-center/areas/SystemStatsArea.css | 24 +--
.../app/components/command-center/areas/areas.css | 62 ++++----
.../components/command-center/charts/charts.css | 104 ++++++-------
packages/dashboard/vitest.config.ts | 1 +
53 files changed, 592 insertions(+), 423 deletions(-)
Fusion-Task-Id: FN-6693
Fusion-Task-Lineage: e9ccf3e6-fee9-47e0-9474-7b5580adbf31
2026-06-19 04:27:01 -07:00
gsxdsm
c8daf21cd0
FN-6685: add Command Center chart browser smoke
...
Add real-browser coverage for Command Center chart sizing and overflow across mobile and desktop.
- Include emitted lazy CSS chunks in dashboard browser-layout smoke fixtures.
- Add a Command Center charts smoke fixture with populated pie/line charts and an empty state.
- Assert chart heights, SVG visibility, overflow containment, and scroll-owner behavior at mobile and desktop breakpoints.
- Document the browser smoke requirement alongside the Command Center responsive chart testing guidance.
Files changed:
docs/dashboard-guide.md | 1 +
docs/testing.md | 3 +-
.../CommandCenter.mobile-chart-layout.test.ts | 6 +
.../dashboard/scripts/browser-layout-smoke.mjs | 220 ++++++++++++++++++++-
4 files changed, 226 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6685
Fusion-Task-Lineage: 456d51e2-ffaa-442d-bfa2-5ba17ff6724f
2026-06-19 02:14:31 -07:00
gsxdsm
fe207ca960
FN-6680: fix Command Center mobile chart layouts
...
Fix Command Center chart rendering and visual rhythm on constrained mobile layouts.
- Bound chart primitives, text labels, and grid tracks so mobile Command Center charts do not overflow, collapse, or steal scrolling.
- Normalize stat, table, team, and system chart card surfaces around shared dashboard spacing, border, radius, and surface tokens.
- Add CSS regression coverage and documentation for mobile chart layout limits beyond jsdom.
- Add a patch changeset for the published dashboard bundle.
Files changed:
.../fn-6680-command-center-mobile-chart-fix.md | 5 ++
docs/dashboard-guide.md | 3 +-
docs/testing.md | 3 +
.../components/command-center/CommandCenter.css | 16 +++--
.../CommandCenter.mobile-chart-layout.test.ts | 72 ++++++++++++++++++++++
.../__tests__/CommandCenter.mobile-scroll.test.tsx | 4 ++
.../command-center/areas/SystemStatsArea.css | 14 ++++-
.../app/components/command-center/areas/areas.css | 19 +++---
.../components/command-center/charts/charts.css | 45 +++++++++++++-
9 files changed, 156 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-6680
Fusion-Task-Lineage: 4dc731c4-6408-4b05-84f7-916bbc572a5d
2026-06-18 23:08:08 -07:00
gsxdsm
deb1717812
FN-6667: add real iOS Safari acceptance harness
...
Add a real iOS Safari acceptance harness and documentation for terminal verification gates.
- Add an `ios:acceptance` script with check, dry-run, and real WebDriver session modes.
- Support BrowserStack, Sauce Labs, and LambdaTest credential discovery with redacted capability planning.
- Document the real-iOS provisioning workflow and link it from testing docs.
- Cover credential selection, URL validation, capability shaping, and CLI behavior with node tests.
Files changed:
docs/README.md | 1 +
docs/ios-acceptance.md | 144 ++++++++++++++++
docs/testing.md | 3 +
package.json | 1 +
scripts/__tests__/ios-acceptance.test.mjs | 131 +++++++++++++++
scripts/ios-acceptance.mjs | 264 ++++++++++++++++++++++++++++++
scripts/lib/ios-acceptance.mjs | 243 +++++++++++++++++++++++++++
7 files changed, 787 insertions(+)
Fusion-Task-Id: FN-6667
Fusion-Task-Lineage: 9eee6dbe-646e-4fff-a1da-fd59cdd2cb59
2026-06-18 16:47:09 -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
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
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
177cce4059
FN-6515: guard task list formatting exports
...
Add regression coverage for task-list formatter exports and broad list clamping.\n\n- Verify @fusion/core source and built dist barrels expose task-list formatting helpers.\n- Cover broad fn_task_list output clamping as one plain-text block.\n- Document the built-dist guard expectation for runtime-consumed core exports.\n\nFiles changed:\n docs/testing.md | 2 ++\n packages/cli/src/__tests__/extension.test.ts | 35 ++++++++++++++++++++++\n .../core/src/__tests__/task-list-format.test.ts | 32 ++++++++++++++++++++\n 3 files changed, 69 insertions(+)
Fusion-Task-Id: FN-6515
Fusion-Task-Lineage: b19dd616-6b5a-4b8a-8909-f368459fdc53
2026-06-16 23:32:38 -07:00
gsxdsm
669b106548
FN-6514: restore QuickEntryBox test isolation
...
Rescues the QuickEntryBox suite by restoring jsdom globals instead of keeping it quarantined.
- Snapshot and restore QuickEntryBox viewport, visibility, matchMedia, and object URL descriptors after each test.
- Add a guard test that proves mutated jsdom globals return to their original descriptors.
- Remove the QuickEntryBox quarantine entries while documenting the rescue pattern.
Files changed:
docs/testing.md | 2 +
.../components/__tests__/QuickEntryBox.test.tsx | 50 ++++++++++++++++++++++
packages/dashboard/vitest.config.ts | 7 ++-
scripts/lib/test-quarantine.json | 5 ---
4 files changed, 55 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-6514
Fusion-Task-Lineage: 12f20ad8-19ee-4168-91a9-33193b1ab5f7
2026-06-16 22:13:46 -07:00
gsxdsm
a38752c6bb
FN-6486: rescue quarantined flaky tests
...
Rescue the same-day core and CLI flaky quarantines by fixing their fixture seams instead of appeasing timeouts.
- Make the core concurrent-write lock helper release synchronously inside its child process so package load cannot delay the transient lock release.
- Close real CLI TaskStore fixtures before removing temp roots and switch mock cleanup to non-hoisted unmocking.
- Remove both test files from package quarantine excludes and clear the quarantine ledger while documenting the rescue pattern.
Files changed:
docs/testing.md | 2 ++
packages/cli/src/__tests__/extension-task-tools.test.ts | 17 +++++++++++++----
packages/cli/vitest.config.ts | 4 +++-
.../core/src/__tests__/store-concurrent-writes.test.ts | 8 +++++++-
packages/core/vitest.config.ts | 4 +++-
scripts/lib/test-quarantine.json | 13 +------------
6 files changed, 29 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-6486
Fusion-Task-Lineage: c90358c4-0549-4c68-8d17-2e2a336433b5
2026-06-16 15:08:24 -07:00
gsxdsm
12efd3fd3f
FN-6445: reject quality skip-list overlaps
...
Prevent dashboard curated skip-list entries from masking tests already covered by quality projects.
- Add validation that flags skip-list files included by quality lanes.
- Cover overlap, empty-reason overlap, and genuine orphan cases in inventory tests.
- Document that skip-lists are only for genuinely non-executed dashboard tests.
Files changed:
docs/testing.md | 1 +
scripts/__tests__/check-test-inventory.test.mjs | 29 ++++++++++++++++++++++---
scripts/check-test-inventory.mjs | 9 ++++++++
3 files changed, 36 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6445
Fusion-Task-Lineage: 1741f684-8dfc-41fc-8f30-baa3700ac11b
2026-06-14 15:29:35 -07:00
gsxdsm
0b047d4fc8
FN-6440: replace dashboard skip-list placeholders
...
Dashboard curated-gate skip-list entries now point to actionable tracking work.
- Replace placeholder FN-TBD references with concrete Fusion task IDs grouped by affected dashboard area.
- Document the requirement that skip-list reasons cite real tracking tasks unless entries are removed after rescue.
- Preserve the standalone build-output exception while making the remaining skip-list ownership actionable.
Files changed:
docs/testing.md | 1 +
scripts/lib/dashboard-curated-skiplist.json | 66 ++++++++++++++---------------
2 files changed, 34 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-6440
Fusion-Task-Lineage: abf1cef2-8199-4746-b8ec-8b5487eb1ecc
2026-06-14 15:29:35 -07:00
gsxdsm
1f660f3e8a
FN-6434: block Vitest timeout appeasement
...
Add a fast guard that rejects Vitest timeout bumps in tracked test files.
- Add a test-timeout appeasement scanner with a temporary allowlist for legacy exemptions.
- Run the scanner in pretest, pretest:full, and test:gate so merge gates catch timeout bumps.
- Cover the scanner behavior with node:test cases and document the policy/remediation path.
Files changed:
docs/testing.md | 6 ++
package.json | 6 +-
.../check-no-test-timeout-appeasement.test.mjs | 49 +++++++++
scripts/check-no-test-timeout-appeasement.mjs | 119 +++++++++++++++++++++
.../lib/test-timeout-appeasement-allowlist.json | 10 ++
5 files changed, 187 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6434
Fusion-Task-Lineage: deb46a27-b0c9-4644-b8bb-34ce98e7acde
2026-06-14 15:29:35 -07:00
gsxdsm
93b2288d37
FN-6433: rescue non-CLI quarantined tests
...
Rescue and ratchet non-CLI quarantine state across engine, core, and dashboard suites.
- Empty the core, dashboard, and engine quarantine exclude arrays after proving rescued suites run under package load.
- Replace broad AI-merge active-session registry cleanup with path-scoped unregistering in engine tests.
- Delete the duplicate soft-delete blocker residue suite and clear the quarantine ledger.
- Document the non-CLI quarantine sweep pattern for future rescues.
Files changed:
docs/testing.md | 2 +
packages/core/vitest.config.ts | 10 +-
packages/dashboard/vitest.config.ts | 12 +-
.../merger-ai-cleanup-active-session.test.ts | 20 +++-
.../engine/src/__tests__/merger-ai-cleanup.test.ts | 5 +-
.../soft-delete-blocker-residue.test.ts | 128 ---------------------
packages/engine/vitest.config.ts | 12 +-
scripts/lib/test-quarantine.json | 65 +----------
8 files changed, 40 insertions(+), 214 deletions(-)
Fusion-Task-Id: FN-6433
Fusion-Task-Lineage: 18c37475-e6e1-4358-9350-eca65cf53b68
2026-06-14 15:29:35 -07:00
gsxdsm
2fc6d4d667
FN-6430: rescue CLI quarantine tests
...
Rescue the quarantined CLI suites by fixing shared test isolation instead of extending timeouts.
- Remove rescued CLI files from the quarantine ledger and Vitest exclude list while preserving an empty rescue ledger comment.
- Tighten Vitest HOME isolation to reject inherited worker homes and sweep legacy top-level fn-test-home roots with bounded cleanup.
- Reset affected CLI fixtures, close research stores, and narrow the slow mission store seam so rescued tests run on default timeouts.
- Document the CLI shared-fixture rescue pattern for future quarantine recoveries.
Files changed:
docs/testing.md | 2 +
.../cli/src/__tests__/extension-task-tools.test.ts | 7 +-
packages/cli/src/__tests__/extension.test.ts | 117 +++++++++----------
.../cli/src/commands/__tests__/mission.test.ts | 16 ++-
packages/cli/src/commands/__tests__/plugin.test.ts | 5 +
packages/cli/vitest.config.ts | 52 ++-------
packages/core/src/__test-utils__/vitest-setup.ts | 25 ++++-
.../core/src/__test-utils__/vitest-teardown.ts | 28 ++++-
.../vitest-teardown-worker-root-cleanup.test.ts | 15 +++
scripts/lib/test-quarantine.json | 124 +--------------------
10 files changed, 157 insertions(+), 234 deletions(-)
Fusion-Task-Id: FN-6430
Fusion-Task-Lineage: 943b73b4-5f92-4703-8e93-0ae3207eb63c
2026-06-14 15:29:35 -07:00
gsxdsm
df4939a656
FN-6385: add dashboard overflow regression coverage
...
Add a shared mobile and tablet overflow-containment safety net for dashboard surfaces.\n\n- Add viewport overflow regression coverage for board, task detail, workflow editor, simple workflow editor, and Activity Log surfaces.\n- Cover mobile, tablet, and landscape-phone breakpoints across empty and populated states.\n- Stabilize related dashboard tests with viewport and DOM cleanup helpers.\n- Document the targeted overflow-containment test command.\n\nFiles changed:\n docs/testing.md | 6 +\n .../dashboard-overflow-containment.test.tsx | 435 +++++++++++++++++++++\n .../app/components/__tests__/App.test.tsx | 4 +-\n .../components/__tests__/FileBrowserModal.test.tsx | 9 +\n .../components/__tests__/GitManagerModal.test.tsx | 2 +\n .../__tests__/MobileWorkflowGraphView.css.test.ts | 9 +-\n .../__tests__/PlanningModeModal.autosize.test.tsx | 2 +\n .../__tests__/PlanningModeModal.initial.test.tsx | 2 +\n .../PlanningModeModal.planning-flow.test.tsx | 2 +\n .../components/__tests__/SettingsModal.test.tsx | 2 +\n .../__tests__/SettingsModal.testMode.test.tsx | 6 +-\n .../__tests__/SettingsModal.worktrunk.test.tsx | 6 +-\n .../__tests__/WorkflowNodeEditor.css.test.ts | 4 +-\n 13 files changed, 479 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-6385
Fusion-Task-Lineage: 8335a9c6-279a-4962-b855-ea459ba9eb0a
2026-06-13 16:30:28 -07:00
gsxdsm
8f66a41c1c
FN-6308: parallelize dashboard quality lanes
...
Reduce dashboard quality gate wall-clock by orchestrating existing Vitest lanes with bounded concurrency.
- Add a dashboard quality orchestrator that runs app/API lanes through the existing heap wrapper with safe concurrency and failure short-circuiting.
- Route dashboard quality scripts through the orchestrator while preserving compatibility lane scripts and shard boundaries.
- Export project glob metadata and strengthen guards for lane parity, heap usage, and settings route response expectations.
- Document the new dashboard quality orchestration model and measured FN-6308 timing results.
Files changed:
docs/test-speed-audit-FN-5048.md | 8 +-
docs/testing.md | 35 +++-
packages/dashboard/package.json | 14 +-
.../scripts/__tests__/run-quality-tests.test.ts | 110 ++++++++++
packages/dashboard/scripts/run-quality-tests.mjs | 221 +++++++++++++++++++++
.../__tests__/dashboard-test-config-guard.test.ts | 134 ++++++++++---
.../src/__tests__/routes-settings.test.ts | 14 +-
packages/dashboard/vitest.config.ts | 49 ++++-
8 files changed, 540 insertions(+), 45 deletions(-)
Fusion-Task-Id: FN-6308
Fusion-Task-Lineage: 05a465fd-8eef-4c03-baa3-2b7cb024fef0
2026-06-12 18:18:24 -07:00
gsxdsm
1f366c8de1
FN-6229: enforce symptom verification in triage and review
...
Require bug-class specs and reviews to prove original symptoms are reproduced and fixed.
- Add Symptom Verification guidance to triage prompt templates and self-review rules.
- Teach reviewer prompts to REVISE missing symptom verification or green-build-only acceptance.
- Document symptom-based acceptance alongside Surface Enumeration and cover the prompt contracts with tests.
Files changed:
AGENTS.md | 1 +
docs/testing.md | 12 +++++++++++
packages/engine/src/__tests__/reviewer.test.ts | 29 +++++++++++++++++++++++++-
packages/engine/src/__tests__/triage.test.ts | 23 +++++++++++++++++---
packages/engine/src/reviewer.ts | 2 ++
packages/engine/src/triage.ts | 20 ++++++++++++++++++
6 files changed, 83 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6229
Fusion-Task-Lineage: 01ad963f-c62b-410f-8571-57bc68307288
2026-06-11 09:21:23 -07:00
gsxdsm
b5d19bd480
FN-6134: extend surface-enumeration gates to UI affordance changes
...
Apply the surface-enumeration review gate to UI affordance add/remove work across triage, review, tests, and docs.
- require triage prompts to add Surface Enumeration guidance for UI affordance add/remove tasks in standard and fast modes
- tighten reviewer guidance to block single-surface UI affordance coverage and leftover shell cleanup gaps
- expand engine prompt tests to cover the new UI affordance gate wording
- document the shared checklist and motivating incidents in AGENTS.md and docs/testing.md
Files changed:
AGENTS.md | 3 +++
docs/testing.md | 6 +++++-
packages/engine/src/__tests__/reviewer.test.ts | 26 ++++++++++++++++++++++++--
packages/engine/src/__tests__/triage.test.ts | 19 ++++++++++++++++++-
packages/engine/src/reviewer.ts | 5 +++--
packages/engine/src/triage.ts | 24 ++++++++++++++----------
6 files changed, 67 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-6134
Fusion-Task-Lineage: 0bc733eb-d160-48cc-817d-69138290faec
2026-06-09 15:12:26 -07:00
gsxdsm
3387ac8096
fix(review): apply autofix feedback
2026-06-05 09:23:15 -07:00
gsxdsm
e2ddcdc7c1
docs(test): codify merge gate + flaky-test deletion ratchet policy
...
- AGENTS.md: gate/non-blocking split replaces 'tests are required' framing;
new standing rule: flaky tests quarantined on sight, deleted in 2 weeks
unless rescued with root-cause fix; agent appeasement ban; gate eviction rule;
product-race escalation note
- docs/testing.md: merge-gate section with honest blind-spot statement,
quarantine ledger mechanics, updated workflow references
2026-06-05 09:10:19 -07:00
gsxdsm
5a72ac9475
fix(ci): honest shard weights + review autofixes
...
- laneShardFraction: chained --shard invocations sum to full project weight (api backfill was half-weighted)
- exclude *.slow.test.* from duration weighting (engine carried 75 phantom untimed files)
- remove dead ENGINE_PACKAGE_NAME export
- docs: --cold-start-probe, --inputs-dir (snapshot refresh now self-contained), --print-mode
2026-06-03 19:25:40 -07:00
gsxdsm
5bebc3cfe0
perf(ci): duration-based shard balancing with dashboard lane distribution
...
- shards weighted by scripts/test-timings.json durations (median-duration fallback + warning for untimed)
- dashboard no longer --shard-sliced (broken across its script chain): 14 lanes enumerated from package.json and scheduled as separately-weighted units, each exactly once
- engine/core keep --shard slicing, duration-weighted
- estimated critical-path shard: ~235s -> ~159s (spread 96.7% -> 0.06%)
- 30-day staleness warning + --check-timings-staleness for a scheduled refresh job; --dry-run mode
2026-06-03 18:35:26 -07:00
gsxdsm
2c41695e1f
fix(test): dependency-aware and dirty-aware test cache invalidation
...
- cache key v2 = own hash + sorted transitive workspace dep hashes + shared inputs (lockfile, tsconfig.base, core __test-utils__ tree)
- working-tree-dirty files hashed by content (fixes false cache HIT on unstaged edits)
- core __test-utils__ folded globally: 16+ packages import it without a workspace dep on core
- dep folding adds ~5ms to the inner loop (memoized own-hashes)
- docs: cache semantics, --no-cache / FUSION_TEST_NO_CACHE, TTL rationale
2026-06-03 18:06:05 -07:00
gsxdsm
c9191b733c
test: close dashboard curated-gate and engine-slow coverage holes; add inventory harness
...
- 427 orphaned dashboard test files ran in NO gate; 395 now gated via self-maintaining backfill lanes (glob minus curated minus skip-list), 31 pre-existing failures + build-output skip-listed with reasons
- settings -t name-filter lanes replaced by one unfiltered lane (describe blocks can no longer fall through filters)
- scripts/check-test-inventory.mjs: --capture/--diff superset harness + --dashboard-curated completeness guard
- pr-checks.yml: engine-slow CI gate (non-empty assertion) + inventory guard job
- docs/testing.md: guard, skip-list policy, harness usage
2026-06-03 17:36:35 -07:00
gsxdsm
ee00d9f1b7
FN-5928: enforce surface enumeration for bug-fix invariants
...
Require bug-fix specs and reviews to enumerate affected surfaces and reject repro-only regression coverage.
- add a required `## Surface Enumeration` section to triage prompt templates and bug-fix planning guidance
- tighten reviewer guidance to block missing surface enumeration and repro-only regression tests
- document the canonical surface checklist in `docs/testing.md` and cover the new wording with prompt/reviewer tests
Files changed:
AGENTS.md | 6 ++--
docs/testing.md | 9 +++++
packages/core/src/__tests__/agent-prompts.test.ts | 22 ++++++++++++
packages/core/src/agent-prompts.ts | 16 +++++++++
packages/engine/src/__tests__/reviewer.test.ts | 17 ++++++++++
packages/engine/src/__tests__/triage.test.ts | 41 ++++++++++++++++++++---
packages/engine/src/reviewer.ts | 3 ++
packages/engine/src/triage.ts | 24 +++++++++++++
8 files changed, 131 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-5928
Fusion-Task-Lineage: 717ddcbe-f3a6-4589-ad90-4e640f7a9ff2
2026-06-02 21:57:21 -07:00
gsxdsm
65ddb4d4f5
FN-5893: require invariant-level bug regression coverage
...
Add invariant-first regression guidance to triage prompts and testing docs.
- add an AGENTS standing rule to cover bug-fix invariants across all known surfaces
- update standard, fast, and core triage prompt templates to require invariant-level regression tests
- add triage regression tests that lock the new wording into standard, fast, and core prompts
- link docs/testing guidance back to the new invariant-over-repro rule
Files changed:
AGENTS.md | 7 ++++++
docs/testing.md | 1 +
packages/core/src/agent-prompts.ts | 3 ++-
packages/engine/src/__tests__/triage.test.ts | 32 ++++++++++++++++++++++++++++
packages/engine/src/triage.ts | 6 ++++--
5 files changed, 46 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5893
Fusion-Task-Lineage: 31c082c6-2a0a-4619-a13b-94dad97eef62
2026-06-02 14:02:36 -07:00
Fusion (runfusion.ai)
d04c7803e0
feat(FN-5339): trim AGENTS.md to essential rules, move detailed guidance to
...
Restructured AGENTS.md from a 588-line catch-all into a lean reference of essential rules by offloading deep guidance into five new/expanded doc files: agents.md, architecture.md, dashboard-guide.md, settings-reference.md, and testing.md. Also restored a missing FN-5345 lifecycle invariant in self-h
Fusion-Task-Id: FN-5339
Fusion-Task-Lineage: e1a2dc4f-ae50-46f4-acd3-8f2c3673feb4
2026-05-21 19:41:52 -07:00