gsxdsm
77a109958b
FN-5796: make plugin same-state transitions idempotent
...
Prevent duplicate-state plugin updates from throwing invalid transition errors.
- treat updatePluginState calls where next state equals current state as idempotent no-ops
- allow same-state updates with an explicit error payload to persist error changes and emit plugin:updated
- add regression tests for same-state no-op behavior, no extra stateChanged event emission, and error payload updates
- add a patch changeset documenting the Dependency Graph plugin fix
Files changed:
.changeset/fn-5796-plugin-state-noop.md | 7 +++++
packages/core/src/__tests__/plugin-store.test.ts | 34 ++++++++++++++++++++++++
packages/core/src/plugin-store.ts | 15 +++++++++++
3 files changed, 56 insertions(+)
Fusion-Task-Id: FN-5796
Fusion-Task-Lineage: 0da1d035-383f-456c-a212-0903dc029874
2026-05-31 20:50:09 -07:00
gsxdsm
a8c920daf9
chore(release): v0.39.0
...
Version bump via changesets.
2026-05-31 20:05:32 -07:00
gsxdsm
5930c18b4d
FN-5795: send ntfy notification when agents create tasks
...
Add agent task-created ntfy notifications with configurable settings and coverage.
- add notification plumbing to emit a dedicated event when an agent creates a task
- extend ntfy provider/settings typing and dashboard settings coverage for the new event toggle
- add regression tests for notification service, notifier integration, and ntfy provider behavior
- add a changeset and documentation updates describing the new notification capability
Files changed:
.changeset/fn-5795-task-created-notification.md | 9 +++
docs/architecture.md | 4 +-
docs/settings-reference.md | 4 +-
docs/storage.md | 2 +-
packages/core/src/types.ts | 4 +-
.../dashboard/app/components/SettingsModal.tsx | 1 +
.../components/__tests__/SettingsModal.test.tsx | 27 +++++++-
.../src/__tests__/notification-service.test.ts | 71 ++++++++++++++++++++++
packages/engine/src/__tests__/notifier.test.ts | 5 ++
.../engine/src/__tests__/ntfy-provider.test.ts | 32 ++++++++++
.../src/notification/notification-service.ts | 53 +++++++++++++++-
packages/engine/src/notification/ntfy-provider.ts | 21 +++++--
12 files changed, 220 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-5795
Fusion-Task-Lineage: 4cfa3b46-8e9c-451e-ab2d-b7d5c9bf5968
2026-05-31 19:59:32 -07:00
gsxdsm
ffadb0c77f
FN-5792: fix GitHub auto-close reconciliation for soft-deleted tasks
...
Ensure GitHub issue auto-close reconciliation still processes soft-deleted and archived tracked tasks after restart.
- Add pagination-aware reconcile scanning in core store with combined deleted+archived coverage and hasMore metadata.
- Update dashboard GitHub tracking reconciler and route handling to consume paged reconcile batches safely.
- Expand reconcile tests (core + dashboard) with restart/periodic sweep and source-issue scenarios to lock behavior.
- Add release changeset and dashboard guide note for the reconciliation sweep behavior.
Files changed:
.changeset/fn-5792-github-tracking-sweep.md | 5 +
docs/dashboard-guide.md | 1 +
.../store-github-tracking-reconcile.test.ts | 45 ++++++++-
packages/core/src/store.ts | 32 ++++--
.../github-source-issue-reconciler.test.ts | 22 ++--
...ithub-tracking-periodic-reconcile-sweep.test.ts | 90 +++++++++++++++++
.../__tests__/github-tracking-reconciler.test.ts | 111 +++++----------------
.../dashboard/src/github-tracking-reconciler.ts | 19 ++--
.../dashboard/src/routes/register-git-github.ts | 57 +++++++++--
9 files changed, 257 insertions(+), 125 deletions(-)
Fusion-Task-Id: FN-5792
Fusion-Task-Lineage: 259f07cf-3470-47c7-b47a-86d212d44d52
2026-05-31 17:23:26 -07:00
gsxdsm
06d84905ba
FN-5783: enforce branch-group autoMerge precedence for shared promotions
...
Honor group-level autoMerge precedence when promoting shared branch groups.
- add core/store helpers to preserve branch-group autoMerge overrides and resolve effective precedence against task/project settings
- gate branch-group promotion eligibility in engine merge coordination and emit promotion-gated audit metadata
- update dashboard planning/subtask flows for shared mission triage routing and add reliability/unit coverage
- include docs and changeset updates for branch-group autoMerge precedence behavior
Files changed:
.../fn-5783-branch-group-automerge-precedence.md | 5 +
AGENTS.md | 1 +
docs/settings-reference.md | 2 +-
docs/workflow-steps.md | 2 +
.../core/src/__tests__/branch-group-store.test.ts | 18 ++++
packages/core/src/__tests__/task-merge.test.ts | 18 ++++
packages/core/src/index.ts | 1 +
packages/core/src/mission-store.ts | 13 +++
packages/core/src/store.ts | 17 ++++
packages/core/src/task-merge.ts | 8 ++
.../dashboard/src/__tests__/mission-e2e.test.ts | 98 ++++++++++++++++--
.../src/__tests__/routes-planning.test.ts | 109 ++++++++++++++++++++-
packages/dashboard/src/planning.ts | 1 +
.../src/routes/register-planning-subtask-routes.ts | 28 ++++++
packages/dashboard/src/subtask-breakdown.ts | 1 +
.../branch-group-automerge-precedence.test.ts | 102 +++++++++++++++++++
packages/engine/src/group-merge-coordinator.ts | 31 +++++-
packages/engine/src/merger.ts | 30 ++++--
18 files changed, 466 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-5783
Fusion-Task-Lineage: 74327984-b14f-445c-81cd-5295ee562382
2026-05-31 15:17:11 -07:00
gsxdsm
c8ae94db6b
FN-5785: fix branch group PR typecheck errors
...
Export BranchGroupPrState from @fusion/core, narrow task.branchContext
before group lookup, and populate the full PrInfo shape when
reconstructing the group PR from branch_groups metadata.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 14:01:50 -07:00
gsxdsm
0c425788cb
FN-5782: wire branch groups into merge routing
...
Connect branch_group metadata through planning and merge execution for grouped integration branches.
- propagate `branchGroup` and `branchGroupName` through core store types, merge metadata, and CLI task lifecycle APIs
- add merge coordination that computes branch-group plans and routes grouped tasks via `group-merge-coordinator`
- extend finalize-plan, merger, and reliability tests to cover grouped merge routing and integration behavior
- document the architecture update and add a patch changeset for `@runfusion/fusion`
Files changed:
.changeset/fn-5782-branch-group-merge.md | 7 +
docs/architecture.md | 2 +
packages/cli/src/commands/__tests__/task-lifecycle.test.ts | 64 ++++++++-
packages/cli/src/commands/task-lifecycle.ts | 4 +
packages/core/src/__tests__/branch-group-store.test.ts | 20 +++
packages/core/src/__tests__/task-merge.test.ts | 64 +++++++++
packages/core/src/store.ts | 22 ++-
packages/core/src/task-merge.ts | 26 +++-
packages/core/src/types.ts | 2 +-
packages/engine/src/__tests__/experiment-finalize-plan.test.ts | 33 ++++-
packages/engine/src/__tests__/group-merge-coordinator.test.ts | 62 +++++++++
packages/engine/src/__tests__/reliability-interactions/branch-group-merge-routing.test.ts | 153 +++++++++++++++++++++
packages/engine/src/experiment/finalize-plan.ts | 62 +++++++--
packages/engine/src/group-merge-coordinator.ts | 51 +++++++
packages/engine/src/index.ts | 4 +
packages/engine/src/merger.ts | 47 ++++++-
16 files changed, 601 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-5782
Fusion-Task-Lineage: 0a70cfaa-2379-4955-b295-64de1f3093c8
2026-05-31 13:50:23 -07:00
gsxdsm
f1aba5b534
Merge pull request #1226 from plarson/fix/dirty-integration-merge-block
...
fix(engine): block dirty integration merge landings
2026-05-31 13:49:58 -07:00
Phil Larson
3dee395d67
fix(engine): block dirty integration merge landings
...
Refuse AI merge landing on a checked-out dirty integration worktree by default. This prevents Fusion from stashing/restoring unrelated project-root edits into main and then marking tasks done against contaminated state.
Fusion-Task-Id: FN-5780
2026-05-31 13:12:13 -07:00
gsxdsm
793da2c749
FN-5780: inherit source GitHub tracking when refining tasks
...
Preserve GitHub linking intent when creating refinement tasks from completed work.
- Set refinement `githubTracking` from the source task state during `refineTask`
- Opt out refinements when the source task is unlinked or explicitly disabled
- Carry forward `enabled` and optional `repoOverride` for linked sources without copying source issue metadata
- Add store-level tests covering unlinked, disabled, linked, and issue-only source tracking states
- Document refinement GitHub tracking inheritance behavior in task-management docs
- Add a patch changeset for `@runfusion/fusion`
Files changed:
.changeset/fn-5780-refine-github-tracking.md | 5 ++
docs/task-management.md | 1 +
packages/core/src/__tests__/store-ops.test.ts | 71 +++++++++++++++++++++++++++
packages/core/src/store.ts | 12 +++++
4 files changed, 89 insertions(+)
Fusion-Task-Id: FN-5780
Fusion-Task-Lineage: 88c1ce01-6efd-48c1-bbdd-704a821055d7
2026-05-31 11:55:11 -07:00
gsxdsm
62bc1e4458
FN-5777: remove GitHub star setting and button
...
Remove the dashboard setting and UI entry points for the GitHub star prompt.
- Remove the Star on GitHub option from settings state types and schema definitions.
- Delete SettingsModal UI, handlers, and styles tied to the star button and related layout.
- Update SettingsModal tests and add a changeset documenting the patch release impact.
Files changed:
.changeset/FN-5777-removal.md | 7 ++
packages/core/src/settings-schema.ts | 1 -
packages/core/src/types.ts | 4 -
.../dashboard/app/components/SettingsModal.css | 51 +-------
.../dashboard/app/components/SettingsModal.tsx | 137 +--------------------
.../components/__tests__/SettingsModal.test.tsx | 5 +-
6 files changed, 13 insertions(+), 192 deletions(-)
Fusion-Task-Id: FN-5777
Fusion-Task-Lineage: 16367ba6-ad22-4ba0-a033-005ccc420c19
2026-05-31 11:55:10 -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
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
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
gsxdsm
c9b159f4e5
FN-5743: cut over merge dequeue authority to merge-request queue
...
Shift merge dequeue enforcement to merge-request queue/marker authority with reliability coverage updates.
- Enforce merge eligibility and dequeue ownership via merge-request queue/marker checks in engine and scheduler paths.
- Add hard-cancel behavior coverage to ensure queued merge requests are canceled when tasks are user-canceled.
- Extend core merge-request record/store tests and reliability interaction suites for dual-observe and cancel-on-hard-cancel seams.
- Document the FN-5741/FN-5743 reliability backstop updates in AGENTS.md and architecture docs.
Files changed:
AGENTS.md | 2 +
docs/architecture.md | 2 +
packages/core/src/__tests__/merge-request-record.test.ts | 18 ++++
packages/core/src/store.ts | 13 +++
packages/engine/src/__tests__/reliability-interactions/dual-observe-merge-seam.test.ts | 57 +++++++++++++
packages/engine/src/__tests__/reliability-interactions/merge-request-cancel-on-hard-cancel.test.ts | 87 +++++++++++++++++++
packages/engine/src/project-engine.ts | 98 +++++++++++++++++++++-
packages/engine/src/scheduler.ts | 12 ++-
8 files changed, 284 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-5743
Fusion-Task-Lineage: b9a49aeb-ed73-42fe-924d-25c7097d1bb9
2026-05-30 20:48:16 -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
gsxdsm
24e0c44b4a
FN-5731: require confirmation before archiving near-duplicate tasks
...
Stop silent near-duplicate auto-archive by routing duplicates through explicit user confirmation in API, engine, and dashboard flows.
- add new near-duplicate confirmation metadata/types and preserve duplicate task rows until confirmation
- update workflow routes and triage logic to return confirmation-required outcomes instead of immediate archive
- add TaskCard and TaskDetailModal UI/actions plus styling and hook updates for confirming or rejecting duplicate handling
- expand dashboard and engine tests and task-management docs to cover the new confirmation path
Files changed:
docs/task-management.md | 14 ++++-
packages/core/src/types.ts | 4 ++
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/components/TaskCard.css | 59 ++++++++++++++++++
packages/dashboard/app/components/TaskCard.tsx | 46 +++++++++++++-
packages/dashboard/app/components/TaskDetailModal.css | 34 +++++++++++
packages/dashboard/app/components/TaskDetailModal.tsx | 71 +++++++++++++++++++++-
packages/dashboard/app/components/__tests__/TaskCard.test.tsx | 71 ++++++++++++++++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.rendering.test.tsx | 68 +++++++++++++++++++++
packages/dashboard/app/hooks/useTasks.ts | 2 +-
packages/dashboard/src/__tests__/routes-tasks-near-duplicate.test.ts | 45 ++++++++++++++
packages/dashboard/src/routes/register-task-workflow-routes.ts | 9 ++-
packages/engine/src/__tests__/reliability-interactions/near-duplicate-intake.test.ts | 16 +++--
packages/engine/src/triage.ts | 19 +++---
14 files changed, 433 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-5731
Fusion-Task-Lineage: fa004129-7bce-4457-b8c3-ceb9fb953319
2026-05-30 15:52:46 -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
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
a89e4edadb
fix: address dependency mutation review comments
2026-05-30 13:53:34 -07:00
Phil Larson
b1c1a33d34
Add safe task dependency mutation
2026-05-30 13:43:36 -07:00
gsxdsm
5ff7f37c24
FN-5728: fake-timer store-watcher polling tests
...
Speed up store-watcher polling coverage by replacing real-time waits with deterministic fake-timer advancement.
- Apply Vitest fake timers to watch-active polling tests in store-watcher coverage.
- Advance timers explicitly around polling cycles and task creation to avoid interval-based delays.
- Ensure watcher teardown restores real timers and stops polling cleanly.
- Update FN-5048 speed audit notes with the fake-timer rewrite details and new runtime sample.
Files changed:
docs/test-speed-audit-FN-5048.md | 4 ++--
packages/core/src/__tests__/store-watcher.test.ts | 19 +++++++++++++++++++
2 files changed, 21 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-5728
Fusion-Task-Lineage: 7cc1eed6-fe86-458d-94c3-8d0780ff7828
2026-05-30 12:58:47 -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
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
f659a07a25
chore(release): v0.38.1
...
Version bump via changesets.
2026-05-30 00:18:41 -07:00
gsxdsm
45d22586dc
chore(release): v0.38.0
...
Version bump via changesets.
2026-05-29 23:17:31 -07:00
gsxdsm
0dbb1cd6f9
FN-5704: escalate self-owned execution limbo instead of endless resume
...
Escalate reclaimable in-progress resume limbo into an explicit failure path to stop infinite self-healing loops.
- add resume-limbo escalation handling in self-healing/executor flow so self-owned stuck execution is failed and surfaced
- extend core task/run-audit types and retry-reset/store behavior to persist and expose the new escalation state
- add reliability interaction coverage for reclaim self-owned resume limbo escalation and update related schema/store/CLI/plugin tests and docs
Files changed:
AGENTS.md | 1 +
docs/architecture.md | 2 +
packages/cli/src/commands/__tests__/task.test.ts | 2 +
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 +-
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__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 13 +-
packages/core/src/manual-retry-reset.ts | 1 +
packages/core/src/store.ts | 37 ++++-
packages/core/src/types.ts | 11 ++
...laim-self-owned-resume-limbo-escalation.test.ts | 168 +++++++++++++++++++++
packages/engine/src/executor.ts | 5 +
packages/engine/src/run-audit.ts | 1 +
packages/engine/src/self-healing.ts | 72 +++++++++
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
21 files changed, 345 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-5704
Fusion-Task-Lineage: c8f73d16-d95b-450f-a514-e7d3c2f7aebe
2026-05-29 20:05:14 -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
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
bac12d1e28
FN-5695: sync feature assertions for late-added mission features
...
Close the assertion-graph gap by making mission feature assertions store-managed and automatically synchronized.
- add `sourceFeatureId` to contract assertions (types, schema migration, persistence, snapshot restore)
- auto-create/update/delete managed assertions when features are added, edited, or removed in `MissionStore`
- remove duplicate/manual assertion creation from mission routes and rely on centralized store behavior
- expand core, dashboard, engine, and plugin tests plus docs to cover validator behavior for later-added features
Files changed:
docs/missions.md | 11 ++-
docs/storage.md | 2 +-
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 +--
packages/core/src/__tests__/mission-store.test.ts | 82 +++++++++++++++++++---
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 | 11 ++-
packages/core/src/mission-store.ts | 69 ++++++++++++++++--
packages/core/src/mission-types.ts | 4 ++
.../dashboard/src/__tests__/mission-e2e.test.ts | 70 ++++++++++++------
packages/dashboard/src/mission-routes.ts | 16 +----
.../src/__tests__/mission-execution-loop.test.ts | 46 +++++++++++-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
18 files changed, 288 insertions(+), 97 deletions(-)
Fusion-Task-Id: FN-5695
Fusion-Task-Lineage: 337f030c-e883-41aa-b982-13ebe45bd5ee
2026-05-29 13:35:13 -07:00
gsxdsm
b265d6b395
FN-5700: remove duplicate task autoMerge declarations
...
Clean up duplicate task autoMerge declarations across core schema, store mapping, and tests.
- Remove the redundant task-level autoMerge field from core Task types and DB schema expectations.
- Keep task hydration autoMerge mapping in a single path and normalize boolean conversion to explicit integer checks.
- Update affected core and roadmap store tests to match the deduplicated autoMerge surface.
Files changed:
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 +++----
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__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 1 -
packages/core/src/store.ts | 4 +--
packages/core/src/types.ts | 5 ----
.../src/store/__tests__/roadmap-store.test.ts | 4 +--
13 files changed, 39 insertions(+), 47 deletions(-)
Fusion-Task-Id: FN-5700
Fusion-Task-Lineage: d2d4d41e-31b1-44a0-9594-9d75056c59a2
2026-05-29 12:25:17 -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
a312da63e4
FN-5674: add per-task auto-merge persistence and resolver
...
Add per-task auto-merge overrides to the core task model and persist/snapshot them through review transitions.
- add Task.autoMerge typing, storage row mapping, updateTask support, and DB schema migration to persist per-task auto-merge state
- snapshot settings.autoMerge onto tasks when moving into in-review when no explicit task override is set
- export resolveEffectiveAutoMerge to consistently resolve task-level override vs global settings precedence
- expand core tests for migration, persistence, movement, and merge behavior; update roadmap schema-version expectation to match the new schema version
Files changed:
packages/core/src/__tests__/db-migrate.test.ts | 10 +++----
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 | 2 +-
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__/store-movement.test.ts | 33 +++++++++++++++++++++
.../core/src/__tests__/store-persistence.test.ts | 18 ++++++++++++
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/__tests__/task-merge.test.ts | 19 ++++++++++++
packages/core/src/db.ts | 9 +++++-
packages/core/src/index.ts | 1 +
packages/core/src/store.ts | 23 +++++++++++++--
packages/core/src/task-merge.ts | 15 +++++++++-
packages/core/src/types.ts | 7 +++++
.../src/store/__tests__/roadmap-store.test.ts | 4 +--
18 files changed, 157 insertions(+), 42 deletions(-)
Fusion-Task-Id: FN-5674
Fusion-Task-Lineage: 8e1e3988-2e41-4d7a-9653-e88c36ec272c
2026-05-29 09:56:28 -07:00
gsxdsm
71e2aec5b7
FN-5663: add goal-citation audit trail to agent reasoning
...
Record goal citation evidence so agent reasoning can be traced end-to-end.
- add core goal citation types, extraction helper, persistence schema, and store APIs for citation create/list workflows
- add CLI support and tests for goal citation flows, including command wiring and regression coverage
- update docs and add a published changeset for @runfusion/fusion describing the new audit-trail capability
Files changed:
.changeset/fn-5663-goal-citation-audit-trail.md | 10 +
docs/agents.md | 15 ++
docs/cli-reference.md | 6 +-
packages/cli/src/__tests__/bin.test.ts | 2 +
.../cli/src/__tests__/goals-citations-cli.test.ts | 82 ++++++++
packages/cli/src/bin.ts | 19 +-
packages/cli/src/commands/goals.ts | 43 +++++
packages/core/src/__tests__/db-migrate.test.ts | 10 +-
packages/core/src/__tests__/db.test.ts | 34 ++--
.../src/__tests__/goal-citation-extractor.test.ts | 56 ++++++
.../src/__tests__/goal-citations-store.test.ts | 175 +++++++++++++++++
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 | 2 +-
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 | 51 ++++-
packages/core/src/goal-citation-extractor.ts | 56 ++++++
packages/core/src/index.ts | 13 ++
packages/core/src/store.ts | 210 ++++++++++++++++++++-
packages/core/src/types.ts | 51 ++++-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
24 files changed, 817 insertions(+), 46 deletions(-)
Fusion-Task-Id: FN-5663
Fusion-Task-Lineage: 720f2c4b-4363-464a-a76f-472ec6aca136
2026-05-29 08:25:38 -07:00
gsxdsm
a960bb1031
chore(release): v0.37.0
...
Version bump via changesets.
2026-05-29 08:09:33 -07:00
gsxdsm
230efa1cdc
FN-5644: default AI merge commit body to summarize changes
...
Fusion-Task-Id: FN-5644
Fusion-Task-Lineage: 5cf0133b-2a14-4bb4-a1c4-2d5bef5793bc
2026-05-28 23:45:40 -07:00
gsxdsm
6c44ed16e7
chore(release): v0.36.0
...
Version bump via changesets.
2026-05-28 23:40:25 -07:00
gsxdsm
d78fbccacc
FN-5643: fix gh api --json flag handling for PR fetches
...
Fusion-Task-Id: FN-5643
Fusion-Task-Lineage: 2eaba342-1ac7-4ebf-886e-acd22af637ee
2026-05-28 22:59:18 -07:00
gsxdsm
cec191eac3
FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope
...
Fusion-Task-Id: FN-5638
Fusion-Task-Lineage: 6e99c156-5f6c-42e6-bd26-618e08ffd05f
2026-05-28 21:23:48 -07:00
gsxdsm
0e5ca34c61
refactor(FN-5633): AI merge reviewer uses the project reviewer/validator model
...
Drop the bespoke `merger.reviewerModel` setting. The AI merge reviewer now
resolves its model via `resolveValidatorSettingsModel` — the same
reviewer/validator lane used elsewhere (project validator → global validator →
project default) — falling back to the merger model only if that lane is empty.
Removes the setting from the type, schema default, and the Settings UI.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-28 19:53:11 -07:00
gsxdsm
b2dce7d852
Recovery: Re-land (Close source-imported GitHub issues on ta
2026-05-28 19:49:31 -07:00
gsxdsm
29ac58f8d0
feat(FN-5633): standalone AI merge path (clean-room merge + AI reviewer)
...
New default merge path (merger.mode="ai"), self-contained in merger-ai.ts and
dispatched from ProjectEngine.onMerge instead of the legacy aiMergeTask pipeline
(kept for merger.mode="deterministic").
Flow: clean-room detached worktree at the target branch tip → AI agent merges
the task branch + squashes (resolving conflicts) → fresh read-only AI reviewer
audits with corrective retries (blocking vs advisory; advisory lands, unfixable
correctness hard-fails via AiMergeBlockedError; fail-safe verdict parsing) →
land via `git merge --ff-only` when the checkout is on the target (else
update-ref CAS) → sync the local checkout (stash → ff → restore; AI reconciles
a conflicting restore and keeps the original edits in a backup stash;
un-stashable dirt advances the ref + warns) → finalize (delete task branch —
never the integration branch — task→done, remove temp worktree).
- Per-task target branch honored (falls back to the default integration
branch); local checkout synced only when on that target.
- Structurally immune to the dirty-clobber and stale-base/non-FF bug classes of
the legacy path (clean room + FF-by-construction).
- Progress surfaced on the task status pill + task log stream.
- Clear error when the target branch has no local ref.
Settings: merger.mode / merger.reviewerModel / merger.maxReviewPasses, surfaced
in Settings → Merge; legacy merge-mechanics settings hidden when AI mode is on.
Tests: merger-ai.test.ts (verdict parser, clean merge, blocking hard-fail,
advisory land, empty no-op, target-branch isolation, missing-target error,
landSquash clean/other-branch/dirty-restore/AI-resolved). Legacy
merge-orchestration tests pinned to deterministic mode.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-28 18:50:23 -07:00
gsxdsm
5768d5ec45
feat(FN-5627): self-heal transient merge failures stuck at mergeRetries=3
...
After the FN-5627 merger fix (b2d547eae , 230f6f45b ) landed, two in-review
tasks (FN-5628, FN-5632) remained stuck at mergeRetries=3 with
status=failed because the merger correctly identified transient failure
classes but had no auto-recovery path \u2014 the AUTO_MERGE_COOLDOWN_MS reset
takes hours and gives up too easily.
Failure classes covered:
- lease-handoff-failed: target-not-queued (FN-5353/FN-5363 race where the
merge queue lease was cleared between enqueue and handoff acquisition).
- Legacy same-SHA spurious 'Integration branch X advanced concurrently
(expected SHA, observed SHA)' errors from pre-FN-5627 code paths.
Implementation:
- New MergeDetails.transientRecoveryCount field tracks per-task recovery
attempts, bounded by MAX_TRANSIENT_MERGE_RECOVERIES = 2.
- New classifyTransientMergeError() string matcher in self-healing.ts
identifies recoverable classes by error pattern. Returns null for
genuine merge failures (verification, conflicts, real concurrent
advances with different SHAs).
- SelfHealingManager.recoverTransientMergeFailures() sweep finds
matching in-review tasks, resets mergeRetries=0, clears status/error,
increments recovery count, re-enqueues via requeueForAutoMerge.
- Wired into BOTH startup recovery and periodic Batch 2 maintenance loop.
- Emits merger:transient-failure-auto-recovered (recovered) and
merger:transient-failure-budget-exhausted (terminal) audit events.
No-op when autoMerge=false, requeueForAutoMerge not wired, or pause
active. Repeat-suppression on budget-exhausted emit via error marker
[transient-recovery-budget-exhausted] to prevent log spam.
Tests (6 new):
- target-not-queued recovery path
- spurious-concurrent-advance-same-sha recovery path (legacy)
- genuine concurrent-advance (different SHAs) NOT recovered
- non-transient failures NOT recovered (verification, conflicts)
- budget exhaustion emits marker once, no further requeue
- autoMerge=false no-op
Engine suite: 6157 tests pass (6 new).
In-flight: FN-5628 and FN-5632 were manually reset via SQL so the
already-running engine (which has the FN-5627 merger fix) can re-attempt
their merges before this self-healing path lands and reloads. Future
occurrences self-recover.
Fusion-Task-Id: FN-5627
2026-05-28 13:53:15 -07:00
gsxdsm
2b66825fc1
test(core): force deterministic fs.watch failure with NUL-byte path
...
Prior attempt accepted either fs.watch failure path (sync throw vs async
error event) — but on Linux Node, fs.watch with `recursive: true` on a
missing directory silently succeeds (returns a no-op watcher, never
throws, never emits an error). Neither catch arm fires, so the warning
the test wants to assert never appears.
Switch to a NUL-byte-embedded path. Node validates the path argument up
front and throws ERR_INVALID_ARG_VALUE synchronously on every platform,
guaranteeing the `watch:fs-watch-setup` catch arm runs. Restore the
strict assertions on phase + message.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 10:46:21 -07:00
gsxdsm
2a3535893b
feat(FN-5622): add goals REST API with store accessor and route handlers
...
Introduces a Goals REST API (`GET/POST/PUT /api/goals` and `GET/PUT /api/goals/:id`) backed by a new `@fusion/core` goal store and typed goal types, including comprehensive route and store test coverage. Documentation on architecture and storage is updated to reflect the new domain, and a changeset
Fusion-Task-Id: FN-5622
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
Fusion-Task-Id: FN-5622
2026-05-28 10:32:16 -07:00