gsxdsm
cb4ab3b6da
FN-9028: guard automatic mission rollup status writers
...
Protect automatic mission and milestone status rollups with a durable writer-coverage ratchet.
- Add source-level coverage for every computed mission and milestone status writer.
- Verify core persistence and engine reconciliation preserve blocked and archived intent.
- Document shared rollup-ownership guard requirements.
Files changed:
docs/missions.md | 2 +-
.../mission-rollup-status-writer-ratchet.test.ts | 170 +++++++++++++++++++++
.../mission-status-recompute-guard.test.ts | 11 ++
.../__tests__/postgres/mission-store.pg.test.ts | 43 ++++--
packages/core/src/missions/mission-types.ts | 4 +-
.../mission-autopilot-rollup-guard.test.ts | 115 ++++++++++++++
6 files changed, 331 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-9028
Fusion-Task-Lineage: 89b72b57-fc73-4268-a639-5edac05ff8f8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 16:01:57 -07:00
gsxdsm
f6518b4275
FN-9029: keep release-gate verdicts transient
...
Keep release-gate verdicts restricted to fresh task-list responses.
- Strip release-gate data from SSE and non-board task paths.
- Reject stale initial verdicts before rendering promote controls.
- Cover server persistence, SSE payload, and client freshness boundaries.
Files changed:
.../dashboard/app/hooks/__tests__/useTasks.test.ts | 115 +++++++++++++++++++++
packages/dashboard/app/hooks/useTasks.ts | 80 +++++++++-----
.../app/utils/__tests__/releaseGate.test.ts | 9 ++
.../routes-tasks-release-gate-transient.test.ts | 103 ++++++++++++++++++
.../src/__tests__/sse-task-deleted-payload.test.ts | 10 +-
packages/dashboard/src/sse.ts | 26 +++--
6 files changed, 305 insertions(+), 38 deletions(-)
Fusion-Task-Id: FN-9029
Fusion-Task-Lineage: cf764f3e-c6f5-4fa1-b608-ebb8d547cfdd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 15:43:16 -07:00
gsxdsm
f88031172e
FN-9036: restore i18n parity coverage for native auto-merge
...
Ensure configured translation catalogs retain GitHub native auto-merge settings keys.
- Derive supported locales from the i18next configuration
- Assert native auto-merge labels and help text in every secondary locale
- Remove the core locale-list dependency from the parity test
Files changed:
packages/i18n/src/__tests__/parity.test.ts | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-9036
Fusion-Task-Lineage: aba3a8d8-8f4e-43b9-9fe9-6c2a80cde666
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 15:33:26 -07:00
gsxdsm
74a0bdb25c
FN-9032: harden knowledge-graph artifact validation
...
Reject malformed or contradictory graph cache artifacts and rebuild them as a complete set.
- Require exact persisted record shapes and valid import references before cache reuse
- Detect invalid import ownership and duplicate extractor identities during consistency checks
- Cover cache recovery cases and document the all-or-nothing artifact policy
- Add a patch changeset for the published CLI package
Files changed:
.../fn-9032-knowledge-graph-artifact-validation.md | 7 +++++
docs/knowledge-graph.md | 2 +-
.../graph-artifact-not-gitignored.test.ts | 13 ++++++---
.../__tests__/graph-builder-incremental.test.ts | 29 +++++++++++++++++++-
.../__tests__/graph-serialization.test.ts | 31 +++++++++++++++++++++
.../__tests__/graph-store-recovery.test.ts | 14 ++++++++++
.../src/knowledge-graph/graph-serialization.ts | 32 ++++++++++++++--------
packages/core/src/knowledge-graph/graph-store.ts | 18 ++++++++++++
8 files changed, 129 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-9032
Fusion-Task-Lineage: d53934f6-2735-42ab-a41e-4421890277be
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 15:30:53 -07:00
gsxdsm
958b08e237
FN-9027: sort insights newest first
...
Present Insights in newest-first order without changing store ordering.
- Sort each visible category by creation time descending with deterministic ID tie-breaking
- Keep malformed timestamps last and preserve their source order
- Cover network, cached, archive, and rendered ordering behavior
- Add a patch changeset for the published CLI package
Files changed:
.changeset/insights-newest-first.md | 7 ++
.../app/components/__tests__/InsightsView.test.tsx | 41 ++++++++
.../app/hooks/__tests__/useInsights.test.ts | 106 ++++++++++++++++++++-
packages/dashboard/app/hooks/useInsights.ts | 26 ++++-
4 files changed, 178 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-9027
Fusion-Task-Lineage: b9fecbeb-b8b8-49b1-b7db-c4dfda81fcbe
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 15:12:08 -07:00
gsxdsm
8b00bab0b0
chore(release): v0.76.0
...
Version bump via changesets.
2026-08-13 01:41:54 -07:00
gsxdsm
a1ea7fe562
chore(release): v0.76.0-beta.3
...
Version bump via changesets.
2026-08-13 01:34:18 -07:00
gsxdsm
6243c2c3f2
FN-9026: move terminal display toggles to header
...
Move desktop terminal pin and pop-out controls beside the close button.
- Render shared non-mobile display-mode controls in the terminal header
- Keep footer actions focused on terminal session controls
- Update styling, documentation, regression tests, and release metadata
Files changed:
.changeset/terminal-toolbar-display-toggles.md | 7 ++
docs/dashboard-guide.md | 12 +--
.../dashboard/app/components/TerminalModal.css | 4 +-
.../dashboard/app/components/TerminalModal.tsx | 67 ++++++++-------
.../components/__tests__/TerminalModal.test.tsx | 99 ++++++++++++++++++----
5 files changed, 134 insertions(+), 55 deletions(-)
Fusion-Task-Id: FN-9026
Fusion-Task-Lineage: 5b61d4c9-a3d4-41e1-9d89-4c8189f5b8fb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 01:28:14 -07:00
gsxdsm
401b057965
FN-9025: align Quick Add tablet actions edge-to-edge
...
Make Quick Add action controls use the mobile edge-to-edge layout at tablet widths.
- Add a tablet-specific responsive action-row layout.
- Preserve centered desktop controls and existing mobile behavior.
- Cover tablet spacing declarations and add a patch changeset.
Files changed:
.changeset/fn-9025-quick-add-tablet-spacing.md | 7 ++++
.../quick-entry-action-row-centering.css.test.ts | 35 +++++++++++++++---
.../dashboard/app/components/QuickEntryBox.css | 41 ++++++++++++++++++++--
3 files changed, 75 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-9025
Fusion-Task-Lineage: 8850dd57-c99e-4f18-98d5-576c0bc7e665
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-13 00:50:50 -07:00
gsxdsm
0e98d9b213
FN-9024: center Quick Add action row on tablet
...
Center Quick Add actions as a single desktop and tablet cluster while preserving the mobile layout.
- Center the base action row and remove greedy split alignment.
- Retain the <=768px edge-to-edge mobile layout.
- Add a regression test and a patch changeset.
Files changed:
.changeset/fn-9024-quick-add-center-action-row.md | 7 ++
.../quick-entry-action-row-centering.css.test.ts | 138 +++++++++++++++++++++
.../dashboard/app/components/QuickEntryBox.css | 28 +++--
3 files changed, 166 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-9024
Fusion-Task-Lineage: e6c6d9b5-e9cf-4d37-9d62-fedd1986d7cc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 22:40:12 -07:00
gsxdsm
c791c0b199
FN-9023: restore non-English catalog key parity
...
Restore localized settings and task recommendation copy across secondary catalogs.
- Add missing GitHub auto-merge and terminal-wedge notification translations.
- Complete Portuguese recommendation and merge-setting translations.
- Remove the stale Portuguese ephemeral-worker setting key.
Files changed:
.changeset/fn-9023-i18n-parity.md | 7 +++++++
packages/i18n/locales/es/app.json | 8 ++++++--
packages/i18n/locales/fr/app.json | 8 ++++++--
packages/i18n/locales/ko/app.json | 8 ++++++--
packages/i18n/locales/pt-BR/app.json | 30 ++++++++++++++++++++++++------
packages/i18n/locales/zh-CN/app.json | 8 ++++++--
packages/i18n/locales/zh-TW/app.json | 8 ++++++--
7 files changed, 61 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-9023
Fusion-Task-Lineage: a348310e-02d3-4aed-a0c3-2882cd54f5b1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 22:25:49 -07:00
gsxdsm
f7bf3f91d1
FN-9022: add task recommendations to Insights
...
Expose actionable task recommendations in the Insights view.
- Add recommendation list API, client hook, and Insights rendering states.
- Localize recommendation content and document the Insights workflow.
- Cover recommendation retrieval, routes, hooks, API, and view behavior.
Files changed:
.changeset/fn-9022-insights-recommendations.md | 7 ++
docs/architecture.md | 1 +
docs/dashboard-guide.md | 3 +-
.../__tests__/task-recommendations-list.test.ts | 136 +++++++++++++++++++++
packages/core/src/index.ts | 2 +-
packages/core/src/store.ts | 5 +-
packages/core/src/task-store/reads.ts | 48 +++++++-
packages/core/src/types.ts | 4 +
packages/core/src/types/task/task-core.ts | 19 +++
packages/dashboard/app/__tests__/api-tasks.test.ts | 24 ++++
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/api/tasks/tasks.ts | 22 ++++
packages/dashboard/app/components/InsightsView.css | 27 ++++
packages/dashboard/app/components/InsightsView.tsx | 47 +++++--
.../app/components/__tests__/InsightsView.test.tsx | 117 ++++++++++++++++++
.../hooks/__tests__/useTaskRecommendations.test.ts | 130 ++++++++++++++++++++
.../dashboard/app/hooks/useTaskRecommendations.ts | 116 ++++++++++++++++++
.../__tests__/task-recommendation-routes.test.ts | 26 ++++
.../src/routes/register-task-workflow-routes.ts | 33 +++++
packages/i18n/locales/en/app.json | 11 +-
packages/i18n/locales/es/app.json | 11 +-
packages/i18n/locales/fr/app.json | 11 +-
packages/i18n/locales/ko/app.json | 11 +-
packages/i18n/locales/pt-BR/app.json | 11 +-
packages/i18n/locales/zh-CN/app.json | 11 +-
packages/i18n/locales/zh-TW/app.json | 11 +-
packages/i18n/src/resources.d.ts | 9 ++
27 files changed, 835 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-9022
Fusion-Task-Lineage: b83f1074-37af-4f87-9ec0-2bd9bb9bf64d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 22:18:18 -07:00
gsxdsm
19dffe36f6
fix(engine): make the planning->plan-review handoff atomic so planned cards stop stranding in Todo
...
Triage announced specification completion before its finally block marked the
plan work item terminal, so the Plan Review seeder saw its own still-running
predecessor as an "active continuation", bailed, and the discarded result
silently stranded the card until FN-8592 self-healing re-seeded it ~10 minutes
later (529 occurrences in 18 days).
- seedStrandedPlanReviewContinuation gains retirePredecessorId: idle check
excludes the named predecessor, then retires it and installs the successor in
ONE transaction under the task lock; a bailed seed mutates nothing.
- triage threads planningWorkItemId through PlanningHandoffReport; the runtime
reaction passes it as retirePredecessorId.
- reactToSpecificationComplete consumes the seed result: typed quiet parks
(incl. new "no-pre-release-plan-review"), bounded retries with a fresh
task/IR snapshot per attempt (mid-retry pause/needs-replan honored), loud
warning naming self-healing on exhaustion.
- Tests: PG both-orderings/no-mutation-on-bail/cross-task cases, direct engine
seeder handoff cases, reaction retry/park/pause/replan cases.
- docs/solutions: new planning-handoff-race writeup; graph-entry-contract doc
reclassifies the FN-8592 sweep as backstop-only.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-12 21:24:53 -07:00
gsxdsm
ea53cbd4ff
FN-9021: send mailbox notices for task recommendations
...
Completed tasks now optionally send captured recommendations to the operator mailbox.
- Add idempotent, non-blocking mailbox notices after accepted task completion.
- Expose a project setting and localized dashboard control for recommendation notices.
- Cover notification dispatch, settings parity, and completion-path behavior with tests.
Files changed:
.../fn-9021-recommendation-mailbox-notice.md | 7 ++
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-parity.test.ts | 2 +
.../__tests__/task-recommendation-notice.test.ts | 77 +++++++++++++
packages/core/src/config/settings-schema.ts | 2 +
packages/core/src/index.ts | 9 ++
packages/core/src/task-recommendation-notice.ts | 122 +++++++++++++++++++++
packages/core/src/types/settings/settings-scope.ts | 6 +
.../__tests__/SettingsModal.general.test.tsx | 10 ++
.../app/components/settings/section-keys.ts | 1 +
.../settings/sections/GeneralSection.tsx | 15 +++
.../settings-default-descriptions.test.tsx | 1 +
.../executor-task-recommendations.test.ts | 39 ++++++-
.../executor/completion-recommendation-notice.ts | 52 +++++++++
.../engine/src/executor/create-task-done-tool.ts | 12 ++
packages/engine/src/executor/plan-review-no-op.ts | 12 ++
packages/engine/src/runtimes/in-process-runtime.ts | 14 +++
packages/i18n/locales/en/app.json | 4 +-
packages/i18n/locales/es/app.json | 4 +-
packages/i18n/locales/fr/app.json | 4 +-
packages/i18n/locales/ko/app.json | 4 +-
packages/i18n/locales/pt-BR/app.json | 4 +-
packages/i18n/locales/zh-CN/app.json | 4 +-
packages/i18n/locales/zh-TW/app.json | 4 +-
packages/i18n/src/resources.d.ts | 40 ++++++-
26 files changed, 442 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-9021
Fusion-Task-Lineage: f6c5c93c-a3b6-470b-9efb-79e6b4003985
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 21:15:53 -07:00
gsxdsm
c7451ec6b2
chore(release): v0.76.0-beta.2
...
Version bump via changesets.
2026-08-12 17:37:09 -07:00
gsxdsm
e7d0c37c4e
test(sse): drive agent-activity durable poll via env seam instead of 2.1s real sleep
...
Replace the fixed ~2.1s real time-wait in the agent-activity SSE durable
integration test with a bounded FUSION_AGENT_ACTIVITY_POLL_MS env test-seam
(default 2000ms unchanged in production) and poll for the delivered frame.
Removes an FN-5048 real time-wait anti-pattern; production behavior unchanged.
2026-08-12 17:03:11 -07:00
gsxdsm
cc1041207c
FN-9012: hide empty task Recommendations tabs
...
Show Recommendations only for completed tasks with task-owned recommendations.
- Gate tab visibility and reconciliation on matching task-detail recommendation data.
- Cover empty, populated, stale-detail, and task-switch recommendation states.
- Document the behavior and add a patch changeset.
Files changed:
.changeset/fn-9012-recommendations-tab-visibility.md | 7 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskDetailModal.tsx | 33 ++-
packages/dashboard/app/components/TaskRecommendationsTab.tsx | 2 +-
packages/dashboard/app/components/__tests__/TaskDetailModal.summary-tab.test.tsx | 305 +++++++++++++++++----
5 files changed, 289 insertions(+), 60 deletions(-)
Fusion-Task-Id: FN-9012
Fusion-Task-Lineage: 2dd3b1c6-ab08-43e3-9c9e-c8d3d9cf4692
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 16:24:54 -07:00
gsxdsm
fc56161c9d
FN-9014: add chat and mailbox message archiving
...
Add archived-message lifecycle support across chat and mailbox views.
- Persist archive state with a PostgreSQL migration and message-store APIs.
- Expose archive, restore, and permanent-delete messaging endpoints.
- Add archived-message views and archive-by-default actions with regression coverage.
- Document storage behavior and add a release changeset.
Files changed:
.changeset/fn-9014-message-archive.md | 7 ++
docs/dashboard-guide.md | 7 +-
docs/storage.md | 2 +-
.../__tests__/postgres/message-store.pg.test.ts | 34 +++++++
.../src/__tests__/postgres/schema-applier.test.ts | 9 +-
.../core/src/async-stores/async-message-store.ts | 73 +++++++++++---
.../migrations/0058_fn_9014_message_archive.sql | 13 +++
packages/core/src/postgres/schema-applier.ts | 14 ++-
packages/core/src/postgres/schema/project.ts | 2 +
packages/core/src/stores/message-store.ts | 68 ++++++++++---
packages/core/src/types/messaging/messages.ts | 9 ++
packages/dashboard/app/api/chat/messaging.ts | 37 +++++--
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/ChatView.tsx | 21 +++-
packages/dashboard/app/components/MailboxModal.tsx | 74 ++++++++++++--
packages/dashboard/app/components/MailboxView.tsx | 108 +++++++++++++++++++--
.../__tests__/ChatView.core-contracts.test.tsx | 24 +++++
.../components/__tests__/ChatView.test-harness.tsx | 3 +
.../app/components/__tests__/MailboxModal.test.tsx | 6 +-
.../app/components/__tests__/MailboxView.test.tsx | 10 +-
.../dashboard/app/hooks/__tests__/useChat.test.ts | 35 ++++++-
packages/dashboard/app/hooks/useChat.ts | 38 +++++++-
.../__tests__/messaging-archive-routes.test.ts | 86 ++++++++++++++++
.../src/routes/register-messaging-scripts.ts | 33 ++++++-
24 files changed, 635 insertions(+), 80 deletions(-)
Fusion-Task-Id: FN-9014
Fusion-Task-Lineage: 1dbd02c3-1180-4d72-8cbc-9594e5f355dc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 16:03:30 -07:00
gsxdsm
8699ff41e2
FN-9016: add manager evaluation tools
...
Enable managers to review report evaluations and record coaching follow-ups.
- Add manager-scoped evaluation read and follow-up extension tools.
- Enforce management-subtree access through action gating and regression tests.
- Document the tool surface and add a minor release changeset.
Files changed:
.changeset/fn-9016-manager-eval-tools.md | 7 +
docs/agent-tool-surface-full-loop.md | 4 +-
docs/agents.md | 8 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 22 ++
.../skill/fusion/references/fusion-capabilities.md | 2 +
.../__tests__/extension-manager-eval-tools.test.ts | 159 +++++++++++++++
packages/cli/src/extension.ts | 227 +++++++++++++++++++++
.../engine/src/__tests__/agent-action-gate.test.ts | 1 +
.../src/__tests__/gating-classifications.test.ts | 1 +
.../src/__tests__/permanent-agent-gating.test.ts | 1 +
.../engine/src/execution/gating-classifications.ts | 8 +
12 files changed, 438 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-9016
Fusion-Task-Lineage: 1ad7c344-0f3c-4565-aabc-acb51481431d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 15:51:22 -07:00
gsxdsm
e144e8c195
FN-9009: align Quick Add merger model row
...
Make the Quick Add merger model row consistent with the other role selectors.
- Label the top-level merger selector as Merger
- Align the merger icon spacing with other model menu rows
- Cover role labels, spacing, and override navigation
Files changed:
.changeset/fn-9009-quick-add-merger-label.md | 7 ++++
.../dashboard/app/components/QuickEntryBox.tsx | 25 ++++++++++---
.../components/__tests__/QuickEntryBox.test.tsx | 41 +++++++++++++++++++---
3 files changed, 65 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-9009
Fusion-Task-Lineage: bfc915d6-7a8d-4f08-86e8-c270b5783458
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 15:19:49 -07:00
gsxdsm
b0f623b100
FN-9013: fix mission feature reconciliation
...
Preserve mission-store method receivers so active mission reconciliation completes reliably.
- Invoke optional listFeatures with its mission-store receiver.
- Contain reconciliation failures to individual slices and continue remaining work.
- Cover synchronous, asynchronous, fallback, and failing-slice behavior.
Files changed:
.changeset/fn-9013-scheduler-listfeatures-receiver.md | 7 ++
.../mission-stranded-feature-retriage.test.ts | 109 +++++++++++++++++++++
packages/engine/src/scheduler.ts | 51 ++++++----
3 files changed, 146 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-9013
Fusion-Task-Lineage: 2745383a-3780-4fa4-bf07-bc75419d3384
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 15:14:32 -07:00
gsxdsm
02f7b589e2
FN-9011: fix model dropdown provider toggles
...
Keep portaled model-provider toggles interactive when hosts use document-level outside-close handlers.
- Stop pointer and mouse events at the portaled dropdown boundary.
- Cover outside-close, multiple-instance, modal, desktop, and mobile toggle interactions.
- Add a patch changeset for the dropdown fix.
Files changed:
.changeset/fn-9011-model-dropdown-toggle.md | 7 ++
.../app/components/CustomModelDropdown.tsx | 17 ++++
.../__tests__/CustomModelDropdown.test.tsx | 95 +++++++++++++++++++++-
3 files changed, 118 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-9011
Fusion-Task-Lineage: 37559d4e-27df-4ad5-8b3e-4ec28d55e2e6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 15:08:09 -07:00
gsxdsm
6e04b31579
FN-9010: fix Quick Add model filtering
...
Keep the Quick Add model filter focused and functional within its portaled menu.
- Exempt form controls and the nested model dropdown from the composer focus guard.
- Add desktop and mobile regression coverage for filtering model choices.
- Add a patch changeset for the Quick Add filter fix.
Files changed:
.changeset/fix-quick-add-model-filter.md | 7 ++
.../dashboard/app/components/QuickEntryBox.tsx | 14 ++-
.../__tests__/QuickEntryBox-model-filter.test.tsx | 113 +++++++++++++++++++++
3 files changed, 133 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-9010
Fusion-Task-Lineage: da86e2d8-8722-4598-b25e-786b5850971c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 15:02:18 -07:00
gsxdsm
c4467b0a5b
FN-9007: upgrade Pi runtime to 0.84.1
...
Upgrade the bundled Pi runtime closure to version 0.84.1.
- Pin direct and transitive Pi runtime packages to a coherent 0.84.1 closure.
- Adapt runtime interfaces and test assertions for Pi 0.84.1 behavior.
- Guard the added Pi client, protocol, and telemetry packages in desktop packaging checks.
Files changed:
.changeset/fn-9007-pi-0-84-1.md | 7 +
packages/cli/package.json | 4 +-
packages/cli/src/__tests__/package-config.test.ts | 6 +-
packages/cli/vitest.config.ts | 2 +-
packages/core/package.json | 2 +-
packages/dashboard/package.json | 4 +-
packages/dashboard/src/routes.ts | 6 +-
packages/engine/package.json | 4 +-
packages/engine/src/__tests__/pi.test.ts | 45 ++--
.../src/__tests__/provider-registration.test.ts | 4 +-
packages/engine/src/auth/auth-storage.ts | 20 +-
packages/engine/src/pi.ts | 5 +
packages/pi-claude-cli/package.json | 8 +-
pnpm-lock.yaml | 283 ++++++++++++---------
pnpm-workspace.yaml | 14 +-
.../__tests__/check-pi-versions-pinned.test.mjs | 27 +-
scripts/check-pi-versions-pinned.mjs | 8 +
17 files changed, 279 insertions(+), 170 deletions(-)
Fusion-Task-Id: FN-9007
Fusion-Task-Lineage: 89045e86-d4c8-4fc3-bbf6-5ba38fc786e7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 14:07:30 -07:00
gsxdsm
508ebc3812
FN-9008: add Grok 4.6 model catalog support
...
Register Grok 4.6 across Fusion's shared Grok provider catalog.
- Add Grok 4.6 metadata and preserve it through provider merges
- Cover registration and extension model-list behavior
- Update Grok model references and publish a minor changeset
Files changed:
.changeset/fn-9008-grok-4-6.md | 7 +++
docs/grok-cli-contract.md | 4 +-
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/grok-provider.test.ts | 54 +++++++++++++++++------
packages/core/src/ai/grok-provider.ts | 21 +++++++++
5 files changed, 72 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-9008
Fusion-Task-Lineage: 5ee7688e-a1eb-4b57-8f72-1f69616ff456
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 13:29:34 -07:00
gsxdsm
f85f6257f6
FN-9005: add scoped workflow analytics regression coverage
...
Cover workflow-name analytics lookups across project-scoped, legacy, and built-in workflow selections.
- Scope existing custom-workflow analytics fixtures to their owning project
- Add PostgreSQL coverage preventing foreign or legacy workflow names from leaking into project analytics
- Verify built-in workflow labels remain resolved
Files changed:
packages/core/src/__tests__/postgres/command-center-remaining-analytics.pg.test.ts | 73 ++++++++++++++++++++--
1 file changed, 69 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-9005
Fusion-Task-Lineage: e2686ef0-4cbe-4993-be03-05cac6948401
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 09:26:53 -07:00
gsxdsm
b6839f4f03
FN-9004: reconcile PostgreSQL project ownership defaults
...
Reconcile PostgreSQL project ownership defaults and schema declarations.
- Add an idempotent migration restoring the GitHub check-state project default.
- Align Drizzle project ownership defaults and composite keys with PostgreSQL.
- Cover schema declarations and upgrade migration behavior.
Files changed:
.changeset/fn-9004-project-ownership-defaults.md | 7 +
docs/storage.md | 1 +
...ema-ownership-declarations-remaining.pg.test.ts | 170 +++++++++++++++++++++
.../src/__tests__/postgres/schema-applier.test.ts | 9 +-
...04_project_ownership_default_reconciliation.sql | 13 ++
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 47 ++++--
7 files changed, 248 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-9004
Fusion-Task-Lineage: 43bb14f6-01b7-42be-a47c-7da1128f465e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 09:13:04 -07:00
gsxdsm
b1dad5c9be
FN-9003: reconcile approval audit events with project schema
...
Align approval audit event declarations and reads with PostgreSQL project ownership.
- Model composite project-scoped audit event identities in the schema
- Scope public audit history reads and cover project isolation behavior
- Document the storage contract and add a patch changeset
Files changed:
.changeset/fn-9003-approval-audit-project-scope.md | 7 +
docs/storage.md | 2 +-
...oval-request-audit-project-isolation.pg.test.ts | 183 +++++++++++++++++++++
.../async-stores/async-approval-request-store.ts | 5 +-
packages/core/src/postgres/schema/project.ts | 9 +-
5 files changed, 202 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-9003
Fusion-Task-Lineage: 5a9caac3-7c2f-4584-8844-4ac711cc48bb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 08:38:35 -07:00
gsxdsm
52facd1461
FN-9000: scope runtime records to their projects
...
Scope runtime data access to the owning project while preserving explicit unbound compatibility.
- Thread optional project identifiers through project-table reads and mutations.
- Isolate chat, approvals, artifacts, secrets, audit, branch groups, plugin analytics, and verification cache records.
- Add PostgreSQL coverage and a patch changeset documenting multi-project isolation.
Files changed:
.../fn-9000-project-ownership-runtime-scope.md | 7 +
docs/storage.md | 3 +-
.../project-ownership-runtime-scope.pg.test.ts | 155 +++++++++++++++++++++
packages/core/src/agents/approval-request-store.ts | 20 ++-
.../async-stores/async-approval-request-store.ts | 30 ++--
packages/core/src/async-stores/async-chat-store.ts | 105 +++++++++++---
.../core/src/async-stores/async-secrets-store.ts | 58 +++++---
packages/core/src/chat/chat-store.ts | 22 +--
.../src/plugins/plugin-activation-analytics.ts | 12 +-
packages/core/src/secrets/secrets-store.ts | 12 +-
packages/core/src/store.ts | 6 +-
.../src/task-store/async/async-archive-lineage.ts | 16 ++-
packages/core/src/task-store/async/async-audit.ts | 18 ++-
.../src/task-store/async/async-branch-groups.ts | 50 ++++---
.../task-store/async/async-comments-attachments.ts | 35 +++--
.../core/src/task-store/branch-and-pr-entities.ts | 15 +-
packages/core/src/task-store/branch-group-ops.ts | 2 +-
packages/core/src/task-store/task-artifacts-ops.ts | 2 +-
packages/core/src/task-store/task-id-integrity.ts | 2 +-
packages/core/src/task-store/task-mutation-ops.ts | 14 +-
.../core/src/task-store/workflow-definitions.ts | 7 +
packages/dashboard/src/server.ts | 2 +-
22 files changed, 472 insertions(+), 121 deletions(-)
Fusion-Task-Id: FN-9000
Fusion-Task-Lineage: 9842e9e9-ec50-4459-8534-dfdaa2cdf35e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 07:43:29 -07:00
gsxdsm
0ed0e53d56
FN-9002: model project-owned schema identities
...
Align project schema declarations with the existing ownership partition.
- Model eight project-owned tables with project-leading identities and defaults.
- Preserve composite foreign-key and project-scoped uniqueness metadata.
- Add PostgreSQL declaration coverage and document deferred runtime predicates.
Files changed:
...n-9002-project-schema-ownership-declarations.md | 7 +
docs/storage.md | 1 +
...roject-schema-ownership-declarations.pg.test.ts | 245 +++++++++++++++++++++
.../core/src/async-stores/async-secrets-store.ts | 26 +--
packages/core/src/postgres/schema/project.ts | 44 +++-
5 files changed, 298 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-9002
Fusion-Task-Lineage: b6f45d1c-d7d9-4a96-b86e-6d120df3f756
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 07:09:55 -07:00
gsxdsm
36691e54d2
chore(release): v0.76.0-beta.1
...
Version bump via changesets.
2026-08-12 00:17:27 -07:00
gsxdsm
5e6719349d
FN-9001: test cross-route model cache invalidation
...
Add route-level coverage for shared model registry invalidation.
- Exercise credential mutations across auth and model registrars
- Cover stale in-flight refreshes, cache isolation, and rename behavior
- Ratchet model routes away from direct registry refresh calls
Files changed:
...r-model-routes-cross-route-invalidation.test.ts | 199 +++++++++++++++++++++
1 file changed, 199 insertions(+)
Fusion-Task-Id: FN-9001
Fusion-Task-Lineage: c5974546-6cc6-4ea5-99e9-2e3e9077e490
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 22:40:54 -07:00
gsxdsm
d9a0ed7837
fix(FN-8998): prevent planning lock reentry stalls
2026-08-11 21:44:22 -07:00
gsxdsm
11334b1249
FN-8998: scope workflow definitions by project
...
Keep custom workflows isolated within their owning project.
- Model workflows with a project-scoped composite key and scope definition mutations.
- Preserve globally safe ID occupancy while isolating analytics name lookups.
- Add PostgreSQL coverage and document the project partition contract.
Files changed:
.changeset/fn-8998-workflows-project-partition.md | 7 +
docs/storage.md | 1 +
.../workflows-project-isolation.pg.test.ts | 146 +++++++++++++++++++++
.../core/src/async-stores/async-workflow-store.ts | 19 ++-
packages/core/src/board/workflow-analytics.ts | 7 +-
packages/core/src/postgres/schema/project.ts | 17 ++-
.../core/src/task-store/workflow-definitions.ts | 25 ++--
packages/core/src/task-store/workflow-ops.ts | 27 +++-
8 files changed, 224 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-8998
Fusion-Task-Lineage: b6e8a100-de4d-4ff9-98df-4504d9050740
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 20:25:59 -07:00
gsxdsm
9c5176f55e
FN-8997: enforce project ownership for project tables
...
Enforce project-scoped ownership for chat and workflow records.
- Add project ownership columns, migration backfill, and schema validation.
- Scope chat-room and workflow CRUD operations to the active project.
- Add PostgreSQL regression coverage, storage documentation, and a release changeset.
Files changed: .../fn-8997-project-ownership-declaration-drift.md | 7 ++
docs/storage.md | 1 +
.../project-ownership-declaration-drift.pg.test.ts | 42 +++++++++
.../src/__tests__/postgres/schema-applier.test.ts | 9 +-
packages/core/src/async-stores/async-chat-store.ts | 100 ++++++++++++---------
packages/core/src/chat/chat-store.ts | 38 ++++----
...fn_8997_project_ownership_declaration_drift.sql | 17 ++++
packages/core/src/postgres/schema-applier.ts | 12 ++-
packages/core/src/postgres/schema/project.ts | 43 +++++++--
packages/core/src/task-store/project-store-ops.ts | 7 +-
.../core/src/task-store/workflow-definitions.ts | 4 +-
packages/core/src/task-store/workflow-ops.ts | 13 +--
.../src/task-store/workflow-task-create-ops.ts | 2 +-
13 files changed, 210 insertions(+), 85 deletions(-)
Fusion-Task-Id: FN-8997
Fusion-Task-Lineage: 01cd71b1-8f86-41e5-abdb-5ab00ff91c83
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 19:34:01 -07:00
gsxdsm
5ce3a973e6
FN-8902: bound and cache model registry refreshes
...
Bound model-catalog refreshes so requests retain available models when providers stall.
- Add timeout-bounded, single-flight engine registry refreshes with fallback model retention.
- Cache refresh outcomes per registry and invalidate them after all credential mutations, including default-instance changes.
- Cover refresh cache and route behavior, and document the resilience contract.
Files changed:
.changeset/fn-8902-models-refresh-bounding.md | 7 +
docs/dashboard-guide.md | 6 +
.../__tests__/model-registry-refresh-cache.test.ts | 77 +++++++
.../register-model-routes-refresh-bounding.test.ts | 246 +++++++++++++++++++++
.../dashboard/src/model-registry-refresh-cache.ts | 153 +++++++++++++
packages/dashboard/src/routes.ts | 5 +
.../dashboard/src/routes/register-auth-routes.ts | 24 +-
.../dashboard/src/routes/register-model-routes.ts | 12 +-
.../src/__tests__/model-registry-refresh.test.ts | 33 +++
packages/engine/src/auth/model-registry-refresh.ts | 125 +++++++----
packages/engine/src/index.ts | 3 +
11 files changed, 642 insertions(+), 49 deletions(-)
Fusion-Task-Id: FN-8902
Fusion-Task-Lineage: 9f0eaf34-6d28-49aa-b065-274be14ea500
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 19:00:44 -07:00
gsxdsm
7b4b2b547b
FN-8996: guard engine test module specifiers
...
Ensure engine test dependencies remain valid after module moves.
- Expand the engine test specifier guard to validate Vitest APIs and imports.
- Repair moved worktree, branch-conflict, and lifecycle module references in tests.
- Preserve worktree recovery coverage and document the harness contract.
Files changed:
docs/testing.md | 21 ++-
.../worktrunk-self-healing.test.ts | 14 +-
.../__tests__/vi-mock-specifiers-resolve.test.ts | 149 ++++++++++++++++-----
.../__tests__/workflow-graph-step-rerun.test.ts | 14 +-
...-sync-role-conversion-inert-live-e2e.pg.test.ts | 2 +-
.../__tests__/worktree-acquisition-pinned.test.ts | 52 ++++++-
.../__tests__/worktree-admin-entry-prune.test.ts | 12 +-
7 files changed, 212 insertions(+), 52 deletions(-)
Fusion-Task-Id: FN-8996
Fusion-Task-Lineage: dd93b4a8-cf45-42e2-9823-e5c2e6f84f82
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 18:46:48 -07:00
gsxdsm
fb5df0fc46
FN-8993: guard knowledge graph directory setting
...
Classify the knowledge graph output directory as an intentionally non-surfaced setting.
- Allowlist the CLI/engine-owned knowledgeGraphDir default with its rationale.
- Add regression coverage that preserves its Settings-description guard classification.
Files changed:
.../settings-default-descriptions.test.tsx | 33 ++++++++++++++++++++++
1 file changed, 33 insertions(+)
Fusion-Task-Id: FN-8993
Fusion-Task-Lineage: 34d82e65-5d1d-4805-8630-f3393de8e998
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 18:40:35 -07:00
gsxdsm
3b1c7881a8
FN-8988: partition agent ratings by project
...
Isolate PostgreSQL agent ratings within each project while preserving compatibility behavior.
- Add migration 0055 to enforce the (project_id, id) rating identity key and repair drifted composite keys.
- Scope rating CRUD operations to bound projects and document the storage contract.
- Cover cross-project rating isolation and drifted-key migration repair.
Files changed:
.changeset/fn-8988-agent-ratings-project-partition.md | 7 ++
docs/storage.md | 1 +
packages/core/src/__tests__/postgres/agent-ratings-project-isolation.pg.test.ts | 105 +++++++++++++++++++++
packages/core/src/__tests__/postgres/schema-applier.test.ts | 66 ++++++++++++-
packages/core/src/agents/agent-store.ts | 18 +++-
packages/core/src/async-stores/async-agent-store.ts | 11 ++-
packages/core/src/postgres/migrations/0055_fn_8988_agent_ratings_project_partition.sql | 74 +++++++++++++++
packages/core/src/postgres/schema-applier.ts | 12 ++-
packages/core/src/postgres/schema/project.ts | 5 +
9 files changed, 293 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8988
Fusion-Task-Lineage: 5d3e5e60-1589-4641-8695-1786f1c15c5d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 18:35:43 -07:00
gsxdsm
12eeeaf046
FN-8901: restore duplicate conflict responses
...
Require matching named proposal claims before a deterministic duplicate can be reused.
- Restore 409 duplicate responses for ordinary or unrelated proposal intake.
- Preserve duplicate reuse for matching trusted recommendation claims.
- Cover active and terminal canonical task cases.
- Add a patch changeset for the intake fix.
Files changed:
.changeset/fn-8901-deterministic-duplicate-409.md | 7 ++++
.../__tests__/routes-tasks-near-duplicate.test.ts | 47 ++++++++++++++++++++++
.../src/routes/register-task-workflow-routes.ts | 11 ++++-
3 files changed, 64 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8901
Fusion-Task-Lineage: f9a41ceb-46aa-4589-9fdc-7f1cc35a01e1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 18:21:24 -07:00
gsxdsm
167e17c697
fix(engine): resume planned mission follow-ups
2026-08-11 17:53:40 -07:00
gsxdsm
0e4c0c713e
FN-8995: reconcile durable-write inventory drift
...
Keep the durable-write inventory synchronized while preserving reviewed lifecycle verdicts.
- Add fail-closed manifest regeneration and regression coverage.
- Reconcile current call-site structure while retaining equivalent verdicts through module moves.
- Clarify durable wedge-notification writer classification and regeneration guidance.
Files changed:
.../merge-orphan-body-durable-write-fences.md | 18 +-
.../__tests__/_merge-durable-write-callsites.ts | 84 +-
.../merge-orphan-durable-write-inventory.json | 15414 +++++++++----------
...ge-orphan-durable-write-inventory-drift.test.ts | 88 +-
4 files changed, 7836 insertions(+), 7768 deletions(-)
Fusion-Task-Id: FN-8995
Fusion-Task-Lineage: df3d27ca-6614-418d-b09f-e1dd9f49f910
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 15:29:44 -07:00
gsxdsm
5134a55b77
FN-8958: fence orphaned merge-body writes
...
Prevent cancelled merge generations from writing stale task state.
- Add a signal-aware merge write fence with orphan audit reporting.
- Fence merge finalization, post-push metadata, and recovery-branch task logs.
- Cover durable write callsites and cancellation behavior with tests and guidance.
Files changed:
.changeset/fn-8958-orphan-merge-write-fence.md | 7 +
AGENTS.md | 1 +
.../reliability/orphan-merge-body-write-fence.md | 68 ++
.../__tests__/_merge-durable-write-callsites.ts | 4 +
.../merge-orphan-durable-write-inventory.json | 982 +++++++++++----------
.../merge-orphan-body-durable-writes.test.ts | 38 +-
.../engine/src/__tests__/merge-write-fence.test.ts | 39 +
.../engine/src/merge/auto-merge-finalization.ts | 9 +
packages/engine/src/merge/merge-write-fence.ts | 92 ++
packages/engine/src/merge/merger-ai.ts | 173 ++--
10 files changed, 875 insertions(+), 538 deletions(-)
Fusion-Task-Id: FN-8958
Fusion-Task-Lineage: 5f398c44-4320-4f0c-be15-707184f66aa8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 15:20:19 -07:00
gsxdsm
43141467fb
FN-8955: harden reviewer verdict extraction
...
Recover structured reviewer verdicts from prose containing malformed brace or quote characters.
- Scan and recover JSON verdict candidates after parser desynchronization.
- Prevent unreadable structured verdicts from being treated as prose approvals.
- Cover malformed prose and multi-finding verdict recovery across review gates.
Files changed:
.changeset/fn-8955-verdict-extractor.md | 7 ++
docs/workflow-steps.md | 4 +-
packages/engine/src/__tests__/reviewer.test.ts | 65 +++++++++++++++
.../workflow-malformed-verdict-gate.test.ts | 14 ++++
.../workflow-step-verdict-parsing.test.ts | 86 ++++++++++++++++++--
packages/engine/src/execution/reviewer.ts | 92 ++++++++++++++++++++--
.../engine/src/executor/workflow-step-verdict.ts | 16 ++--
7 files changed, 267 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-8955
Fusion-Task-Lineage: 84107fd2-b7f3-4162-9e8c-2ec24600d9d5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 15:01:52 -07:00
gsxdsm
778292b484
refactor: package code organization wave 19 (self-healing pure peels) ( #3403 )
...
## Summary
Starts **U5** of the package code-organization program after wave 18
(executor peels) landed.
Peels pure free-function clusters out of `self-healing.ts` into
`packages/engine/src/self-healing/` without behavior changes. Public
imports from `./self-healing.js` remain stable via re-exports.
### Peels
| Symbol | New home |
|--------|----------|
| `autoRecoverWorktreeSessionStartFailure` |
`self-healing/auto-recover-worktree-session.ts` |
| `archiveAsGhostBug` | `self-healing/archive-ghost-bug.ts` |
| `hasStepProgress` / work-complete helpers |
`self-healing/step-progress.ts` |
### Line count
- `self-healing.ts`: ~15456 → ~15231 (baseline ratcheted to post-peel
live; main had already drifted past the prior grandfathered ceiling via
organic growth)
- New modules each well under 2,000 lines
## Test plan
- [x] `pnpm --filter @fusion/engine exec tsc --noEmit`
- [x] `self-healing-trait-rekey.test.ts` (autoRecover requeue)
- [x] `self-healing-paused-abort-recovery.test.ts`
- [x] `self-healing-model-unavailable-recovery.test.ts`
- [ ] CI gate
## Follow-ups
U5 Slice B: domain method clusters (startup, in-review, merge-status,
workspace, surfacing) into additional `self-healing/*.ts` modules.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved automatic recovery when worktree sessions fail to start,
including stale or incomplete session data.
* Tasks can be safely requeued while preserving progress, or escalated
after retry limits are reached.
* Improved handling of completed work and failures where task completion
was not recorded.
* Preserved valid task branches during recovery and provided more
reliable fallback requeue behavior.
* Ghost bugs are automatically archived with recovery details and
activity history.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-11 11:29:30 -10:00
gsxdsm
9622a62425
fix(engine): preserve manual handoff holds during recovery ( #3422 )
...
## Summary
Supersedes #3421 — fork head not writable for main-merge. Same change
rebased onto current main so lifecycle-column lint stays green.
## Test plan
- [x] merges cleanly onto main
- [ ] CI green
Co-authored-by: BESA-Franz <49682134+BESA-Franz@users.noreply.github.com >
2026-08-11 11:29:23 -10:00
ischindl
d4db29f3e6
fix(dashboard): surface mergeTaskSnapshot on useTasks mocks to fix task-detail tests ( #3409 )
...
## Problem
`app/components/__tests__/navigation-history.test.tsx`,
`TaskDetail.swipe-back.test.tsx`, and
`TaskDetail.mobile-transition.board-panel.test.tsx` fail to load.
FN-8796 (`132026545`, "stabilize task-detail lifecycle snapshots") added
`mergeTaskSnapshot` to `hooks/useTasks.ts`, which
`App.tsx`/`MainContent.tsx` now import. The curated test suites that
`vi.mock("../../hooks/useTasks")` still only expose `useTasks`, so the
fixture throws at import time:
```
No "mergeTaskSnapshot" export is defined on the useTasks mock
```
Confirmed on `origin/main`: `mergeTaskSnapshot` is present in
`useTasks.ts` and imported by `App.tsx`, while these tests' `vi.mock`
shims don't surface it.
## Fix
Update the mocks to surface every export the rendered components import,
using a partial `importOriginal` mock so `mergeTaskSnapshot` keeps its
real implementation (a `vi.fn()` returning `undefined` would make
`App.tsx:2179` `liveTask.id` throw):
```ts
vi.mock("../../hooks/useTasks", async (importOriginal) => {
const actual = await importOriginal();
return { ...actual, useTasks: (_options?: any) => mockUseTasks() };
});
```
## Verification
- `FUSION_DASHBOARD_DEEP=1 vitest run navigation-history swipe-back
board-panel` → **14 files, 116 tests passed**
- Pre-existing on `origin/main`, fixes a regression introduced by
FN-8796.
## Scope
Tests + a one-line docs note only. No production behavior change.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Documentation**
- Documented improved worktree recovery behavior, including safer
handling of incomplete, inactive, and unregistered directories.
- Added guidance for recovery across different storage locations and
bounded cleanup of recognized entries.
- Clarified protections that prevent internal recovery containers from
being treated as worktrees.
- **Tests**
- Improved dashboard test coverage and reliability for task detail
rendering, mobile transitions, swipe-back navigation, and navigation
history.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Fusion <noreply@runfusion.ai >
Co-authored-by: gsxdsm <gsxdsm@users.noreply.github.com >
2026-08-11 11:28:50 -10:00
Phil Larson
ca134c2554
test(engine): align failed notification fixture with recovery ownership ( #3418 )
...
## Summary
- make the already-merged recovery fixture explicit that no maintenance
sweep owns terminal-failure recovery
- preserve the fail-open `task-wedged` notification assertion when no
landed commit is found
## Test plan
- `corepack pnpm --filter @fusion/engine exec vitest run
--silent=passed-only --reporter=dot src/__tests__/self-healing.test.ts`
(460 passed)
- `corepack pnpm --filter @fusion/engine typecheck`
- `node scripts/run-static-gate-checks.mjs` (12 passed)
- `corepack pnpm --filter @fusion/engine test:core` (422 passed)
- `corepack pnpm --filter @fusion/core test:unit-gate` (184 passed)
- `corepack pnpm --filter @runfusion/fusion test:ci-shape` (71 passed)
- `corepack pnpm test:gate` reaches the PostgreSQL harness but cannot
authenticate locally (`empty password returned by client`) before
product assertions
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Tests**
* Updated failure-notification test conditions to cover scenarios
without automatic maintenance processing.
* Added coverage confirming terminal-failure notifications fail open
when no maintenance sweep owns the task.
* Bypassed production debounce timing to make the test behavior
deterministic.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-11 11:28:46 -10:00
gsxdsm
66c51038a5
fix(engine): bind self-owned worktree liveness probe ( #3419 )
...
## Summary
Supersedes #3416 — the fork head is not writable from maintainers, so
this branch carries the same fix merged onto current `main`.
## Changes
- Bind the self-owned worktree liveness probe in task-executor pure
facades (from #3416 ).
- Merge current main so the lifecycle-column census baseline stays
green.
## Test plan
- [x] `pnpm check:lifecycle-columns` clean after merge
- [ ] CI green
Closes context from #3416 .
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Fixed cleanup for self-owned worktrees so it no longer crashes before
checking whether an active session is present.
* Improved safety during worktree reconciliation by correctly verifying
that the worktree is still active before removal.
* **Documentation**
* Added a changeset documenting the worktree cleanup fix.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: BESA-Franz <49682134+BESA-Franz@users.noreply.github.com >
2026-08-11 11:28:42 -10:00
gsxdsm
a6ce7f89ef
FN-8987: expose release-gate verdicts for Promote visibility
...
Expose server-evaluated release-gate state so Promote controls accurately reflect approval readiness.
- Attach transient release-gate verdicts to task API responses.
- Preserve only fresh REST verdicts across task snapshots and render them in task cards.
- Align hold-release gating and document the Promote-state contract.
Files changed:
.changeset/fn-8987-release-gate-verdict.md | 7 +
docs/dashboard-guide.md | 4 +
docs/solutions/workflow-learnings/project-union-versus-per-task-lanes.md | 1 +
docs/workflow-steps.md | 4 +
packages/core/src/index.gate.ts | 2 +-
packages/core/src/index.ts | 2 +-
packages/core/src/types.ts | 2 +
packages/core/src/types/task/task-core.ts | 20 +++
packages/dashboard/app/components/TaskCard.tsx | 3 +-
packages/dashboard/app/components/__tests__/TaskCard.test.tsx | 31 ++++
packages/dashboard/app/hooks/__tests__/useTasks.test.ts | 26 ++++
packages/dashboard/app/hooks/useTasks.ts | 135 +++++++++++++++--
packages/dashboard/app/utils/__tests__/releaseGate.contract.test.ts | 29 ++++
packages/dashboard/app/utils/__tests__/releaseGate.test.ts | 49 ++++++
packages/dashboard/app/utils/releaseGate.ts | 26 ++++
packages/dashboard/app/utils/reviewBudgetApproval.ts | 9 ++
packages/dashboard/src/routes/register-task-workflow-routes.ts | 20 ++-
packages/engine/src/__tests__/release-gate-verdict.test.ts | 40 +++++
packages/engine/src/execution/hold-release.ts | 166 +++++++++------------
packages/engine/src/index.ts | 3 +
20 files changed, 469 insertions(+), 110 deletions(-)
Fusion-Task-Id: FN-8987
Fusion-Task-Lineage: 6f1742bc-2b2b-4a32-9be5-92160335d90d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 14:22:14 -07:00