Commit Graph

135 Commits

Author SHA1 Message Date
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
c69d384e67 perf(test): add timing telemetry, cold-start probe, and baseline snapshot
- ci-test-shard.mjs: --write-timings aggregation into scripts/test-timings.json (bucketed, newer-snapshot-protected, corrupt-shard tolerant) and --cold-start-probe; CI shard invocations emit vitest json timings
- test-changed.mjs: structured mode/reason telemetry line (+ --print-mode)
- pr-checks.yml: upload per-shard timing artifacts
- baseline: docs/test-speed-baseline-2026-06-03.md (core 41s, engine 179s, cli 49s; cold-start ~1.3-1.8s/process => U8 gate: worthwhile-not-urgent)
2026-06-03 16:48:50 -07:00
gsxdsm
de7847c44d FN-5927: categorize pnpm build scripts for install
Document and enforce pnpm build-script review decisions to prevent ignored-script install warnings.

- add reviewed ignoredBuiltDependencies entries to the root pnpm config and mirror the effective policy in pnpm-workspace.yaml
- add a regression test that verifies reviewed dependencies are categorized exactly once and stay aligned across both config files
- document the pnpm build-script approval policy in contributing docs and link plugin authoring guidance from AGENTS.md and PLUGIN_AUTHORING.md

Files changed:
 AGENTS.md                                          |  5 ++
 docs/PLUGIN_AUTHORING.md                           |  3 +-
 docs/contributing.md                               | 14 ++++
 package.json                                       |  9 +++
 pnpm-workspace.yaml                                | 14 ++++
 scripts/__tests__/pnpm-build-scripts-config.test.mjs   | 74 ++++++++++++++++++++++
 6 files changed, 118 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-5927

Fusion-Task-Lineage: 192bbed9-c5ed-45cb-b4bd-fb18514e2783
2026-06-03 00:28:41 -07:00
gsxdsm
dae4c0ea5d FN-5696: backfill missing mission feature assertion links
Backfill and repair missing mission feature assertion links so validator coverage stays intact for legacy mission data.

- add MissionStore backfillFeatureAssertions with dry-run and mission-scoped repair support
- centralize feature assertion text derivation and reuse it for create/update/backfill flows
- add regression tests for repair behavior, idempotency, and dry-run semantics
- document the operator repair workflow and add a dedicated backfill script for FN-5696

Files changed:
 docs/missions.md                                  |   2 +
 packages/core/src/__tests__/mission-store.test.ts |  84 +++++++++++
 packages/core/src/mission-store.ts                | 116 ++++++++++++++-
 scripts/backfill-fn-5696-feature-assertions.mjs   | 174 ++++++++++++++++++++++
 4 files changed, 373 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-5696

Fusion-Task-Lineage: 483bf2cc-be03-4007-860b-66d841e6aa15
2026-05-29 13:58:13 -07:00
gsxdsm
009d569bdd Recovery: re-land fn goals CLI + pi tools onto main 2026-05-28 19:44:15 -07:00
gsxdsm
294efb02fd feat(FN-5605): add linux gpg signing for release artifacts
Implements Linux GPG signing for the release pipeline by adding a `sign-linux.sh` helper, wiring it into the release and test-release workflows, including `.asc` signature files in release collectors, and documenting the full signing workflow in CODE_SIGNING.md with a note in the desktop README.

Fusion-Task-Id: FN-5605

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Fusion-Task-Id: FN-5605
2026-05-27 21:31:12 -07:00
gsxdsm
88c465cfc0 fix(ci,engine): repair test sharding, case-variant ambiguity detection, post-merge CI
Test shards 3 and 4 were silently failing on every open PR because vitest's
CLI parser was treating `--shard X/Y` as positional file filters whenever the
arg arrived after a `--` separator. Removing the `--` in ci-test-shard.mjs
restores per-shard slicing; verified locally that shard 1/4 and 2/4 now run
distinct subsets.

The two consistently-failing engine tests:

1. self-healing in-review-branch-rebind ambiguous case-variant detection:
   dedup keyed on lowercase branch name collapsed two physically distinct
   refs (allowed on Linux ext4) into one candidate, so the "applied" path
   ran instead of "ambiguous-candidates". Dedup now keys on the resolved
   SHA — macOS APFS still collapses (same ref, same SHA), Linux keeps both
   (distinct SHAs) and the ambiguity skip path fires as designed.

