Files
fusion/docs/test-speed-audit-FN-5048.md
Fusion (runfusion.ai) fd202e9356 feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng
Removes the branch-recovery CLI surface, orphan-rescue engine primitives, and their associated tests (over 1,500 lines deleted), while restoring a minimal prune-only orphan branch sweep with proper git audit mutation types. Documentation across `cli-reference.md`, `task-management.md`, and `AGENTS.m

Fusion-Task-Id: FN-5329
2026-05-20 16:43:27 -07:00

9.6 KiB
Raw Blame History

FN-5048 Test-Speed Audit

Scope and method

  • Related baseline context:
    • docs/test-audit-report.md (prior workspace test audit baseline)
    • docs/testing-suite-quality-prd.md (suite quality taxonomy + priorities)
  • Commands run (baseline):
    • pnpm --filter @fusion/core exec vitest run --reporter=verbose --silent=passed-only
    • pnpm --filter @fusion/engine exec vitest run --reporter=verbose --silent=passed-only
    • pnpm --filter @runfusion/fusion exec vitest run --reporter=verbose --silent=passed-only
    • pnpm --filter @fusion/dashboard exec vitest run --reporter=verbose --silent=passed-only
  • Durations were derived from verbose per-test timing logs by aggregating milliseconds per test file and top describe groups.
  • Classification rubric:
    • delete: low-signal/duplicate patterns from AGENTS.md “What NOT to write”.
    • rewrite: keep coverage, reduce cost via fake timers/seam narrowing/lighter fixtures/shared harness.
    • keep: high-signal regression/integration backstop.

Baseline run totals

  • @fusion/core: 26.29s (pass)
  • @fusion/engine: 93.29s (pass)
  • @runfusion/fusion: 13.90s (pass)
  • @fusion/dashboard: 359.52s (vitest run across all dashboard projects; multiple unrelated pre-existing failures surfaced)

Top offenders by package (baseline)

@fusion/core (top 10)

Rank File Aggregated runtime Dominant suite(s) Class Proposed action
1 src/__tests__/agent-store.test.ts 8.47s AgentStore (100%) keep Keep (broad state/store coverage).
2 src/__tests__/mission-store.test.ts 6.16s MissionStore (100%) keep Keep; prioritize targeted fixture slimming only if needed later.
3 src/__tests__/db.test.ts 5.64s Database (~68%) keep Keep (real SQLite backstop).
4 src/__tests__/test-project.test.ts 5.13s test-project fixture (100%) rewrite Evaluate fixture-heavy setup duplication, trim low-value cases.
5 src/__tests__/plugin-loader.test.ts 3.48s PluginLoader (100%) keep Keep.
6 src/__tests__/store-watcher.test.ts 2.77s TaskStore (100%) rewrite Replace slow polling waits with fake timers.
7 src/__tests__/run-audit.test.ts 2.60s Run Audit (100%) keep Keep.
8 src/__tests__/store-comments.test.ts 2.58s TaskStore (100%) keep Keep.
9 src/__tests__/plugin-store.test.ts 2.48s PluginStore (100%) keep Keep.
10 src/__tests__/store-create.test.ts 2.41s TaskStore (100%) keep Keep.

@fusion/engine (top 10)

Rank File Aggregated runtime Dominant suite(s) Class Proposed action
1 src/__tests__/merger-overlap-guard.test.ts 31.00s overlap-aware fallback integration (~74%) keep Keep (real-git heavy merge safety).
2 src/__tests__/merger-staging-allowlist.test.ts 20.41s staging allowlist (~60%) keep Keep (explicitly protected real-git backstop).
3 src/__tests__/merger-diff-volume-gate.test.ts 13.96s integration + gate logic keep Keep.
4 src/__tests__/self-healing-already-merged.real-git.test.ts 10.21s real-git recovery keep Keep.
5 src/__tests__/merger-autostash-cleanup.test.ts 9.79s sweep* paths keep Keep.
6 src/__tests__/branch-conflicts-recovery.test.ts 9.39s branch conflict classification keep Keep.
7 src/__tests__/merger-autostash-orphan-surface.test.ts 8.11s autostash orphan surface keep Keep.
8 src/__tests__/merger-squash-audit.test.ts 7.66s squash audit keep Keep.
9 src/__tests__/self-healing-stale-merge-stats.real-git.test.ts 7.01s merge metadata recovery keep Keep.
10 src/runtimes/__tests__/in-process-runtime.test.ts 6.29s InProcessRuntime (100%) rewrite Trim low-value matrix/permutation assertions.

@runfusion/fusion (top 10)

Rank File Aggregated runtime Dominant suite(s) Class Proposed action
1 src/__tests__/extension.test.ts 5.08s runnable structured-output slice (100%) rewrite Trim duplicate wiring cases; preserve env-gated legacy skip.
2 src/__tests__/bin.test.ts 4.16s command routing rewrite Consolidate repetitive route permutations with it.each.
3 src/commands/__tests__/init.test.ts 3.53s init command (100%) keep Keep.
4 src/__tests__/vitest-workspace-resolution.test.ts 1.76s workspace resolution keep Keep.
5 src/__tests__/extension-task-tools.test.ts 1.65s worktree root resolution keep Keep.
6 src/commands/dashboard-tui/__tests__/app.test.tsx 1.57s settings view subset rewrite Remove low-value display duplicates.
7 src/commands/__tests__/chat.test.ts 0.84s chat interactive keep Keep.
8 src/commands/__tests__/dashboard.test.ts 0.80s dashboard command keep Keep.
9 src/__tests__/research-extension-tools.test.ts 0.71s research tools keep Keep.
10 src/commands/__tests__/serve.test.ts 0.51s serve command keep Keep.

@fusion/dashboard (top 10)

Rank File Aggregated runtime Dominant suite(s) Class Proposed action
1 src/__tests__/routes-auth.test.ts 93.86s GET /auth/status (~86%) rewrite Replace broad matrix with scoped auth-provider assertions and fixture helper.
2 app/components/__tests__/SettingsModal.test.tsx 89.05s SettingsModal (100%) rewrite Consolidate high-latency waitFor-heavy permutations.
3 app/components/__tests__/ChatView.test.tsx 24.36s ChatView (~52%) rewrite Replace polling waits with event/fake-timer driven completion.
4 src/__tests__/routes-agents.test.ts 22.02s mixed routes rewrite Remove repetitive field-presence and route permutations.
5 app/components/__tests__/App.test.tsx 20.61s app shell rewrite Reduce mock-the-world wiring cases that duplicate higher-level routes.
6 app/components/__tests__/ListView.test.tsx 14.68s bulk selection + list suites rewrite Consolidate combinatorial selection cases.
7 app/components/__tests__/MissionManager.test.tsx 14.22s MissionManager (100%) keep/rewrite Keep FN-tagged behavior; trim duplicate DOM-query shape checks.
8 app/components/__tests__/PrCreateModal.test.tsx 11.61s PrCreateModal rewrite Consolidate repetitive input permutations.
9 app/components/__tests__/AgentPromptsManager.test.tsx 9.60s AgentPromptsManager rewrite Convert repetitive cases into compact tables.
10 app/components/__tests__/AgentDetailView.settings.test.tsx 9.43s AgentDetailView settings rewrite Trim redundant control-shape assertions.

Prioritized execution plan

  1. Dashboard SettingsModal + ChatView targeted rewrites (largest projected wall-clock gain).
  2. Dashboard routes-auth focused narrowing (GET /auth/status hotspot).
  3. CLI bin/extension test consolidation (it.each + duplicate route-case reductions).
  4. Core watcher fake-timer rewrite (store-watcher.test.ts).

Keep-safe exclusions explicitly honored

  • No edits to reliability-interaction tests under packages/engine/src/__tests__/reliability-interactions/**.
  • No deletion of FN-tagged regression tests.
  • No concurrency/worker-cap changes.

Post-change results (Step 5 re-measure)

  • Re-ran the same per-package verbose commands after landed trims/rewrites.
  • Post-change totals:
    • @fusion/core: 23.08s (pass)
    • @fusion/engine: 76.66s (pass)
    • @runfusion/fusion: 9.40s (pass)
    • @fusion/dashboard: 335.40s (vitest run failed with broad pre-existing suite issues unrelated to FN-5048 edits)

Targeted outcome checks for FN-5048 edits

  • packages/core/src/__tests__/store-watcher.test.ts (rewrite): reverted to per-test harness (createTaskStoreTestHarness) after measuring shared-harness regression for watcher-focused assertions; core suite total improved vs baseline.
  • packages/cli/src/__tests__/bin.test.ts (rewrite/trim): redundant route permutations consolidated with it.each; CLI suite passes.
  • AGENTS.md standing rule added and cross-linked from this audit to prevent reintroduction of slow-test patterns.

Acceptance note

  • Edited files classified as rewrite/delete were retained with measurable local pass behavior in their packages.
  • @fusion/core no-regression gate satisfied after harness correction (baseline 26.29s → post-change 23.08s).
  • Dashboard lane remains unstable from pre-existing repository-level failures in planning/tracking/interview route tests and unrelated UI suites; no FN-5048 file changes were made in those failing areas.

FN-5074 follow-up results

  • Isolated re-measure after targeted rewrites (same command family used in FN-5074 preflight):
    • routes-auth.test.ts: 94.53s → 15.76s (164 tests)
    • routes-agents.test.ts: 9.72s → 10.58s (344 tests; stable/slightly higher in this sampled rerun)
    • SettingsModal.test.tsx: 43.40s → 48.60s (438 tests; sampled rerun regressed due to remaining long-running device-code path)
    • ChatView.test.tsx: 12.53s → 14.66s (390 tests; sampled rerun modestly higher while preserving coverage)
  • FN-5074 preserved FN-tagged coverage and frozen-button assertions; all four files pass in isolation and full verification gates remained green in task execution.

Notes

  • Dashboard vitest run baseline and post-change measurements both surfaced broad failing suites outside this tasks implementation scope; timing evidence is still captured from the same command family.
  • Standing prevention rule: see AGENTS.mdStanding Rule: Do Not Add Slow Tests (FN-5048).