Phil Larson
5861884456
fix(engine): requeue incomplete stuck-loop exhaustion
2026-05-31 08:35:36 -07:00
gsxdsm
b154844286
FN-5772: re-anchor nested task worktree paths
...
Fix executor worktree invariant handling by re-anchoring nested task worktree paths to the actual git top-level.
- add nested worktree root detection that only re-anchors when the top-level is a registered worktree inside the configured worktrees directory
- update executor liveness gating and verifyWorktreeInvariants to persist re-anchored task.worktree values and retry checks safely
- emit a new run-audit git mutation (worktree:reanchored) and add reliability tests/docs coverage plus a patch changeset
Files changed:
.changeset/fn-5772-worktree-reanchor.md | 7 +++
docs/architecture.md | 4 +-
packages/engine/src/__tests__/reliability-interactions/executor-liveness-gate.test.ts | 33 ++++++++++
packages/engine/src/__tests__/verify-worktree-invariants-missing.test.ts | 62 +++++++++++++++++-
packages/engine/src/__tests__/worktree-reanchor-nested-root.test.ts | 73 ++++++++++++++++++++++
packages/engine/src/executor.ts | 54 ++++++++++++++--
packages/engine/src/run-audit.ts | 1 +
packages/engine/src/worktree-pool.ts | 63 +++++++++++++++++++
8 files changed, 290 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-5772
Fusion-Task-Lineage: 475de161-7bc1-4359-bb76-20c4c07196d9
2026-05-31 08:32:01 -07:00
gsxdsm
5b4eecb5d4
FN-5768: add dual-observe workflow parity instrumentation
...
Add default-off workflow interpreter dual-observe parity instrumentation across core and engine.
- add workflow parity comparison primitives and exports in @fusion/core
- add engine parity observer seam with experimental flag and public exports
- add regression coverage for parity contracts and dual-observe reliability behavior
- document the dual-observe parity mode, events, and contract in workflow docs
- add a patch changeset for @runfusion/fusion release notes
Files changed:
.changeset/fn-5768-workflow-parity-observer.md | 9 +
docs/workflow-steps.md | 18 ++
.../core/src/__tests__/workflow-parity.test.ts | 143 ++++++++++++++
packages/core/src/index.ts | 18 ++
packages/core/src/workflow-parity.ts | 205 +++++++++++++++++++++
.../workflow-interpreter-dual-observe.test.ts | 144 +++++++++++++++
packages/engine/src/index.ts | 7 +
packages/engine/src/workflow-parity-observer.ts | 116 ++++++++++++
8 files changed, 660 insertions(+)
Fusion-Task-Id: FN-5768
Fusion-Task-Lineage: fb4f8111-f48d-482c-b1d9-9106c43c829a
2026-05-31 08:32:01 -07:00
gsxdsm
ba81d1f0ac
FN-5767: wire workflow graph executor to legacy seams
...
Complete Phase 3 interpreter parity by routing workflow graph execution through legacy seam handlers.
- Simplify workflow IR schema and built-in coding workflow to seam-based v1 nodes/edges.
- Add workflow node handler layer with default legacy seam adapters and dedicated handler/parity tests.
- Update engine exports/executor behavior for conditional traversal, retries, outcome context, and parity assertions.
- Refresh core workflow IR tests/coverage for the new shape (including seam-stage expectations without triage) and remove obsolete schema fixture test.
Files changed:
.changeset/fn-5767-interpreter-parity.md | 5 +
.github/actions/setup-node-pnpm/action.yml | 41 +---
docs/workflow-steps.md | 17 ++
.../__tests__/builtin-coding-workflow-ir.test.ts | 25 +--
packages/core/src/__tests__/workflow-ir.test.ts | 70 ------
packages/core/src/builtin-coding-workflow-ir.ts | 71 ++----
packages/core/src/index.ts | 31 +--
packages/core/src/workflow-ir-types.ts | 91 +-------
packages/core/src/workflow-ir.ts | 246 ++-------------------
.../workflow-graph-executor-handlers.test.ts | 201 +++++++++++++++++
.../workflow-graph-executor-parity.test.ts | 126 ++++++++---
.../src/__tests__/workflow-node-handlers.test.ts | 50 +++++
packages/engine/src/index.ts | 16 +-
packages/engine/src/workflow-graph-executor.ts | 205 ++++++++++++-----
packages/engine/src/workflow-node-handlers.ts | 56 +++++
15 files changed, 661 insertions(+), 590 deletions(-)
Fusion-Task-Id: FN-5767
Fusion-Task-Lineage: 0c68586e-2709-4521-a2ce-938ba1006ae0
2026-05-31 08:32:01 -07:00
gsxdsm
1edbb54fce
FN-5766: add flagged-off workflow graph executor scaffold
...
Add the Phase 2 workflow-graph interpreter scaffold and builtin coding IR wiring while keeping execution behavior unchanged by default.
- add BUILTIN_CODING_WORKFLOW_IR and builder in @fusion/core with coverage tests
- export new coding workflow IR APIs from core index
- add WorkflowGraphExecutor scaffold in @fusion/engine plus parity-focused test coverage
- document the flagged-off interpreter scaffold, parity gate, and v1 IR gap reconciliation in workflow docs
- include a changeset for published @runfusion/fusion
Files changed:
.../fn-5766-workflow-graph-executor-scaffold.md | 11 +++
docs/workflow-steps.md | 27 +++++++
.../__tests__/builtin-coding-workflow-ir.test.ts | 34 +++++++++
packages/core/src/builtin-coding-workflow-ir.ts | 60 ++++++++++++++++
packages/core/src/index.ts | 4 ++
.../workflow-graph-executor-parity.test.ts | 32 +++++++++
packages/engine/src/index.ts | 7 ++
packages/engine/src/workflow-graph-executor.ts | 82 ++++++++++++++++++++++
8 files changed, 257 insertions(+)
Fusion-Task-Id: FN-5766
Fusion-Task-Lineage: 4bbef713-a415-4d42-a20b-9ae4f3235419
2026-05-31 08:32:01 -07:00
gsxdsm
3d22a98cf2
FN-5761: add workflow IR parsing and serialization contract
...
Implement the v1 workflow IR contract in core with validation, serialization, and coverage.
- add workflow IR type definitions, parser, serializer, and structured validation errors in @fusion/core
- export workflow IR APIs from core index and add comprehensive unit tests for valid/invalid shapes and metadata parsing
- document the workflow IR contract in workflow step docs and include release tracking via changesets, including plugin-sdk DOM lib prerequisite for Windows compilation
Files changed:
.changeset/fn-5761-workflow-ir-contract.md | 5 +
.changeset/windows-release-plugin-sdk-dom-lib.md | 5 +
docs/workflow-steps.md | 24 +++
packages/core/src/__tests__/workflow-ir.test.ts | 70 +++++++
packages/core/src/index.ts | 15 ++
packages/core/src/workflow-ir-types.ts | 103 ++++++++++
packages/core/src/workflow-ir.ts | 244 +++++++++++++++++++++++
packages/plugin-sdk/tsconfig.json | 7 +-
8 files changed, 472 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-5761
Fusion-Task-Lineage: 2cd5491e-89c8-418c-a913-76d0c13b466c
2026-05-31 08:32:01 -07:00
gsxdsm
acad46cc10
FN-5764: expose mission assertion backfill through API and CLI
...
Expose mission assertion backfill controls and run paths across engine, API, and CLI surfaces.
- add mission assertion backfill gating classification and reliability coverage for assertion-linked validation recovery
- add dashboard mission routes plus legacy API coverage and e2e checks for running assertion backfill
- expose new extension tool support and update Fusion skill docs/capability references
- add a changeset for @runfusion/fusion and refresh mission documentation
Files changed:
.changeset/fn-5764-mission-backfill-assertions.md | 9 ++
docs/missions-completion-contract.md | 7 +-
docs/missions.md | 7 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 9 ++
.../skill/fusion/references/fusion-capabilities.md | 1 +
packages/cli/src/__tests__/extension.test.ts | 41 +++++++
packages/cli/src/extension.ts | 43 +++++++
.../dashboard/app/__tests__/api-missions.test.ts | 44 +++++++
packages/dashboard/app/api/legacy.ts | 34 ++++++
.../dashboard/src/__tests__/mission-e2e.test.ts | 127 +++++++++++++++++++++
packages/dashboard/src/mission-routes.ts | 29 +++++
.../mission-validation-trigger-gap.test.ts | 66 +++++++++++
.../workflow-step-readonly-allowlist.test.ts | 1 +
packages/engine/src/gating-classifications.ts | 1 +
15 files changed, 418 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5764
Fusion-Task-Lineage: b16123c2-7cfe-4b17-a899-4e30044a7a49
2026-05-31 08:32:01 -07:00
gsxdsm
0ffe7f0604
FN-5762: add mission hierarchy delete tools with linked-task guards
...
Add mission delete tooling across core, dashboard routes, and CLI extension surfaces.
- Add `fn_feature_delete`, `fn_slice_delete`, and `fn_milestone_delete` tools to the CLI extension with `force` override support.
- Enforce live-task linkage guards for feature/slice/milestone deletes in mission store logic and expose conflict behavior through mission routes.
- Extend coverage and docs for delete behavior, allowlist/gating metadata, and published Fusion skill/tool references.
Files changed:
.changeset/fn-5762-feature-delete.md | 7 +
docs/missions.md | 15 +++
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 27 ++++
.../skill/fusion/references/fusion-capabilities.md | 3 +
packages/cli/src/__tests__/extension.test.ts | 34 +++++
packages/cli/src/extension.ts | 106 +++++++++++++++
packages/core/src/__tests__/mission-store.test.ts | 146 ++++++++++++++++++++-
packages/core/src/mission-store.ts | 98 ++++++++++++--
.../dashboard/src/__tests__/mission-e2e.test.ts | 62 +++++++--
packages/dashboard/src/mission-routes.ts | 42 +++++-
.../workflow-step-readonly-allowlist.test.ts | 3 +
packages/engine/src/gating-classifications.ts | 3 +
13 files changed, 514 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-5762
Fusion-Task-Lineage: 9c6eceff-dcb4-4a2b-90c6-59cb0228ca6d
2026-05-31 08:32:01 -07:00
gsxdsm
4b8650cac2
Merge pull request #1205 from plarson/fix/incomplete-stuck-loop-parking
...
fix: park incomplete stuck-loop exhaustions
2026-05-30 23:01:37 -07:00
gsxdsm
194dfa9387
FN-5758: add cited-goal audit aggregation and runtime route
...
Add end-to-end goal-citation audit trail plumbing across core, engine, CLI, and dashboard.
- extend goal citation extraction with aggregation logic and new core coverage
- expose cited-goal runtime data through dashboard routes with dedicated API tests
- wire goal-citation audit details into engine diagnostics and CLI extension audit expectations
- document the new audit behavior and publish a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5758-goal-citation-audit.md | 9 +++
docs/dashboard-guide.md | 2 +
docs/diagnostics.md | 4 ++
.../__tests__/extension-goal-tools-audit.test.ts | 6 +-
packages/cli/src/extension.ts | 3 +
.../goal-citation-audit-aggregation.test.ts | 63 ++++++++++++++++++
packages/core/src/goal-citation-extractor.ts | 54 ++++++++++++++-
packages/core/src/index.ts | 1 +
.../src/__tests__/routes-run-cited-goals.test.ts | 77 ++++++++++++++++++++++
packages/dashboard/src/routes.ts | 11 ++++
.../src/routes/register-agent-runtime-routes.ts | 49 ++++++++++++++
.../src/__tests__/goal-anchoring-audit.test.ts | 40 +++++++----
packages/engine/src/goal-anchoring-audit.ts | 4 ++
packages/engine/src/goal-injection-diagnostics.ts | 1 +
14 files changed, 308 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-5758
Fusion-Task-Lineage: b077c0b7-6ca4-489d-8c36-73d80a2afdb2
2026-05-30 22:53:24 -07:00
Phil Larson
ab38ee09e0
fix(engine): park incomplete stuck-loop exhaustions
2026-05-30 20:21:35 -07:00
gsxdsm
c0b749cee9
Merge pull request #1203 from plarson/fix/origin-main-contamination-integrated
...
fix: treat origin/main commits as integrated in contamination checks
2026-05-30 18:43:40 -07:00
gsxdsm
5396730033
FN-5755: harden mission validation recovery flow
...
Ensure mission feature assertions recover and validate consistently across startup and periodic maintenance.
- add FN-5755 changeset and AGENTS reliability backstop note
- document canonical zero-assertion auto-pass and assertion validation lifecycle updates in missions docs
- expand mission execution loop and reliability interaction tests for startup recovery, periodic replay, and idempotency
- wire self-healing maintenance to replay active mission validation recovery via runtime callback
Files changed:
.../fn-5755-mission-validation-end-to-end.md | 5 ++
AGENTS.md | 1 +
docs/missions-completion-contract.md | 15 ++--
docs/missions.md | 4 +-
.../src/__tests__/mission-execution-loop.test.ts | 88 +++++++++++++++++++++-
.../mission-validation-trigger-gap.test.ts | 42 ++++++++++-
packages/engine/src/runtimes/in-process-runtime.ts | 6 ++
packages/engine/src/self-healing.ts | 11 +++
8 files changed, 159 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-5755
Fusion-Task-Lineage: e54ac4dc-7b8c-4fc9-8cd6-18702708546f
2026-05-30 17:45:11 -07:00
gsxdsm
76e3cde532
Merge pull request #1202 from plarson/fix/skip-blocked-todo-reclaim
...
fix: skip blocked todo tasks during self-owned reclaim
2026-05-30 16:33:52 -07:00
gsxdsm
9488d66547
Merge pull request #1194 from plarson/feat/task-dependency-mutation
...
Add safe task dependency mutation
2026-05-30 16:33:13 -07:00
Phil Larson
c6b3b77832
fix: treat origin/main commits as integrated contamination base
2026-05-30 15:15:47 -07:00
gsxdsm
292bf07385
FN-5752: flush merger agent logs before disposing sessions
...
Ensure merger AI activity is persisted to task logs before sessions are torn down.
- Flush AgentLogger output in merger AI-session finally blocks for autostash conflict resolution, autostash hard-fail recovery, and rebase conflict resolution paths
- Guard flush/dispose cleanup with safe try/catch handling to avoid teardown-time logging loss
- Add a regression test asserting logger flush occurs before session disposal during AI rebase conflict resolution
- Export the rebase conflict resolver helper for targeted test coverage
- Add a patch changeset for @runfusion/fusion documenting the agent-log visibility fix
Files changed:
.changeset/fn-5752-merger-log-flush.md | 5 ++++
packages/engine/src/__tests__/merger-conflict-resolution.test.ts | 30 ++++++++++++++++++++++
packages/engine/src/merger.ts | 22 +++++++++++++++-
3 files changed, 56 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-5752
Fusion-Task-Lineage: 3c6023f0-cc9b-47e1-bfd4-69b40e011d84
2026-05-30 15:06:04 -07:00
gsxdsm
1594470144
FN-5738: make mission loop no-assertion auto-pass deterministic
...
Ensure mission validation loop advancement is deterministic when no assertions are linked and audit output is emitted once.
- update mission execution loop handling to auto-pass zero-assertion validations deterministically
- emit and guard validation_auto_passed_no_assertions audit behavior against duplicate recovery re-fire
- expand mission loop and reliability interaction tests for loop state, validator status, and replay safety
- refresh mission/architecture docs and add the FN-5738 changeset entry
Files changed:
.changeset/fn-5732a-loop-advance.md | 5 ++
AGENTS.md | 1 +
docs/architecture.md | 3 +-
docs/missions-completion-contract.md | 2 +-
docs/missions.md | 4 +-
.../src/__tests__/mission-execution-loop.test.ts | 27 ++++++++++-
.../mission-validation-trigger-gap.test.ts | 22 +++++++--
packages/engine/src/mission-execution-loop.ts | 54 +++++++++++++---------
8 files changed, 86 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-5738
Fusion-Task-Lineage: 141b73e3-fa49-468a-87b0-f36e091e716f
2026-05-30 15:04:26 -07:00
Phil Larson
a7347ad59e
fix: skip blocked todo tasks during self-owned reclaim
2026-05-30 14:50:22 -07:00
gsxdsm
20c1c3261e
FN-5741: persist merge-request handoff shadow contract
...
Introduce Phase 1 write-only persistence for merge-request handoff acceptance across core and engine paths.
- add persisted merge-request record types, schema/settings plumbing, and store write-path support
- update merger/executor/self-healing/run-audit flows to emit and consume the handoff-accepted shadow marker
- expand core/engine/roadmap tests and docs to cover the new merge-request shadow contract
- add a patch changeset for @runfusion/fusion for this bundled package update
Files changed:
.changeset/fn-5741-merge-request-shadow.md | 5 +
AGENTS.md | 1 +
docs/architecture.md | 2 +
docs/settings-reference.md | 1 +
packages/core/src/__tests__/db-migrate.test.ts | 12 +-
packages/core/src/__tests__/db.test.ts | 34 ++--
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../src/__tests__/merge-request-record.test.ts | 97 +++++++++++
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/settings-parity.test.ts | 3 +
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 49 +++++-
packages/core/src/index.ts | 4 +-
packages/core/src/settings-schema.ts | 30 ++++
packages/core/src/store.ts | 189 ++++++++++++++++++++-
packages/core/src/types.ts | 37 ++++
.../src/__tests__/merger-merge-lifecycle.test.ts | 54 ++++++
.../merge-request-shadow-handoff.test.ts | 74 ++++++++
packages/engine/src/executor.ts | 15 +-
packages/engine/src/merger.ts | 37 ++++
packages/engine/src/run-audit.ts | 1 +
packages/engine/src/self-healing.ts | 16 +-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
27 files changed, 646 insertions(+), 45 deletions(-)
Fusion-Task-Id: FN-5741
Fusion-Task-Lineage: 3fec14c3-47ff-4f14-bc02-24021518c992
2026-05-30 14:42:50 -07:00
gsxdsm
bb0f693d79
FN-5751: fix dashboard auto-merge toggle race
...
Prevent rapid auto-merge toggles from desynchronizing dashboard settings state.
- Track auto-merge state in a ref so each toggle reads and writes the latest value
- Apply optimistic updates from the ref and roll back correctly on failed setting updates
- Add regression coverage for rapid double-toggle behavior in useAppSettings
- Add a patch changeset for @runfusion/fusion describing the dashboard blank-state fix
Files changed:
.changeset/fn-5751-auto-merge-toggle.md | 5 ++++
.../app/hooks/__tests__/useAppSettings.test.ts | 27 ++++++++++++++++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 20 +++++++++++-----
3 files changed, 46 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-5751
Fusion-Task-Lineage: 1a0090ff-4015-46b8-a974-3accbbdce919
2026-05-30 14:18:15 -07:00
gsxdsm
9c4e8edf39
FN-5733: enforce mission completion-gate assertions for live Goals mission
...
Realize the mission completion-gate contract by surfacing and enforcing structured assertion coverage for milestone completion.
- add milestone rollup signaling for prose-only acceptance criteria and wire it into mission-store completion gating
- update mission execution loop reliability paths so validator-trigger continuity is preserved across completion and startup recovery
- expose the new rollup flag in dashboard mission types/API and show an autopilot warning badge in MissionManager when prose exists without structured assertions
- extend core, engine, and dashboard tests plus mission docs, and add a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5733-mission-completion-gate.md | 10 +++
docs/missions-completion-contract.md | 11 +++
docs/missions.md | 4 +
packages/core/src/__tests__/mission-store.test.ts | 81 ++++++++++++++++++++
packages/core/src/mission-store.ts | 89 ++++++++++++++++++++++
packages/core/src/mission-types.ts | 2 +
packages/dashboard/app/api/legacy.ts | 1 +
.../dashboard/app/components/MissionManager.css | 42 +++++++++-
.../dashboard/app/components/MissionManager.tsx | 22 +++++-
.../components/__tests__/MissionManager.test.tsx | 20 ++++-
packages/dashboard/app/components/mission-types.ts | 1 +
.../src/__tests__/mission-execution-loop.test.ts | 23 ++++++
.../mission-validation-trigger-gap.test.ts | 41 ++++++++++
packages/engine/src/mission-execution-loop.ts | 21 ++++-
14 files changed, 357 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-5733
Fusion-Task-Lineage: 259418c6-5404-4773-8fd2-db8d7e9cadd3
2026-05-30 14:07:20 -07:00
Phil Larson
b1c1a33d34
Add safe task dependency mutation
2026-05-30 13:43:36 -07:00
gsxdsm
cf95d3636f
ci(release): drop macOS Intel (bun-darwin-x64) from binary matrix
...
macos-13 runners are too scarce — the darwin-x64 leg sat queued for hours
and blocked the release publish job (which needs all build legs). Ship the
CLI Apple-Silicon-only for macOS; desktop macOS DMG/ZIP stays universal.
Removed from release.yml + test-release.yml matrices, updated ci-workflow
assertions (5→4 targets) and RELEASING.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 10:06:51 -07:00
gsxdsm
3255965ad5
FN-5715: gate mission feature completion on assertion validation
...
Prevent mission-linked done tasks from bypassing assertion validation and recover stalled validation triggers after restart.
- require assertion-linked done features to have a passed validator result before slice/milestone completion
- keep assertion-linked features in progress when linked tasks move to done/archived until validation passes
- restart mission loop recovery when needed and re-trigger done/archived implementing features that still need validation
- add regression coverage for scheduler, mission loop recovery, mission store completion gating, and reliability trigger continuity
- document the new FN-5715 reliability backstop and recovery behavior
Files changed:
.changeset/fn-5715-mission-validation-trigger.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 1 +
docs/missions.md | 11 +-
packages/core/src/__tests__/mission-integration.test.ts | 2 +-
packages/core/src/__tests__/mission-store.test.ts | 30 +++-
packages/core/src/mission-store.ts | 19 ++-
packages/engine/src/__tests__/mission-execution-loop.test.ts | 95 +++++++++++++
packages/engine/src/__tests__/reliability-interactions/mission-validation-trigger-gap.test.ts | 151 +++++++++++++++++++++
packages/engine/src/__tests__/scheduler.test.ts | 54 ++++++++
packages/engine/src/mission-autopilot.ts | 7 +-
packages/engine/src/mission-execution-loop.ts | 25 ++++
packages/engine/src/mission-feature-sync.ts | 32 ++++-
packages/engine/src/scheduler.ts | 12 +-
14 files changed, 431 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-5715
Fusion-Task-Lineage: 98b1cbd6-6b68-40a0-b4b3-c512183adf8b
2026-05-30 09:43:02 -07:00
gsxdsm
805eae4237
fix(ci): scope node_modules cache key per job to stop save races
...
The Windows desktop build now succeeds (artifact builds + uploads), but the
job was marked failed on the post-job cache *save*: build-binaries
(windows-x64) and build-desktop-windows share runner.os/arch and thus the
same cache key, so concurrent saves hit "unable to reserve cache ... another
job may be creating this cache." Adding github.job to the key gives each job
its own cache and eliminates the race.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 09:09:25 -07:00
gsxdsm
f5e738be14
Merge pull request #1177 from plarson/fix/fn202-dashboard-column-filter
...
fix: respect dashboard task column filters
2026-05-30 08:40:53 -07:00
gsxdsm
884e677afa
fix(build): pin @types/node workspace-wide; make build-exe tests opt-in
...
(b) Windows desktop build flakily failed with "Property 'ok'/'status' does
not exist on type 'Response'" because the workspace resolved multiple
@types/node versions (incl. an ancient 12.20.55 from @manypkg/find-root that
predates global fetch types). plugin-sdk compiles with lib:["ES2022"] and no
DOM lib, so Response comes solely from @types/node — nondeterministic across
runners. Pin via pnpm.overrides "@types/node": "^25.5.2"; collapses the
lockfile to one version. Verified: plugin-sdk build + desktop + full
workspace typecheck all pass.
Also: build-exe-cross tests cross-compiled all 5 platforms on every CI run
(auto-enabled via Boolean(process.env.CI)) — a release-build dependency in
the normal lane. Made them opt-in (FUSION_TEST_BUILD_EXE=1) and pointed the
root test:slow-cli at the CLI slow lane instead of test:pre-release, so
everyday CI no longer depends on release builds. test:pre-release and
test-release.yml still validate binaries deliberately.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 08:39:38 -07:00
gsxdsm
033f74c458
FN-5714: reject linking features to non-active tasks
...
Gracefully handle feature-to-task linking when the referenced task is archived, deleted, or missing.
- enforce active-board task validation in mission store linkage path with clear error text
- return surfaced validation errors from fn_feature_link_task instead of throwing opaque failures
- add regression coverage in core and CLI extension tests for archived/non-active task references
- add changeset and sync Fusion skill reference docs with the new fn_feature_link_task behavior
Files changed:
.changeset/fn-5714-link-archived-task.md | 5 +++
.../cli/skill/fusion/references/extension-tools.md | 2 +-
.../skill/fusion/references/fusion-capabilities.md | 2 +-
packages/cli/src/__tests__/extension.test.ts | 50 ++++++++++++++++++++++
packages/cli/src/extension.ts | 35 +++++++++------
packages/core/src/__tests__/mission-store.test.ts | 17 ++++++++
packages/core/src/mission-store.ts | 9 ++++
7 files changed, 106 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-5714
Fusion-Task-Lineage: d84c45cf-0a0d-47a3-81c5-f99d16e03ecf
2026-05-30 08:39:38 -07:00
gsxdsm
3b594879a8
FN-5713: add mission update tool and docs
...
Add mission-update support to Fusion tooling and document it across mission references.
- register new `fn_mission_update` extension tool to patch mission title/description with validation and not-found handling
- add extension tests covering successful mission updates and error cases
- allowlist `fn_mission_update` in workflow-step readonly gating policy tests and classifications
- update Fusion skill and mission docs to describe mission updates and extension tool usage
- add a changeset for `@runfusion/fusion` patch release
Files changed:
.changeset/fn-5713-mission-update-tool.md | 5 ++
docs/missions.md | 13 ++++
packages/cli/skill/fusion/SKILL.md | 2 +-
packages/cli/skill/fusion/references/extension-tools.md | 10 +++
packages/cli/skill/fusion/references/fusion-capabilities.md | 1 +
packages/cli/src/__tests__/extension.test.ts | 71 ++++++++++++++++++++++
packages/cli/src/extension.ts | 69 +++++++++++++++++++++
packages/engine/src/__tests__/workflow-step-readonly-allowlist.test.ts | 1 +
packages/engine/src/gating-classifications.ts | 1 +
9 files changed, 172 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-5713
Fusion-Task-Lineage: e491973a-2d5d-4ef8-bf13-39b3669918ee
2026-05-30 08:39:38 -07:00
Phil Larson
6ba3cbf495
fix: respect dashboard task column filters
2026-05-30 08:29:04 -07:00
Phil Larson
f8bda56716
fix(FN-166): bypass coordination-only overlap leases
...
Fusion-Task-Id: FN-166
2026-05-30 06:47:02 -07:00
gsxdsm
b5178fd9ee
fix(release): match electron-builder x64 AppImage name in Linux verify
...
electron-builder emits Fusion-<v>-linux-x86_64.AppImage for x64 (deb uses
amd64, tar.gz uses x64). The verify step globbed -linux-x64.AppImage and
failed with "No Fusion Linux x64 AppImage artifacts produced" even though
the AppImage built. Upload globs already used the broad -linux-*.AppImage.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 01:17:54 -07:00
gsxdsm
e153d00ee2
fix(desktop): declare author email so Linux .deb build succeeds
...
electron-builder's fpm target requires author 'email' in package.json;
without it the arm64/x64 .deb build failed (`Please specify author 'email'`).
Surfaced once the electron-builder --x64 --arm64 flags actually parsed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 01:02:30 -07:00
gsxdsm
4148f43ce4
fix(release): honor --publish never, guard Windows signing, fix desktop spawn
...
Second pass after the cache/arch fix unblocked `pnpm build` and surfaced
later-stage failures:
- Desktop packaging called `pnpm --filter @fusion/desktop dist:mac -- <args>`,
but pnpm leaks the `--` separator into the script args. electron-builder
stops parsing at `--`, so `--publish never` was ignored — it auto-published
to api.github.com/repos/gsxdsm/fusion/releases and 404'd. The same leak
dropped Linux's `--x64 --arm64`. Switch all four desktop packaging steps to
`pnpm --filter @fusion/desktop exec electron-builder ...`, which forwards
args cleanly (verified locally).
- Windows CLI signing now skips when WINDOWS_CERTIFICATE_BASE64 is absent,
mirroring the macOS guard (was hard-failing the bun-windows-x64 job).
- Desktop build spawns workspace .cmd bins with shell:true on Windows; Node
rejects .cmd/.bat spawns without a shell (EINVAL) since CVE-2024-27980,
which broke `@fusion/desktop build` on the Windows runner.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 00:30:39 -07:00
gsxdsm
f659a07a25
chore(release): v0.38.1
...
Version bump via changesets.
2026-05-30 00:18:41 -07:00
gsxdsm
bad8f52c5c
chore: add patch changesets for release fix and mission mobile layout
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 00:16:04 -07:00
gsxdsm
45d22586dc
chore(release): v0.38.0
...
Version bump via changesets.
2026-05-29 23:17:31 -07:00
gsxdsm
4a60c2ac41
FN-5708: backfill files changed chip on done task cards
...
Ensure freshly done task cards show the "N files changed" chip once mergeDetails diff stats arrive.
- backfill TaskCard diff stat display logic so completed cards update when mergeDetails enrichment lands after initial render
- update useTaskDiffStats to derive files-changed counts from merge details with fallback-safe behavior
- add TaskCard and useTaskDiffStats test coverage for late-arriving mergeDetails and chip rendering
- add a changeset for @runfusion/fusion documenting the patch release
Files changed:
.changeset/fn-5708-files-changed-chip.md | 5 ++
packages/dashboard/app/components/TaskCard.tsx | 10 +++
.../app/components/__tests__/TaskCard.test.tsx | 64 +++++++++++++++
.../app/hooks/__tests__/useTaskDiffStats.test.ts | 92 ++++++++++++++++++++++
packages/dashboard/app/hooks/useTaskDiffStats.ts | 17 +++-
5 files changed, 185 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5708
Fusion-Task-Lineage: 3f961f3f-045b-473e-9636-ca33fd84282c
2026-05-29 21:32:09 -07:00
gsxdsm
afc3b4749f
FN-5655: add goal anchoring audit events across lanes
...
Add audit guardrails that track goal anchoring injection across executor, heartbeat, and CLI/dashboard surfaces.
- add a dedicated engine goal-anchoring audit emitter and export it
- emit goal anchoring audit events from executor and heartbeat goal-context injection paths
- extend run-audit wiring and CLI extension output to surface goal anchoring events
- add engine, CLI, and dashboard regression tests for goal-tool and audit event behavior
- document the new audit coverage and include a published changeset entry
Files changed:
.changeset/fn-5655-goal-anchoring-audit.md | 7 ++
docs/architecture.md | 1 +
docs/dashboard-guide.md | 1 +
.../__tests__/extension-goal-tools-audit.test.ts | 65 +++++++++++++++
packages/cli/src/extension.ts | 28 +++++++
.../__tests__/routes-run-audit-goal-events.test.ts | 72 ++++++++++++++++
.../src/__tests__/goal-anchoring-audit.test.ts | 95 ++++++++++++++++++++++
packages/engine/src/agent-heartbeat.ts | 20 +++--
packages/engine/src/executor.ts | 20 +++--
packages/engine/src/goal-anchoring-audit.ts | 89 ++++++++++++++++++++
packages/engine/src/index.ts | 10 +++
packages/engine/src/run-audit.ts | 6 +-
12 files changed, 399 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-5655
Fusion-Task-Lineage: f3c10568-4050-42c4-9fe2-b84bf749b89d
2026-05-29 20:05:14 -07:00
Phil Larson
53d97e2c6f
fix(FN-096): explain role-filtered auto-claim candidates
2026-05-29 18:25:19 -07:00
gsxdsm
668e3a5099
FN-5679: default new missions to stopped state
...
Ensure mission creation always starts in a stopped planning state with autopilot off.
- Force MissionStore createMission to ignore create-time autopilotEnabled and persist stopped defaults
- Update mission POST route behavior to stop auto-watching on create and keep optional create-time updates scoped
- Add/adjust core and dashboard tests to assert stopped-by-default creation semantics
- Document mission autopilot creation behavior and add a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5679-missions-default-stopped.md | 7 +++++++
docs/missions.md | 4 +++-
.../mission-factory-parity.integration.test.ts | 6 +++---
packages/core/src/__tests__/mission-store.test.ts | 18 ++++++++++++++++++
packages/core/src/mission-store.ts | 5 +++--
packages/dashboard/src/__tests__/mission-e2e.test.ts | 8 +++++---
packages/dashboard/src/mission-routes.ts | 9 +--------
7 files changed, 40 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-5679
Fusion-Task-Lineage: 05eff3cb-07d8-4b52-ac7f-065979e78816
2026-05-29 15:45:20 -07:00
gsxdsm
0605d13ab5
FN-5675: add mission branch strategy and planning breakdown controls
...
Add mission-level branch strategy support and expose planning breakdown controls across mission flows.
- Extend mission/core data models and store logic to track and persist base-branch strategy metadata.
- Update mission API routes and legacy adapters to read/write new mission branch strategy fields.
- Enhance MissionManager and PlanningModeModal UX to configure branch strategy and planning breakdown behavior.
- Add/adjust coverage across core, dashboard, and roadmap plugin tests for mission branch and planning flow behavior.
- Add a changeset and mission docs updates for the new mission branch strategy behavior.
Files changed:
.changeset/fn-5675-mission-branch-strategy.md | 9 +
docs/missions.md | 13 ++
packages/core/src/__tests__/db-migrate.test.ts | 12 +-
.../src/__tests__/db-mission-base-branch.test.ts | 14 +-
packages/core/src/__tests__/db.test.ts | 34 ++--
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
packages/core/src/__tests__/mission-store.test.ts | 148 +++++++++++++-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 9 +-
packages/core/src/index.ts | 1 +
packages/core/src/mission-store.ts | 64 ++++--
packages/core/src/mission-types.ts | 9 +
packages/dashboard/app/api/legacy.ts | 23 ++-
.../dashboard/app/components/MissionManager.tsx | 226 +++++++++++++++++++--
.../dashboard/app/components/PlanningModeModal.tsx | 9 +-
.../components/__tests__/MissionManager.test.tsx | 100 +++++++++
.../PlanningModeModal.planning-flow.test.tsx | 91 +++++++++
packages/dashboard/app/components/mission-types.ts | 4 +
.../dashboard/src/__tests__/mission-e2e.test.ts | 49 ++++-
packages/dashboard/src/mission-routes.ts | 41 +++-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
25 files changed, 808 insertions(+), 76 deletions(-)
Fusion-Task-Id: FN-5675
Fusion-Task-Lineage: cfd13c13-9eff-4b82-90c3-88505d51bfb2
2026-05-29 15:25:47 -07:00
Phil Larson
9112b7dc08
fix(FN-080): ignore non-runnable queued overlap blockers
...
Fusion-Task-Id: FN-080
2026-05-29 12:57:56 -07:00
gsxdsm
d5b33367c1
FN-5698: clear OAuth relogin banner after successful login
...
Clear OAuth re-login banner entries immediately after provider re-authentication.
- add a shared oauth relogin success browser event constant in auth utilities
- dispatch relogin success events from Settings and Model Onboarding OAuth success flows
- update OAuthReloginBanner to listen for relogin success, optimistically clear matching provider rows, and trigger immediate status refresh
- add banner tests covering immediate clearing, refetch behavior, unrelated-provider events, and poll-only behavior
- document the immediate-clear behavior in dashboard docs and add a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5698-relogin-banner-auto-clear.md | 5 ++
docs/dashboard-guide.md | 4 +
packages/dashboard/app/auth.ts | 1 +
.../app/components/ModelOnboardingModal.tsx | 3 +-
.../app/components/OAuthReloginBanner.tsx | 70 +++++++++--------
.../dashboard/app/components/SettingsModal.tsx | 3 +-
.../__tests__/OAuthReloginBanner.test.tsx | 90 ++++++++++++++++++++++
7 files changed, 144 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-5698
Fusion-Task-Lineage: 1e2f8055-4f77-4e16-ac15-44891de13f55
2026-05-29 11:25:11 -07:00
gsxdsm
0044c23c64
FN-5699: fix github-copilot device-code login callback handling
...
Prevent dashboard auth initiation from crashing when Copilot emits device-code callbacks.
- wire optional auth callbacks (`onDeviceCode`, `onSelect`) through dashboard auth route typing
- capture and return device-code payload from either `onDeviceCode` or parsed Copilot instructions when `/api/auth/login` starts
- guard auth-init promise settlement to avoid double resolve/reject races and normalize async login errors
- add regression coverage for Copilot device-code callback handling in auth route tests
- sync roadmap plugin schema-version test expectation from 94 to 95 to keep suite assertions aligned
Files changed:
.changeset/fn-5699-copilot-device-code-callback.md | 5 ++
packages/dashboard/src/__tests__/routes-auth.test.ts | 21 ++++++++
packages/dashboard/src/routes.ts | 7 +++
packages/dashboard/src/routes/register-auth-routes.ts | 62 +++++++++++++++++-----
plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts | 4 +-
5 files changed, 83 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-5699
Fusion-Task-Lineage: 24bf59f2-3b22-4087-96ca-35409fe00895
2026-05-29 11:22:27 -07:00
gsxdsm
72214132d2
FN-5678: add branch-group data model foundation
...
Establish per-mission/per-planning branch-group persistence and task metadata plumbing for shared auto-merge behavior.
- add `branch_groups` schema, indexes, exports, and store types for mission/planning branch assignment
- wire task source metadata branch-context helpers and branch-group row handling into core store flows
- add branch-group and migration coverage plus roadmap schema-version assertion wording fix
- add published changeset and storage doc note for the new branch-group persistence layer
- preserve forward-only migration safety by advancing schema to 96 and gating branch-group migration at `< 96`
Files changed:
.changeset/per-mission-automerge-foundation.md | 11 ++
docs/storage.md | 1 +
packages/core/src/__tests__/backup.test.ts | 32 ++++
.../core/src/__tests__/branch-group-store.test.ts | 148 ++++++++++++++++++
packages/core/src/__tests__/db-migrate.test.ts | 40 +++++
packages/core/src/__tests__/db.test.ts | 16 ++
packages/core/src/__tests__/mission-store.test.ts | 16 ++
packages/core/src/db.ts | 52 ++++++-
packages/core/src/index.ts | 2 +-
packages/core/src/mission-store.ts | 19 ++-
packages/core/src/mission-types.ts | 4 +
packages/core/src/store.ts | 171 ++++++++++++++++++++-
packages/core/src/types.ts | 59 +++++++
13 files changed, 556 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-5678
Fusion-Task-Lineage: cd6e5312-a9c5-475f-a0de-1d3090395bdd
2026-05-29 11:16:00 -07:00
gsxdsm
a014c6d42d
FN-5697: retry transient auto-merge failures and fix migration versioning
...
Treat transient auto-merge/provider abort errors as bounded retries while preserving correct schema migration ordering.
- Add transient merge retry handling with capped exponential backoff, queue re-enqueue, and exhaustion logging before failing tasks.
- Extend task/core types and evaluator evidence plumbing for merge transient retry tracking and MergeTransientRetryExhausted visibility.
- Add regression coverage for transient auto-merge retries and exhaustion behavior in merge error recovery tests.
- Resolve migration collision by promoting workflow_steps.gateMode migration to version 77, shifting subsequent migrations, and bumping schema version to 95.
- Add a changeset and architecture note documenting transient retry behavior.
Files changed:
.changeset/fn-5697-auto-merge-transient-retry.md | 5 ++
docs/architecture.md | 1 +
packages/core/src/db.ts | 85 +++++++++++----------
packages/core/src/eval-types.ts | 1 +
packages/core/src/store.ts | 19 +++--
packages/core/src/types.ts | 7 ++
packages/engine/src/__tests__/evaluator-evidence.test.ts | 1 +
packages/engine/src/__tests__/merge-error-recovery.test.ts | 87 ++++++++++++++++++++++
packages/engine/src/evaluator-evidence.ts | 1 +
packages/engine/src/project-engine.ts | 68 +++++++++++++++++
10 files changed, 231 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-5697
Fusion-Task-Lineage: c8be7374-7cb6-444e-9920-9227e05a43dc
2026-05-29 10:23:59 -07:00
gsxdsm
dbb0804490
FN-5666: exclude base commit from done-task diff ranges
...
Prevent done-task diff endpoints from counting base-commit-only lineage as task-owned changes.
- add base-boundary handling in done-task merge SHA resolution so `baseCommitSha` is excluded by default and only consulted for boundary checks
- short-circuit `/diff` and `/file-diffs` responses to empty results when resolved done-task SHA is at or below `baseCommitSha`
- export and use an ancestry helper to detect base-boundary cases, while preserving normal and rebase range behavior
- extend done-task diff route tests with FN-5666 cases for no-op merge SHA, lineage association at base commit, normal post-base commits, and rebase ranges
- add a patch changeset for `@runfusion/fusion`
Files changed:
.changeset/fn-5666-base-commit-exclusive.md | 5 +
.../src/__tests__/routes-diff-done-tasks.test.ts | 217 ++++++++++++++++++++-
.../src/routes/register-session-diff-routes.ts | 57 +++++-
3 files changed, 273 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-5666
Fusion-Task-Lineage: 782f9875-856a-4d31-9505-0bcd638c9c29
2026-05-29 10:14:06 -07:00
gsxdsm
4fee2c1324
FN-5671: add branch-strategy selection to new task creation
...
Add branch-strategy based task branch handling from modal through task creation routes.
- add branch strategy dropdown + validation in New Task modal and TaskForm, including required branch-name handling for existing/custom-new modes
- send structured branchSelection payload from dashboard API client and cover UI/API behavior with new tests
- add server-side branch selection mode parsing, auto-new branch derivation (fusion/<task-id>-<slug>), and response updates when auto branch is generated
- update engine/worktree and dashboard route tests plus dashboard guide documentation
- add a changeset for @runfusion/fusion patch release
Files changed:
.changeset/fn-5671-branch-strategy-dropdown.md | 7 ++
docs/dashboard-guide.md | 16 +++++
packages/dashboard/app/__tests__/api-tasks.test.ts | 21 ++++++
packages/dashboard/app/api/legacy.ts | 9 +++
packages/dashboard/app/components/NewTaskModal.css | 8 +++
packages/dashboard/app/components/NewTaskModal.tsx | 41 +++++++++---
packages/dashboard/app/components/TaskForm.tsx | 30 ++++++++-
.../app/components/__tests__/NewTaskModal.test.tsx | 77 +++++++++++++++++++---
.../src/__tests__/branch-selection.test.ts | 13 ++++
.../dashboard/src/__tests__/routes-tasks.test.ts | 72 ++++++++++++++++++++
packages/dashboard/src/routes/branch-selection.ts | 45 ++++++++-----
.../src/routes/register-task-workflow-routes.ts | 22 +++++--
.../engine/src/__tests__/worktree-pool.test.ts | 41 ++++++++++++
packages/engine/src/worktree-pool.ts | 2 +-
14 files changed, 361 insertions(+), 43 deletions(-)
Fusion-Task-Id: FN-5671
Fusion-Task-Lineage: 7f2e7b68-050d-4a2c-af0b-cb895de35576
2026-05-29 09:44:17 -07:00