2. worktree-acquisition resume-misbinding spy: the production
   verifyResumeBranchNotMisbound returns early when `git merge-base HEAD main`
   fails, which is exactly what happens on shallow checkouts. Bumping the
   test-shards checkout to fetch-depth: 0 makes CI mirror the local git
   state these engine tests rely on.

Also adds `push: branches: [main]` to PR Checks so regressions like this
(which slipped into v0.33.0 with no post-merge run) go red immediately
on landing instead of being discovered on the next PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 10:24:21 -07:00
gsxdsm
b8919b7bb4 chore(test-isolation): detect live engine lock + prune stale tests
Three coupled fixes to make `pnpm test:full` exit cleanly when the local
`fn` dashboard is running:

1. scripts/check-test-isolation.mjs — replace timing-based "is the
   engine writing?" heuristic with a deterministic check: if
   `.fusion/engine.lock.lock/` exists (proper-lockfile's held-lock
   marker), the dir is engine-active and auto-skipped from violation
   reporting. The 2-second mutability probe is retained as a backstop
   for dirs with another external writer but no live lock. Also adds
   `engine.lock` / `engine.lock.lock/` to RUNTIME_IGNORE_PATTERNS so
   a mid-test engine start/stop doesn't trip the signature compare.

2. packages/dashboard/.../__tests__/GitManagerModal.test.tsx — prune
   the Status-panel Sync button + Recent-advances-events describe
   blocks. Their UI was removed in 5d35b64bd ("remove duplicate
   integration-advances UI") but the tests stayed and were timing
   out at 1s each. The Remotes-panel Sync describe is kept because
   the `remotes-sync-integration-tip-btn` still exists.

3. packages/engine/.../merge-reuse-task-worktree.slow.test.ts —
   update the happy-path assertion to reflect 4c31e885b
   ("merger auto-syncs project-root checkout after ref advance").
   Before that change, the merger's `update-ref` advance left the
   project root's working tree stale, so `git status --porcelain`
   would differ after the merge. With auto-sync, the new file is
   tracked + clean at HEAD, so status doesn't change. Verify the
   file actually landed via `git ls-files` instead.

After this, `pnpm test:full` exits 0 with the local dashboard running.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 20:18:08 -07:00
gsxdsm
a6a57dc40a test: guard tests from killing the live dashboard port
Adds a static pretest check and a runtime vitest-setup wrapper that block
shell/process calls matching `kill|pkill|killall|fuser|lsof ... <port>` or
`.listen(<port>)` against reserved Fusion ports. Reserved set is dynamic:
default 4040 plus $PORT, $FUSION_SERVER_PORT, $FUSION_RESERVED_PORTS, and any
port responding to /api/health on 4040..4045 at worker startup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 19:51:36 -07:00
gsxdsm
687237bd91 feat(FN-5411): add project identity recovery and identity-aware startup rea
Implements project identity tracking and recovery across the Fusion system (FN-5411), enabling persistent identity for projects across storage migrations, daemon reattaches, and CLI session management. Adds a project identity metadata API and central reattach ensure mechanism, wires identity stampin

Fusion-Task-Id: FN-5411

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Fusion-Task-Id: FN-5411
2026-05-23 04:18:55 -07:00
gsxdsm
d4ec82bf02 feat(FN-5528): add soft-delete exclusion to stale blocked-by recovery scrip
Adds `deletedAt` sweep guards to the engine's self-healing and merger to prevent recovery operations from processing soft-deleted tasks, filters deleted tasks in the `recover-stale-blocked-by` script, includes a new regression test for the deadlock-scan exclusion pattern, and updates the soft-delete

Fusion-Task-Id: FN-5528

Fusion-Task-Lineage: 5c9e45ca-49a8-47a0-a23d-6fe8e15e7e00

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Fusion-Task-Id: FN-5528
2026-05-23 03:33:53 -07:00
gsxdsm
2209c57dd6 chore(engine): remove workflow-step mock routing + stale FN-5482 docs
Drops the "workflow-step" MockSessionPurpose enum value and the
workflowStepId / workflowStepTemplateId plumbing through
agent-runtime, agent-session-helpers, mock-provider, executor, and
merger. The seeded-workflow-prompts script loses its FN-5205
rationale comment + test (no longer applicable now that workflow
steps run through the regular session purposes).

Also strips the stale FN-5482 architecture-invariant bullet from
AGENTS.md and the corresponding audit-event line from
docs/architecture.md (the self-healing reclaim invariant they
described no longer holds).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 03:09:00 -07:00
gsxdsm
76bd3a7d90 feat(FN-5205): add workflow-step test mode dispatch and routing for mock pr
Implements workflow step test mode (FN-5205) by wiring mock dispatch, context forwarding, and routing through executor, merger, and mock provider, plus adding corresponding tests and docs. Also adds broad-scope triage heuristics to improve task-scope detection, touching triage.ts, triage-broad-scope

Fusion-Task-Id: FN-5205

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Fusion-Task-Id: FN-5205
2026-05-23 02:25:00 -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
gsxdsm
17b9d851c3 chore: add scripts/reimport-tasks.mjs recovery utility
One-off helper to re-import specific FN-* tasks from .fusion/tasks/<id>/task.json
back into the live SQLite DB after a restore. Mirrors the column list used by
db-migrate.ts:migrateTasks but uses INSERT OR IGNORE so existing rows are
never overwritten. Used to rebuild FN-5415..FN-5425 after the FN-5407 backup
corruption recovery.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 22:25:15 -07:00
Fusion (runfusion.ai)
c9fd41ef26 feat(FN-5175): thread soft-delete audit context and add reconciliation scri
Adds a reconcile script to recover leaked soft-deleted tasks, threads delete audit context through all callers, and records soft-delete audit events with archive column tracking across core/engine/cli/dashboard, with reliability backstop tests covering caller alignment.

Fusion-Task-Id: FN-5175
2026-05-20 02:46:49 -07:00
Fusion (runfusion.ai)
8c05682ab4 feat(FN-5189): complete Step 5 — guard against nohup regressions
Fusion-Task-Id: FN-5189
Fusion-Task-Lineage: 4caa3f0a-af81-4c60-88e8-de229ed72e08
2026-05-19 17:19:03 -07:00
Fusion (runfusion.ai)
82c8bced60 feat(FN-5144): add create-pr metadata and preflight routes
Added GitHub create-PR metadata and preflight routes to the dashboard, wiring up `submit-github.pr-options-preflight-metadata` contract and integration tests for the new preflight/confirm flow alongside supporting test configuration updates.

Fusion-Task-Id: FN-5144
2026-05-19 10:33:15 -07:00
Fusion (runfusion.ai)
15bb84f862 feat(FN-5124): add soft-delete QA boundary regression coverage
Adds a regression test for FN-5124 covering soft-delete QA boundary cases, targeting the engine reliability interaction suite. The single new test file exercises edge conditions in the soft-delete path to guard against future regressions.

Fusion-Task-Id: FN-5124

Fusion-Task-Lineage: 7166e252-9c98-4f51-956a-1402dae6f402
2026-05-19 05:52:09 -07:00
Fusion (runfusion.ai)
1233113c47 feat(FN-5033): complete Step 2 — add balance-aware secondary split pass
Fusion-Task-Id: FN-5033
Fusion-Task-Lineage: f1a04b65-6161-4001-b01c-3036905cb2ab
2026-05-18 06:39:52 -07:00
Fusion (runfusion.ai)
ddacebe265 test(FN-5033): complete Step 1 — add failing shard-balance regression fixture
Fusion-Task-Id: FN-5033
Fusion-Task-Lineage: f1a04b65-6161-4001-b01c-3036905cb2ab
2026-05-18 06:39:52 -07:00
Fusion (runfusion.ai)
3a82591e70 test(FN-4989): complete Step 2 — cover half-budget splitting and <2% balance regression
Fusion-Task-Id: FN-4989
Fusion-Task-Lineage: 7dc15ef5-3318-4611-9e3c-aebe3cb15952
2026-05-18 05:07:29 -07:00
Fusion (runfusion.ai)
1c649884b9 feat(FN-4989): complete Step 1 — enforce minimum two-way splits above threshold
Fusion-Task-Id: FN-4989
Fusion-Task-Lineage: 7dc15ef5-3318-4611-9e3c-aebe3cb15952
2026-05-18 05:07:29 -07:00
Fusion (runfusion.ai)
5dfbbd3cfb test(FN-5036): add split/core colocation regression
Fusion-Task-Id: FN-5036
Fusion-Task-Lineage: 8df4174c-27f1-4d95-aded-bb2769384bc1
2026-05-18 04:40:32 -07:00
Fusion (runfusion.ai)
1b53400a91 feat(FN-5036): complete Step 1 — unify split-entry best-fit placement
Fusion-Task-Id: FN-5036
Fusion-Task-Lineage: 8df4174c-27f1-4d95-aded-bb2769384bc1
2026-05-18 04:40:32 -07:00
Fusion (runfusion.ai)
6d48098417 feat(FN-5002): complete Step 4 — implement best-fit shard planning and tests
Fusion-Task-Id: FN-5002
Fusion-Task-Lineage: 76c054fc-dbca-40dd-bd59-dd795946472b
2026-05-18 01:36:36 -07:00
Fusion
a988eb4394 test(FN-4655): complete Step 4 — guard Dockerfile workspace manifest copies
Fusion-Task-Id: FN-4655
Fusion-Task-Lineage: acc30c83-6090-444e-a0de-6c30ca5ac887
2026-05-15 12:24:30 -07:00
Fusion
b90862170d test(FN-4605): complete Step 4 — simulate fresh-worktree bootstrap coverage
Fusion-Task-Id: FN-4605
Fusion-Task-Lineage: 472b0ccb-d015-4ff7-bdf2-1d5d05ae09e9
2026-05-15 08:22:44 -07:00
Fusion
a9362c8f29 feat(FN-4605): complete Step 3 — add workspace-root bootstrap and pretest hooks
Fusion-Task-Id: FN-4605
Fusion-Task-Lineage: 472b0ccb-d015-4ff7-bdf2-1d5d05ae09e9
2026-05-15 08:22:44 -07:00
Fusion
aa7a2ee812 feat(FN-4605): complete Step 2 — expand artifact registry and remediation details
Fusion-Task-Id: FN-4605
Fusion-Task-Lineage: 472b0ccb-d015-4ff7-bdf2-1d5d05ae09e9
2026-05-15 08:22:44 -07:00
Fusion
c8d9492b61 feat(FN-4550): remove duplicate Case 6 skip coverage
Removes a duplicate "Case 6" skip from the merge-strategy overlap test file, cleaning up the test coverage without changing behavior.

Fusion-Task-Id: FN-4550

Fusion-Task-Lineage: 3b254a66-bd47-4699-a788-3a57178a2884
2026-05-14 20:21:09 -07:00
Fusion
f6f44566e5 feat(FN-4493): complete Step 8 — finalize docs and release metadata
Fusion-Task-Id: FN-4493
Fusion-Task-Lineage: 966c7c55-fd51-4263-9d4e-87e9d06bfb6f
2026-05-14 12:30:20 -07:00
Fusion
f8206d4b1c fix(FN-4493): complete Step 7 — stabilize verification gates
Fusion-Task-Id: FN-4493
Fusion-Task-Lineage: 966c7c55-fd51-4263-9d4e-87e9d06bfb6f
2026-05-14 12:30:20 -07:00
Fusion
b31c944034 test(FN-4493): complete Step 6 — add seeded prompt updater script tests
Fusion-Task-Id: FN-4493
Fusion-Task-Lineage: 966c7c55-fd51-4263-9d4e-87e9d06bfb6f
2026-05-14 12:30:20 -07:00
Fusion
fe3900a94e fix(FN-4493): harden seeded prompt updater db access
Fusion-Task-Id: FN-4493
Fusion-Task-Lineage: 966c7c55-fd51-4263-9d4e-87e9d06bfb6f
2026-05-14 12:30:20 -07:00
Fusion
070e5edf40 feat(FN-4493): complete Step 5 — add seeded workflow prompt updater script
Fusion-Task-Id: FN-4493
Fusion-Task-Lineage: 966c7c55-fd51-4263-9d4e-87e9d06bfb6f
2026-05-14 12:30:20 -07:00
Fusion
09ad2b4edf feat(FN-4367): finalize structured workflow verdict contract
Fusion-Task-Id: FN-4367
Fusion-Task-Lineage: adbfac60-5cfe-4ae9-9706-1094dfe7d676
2026-05-14 11:15:47 -07:00
gsxdsm
db78679758 feat(FN-4367): add structured JSON verdict output for prompt-mode workflow steps
- Add verdict (PASS/FAIL) field to core WorkflowStepResult type
- Add parseWorkflowStepOutput() engine helper for json-workflow-verdict blocks
- Update executeWorkflowStep to extract structured verdict/notes from output
- Persist verdict and notes in runWorkflowSteps result entries
- Update agent prompt Feedback Format to require JSON verdict block
- Update WS-006 (Frontend UX Design) template prompt with structured fast-bail
- Add WorkflowResultsTab verdict badge and notes rendering with CSS
- Add 11 engine tests for verdict parsing edge cases
- Add 6 dashboard tests for verdict/notes rendering
- Create replace-ws006-prompt.mjs migration script for existing DBs
- Add changeset for @runfusion/fusion patch

Fusion-Task-Id: FN-4367
Fusion-Task-Lineage: adbfac60-5cfe-4ae9-9706-1094dfe7d676
2026-05-14 11:15:47 -07:00
Fusion
c61af579bc feat(FN-4461): add transition evidence backfill script and tests
Adds a backfill script and its tests for FN-4441 transition evidence, covering two new files totaling 204 lines.

Fusion-Task-Id: FN-4461
2026-05-14 05:07:03 -07:00
Fusion
e35a38fe41 feat(FN-4232): complete Steps 2-4 — detect stale artifacts and add remediation/tests
Fusion-Task-Id: FN-4232
Fusion-Task-Lineage: 8a1c59d6-2144-4146-99e4-201e9657af92
2026-05-13 22:57:22 -07:00
Fusion
f81a366cdb feat(FN-4232): complete Step 1 — add staleAgainstGlobs to plugin entries
Fusion-Task-Id: FN-4232
Fusion-Task-Lineage: 8a1c59d6-2144-4146-99e4-201e9657af92
2026-05-13 22:57:22 -07:00
Fusion
edbf093b52 fix(FN-4388): tighten cache-stats ephemeral filtering and tests
Fusion-Task-Id: FN-4388
Fusion-Task-Lineage: 7497a0a1-5edb-4778-b339-118d1fd668f7
2026-05-13 22:41:30 -07:00
Fusion
8539a3dec0 feat(FN-4388): complete remaining observability surfaces
Fusion-Task-Id: FN-4388
Fusion-Task-Lineage: 7497a0a1-5edb-4778-b339-118d1fd668f7
2026-05-13 22:41:29 -07:00
gsxdsm
02adf013f8 fix(FN-4423): add missing weight property to planShardAssignments output
Both ternary branches in planShardAssignments() omitted weight from the
pushed entry objects despite using entry.weight for bin-packing. Downstream
consumers that relied on shard entry weight (e.g., balance verification)
had to reconstruct it from computeSplitPlan output.
2026-05-13 22:18:01 -07:00
gsxdsm
35a6d3a81d fix(ci): exclude dist/ test files from shard count 2026-05-13 17:58:28 -07:00
Fusion
9f26f83b04 fix(FN-4409): add merge-base fallback for contamination audit
Fusion-Task-Id: FN-4409
Fusion-Task-Lineage: c608c942-fec7-4489-9970-b8dc314f8be2
2026-05-13 17:44:46 -07:00
Fusion
0c0704933f feat(FN-4409): complete Step 1 — add cross-contamination audit script
Fusion-Task-Id: FN-4409
Fusion-Task-Lineage: c608c942-fec7-4489-9970-b8dc314f8be2
2026-05-13 17:44:46 -07:00
Fusion
ad2734bfdd feat(FN-4207): add tests for ci-test-shard helper
Adds test coverage for the CI shard helper script, covering its core functionality and edge cases.

Fusion-Task-Id: FN-4207
2026-05-13 06:29:35 -07:00
Fusion
de8a5a3b6f feat(FN-4126): complete Step 1 — define shard entry model
Fusion-Task-Id: FN-4126
Fusion-Task-Lineage: ed1e7e10-43d3-4347-933b-0dc9e8cd345a
2026-05-13 06:29:35 -07:00
Fusion
0bca14fb72 feat(FN-4194): add reconciliation script for identity resolution
Adds a reconciliation script for FN-3909 identity issues, includes comprehensive tests verifying the workflow, and documents the process in the storage guide.

Fusion-Task-Id: FN-4194
2026-05-12 17:04:33 -07:00