gsxdsm
8609669a56
FN-5742: add dual-observe merge-request parity seam
...
Add a dual-observe merge-request seam that preserves legacy authority while emitting parity signals.
- Add scheduler parity helpers for dependency satisfaction and shadow lease state, keeping legacy scheduling decisions authoritative.
- Extend ProjectEngine/run-audit merge dequeue flow with shadow-candidate selection and parity audit emission.
- Add reliability interaction coverage for dual-observe dependency parity, shadow dequeue parity, lease parity, and runnable guard behavior.
- Document FN-5742 reliability backstop coverage in architecture docs.
Files changed:
docs/architecture.md | 2 +
packages/engine/src/__tests__/reliability-interactions/dual-observe-merge-seam.test.ts | 193 +++++++++++++++++++++
packages/engine/src/__tests__/scheduler.test.ts | 64 +++++++
packages/engine/src/project-engine.ts | 42 +++++
packages/engine/src/run-audit.ts | 3 +
packages/engine/src/scheduler.ts | 158 +++++++++++++++--
6 files changed, 448 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-5742
Fusion-Task-Lineage: dc4c0212-fe75-4860-bf06-2765a0b18d38
2026-05-30 18:52:19 -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
0e0b17f3c4
FN-5754: re-triage stranded features in active mission slices
...
Ensure active mission slices recover stranded features by linking or auto-triaging them during scheduler and self-healing reconciliation.
- Extend mission feature reconciliation to auto-triage defined features in active slices when mission autopilot/auto-advance is enabled and no linked task can be found.
- Emit a new mission:stranded-feature-triaged audit event whenever stranded features are linked or triaged, and wire reconciliation into self-healing maintenance runs.
- Add regression coverage for scheduler and reliability interactions, and document the new backstop in AGENTS and mission docs.
Files changed:
AGENTS.md | 1 +
docs/missions-completion-contract.md | 1 +
docs/missions.md | 1 +
.../mission-stranded-feature-retriage.test.ts | 160 +++++++++++++++++++++
packages/engine/src/__tests__/scheduler.test.ts | 155 ++++++++++++++++++++
packages/engine/src/run-audit.ts | 1 +
packages/engine/src/runtimes/in-process-runtime.ts | 1 +
packages/engine/src/scheduler.ts | 64 ++++++++-
packages/engine/src/self-healing.ts | 11 ++
9 files changed, 394 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-5754
Fusion-Task-Lineage: 6b29754a-2fdf-4528-aa43-af294c4210df
2026-05-30 16:47:15 -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
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
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
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
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
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
f8bda56716
fix(FN-166): bypass coordination-only overlap leases
...
Fusion-Task-Id: FN-166
2026-05-30 06:47:02 -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
ee0b1cd9c8
FN-5658: add goal injection visibility diagnostics
...
Improve anchoring visibility by classifying and emitting goal-injection diagnostics across engine lanes.
- add goal-injection diagnostics module with result/failure classification and audit emission helpers
- wire heartbeat and executor prompt construction to resolve classified goal context and emit diagnostic events
- expose diagnostic APIs from engine index and add new run-audit event type for prompt goal injection
- add unit and wiring tests plus diagnostics docs updates for the new observability path
Files changed:
docs/diagnostics.md | 8 +
.../goal-injection-diagnostics-wiring.test.ts | 87 +++++++++
.../__tests__/goal-injection-diagnostics.test.ts | 150 +++++++++++++++
packages/engine/src/agent-heartbeat.ts | 34 +++-
packages/engine/src/executor.ts | 35 +++-
packages/engine/src/goal-injection-diagnostics.ts | 209 +++++++++++++++++++++
packages/engine/src/index.ts | 10 +
packages/engine/src/run-audit.ts | 7 +-
8 files changed, 521 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-5658
Fusion-Task-Lineage: f4feaa37-d9b1-4bb6-b8c9-35a9b7a02f57
2026-05-29 20:50:08 -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
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
ff575f8b06
FN-5653: inject active goal context into heartbeat and executor prompts
...
Align heartbeat and executor prompt assembly so both lanes receive the same active-goal context block.
- inject goalContext into heartbeat and executor buildPromptLayers inputs using buildGoalContextSection
- extend goal-context regression coverage with parity tests for heartbeat/executor injection and empty-goal behavior
- update executor test helpers for goal-store access and document the shared prompt-lane behavior in architecture/agents docs
Files changed:
docs/agents.md | 1 +
docs/architecture.md | 1 +
packages/engine/src/__tests__/executor-test-helpers.ts | 3 +
packages/engine/src/__tests__/goal-context-injection.test.ts | 72 ++++++++++++++++++++++
packages/engine/src/agent-heartbeat.ts | 12 +++-
packages/engine/src/executor.ts | 12 +++-
packages/engine/src/prompt-layers.ts | 9 ++-
7 files changed, 107 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5653
Fusion-Task-Lineage: d2670585-57f7-409d-bb11-cef3448267a6
2026-05-29 20:05:14 -07:00
gsxdsm
a9d2064f66
FN-5703: forward task:deleted events through in-process runtime
...
Ensure engine-side task deletes propagate through all runtime transports so GitHub tracking cleanup runs consistently.
- extend IPC protocol and child-process runtime/worker plumbing to carry `task:deleted` events
- forward `task:deleted` from in-process runtime through project runtime and project manager dispatch
- add regression coverage for in-process runtime forwarding and GitHub tracking delete handling
Files changed:
.../src/__tests__/github-tracking-delete.test.ts | 29 ++++++++++++++++++
.../src/__tests__/in-process-runtime.test.ts | 34 +++++++++++++++++++++-
packages/engine/src/ipc/ipc-protocol.ts | 14 ++++++++-
packages/engine/src/project-manager.ts | 7 +++++
packages/engine/src/project-runtime.ts | 4 ++-
.../engine/src/runtimes/child-process-runtime.ts | 6 ++++
.../engine/src/runtimes/child-process-worker.ts | 14 +++++++--
packages/engine/src/runtimes/in-process-runtime.ts | 10 ++++++-
8 files changed, 111 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-5703
Fusion-Task-Lineage: 1406838b-5abf-4b86-8161-c2dd59f88a9b
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
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
c5d03ae9de
Merge pull request #1162 from plarson/fix/runnable-queued-overlap-starvation
...
Fix scheduler starvation from non-runnable queued overlaps
2026-05-29 13:34:46 -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
Phil Larson
6b57e7cbf6
fix(engine): resume execution after review revise
2026-05-29 12:57:53 -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
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
gsxdsm
a960bb1031
chore(release): v0.37.0
...
Version bump via changesets.
2026-05-29 08:09:33 -07:00
gsxdsm
46531c6b3b
FN-5659: add deterministic goal citation proof test
...
Add a deterministic mock-runtime proof path that verifies executor output cites injected active goal IDs.
- add a new engine test for goal-citation proof scaffolding and emitted goal ID extraction
- validate positive behavior when ## Active Goals is present in session system prompt
- add a negative control confirming no citation is emitted without injected goal context
- assert the proof runs on mock/scripted runtime for deterministic, model-free coverage
Files changed:
.../src/__tests__/goal-citation-proof.test.ts | 142 +++++++++++++++++++++
1 file changed, 142 insertions(+)
Fusion-Task-Id: FN-5659
Fusion-Task-Lineage: 35f7c1ec-8de3-4813-8f9e-fc5f72096d91
2026-05-29 08:06:46 -07:00
gsxdsm
dbfd71373a
Merge pull request #1142 from plarson/fix/pending-review-not-failed
...
fix(engine): do not fail tasks parked for pending review
2026-05-29 08:05:48 -07:00
gsxdsm
b335f3d7c4
FN-5652: add goal retrieval tool for agent execution
...
Expose goal details to agents during task execution workflows.
- add fn_goal_show tool to the CLI extension with goal lookup, formatted output, and not-found error details
- add focused tests for goal tool registration and execution behavior
- mark fn_goal_show as execution-safe in engine gating classifications and test coverage
- update Fusion skill/reference docs to include the new goal retrieval capability
- add a changeset for @runfusion/fusion patch release
Files changed:
.changeset/fn-5652-goal-show.md | 7 +
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 16 +++
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../cli/src/__tests__/extension-goal-tools.test.ts | 148 +++++++++++++++++++++
packages/cli/src/extension.ts | 43 ++++++
.../src/__tests__/gating-classifications.test.ts | 7 +
packages/engine/src/gating-classifications.ts | 2 +
8 files changed, 225 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-5652
Fusion-Task-Lineage: 98c2c417-0887-4794-81b1-6b47ab0f708f
2026-05-29 07:13:23 -07:00
gsxdsm
335c49748c
FN-5651: add single-seam goal-context injector for system prompts
...
Introduce a dedicated injector seam that appends active goal context to system prompts.
- add goal-context injector module that builds deterministic system-prompt goal context from active goals
- export injector utilities through engine index for integration and reuse
- add focused tests covering formatting, filtering, ordering, and empty-context behavior
Files changed:
.../src/__tests__/goal-context-injector.test.ts | 188 +++++++++++++++++++++
packages/engine/src/goal-context-injector.ts | 142 ++++++++++++++++
packages/engine/src/index.ts | 8 +
3 files changed, 338 insertions(+)
Fusion-Task-Id: FN-5651
Fusion-Task-Lineage: 6fd3a8a0-f33a-48fd-b9f2-9a16c24c48c8
2026-05-29 07:11:00 -07:00
Phil Larson
b5f2f91e87
fix(FN-057): park pending review without failed status
2026-05-29 06:54:45 -07:00
gsxdsm
c89ad28e7b
FN-5646: preserve AI body when canonicalizing merge commits
...
Fusion-Task-Id: FN-5646
Fusion-Task-Lineage: db989a0f-a7d9-4060-9754-84d71f21a8c2
2026-05-29 00:55:17 -07:00
gsxdsm
b8c8642cae
FN-5645: fix mission autopilot progression to wait for assertion runs
...
Fusion-Task-Id: FN-5645
Fusion-Task-Lineage: ed9d2045-2bfe-4070-a7e3-caca010e6cc6
2026-05-28 23:58:47 -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
aa7eccbadb
FN-5642: add AI-generated merge commit body summaries
...
Fusion-Task-Id: FN-5642
Fusion-Task-Lineage: 27701749-6107-4ffe-a83e-42873b06473b
2026-05-28 22:23:55 -07:00
gsxdsm
41f40b4669
FN-5641: trigger assertion runs during mission autopilot progression
...
Fusion-Task-Id: FN-5641
Fusion-Task-Lineage: ba5befe3-cee5-4dc5-9dbe-b718df8ea4fa
2026-05-28 22:07:54 -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
f258a75162
FN-5634: fix ntfy JSON publish priority mapping
...
Fusion-Task-Id: FN-5634
Fusion-Task-Lineage: 20868ce3-fe31-4638-87f6-83577f46caab
2026-05-28 21:17:02 -07:00
gsxdsm
c21b907211
feat(FN-5633): reviewer also grades the commit message (retry-to-fix)
...
Add a 4th reviewer axis: the squash commit subject must concisely and
accurately summarize the actual changes. A poor/inaccurate message is an
ADVISORY-severity concern, so it drives a corrective re-merge (which rewrites
the message) up to maxReviewPasses, then lands — it never hard-blocks the merge
over a message nit. Structural correctness (task-id prefix + Fusion-Task-Id /
lineage trailers) remains deterministically guaranteed by
ensureCommitTaskMetadata regardless.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-28 20:21:06 -07:00
gsxdsm
7f536eb619
fix(FN-5633): guarantee the squash subject starts with the task id
...
ensureCommitTaskMetadata (was ensureTaskTrailersOnHead) now also prefixes the
commit subject with `<taskId>: ` when includeTaskIdInCommit is on, in addition
to ensuring the Fusion-Task-Id / lineage trailers — so the landed commit both
starts with the task id and carries the board-association trailers even if the
AI agent omits them. Single idempotent amend.
Test: asserts the landed subject matches /^FN-1: / when the agent committed
without a prefix.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-28 20:18:41 -07:00
gsxdsm
c1d558c765
feat(FN-5633): AI merge commit summary + task trailers, verify-and-fix, editable prompt
...
- Commit message: the merge agent writes a concise change-summary subject (not
just the task title), and every landed squash carries board-association
trailers — `Fusion-Task-Id: <taskId>` plus the canonical lineage trailer when
the task has a lineageId — guaranteed via an idempotent amend
(ensureTaskTrailersOnHead) even if the agent omits them.
- Verify-and-fix: the merge prompt instructs the agent to run the project's
tests / type-check / lint after resolving the merge and fix any NEW failure
the merge introduced (not pre-existing breakage) before committing.
- Editable prompt: the AI merge agent's base persona is the editable "merger"
role prompt (Settings -> Prompts); the clean-room / verification / trailer
rules are always appended so a custom prompt can't drop them.
- Reviewer model: reviewer uses the project reviewer/validator model lane
(resolveValidatorSettingsModel); the bespoke merger.reviewerModel setting is
removed.
Changeset updated to cover all AI merger changes.
Tests: trailer present on landed commit (+ lineage when set), editable-prompt
incorporation, new-breakage verification wording.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-28 20:14:13 -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
c722451a1c
Recovery: re-land onto main
2026-05-28 19:48:41 -07:00
gsxdsm
be0be507b3
fix(FN-5633): fail loudly when an executed, never-merged task has no branch
...
The AI merge path treated a missing task branch as a benign no-op. That's
correct when the task was never executed or already merged (branch cleaned up
on a re-process), but if the task WAS executed (a baseCommitSha was recorded)
and has no recorded merge, the branch should still exist — its work appears
lost. Now that case throws instead of silently marking the task done; the
benign cases still finalize as a no-op (reason "already-merged" / "no-branch").
Tests: executed+never-merged → throws; already-merged → no-op done;
never-executed → no-op done.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-28 19:28:57 -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