gsxdsm
f1572a3b62
FN-5946: render PR create modal through a portal
...
Ensure the PR creation dialog escapes transformed ancestor layout traps.
- render `PrCreateModal` with `createPortal(..., document.body)` so the overlay stays fixed to the viewport
- add regression coverage for container-type and nested-overlay portal behavior plus close interactions
- document the modal overlay portal requirement in the dashboard guide
Files changed:
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/PrCreateModal.tsx | 6 ++-
.../components/__tests__/PrCreateModal.test.tsx | 63 +++++++++++++++++++++-
3 files changed, 66 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-5946
Fusion-Task-Lineage: eb22590e-1776-49f3-82d7-ac87c5138f0b
2026-06-03 15:32:28 -07:00
gsxdsm
acc7456a5e
Merge pull request #1343 from Runfusion/gsxdsm/compound
...
feat: Compound Engineering plugin with interactive sessions, work bridge, and bidirectional sync
2026-06-03 15:31:40 -07:00
gsxdsm
7348e35a11
docs: capture observable-agent-turns architecture pattern and seed CE session vocabulary
...
ce-compound learning from the live-output/steering work: push-channel-
alongside-pull-contract, void-safe detached turns, inactivity watchdog,
transient liveActivity + persisted trace, replay suppression. Also adds a
"Compound Engineering sessions" cluster to CONCEPTS.md and refreshes the
plugin reference doc's Sessions section with the new transport behaviors.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 15:20:34 -07:00
gsxdsm
4aa9048909
Merge pull request #1345 from Runfusion/gsxdsm/missonsdebug
...
fix(engine): recover missions wedged by stranded done features
2026-06-03 15:00:08 -07:00
gsxdsm
a9e16cedf8
Merge pull request #1348 from Runfusion/gsxdsm/fix-branch-group-collision
...
fix(core): reuse same-name branch group instead of colliding on mission triage
2026-06-03 13:49:38 -07:00
gsxdsm
60c307320d
Merge main: adopt FN-5902 lazy assertion linkage in shared runFeatureValidation
...
- runFeatureValidation now lazy-ensures a linked assertion (FN-5902) instead
of the removed zero-assertion auto-pass, for both task-completion and the
stranded-feature recovery path
- CONCEPTS.md: union of main's Merge-lifecycle cluster and this branch's
Missions clusters; Contract Assertion entry updated for FN-5902 semantics
- AGENTS.md: take main's docs/solutions + CONCEPTS.md pointer wording
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 13:45:11 -07:00
gsxdsm
fa7da2bdfd
Merge branch 'main' into gsxdsm/compound
2026-06-03 13:29:20 -07:00
gsxdsm
1761a7ffd2
FN-5940: stop logging no-op task:moved activity rows
...
Prevent same-column task move noise from bloating the activity log.
- skip task:moved activity logging and event emission when a task stays in the same column
- add a one-time TaskStore cleanup migration that deletes existing same-column task:moved rows
- cover listener, moveTask, polling replication, and migration behavior with focused core tests
- document the no-op cleanup invariant and manual VACUUM guidance for reclaimed SQLite space
Files changed:
docs/storage.md | 8 ++
packages/core/src/__tests__/activity-log-no-op-moved.test.ts | 122 +++++++++++++++++++++
packages/core/src/__tests__/no-op-moved-cleanup-migration.test.ts | 108 ++++++++++++++++++
packages/core/src/store.ts | 51 ++++++++-
4 files changed, 286 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5940
Fusion-Task-Lineage: f34cf8d0-3639-44d5-8a90-8ba461636eaa
2026-06-03 13:20:17 -07:00
gsxdsm
76c18efa92
FN-5939: expose operational log retention setting
...
Expose operational log retention as a project setting in the dashboard.
- add an Operational log retention selector to the Project General settings section with supported retention options
- validate operationalLogRetentionDays in the settings API and cover accepted and rejected values in tests
- document the constrained retention values and assert project-scope/default parity for the setting
Files changed:
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/settings-parity.test.ts | 7 ++++
packages/dashboard/app/components/SettingsModal.tsx | 47 ++++++++++------------
packages/dashboard/app/components/__tests__/SettingsModal.test.tsx | 8 ++++
packages/dashboard/src/__tests__/routes-settings.test.ts | 21 ++++++++++
packages/dashboard/src/routes/register-settings-memory-routes.ts | 10 +++++
6 files changed, 69 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-5939
Fusion-Task-Lineage: 2148dd88-1cef-4c6d-9696-31148fce97d3
2026-06-03 13:20:17 -07:00
gsxdsm
e00bc0235b
Address PR review feedback ( #1356 )
...
- Add behavior-level tests for the shared merge-enqueue funnel
(enqueueEligibleInReviewTasks) with a Surface Enumeration of all
in-review entry surfaces, per review
- Seed real stale in-review fixtures in the FN-5147 no-mutation
regression block so sweeps enumerate candidates and the assertions
are non-vacuous
- Keep per-task auto-merge gating uniform across reclaim/contamination
candidate columns: the suggested in-review-only scoping broke the
FN-5704 regression contract (reclaim short-circuits when autoMerge
is off); documented the tension in code comments and the learning doc
- Drop hardcoded commit hash from the learning doc
2026-06-03 13:08:06 -07:00
gsxdsm
ff1bb20b8f
docs: capture per-task auto-merge override learning and seed CONCEPTS.md
...
Document the trigger-layer gating bug fixed in this PR under
docs/solutions/logic-errors/, seed CONCEPTS.md with the merge-lifecycle
vocabulary, and surface both knowledge stores in AGENTS.md's reference
docs index.
2026-06-03 10:55:26 -07:00
gsxdsm
56a0001c45
docs: capture learning for branch-group-collision triage stall
...
Document the UNIQUE(branch_groups.branchName) collision that silently
stranded mission triage, in docs/solutions/logic-errors/, cross-linked to
the sibling PR #1345 mission-stall learning.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 08:51:57 -07:00
gsxdsm
c431c0e55d
docs: capture learning for the mission auto-progress wedge
...
Document the stranded done+implementing feature stall in
docs/solutions/logic-errors/, seed CONCEPTS.md with the mission domain
vocabulary, and surface both from AGENTS.md's reference-docs list.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 07:51:48 -07:00
gsxdsm
db0cf7d415
docs(solutions): capture plugin bundled-skill loading learning
...
Document why PluginSkillContribution.skillFiles silently fails to load bundled
skills in live sessions (resolver only filters disk-discovered skills) and the
physical-install + additionalSkillPaths-forwarding fix, as a searchable
docs/solutions/ learning. Surface docs/solutions/ in AGENTS.md so agents
discover it.
2026-06-03 07:26:15 -07:00
gsxdsm
d72cb2ab2b
FN-5911: move agent logs to per-task JSONL storage
...
Store agent logs in per-task JSONL files instead of the legacy SQLite table.
- add a file-backed agent log store with JSONL append/read/prune helpers and task-scoped source refs
- migrate legacy SQLite agentLogEntries data into task files, rewrite goal citation references, and preserve soft-deleted logs for forensics
- update task store, settings, docs, dashboard route coverage, and add regression tests for migration, retention, and log access
Files changed:
.changeset/fn-5911-agent-log-jsonl.md | 5 +
AGENTS.md | 2 +-
docs/diagnostics.md | 2 +-
docs/settings-reference.md | 2 +
docs/soft-delete-verification-matrix.md | 7 +-
docs/storage.md | 8 +-
.../src/__tests__/agent-log-file-store.test.ts | 123 ++++++
.../core/src/__tests__/agent-log-migration.test.ts | 186 +++++++++
.../core/src/__tests__/agent-log-retention.test.ts | 208 ++++++++++
packages/core/src/__tests__/db-migrate.test.ts | 14 +-
packages/core/src/__tests__/db.test.ts | 39 +-
.../src/__tests__/goal-citations-store.test.ts | 38 +-
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 | 2 +-
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 +-
.../src/__tests__/soft-delete-agent-logs.test.ts | 71 ++--
.../src/__tests__/store-agent-log-file.test.ts | 91 +++++
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/store-test-helpers.ts | 43 +-
packages/core/src/__tests__/store-upsert.test.ts | 37 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/agent-log-constants.ts | 25 ++
packages/core/src/agent-log-file-store.ts | 267 ++++++++++++
packages/core/src/db.ts | 51 ++-
packages/core/src/settings-schema.ts | 1 +
packages/core/src/store.ts | 453 ++++++++++++---------
packages/core/src/types.ts | 10 +-
.../__tests__/agent-log-routes.integration.test.ts | 48 +++
.../src/__tests__/evaluator-evidence.test.ts | 47 ++-
packages/engine/src/self-healing.ts | 12 +
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
34 files changed, 1477 insertions(+), 345 deletions(-)
Fusion-Task-Id: FN-5911
Fusion-Task-Lineage: 07c42f3a-87cf-4558-8f01-ac8460b5558b
2026-06-03 01:10:18 -07:00
gsxdsm
de7847c44d
FN-5927: categorize pnpm build scripts for install
...
Document and enforce pnpm build-script review decisions to prevent ignored-script install warnings.
- add reviewed ignoredBuiltDependencies entries to the root pnpm config and mirror the effective policy in pnpm-workspace.yaml
- add a regression test that verifies reviewed dependencies are categorized exactly once and stay aligned across both config files
- document the pnpm build-script approval policy in contributing docs and link plugin authoring guidance from AGENTS.md and PLUGIN_AUTHORING.md
Files changed:
AGENTS.md | 5 ++
docs/PLUGIN_AUTHORING.md | 3 +-
docs/contributing.md | 14 ++++
package.json | 9 +++
pnpm-workspace.yaml | 14 ++++
scripts/__tests__/pnpm-build-scripts-config.test.mjs | 74 ++++++++++++++++++++++
6 files changed, 118 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-5927
Fusion-Task-Lineage: 192bbed9-c5ed-45cb-b4bd-fb18514e2783
2026-06-03 00:28:41 -07:00
gsxdsm
0971eced30
FN-5920: prefer mission detail event count for activity tab
...
Use mission detail event counts as the authoritative pre-load source for mission activity.
- add mission hierarchy eventCount support in core and dashboard mission types
- return mission eventCount from mission detail APIs and document the field
- prefer the detail eventCount over stale list summaries before activity events load
- add coverage for store, API, and MissionManager pre-load count behavior
Files changed:
docs/missions.md | 2 +-
packages/core/src/__tests__/mission-store.test.ts | 18 +++++++++
packages/core/src/mission-store.ts | 6 +++
packages/core/src/mission-types.ts | 2 +
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/MissionManager.tsx | 12 +++++-
packages/dashboard/app/components/__tests__/MissionManager.test.tsx | 46 +++++++++++++++++++++-
packages/dashboard/app/components/mission-types.ts | 1 +
packages/dashboard/src/__tests__/mission-e2e.test.ts | 2 +
9 files changed, 86 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-5920
Fusion-Task-Lineage: a0269499-d34a-495d-89fc-0534bb62a94e
2026-06-02 23:47:32 -07:00
gsxdsm
6d3b1c9810
FN-5931: fix board viewport fill on narrow widths
...
Keep the board stretched between the header and footer across narrow layouts.
- make .project-content and .board flex-aware with min-size guards so board columns fill the remaining viewport space
- keep the board resize stabilization cleanup defensive when visualViewport lacks removeEventListener
- extend board mobile regression coverage and document footer-safe fill layout guidance
Files changed:
docs/dashboard-guide.md | 2 +
packages/dashboard/app/components/Board.tsx | 8 ++-
packages/dashboard/app/components/ProjectSelector.css | 2 +
packages/dashboard/app/components/__tests__/board-mobile-initial-render.test.tsx | 81 ++++++++++++++++++++--
packages/dashboard/app/styles.css | 7 +-
5 files changed, 89 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-5931
Fusion-Task-Lineage: 0031ad20-82e5-465d-9326-2b6c2d45de69
2026-06-02 23:33:11 -07:00
gsxdsm
a1b7556c7b
FN-5924: throttle OAuth expiry alerts across restarts
...
Persist OAuth expiry alert state so repeated provider expiry warnings are suppressed for 12 hours across engine restarts.
- add a persisted OAuth alert state store under ~/.fusion/agent and share it between the expiry monitor and startup validity logger
- throttle repeated oauth-token-expired notifications and startup expiry warnings per provider for 12 hours, while clearing stale state when providers disappear or change
- cover persisted throttling, restart behavior, failure handling, and wiring updates in engine notification tests
- document the persisted 12-hour OAuth alert throttle and add a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5924-oauth-alert-throttle.md | 5 +
docs/settings-reference.md | 4 +-
packages/engine/src/__tests__/project-engine-soft-delete-merge-abort.test.ts | 3 +
packages/engine/src/__tests__/project-engine.test.ts | 17 ++-
packages/engine/src/__tests__/reliability-interactions/soft-delete-in-flight-abort.test.ts | 3 +
packages/engine/src/auth-storage.ts | 6 +-
packages/engine/src/notification/__tests__/oauth-alert-state.test.ts | 72 ++++++++++
packages/engine/src/notification/__tests__/oauth-expiry-monitor.test.ts | 148 ++++++++++++++++---
packages/engine/src/notification/__tests__/oauth-validity-logger.test.ts | 159 ++++++++++++++++++---
packages/engine/src/notification/index.ts | 3 +
packages/engine/src/notification/oauth-alert-state.ts | 144 +++++++++++++++++++
packages/engine/src/notification/oauth-expiry-monitor.ts | 12 +-
packages/engine/src/notification/oauth-validity-logger.ts | 16 ++-
packages/engine/src/project-engine.ts | 13 +-
14 files changed, 554 insertions(+), 51 deletions(-)
Fusion-Task-Id: FN-5924
Fusion-Task-Lineage: 83255a25-40c7-44d4-8302-b068ae51250e
2026-06-02 23:13:16 -07:00
gsxdsm
ee00d9f1b7
FN-5928: enforce surface enumeration for bug-fix invariants
...
Require bug-fix specs and reviews to enumerate affected surfaces and reject repro-only regression coverage.
- add a required `## Surface Enumeration` section to triage prompt templates and bug-fix planning guidance
- tighten reviewer guidance to block missing surface enumeration and repro-only regression tests
- document the canonical surface checklist in `docs/testing.md` and cover the new wording with prompt/reviewer tests
Files changed:
AGENTS.md | 6 ++--
docs/testing.md | 9 +++++
packages/core/src/__tests__/agent-prompts.test.ts | 22 ++++++++++++
packages/core/src/agent-prompts.ts | 16 +++++++++
packages/engine/src/__tests__/reviewer.test.ts | 17 ++++++++++
packages/engine/src/__tests__/triage.test.ts | 41 ++++++++++++++++++++---
packages/engine/src/reviewer.ts | 3 ++
packages/engine/src/triage.ts | 24 +++++++++++++
8 files changed, 131 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-5928
Fusion-Task-Lineage: 717ddcbe-f3a6-4589-ad90-4e640f7a9ff2
2026-06-02 21:57:21 -07:00
gsxdsm
504308422d
docs: update CE transport docs for SSE push + projectId session identity
2026-06-02 21:29:59 -07:00
gsxdsm
234a2a7ec5
docs: mark compound-engineering plugin plan completed
2026-06-02 20:57:06 -07:00
gsxdsm
f6c8aeeb04
feat(compound-engineering): settings schema, getters, docs (U9)
...
Add settingsSchema (default session provider/model, enabled stages, sync
reconcile-on-hooks toggle, reconcile cadence hint) aligned across manifest.json
and the runtime manifest, with typed getters. Wire the consumed getters:
orchestrator passes defaultProvider/defaultModelId into sessions and rejects
disabled stages; hooks gate their reconcile drain on reconcileOnHooks. Add the
plugin README and docs/plugins/compound-engineering.md documenting the hub,
interactive sessions, work bridge, and the sync ownership model.
reconcileIntervalMinutes is exposed as an operator cadence hint but not yet
consumed (no host scheduler; reconcile is on-demand by design).
2026-06-02 19:58:35 -07:00
gsxdsm
0041962309
FN-5915: show unread badge on header mailbox
...
Add unread mailbox status to the desktop header toggle while keeping pending approvals prioritized.
- show an unread status dot on the desktop header mailbox toggle when unread mail exists without pending approvals
- keep pending-approval indicators taking precedence and hide mailbox indicators while the mailbox view is active
- extend Header coverage for unread-only, pending-only, combined, zero-count, and active-mailbox states
- update restart integration coverage to reuse an existing worktree during orphaned resume concurrency
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/Header.tsx | 9 +++++--
.../app/components/__tests__/Header.test.tsx | 26 ++++++++++++++++---
.../src/__tests__/restart.integration.test.ts | 29 ++++++++++++++++++++--
4 files changed, 58 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-5915
Fusion-Task-Lineage: 3a207e2c-ca58-402f-94cf-3a9e514fe263
2026-06-02 19:19:33 -07:00
gsxdsm
cf23c6f571
FN-5909: run configured merge bootstrap before verification
...
Ensure AI merge verification reuses the configured worktree bootstrap command.
- run merge dependency sync unconditionally when a non-blank worktreeInitCommand is configured
- reuse the configured init command instead of inferred package-manager install commands during merge verification
- add merger verification coverage for warm/cold worktrees, inferred-install fallback, and whitespace-only init commands
- document the expanded worktreeInitCommand behavior and add a published changeset
Files changed:
.changeset/fn-5909-merge-install-script.md | 5 +
docs/settings-reference.md | 2 +-
packages/engine/src/__tests__/merger-verification.test.ts | 159 +++++++++++++++------
packages/engine/src/merger.ts | 30 +++-
4 files changed, 143 insertions(+), 53 deletions(-)
Fusion-Task-Id: FN-5909
Fusion-Task-Lineage: 8530c641-9574-45e2-b9ac-82e42c9c00a7
2026-06-02 18:43:29 -07:00
gsxdsm
5c4c765134
FN-5904: feat(FN-5904): add browse-and-install flow for skills.sh catalog in Skills view
...
Add end-to-end browse-and-install flow for skills.sh catalog entries in the dashboard Skills view, enabling users to install skills directly from the catalog UI.
- Add POST /api/skills/install route with source validation and scoped project cwd
- Add installSkill method to SkillsAdapter using supervised npx skills add spawn
- Add installSkill client API function and Install button on catalog cards
- Refresh discovered skills list automatically after successful install
- Handle install errors with structured error codes (invalid_source, install_failed, install_timeout, spawn_error)
- Add card header layout with install button, disabled state, and loading spinner
- Add comprehensive tests: adapter unit tests, route integration tests, component tests
- Add changeset for @runfusion/fusion minor bump
- Update dashboard-guide.md with install endpoint documentation
Files changed:
.changeset/four-oranges-film.md | 5 +
docs/dashboard-guide.md | 45 +++++++
packages/dashboard/app/__tests__/api-skills.test.ts | 46 +++++++
packages/dashboard/app/api/legacy.ts | 12 ++
packages/dashboard/app/components/SkillsView.css | 16 +++
packages/dashboard/app/components/SkillsView.tsx | 83 +++++++++---
packages/dashboard/app/components/__tests__/SkillsView.test.tsx | 72 +++++++++++
packages/dashboard/src/__tests__/routes-skills.test.ts | 67 ++++++++++
packages/dashboard/src/__tests__/skills-adapter.test.ts | 113 ++++++++++++++++
packages/dashboard/src/routes/__tests__/register-agent-skills-routes.test.ts | 144 +++++++++++++++++++++
packages/dashboard/src/routes/register-agent-skills-routes.ts | 51 ++++++++
packages/dashboard/src/skills-adapter.ts | 103 +++++++++++++++
12 files changed, 736 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-5904
Fusion-Task-Lineage: 338d53e3-baba-4c6c-9173-8e214242403c
2026-06-02 18:29:53 -07:00
gsxdsm
577ce12a18
FN-5898: add unlinked mission goal indicator
...
Document the manual no-backfill mission-goal policy and flag active missions that still need explicit goal links.
- document the mission→goal linkage model, explicit no-backfill decision, and manual linkage workflow in missions docs
- include linkedGoalCount in mission summaries and cover single-summary/batched-summary behavior in MissionStore tests
- show an Unlinked badge for active non-interview missions with zero linked goals and add MissionManager coverage
Files changed:
.changeset/fn-5898-mission-goal-unlinked-indicator.md | 5 ++
docs/missions.md | 18 ++++--
packages/core/src/__tests__/mission-store.test.ts | 32 +++++++++-
packages/core/src/mission-store.ts | 25 +++++++-
packages/dashboard/app/components/MissionManager.css | 6 ++
packages/dashboard/app/components/MissionManager.tsx | 14 ++++
packages/dashboard/app/components/__tests__/MissionManager.test.tsx | 74 ++++++++++++++++++++++
packages/dashboard/app/components/mission-types.ts | 1 +
8 files changed, 166 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-5898
Fusion-Task-Lineage: e31e9544-4e03-4b52-afbb-e372314b997e
2026-06-02 18:15:14 -07:00
gsxdsm
cc18206bc5
FN-5902: make mission validation AI-run all criteria
...
Route every mission feature through validator-backed completion checks.
- lazily restore a managed feature assertion before validation instead of auto-passing zero-assertion features
- thread milestone acceptance criteria into validator prompts and system instructions as enforced requirements
- update MissionManager copy/tests to present criteria as AI-validated runtime gates and remove informational-only/zero-assertion warnings
- document the all-criteria AI-run contract and add a changeset for @runfusion/fusion
Files changed:
.changeset/fn-5902-mission-validation-ai-run.md | 5 +
AGENTS.md | 2 +-
docs/architecture.md | 2 +-
docs/missions-completion-contract.md | 198 ++++++---------------
docs/missions.md | 5 +-
packages/core/src/__tests__/mission-store.test.ts | 23 ++-
packages/core/src/mission-store.ts | 10 ++
packages/dashboard/app/components/MissionManager.css | 31 ----
packages/dashboard/app/components/MissionManager.tsx | 86 +++------
packages/dashboard/app/components/__tests__/MissionManager.test.tsx | 60 +++++--
packages/engine/src/__tests__/mission-execution-loop.test.ts | 111 +++++++++---
packages/engine/src/__tests__/reliability-interactions/mission-validation-trigger-gap.test.ts | 57 +++---
packages/engine/src/mission-execution-loop.ts | 78 ++++----
13 files changed, 318 insertions(+), 350 deletions(-)
Fusion-Task-Id: FN-5902
Fusion-Task-Lineage: 5f25caad-33c9-42ff-822b-1ea092afc29f
2026-06-02 18:11:26 -07:00
gsxdsm
abbeaec0a8
FN-5897: surface linked goals in mission read paths
...
Expose mission-linked goals across mission detail surfaces.
- load linked goal records into mission hierarchy reads in core and return them from the mission detail API
- show linked goals in mission detail views, add goal-chip navigation, and anchor highlighted goal cards in GoalsView
- extend CLI mission output, docs, tests, and add a published changeset for the new read-path support
Files changed:
.changeset/fn-5897-linked-goals-read-paths.md | 5 +++
docs/missions.md | 6 ++-
packages/cli/src/__tests__/extension.test.ts | 48 +++++++++++++++++++++-
packages/cli/src/extension.ts | 10 +++++
packages/core/src/__tests__/mission-store.test.ts | 14 +++++++
packages/core/src/mission-store.ts | 29 +++++++++++++
packages/core/src/mission-types.ts | 4 ++
packages/dashboard/app/App.tsx | 16 +++++++-
packages/dashboard/app/components/GoalsView.css | 6 +++
packages/dashboard/app/components/GoalsView.tsx | 42 +++++++++++++++++--
packages/dashboard/app/components/MissionManager.css | 44 ++++++++++++++++++++
packages/dashboard/app/components/MissionManager.tsx | 31 +++++++++++++-
packages/dashboard/app/components/__tests__/GoalsView.test.tsx | 31 ++++++++++++++
packages/dashboard/app/components/__tests__/MissionManager.test.tsx | 45 ++++++++++++++++++++
packages/dashboard/app/components/mission-types.ts | 2 +
packages/dashboard/src/__tests__/mission-e2e.test.ts | 4 ++
packages/dashboard/src/mission-routes.ts | 5 ++-
17 files changed, 332 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-5897
Fusion-Task-Lineage: 5176270d-9885-447a-845b-4e0d69d531a0
2026-06-02 17:58:41 -07:00
gsxdsm
6c7ed1e1fc
docs: add compound-engineering plugin implementation plan
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 17:41:26 -07:00
gsxdsm
d9941c3886
docs: add compound-engineering plugin requirements (brainstorm + review)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 17:24:17 -07:00
gsxdsm
a75e3c18da
docs: add open ideation pass for Fusion
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 16:19:23 -07:00
gsxdsm
3b9ff42073
FN-5901: reap stale mission validator runs
...
Add self-healing recovery for stale mission validator runs left behind after execution ownership disappears.
- add mission-store support to find and reap stale running validator runs, preserving terminal error status and resetting eligible features to needs_fix
- teach the mission execution loop and self-healing maintenance sweep to skip live validations, reap abandoned runs, record audit events, and avoid double-completing runs
- extend regression coverage, mission docs, architecture notes, and add a published-package changeset for the new recovery behavior
Files changed:
.changeset/fn-5901-validator-run-reaper.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 2 +
docs/missions.md | 26 ++-
packages/core/src/__tests__/mission-store.test.ts | 99 +++++++++
packages/core/src/mission-store.ts | 91 ++++++++
packages/engine/src/__tests__/mission-execution-loop.test.ts | 232 +++++++++++++++++++++
packages/engine/src/__tests__/reliability-interactions/mission-validator-run-reaper.test.ts | 181 ++++++++++++++++
packages/engine/src/mission-execution-loop.ts | 102 +++++++--
packages/engine/src/runtimes/in-process-runtime.ts | 8 +-
packages/engine/src/self-healing.ts | 22 ++
11 files changed, 746 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-5901
Fusion-Task-Lineage: 87eb2f3f-fc31-4e0a-b0fc-b771f6dc48a3
2026-06-02 15:33:31 -07:00
gsxdsm
93e8bd9940
FN-5899: add mission-goal linking commands and tools
...
Add mission↔goal linkage support across the API, CLI, and pi-extension surfaces.
- add mission goal list/link/unlink REST endpoints and dashboard route coverage
- add `fn mission goals`, `fn mission link-goal`, and `fn mission unlink-goal` CLI commands with tests
- add `fn_mission_list_goals`, `fn_mission_link_goal`, and `fn_mission_unlink_goal` extension tools plus skill/docs updates
- add a changeset for the published CLI package release
Files changed:
.changeset/FN-5899-mission-goal-tooling.md | 5 +
docs/cli-reference.md | 11 +-
docs/missions.md | 27 ++++
packages/cli/skill/fusion/SKILL.md | 2 +-
packages/cli/skill/fusion/references/extension-tools.md | 26 ++++
packages/cli/skill/fusion/references/fusion-capabilities.md | 3 +
packages/cli/src/__tests__/bin.test.ts | 21 +++
packages/cli/src/__tests__/extension-mission-goal-tools.test.ts | 140 +++++++++++++++++
packages/cli/src/bin.ts | 32 +++-
packages/cli/src/commands/__tests__/mission.test.ts | 99 +++++++++++-
packages/cli/src/commands/mission.ts | 102 +++++++++++++-
packages/cli/src/extension.ts | 170 +++++++++++++++++++++
packages/dashboard/src/__tests__/mission-goal-links-routes.test.ts | 151 ++++++++++++++++++
packages/dashboard/src/mission-routes.ts | 153 ++++++++++++++++++-
14 files changed, 930 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-5899
Fusion-Task-Lineage: c63b0f4b-c77e-4229-ade4-537a4dda0f5f
2026-06-02 14:47:51 -07:00
gsxdsm
30a09e3422
FN-5896: persist mission-goal linkage in schema
...
Persist mission↔goal relationships through the core mission schema and store APIs.
- add the mission_goals join table, schema migration coverage, and schema version bump to 101
- add MissionStore goal link/unlink/list helpers plus a MissionGoalLink type and emitted linkage events
- add regression tests for persistence, idempotency, ordering, and cascade behavior, and document the new linkage model with a published changeset
Files changed:
.changeset/fn-5896-mission-goal-linkage.md | 5 +
docs/missions.md | 19 +++
docs/storage.md | 1 +
packages/core/src/__tests__/db-migrate.test.ts | 49 ++++++-
packages/core/src/__tests__/db.test.ts | 34 ++---
packages/core/src/__tests__/goals-schema.test.ts | 4 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../src/__tests__/merge-request-record.test.ts | 2 +-
.../core/src/__tests__/mission-goals-link.test.ts | 142 +++++++++++++++++++++
packages/core/src/__tests__/mission-store.test.ts | 4 +-
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 | 31 ++++-
packages/core/src/mission-store.ts | 111 ++++++++++++++++
packages/core/src/mission-types.ts | 6 +
.../src/store/__tests__/roadmap-store.test.ts | 2 +-
18 files changed, 391 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-5896
Fusion-Task-Lineage: a4c7c495-b20a-454b-9605-782671cdd8c8
2026-06-02 14:41:41 -07:00
gsxdsm
8d9bbc1906
FN-5895: fix MissionManager interview resume behavior
...
Keep MissionManager mission interview state and detail rendering in sync while stabilizing the failing test coverage.
- reload assertion-linked feature data when mission details or milestone panels load
- keep selected mission detail state synchronized after mission update events instead of forcing a full mission reload
- hide the sidebar edit form while the selected mission is already being edited in the detail pane
- add a non-destructive Send to background action for resume-launched mission interview modals
- tighten MissionManager tests to target the detail pane and slice-scoped controls that now render alongside sidebar content
Files changed:
docs/missions.md | 2 +-
.../app/components/MissionInterviewModal.tsx | 30 ++++++++
.../dashboard/app/components/MissionManager.tsx | 77 +++++++++++--------
.../components/__tests__/MissionManager.test.tsx | 88 +++++++++++++++-------
4 files changed, 137 insertions(+), 60 deletions(-)
Fusion-Task-Id: FN-5895
Fusion-Task-Lineage: d018a945-33a7-4471-9636-35bc36dc88a9
2026-06-02 14:30:35 -07:00
gsxdsm
65ddb4d4f5
FN-5893: require invariant-level bug regression coverage
...
Add invariant-first regression guidance to triage prompts and testing docs.
- add an AGENTS standing rule to cover bug-fix invariants across all known surfaces
- update standard, fast, and core triage prompt templates to require invariant-level regression tests
- add triage regression tests that lock the new wording into standard, fast, and core prompts
- link docs/testing guidance back to the new invariant-over-repro rule
Files changed:
AGENTS.md | 7 ++++++
docs/testing.md | 1 +
packages/core/src/agent-prompts.ts | 3 ++-
packages/engine/src/__tests__/triage.test.ts | 32 ++++++++++++++++++++++++++++
packages/engine/src/triage.ts | 6 ++++--
5 files changed, 46 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-5893
Fusion-Task-Lineage: 31c082c6-2a0a-4619-a13b-94dad97eef62
2026-06-02 14:02:36 -07:00
gsxdsm
bd3190ba19
FN-5769: clarify workflow IR v1 agent-call semantics
...
Document that workflow IR v1 keeps agent-call and typed-edge semantics as conventions rather than a 1.1 schema bump.
- replace the deferred-v1.1 note with the FN-5769 evaluation outcome
- record that prompt config and edge.condition remain the canonical v1 representation for parity rollout
Files changed:
docs/workflow-steps.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Fusion-Task-Id: FN-5769
Fusion-Task-Lineage: 341ce4fe-d87d-4c25-a1fc-652ccfbc2e94
2026-06-02 13:37:33 -07:00
gsxdsm
dab1569ac3
FN-5892: dedupe planning sessions and persist history deletion
...
Prevent duplicate planning-history rows and keep deletions visible only after the backend confirms persistence.
- dedupe Planning Mode history by session id across initial loads, live updates, archive toggles, and draft creation
- make deleteAiSession surface backend/content-type errors instead of silently succeeding on failed deletes
- keep failed history deletions visible, refresh the list, and show an error toast when persistence fails
- add dashboard tests covering session deduplication, delete API failures, and persistence-aware Planning Mode deletion behavior
- document the history dedupe/delete semantics and add a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5892-planning-history-fix.md | 5 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/api/__tests__/deleteAiSession.test.ts | 54 +++++
packages/dashboard/app/api/legacy.ts | 41 +++-
packages/dashboard/app/components/PlanningModeModal.tsx | 70 ++++---
packages/dashboard/app/components/__tests__/PlanningModeModal.autosize.test.tsx | 11 +
packages/dashboard/app/components/__tests__/PlanningModeModal.dedupeSessionsById.test.ts | 44 ++++
packages/dashboard/app/components/__tests__/PlanningModeModal.initial.test.tsx | 11 +
packages/dashboard/app/components/__tests__/PlanningModeModal.planning-flow.test.tsx | 226 ++++++++++++++++++++-
packages/dashboard/app/components/__tests__/PlanningModeModal.test-helpers.ts | 1 +
10 files changed, 439 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-5892
Fusion-Task-Lineage: 7453bc34-6d57-4d67-ac92-8fb50084fbee
2026-06-02 12:42:04 -07:00
gsxdsm
a6989ed7f4
FN-5891: respect validator model settings in mission validation
...
Use the configured validator lane when creating mission validation sessions.
- resolve mission validation session models from test mode, assigned agent runtime, and validator/default task settings in precedence order
- surface validation session creation failures as mission validation errors instead of triggering fix-feature retries
- add regression coverage and documentation for mission validation model resolution and error handling
Files changed:
AGENTS.md | 1 +
docs/missions.md | 4 +-
docs/settings-reference.md | 6 +-
.../src/__tests__/mission-execution-loop.test.ts | 252 ++++++++++++++++++++-
packages/engine/src/mission-execution-loop.ts | 63 +++++-
5 files changed, 316 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-5891
Fusion-Task-Lineage: 6254daee-fb6b-4ebb-9fb4-3636237404b1
2026-06-02 12:38:09 -07:00
gsxdsm
8156382d76
FN-5889: suppress post-done continuation wedges
...
Keep completed post-done continuation errors from wedging review tasks in a failed state.
- route step-session non-continuable continuation errors through the executor recovery path before marking tasks failed
- add self-healing recovery and run-audit events for in-review tasks already wedged by post-done non-continuable errors
- extend reliability coverage and architecture/backstop docs for the new post-done wedge handling
Files changed:
AGENTS.md | 1 +
docs/architecture.md | 3 +-
packages/engine/src/__tests__/reliability-interactions/post-done-continuation-no-wedge.test.ts | 131 ++++++++++++++++++++-
packages/engine/src/executor.ts | 11 +-
packages/engine/src/run-audit.ts | 2 +
packages/engine/src/self-healing.ts | 97 ++++++++++++++-
6 files changed, 236 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-5889
Fusion-Task-Lineage: c22716f2-cddb-4c98-ac87-0282017e7c82
2026-06-02 11:03:18 -07:00
gsxdsm
a66b128089
FN-5883: restore planning-mode single-task history
...
Keep completed planning sessions restorable after single-task creation.
- preserve completed planning-session rows after create-task by releasing only in-memory runtime state
- keep completed sessions in the Planning Mode history UI and add coverage for history restoration flows
- document the restored Planning Mode history behavior and add a patch changeset for @runfusion/fusion
Files changed:
.changeset/fn-5883-planning-restore.md | 5 +
docs/dashboard-guide.md | 2 +
.../dashboard/app/components/PlanningModeModal.tsx | 17 +--
.../PlanningModeModal.planning-flow.test.tsx | 118 ++++++++++++++++++++-
.../src/__tests__/routes-planning.test.ts | 86 +++++++++++----
packages/dashboard/src/planning.ts | 7 +-
.../src/routes/register-planning-subtask-routes.ts | 14 +--
7 files changed, 207 insertions(+), 42 deletions(-)
Fusion-Task-Id: FN-5883
Fusion-Task-Lineage: 47824bac-3083-45a4-a0d5-b8c7540966c1
2026-06-02 10:07:08 -07:00
gsxdsm
cc5e61dbc4
FN-5882: fix mission interview draft resume handling
...
Keep mission interview drafts recoverable when closing and refreshing Missions.
- make MissionInterviewModal use a single non-destructive close path for header, Escape, and backdrop actions
- refresh mission interview draft/session rows on mission and ai-session SSE updates and reconnects
- open Plan New Mission as a fresh interview instead of always resuming the last session, with regression coverage and docs updates
Files changed:
docs/missions.md | 2 +-
.../app/components/MissionInterviewModal.tsx | 89 +++-----
.../dashboard/app/components/MissionManager.tsx | 156 ++++++++++----
.../__tests__/MissionInterviewModal.test.tsx | 100 ++++++++-
.../components/__tests__/MissionManager.test.tsx | 224 +++++++++++++++++++++
5 files changed, 455 insertions(+), 116 deletions(-)
Fusion-Task-Id: FN-5882
Fusion-Task-Lineage: 75de9e94-edef-4564-a266-91782e60c2ac
2026-06-02 10:04:38 -07:00
gsxdsm
9e00a72d7d
FN-5884: preserve quick chat session across reopens
...
Keep quick chat warm and restore the last opened conversation per project.
- persist the active quick chat session id in per-project local storage and restore it before falling back to latest activity
- retain in-memory quick chat state across close/reopen while resetting chat state correctly when the project changes
- add storage, hook, and FAB coverage for restored sessions, warm reopen behavior, and project switching; document the updated quick chat behavior
Files changed:
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/QuickChatFAB.tsx | 29 ++++--
.../app/components/__tests__/QuickChatFAB.test.tsx | 112 +++++++++++++++++++--
.../__tests__/quickChatLastSessionStorage.test.ts | 55 ++++++++++
.../app/hooks/__tests__/useQuickChat.test.ts | 70 +++++++++++++
.../app/hooks/quickChatLastSessionStorage.ts | 41 ++++++++
packages/dashboard/app/hooks/useQuickChat.ts | 25 +++++
7 files changed, 319 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-5884
Fusion-Task-Lineage: 4d689611-1824-41db-8fc2-d543407316ff
2026-06-02 09:34:19 -07:00
gsxdsm
fa68edf9fa
FN-5885: fix terminal copy/paste shortcuts
...
Restore expected terminal clipboard shortcuts.
- intercept Ctrl/Cmd+C in the dashboard terminal to copy the current selection while preserving plain SIGINT when nothing is selected
- intercept Ctrl/Cmd+V to read clipboard text and send it into the active PTY session
- add terminal shortcut regression coverage and document the new integrated terminal behavior
- add a patch changeset for @runfusion/fusion
Files changed:
.changeset/friendly-ravens-hammer.md | 5 +
docs/dashboard-guide.md | 2 +
packages/dashboard/app/components/TerminalModal.tsx | 48 +++++++++
packages/dashboard/app/components/__tests__/TerminalModal.test.tsx | 113 +++++++++++++++++++++
4 files changed, 168 insertions(+)
Fusion-Task-Id: FN-5885
Fusion-Task-Lineage: f8b3658c-2b52-4094-8cef-79c762f4d78d
2026-06-02 09:20:31 -07:00
gsxdsm
48e08c07eb
FN-5880: recover plan-ready mission interview drafts
...
Keep completed mission interview summaries resumable until they are approved or discarded.
- include mission interview sessions in dashboard, CLI, and extension draft listings
- relabel complete drafts as plan-ready review items and reopen them at the summary approval step
- add regression coverage and docs/changeset updates for resumable complete drafts
Files changed:
.../fn-5880-mission-interview-complete-draft.md | 5 ++
docs/missions.md | 8 +--
packages/cli/src/__tests__/extension.test.ts | 13 +++-
.../cli/src/commands/__tests__/mission.test.ts | 11 ++-
packages/cli/src/commands/mission.ts | 17 ++++-
packages/cli/src/extension.ts | 7 +-
.../dashboard/app/components/MissionManager.tsx | 24 ++++---
.../components/__tests__/MissionManager.test.tsx | 70 ++++++++++++++++++
packages/dashboard/app/components/mission-types.ts | 2 +-
.../mission-interview-drafts-routes.test.ts | 18 ++++ -
.../src/__tests__/mission-interview.test.ts | 82 ++++++++++++++++++++++
packages/dashboard/src/mission-interview.ts | 36 +++++-----
12 files changed, 252 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-5880
Fusion-Task-Lineage: 18a9c25c-3f59-4179-9e9c-63f0747acb7f
2026-06-02 09:02:48 -07:00
gsxdsm
f20c37471d
FN-5881: guard project status badges against unknown states
...
Prevent Projects view status rendering from crashing on unknown or missing project states.
- add fallback status config helpers to ProjectCard, ProjectHealthBadge, and ProjectSelector
- format unknown status strings into readable labels and default missing values to Unknown
- add regression tests for unknown and missing statuses across project dashboard components
- document graceful degradation for transient registry or health status mismatches
Files changed:
docs/multi-project.md | 1 +
packages/dashboard/app/components/ProjectCard.tsx | 36 ++++++++++++++++-
.../app/components/ProjectHealthBadge.tsx | 36 ++++++++++++++++-
.../dashboard/app/components/ProjectSelector.tsx | 15 ++++++-
.../app/components/__tests__/ProjectCard.test.tsx | 31 +++++++++++++-
.../__tests__/ProjectHealthBadge.test.tsx | 47 ++++++++++++++++++++++
.../components/__tests__/ProjectSelector.test.tsx | 24 ++++++++++-
7 files changed, 182 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-5881
Fusion-Task-Lineage: 55a9df6f-3fcb-46e8-9e83-3494312b4c24
2026-06-02 08:49:25 -07:00
gsxdsm
419d6cda86
FN-5877: add sync-with-origin remotes action
...
Add a one-click Remotes sync flow that rebases on pull before pushing.
- add a Sync button in Git Manager Remotes that runs pull --rebase and then push
- stop before pushing when the rebase pull reports a conflict or fails, and surface toasts/status updates
- cover successful, conflicting, failing, and loading sync behavior in GitManagerModal tests
- document the new Sync action in the dashboard guide
Files changed:
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/GitManagerModal.tsx | 39 ++++++++
.../components/__tests__/GitManagerModal.test.tsx | 100 +++++++++++++++++++++
3 files changed, 140 insertions(+)
Fusion-Task-Id: FN-5877
Fusion-Task-Lineage: 2e28c00d-b965-4f44-a6fa-26536d91d16d
2026-06-02 08:25:46 -07:00
gsxdsm
336010007c
FN-5870: speed up routes-agents workflow tests
...
Reduce routes-agents workflow route test overhead while preserving coverage.
- collapse repetitive workflow-step create and update route permutations into helper-driven it.each tables
- reuse shared Express app fixtures across workflow-step, refine, diagnostics, and template describe blocks to avoid repeated setup cost
- update the FN-5048 speed audit with the new routes-agents timing improvement and landed optimization notes
Files changed:
docs/test-speed-audit-FN-5048.md | 4 +-
.../dashboard/src/__tests__/routes-agents.test.ts | 1076 +++++++++++---------
2 files changed, 591 insertions(+), 489 deletions(-)
Fusion-Task-Id: FN-5870
Fusion-Task-Lineage: 64d25216-72d1-4fd7-a949-f5f1bc4bd90c
2026-06-02 07:44:21 -07:00
gsxdsm
41c891d7d8
FN-5850: add AI goal description drafting
...
Add AI-assisted goal description drafting from the Goals view add form.
- add a readonly AI drafting flow for goal descriptions with title validation and shared rate limiting
- expose a new /api/ai/draft-goal-description endpoint and dashboard API helper for requesting drafts
- add Goals view UI, styling, tests, and dashboard docs covering the draft workflow
Files changed:
docs/dashboard-guide.md | 6 +
packages/dashboard/app/api/legacy.ts | 24 +++-
packages/dashboard/app/components/GoalsView.css | 14 ++
packages/dashboard/app/components/GoalsView.tsx | 46 +++++-
packages/dashboard/app/components/__tests__/GoalsView.test.tsx | 50 +++++++
packages/dashboard/src/__tests__/ai-refine.test.ts | 75 ++++++++++
packages/dashboard/src/__tests__/routes-agents.test.ts | 92 ++++++++++++
packages/dashboard/src/ai-refine.ts | 155 ++++++++++++++++++---
packages/dashboard/src/routes.ts | 58 ++++++++
9 files changed, 489 insertions(+), 31 deletions(-)
Fusion-Task-Id: FN-5850
Fusion-Task-Lineage: $#%
!
2026-06-01 22:50:41 -07:00