Refresh the FTS migration guidance with fresh evidence and reconcile workflow interpreter naming.
- document post-FN-5943 production evidence showing the single-file tasks_fts index remains bounded and rebuild-free
- keep the storage guidance explicitly deferred until recurring corruption or sustained bloat is observed
- relax the foreach parser test to accept the current nested loop/foreach error wording
- align the authoritative workflow driver ID with the task branch change during conflict resolution
Files changed:
docs/storage.md | 7 ++++++-
packages/core/src/__tests__/workflow-ir-foreach.test.ts | 2 +-
packages/engine/src/workflow-authoritative-driver.ts | 2 +-
3 files changed, 8 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6008
Fusion-Task-Lineage: d8c7c05c-f003-453d-bbd1-d9f0dda62f7c
Let failed agents be stopped and deleted consistently across the dashboard and agent lifecycle.
- allow agents in the error state to transition to paused and cover the new lifecycle path in core tests
- expose delete controls for failed agents in the agents list and mobile detail view with dashboard regression coverage
- update CLI stop-tool guidance and add a patch changeset for the published package
Files changed:
.changeset/fn-6018-agent-error-stop-delete.md | 7 ++++
packages/cli/src/__tests__/extension.test.ts | 16 ++++++++
packages/cli/src/extension.ts | 4 +-
packages/core/src/__tests__/agent-store.test.ts | 16 ++++++++
packages/core/src/types.ts | 2 +-
.../dashboard/app/components/AgentDetailView.tsx | 4 ++
packages/dashboard/app/components/AgentsView.tsx | 2 +-
.../__tests__/AgentDetailView.core.test.tsx | 24 +++++++++++-
.../app/components/__tests__/AgentsView.test.tsx | 44 +++++++++++++++++++++-
9 files changed, 112 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-6018
Fusion-Task-Lineage: 40159b9b-4d14-4f1e-9bd9-d018e54db7ee
Quarantine the flaky dashboard chat-manager generation-slot test until the underlying race is fixed.
- exclude packages/dashboard/src/__tests__/chat-manager.test.ts from dashboard API Vitest projects
- record the quarantine entry with failure context, rescue requirements, and the 2026-06-08 quarantine date
Files changed:
packages/dashboard/vitest.config.ts | 2 ++
scripts/lib/test-quarantine.json | 8 +++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6016
Fusion-Task-Lineage: 2cd97f8e-db06-4e49-b437-66fee64fb3a9
Remove the extra mobile right margin from chat empty states while preserving other chat pane states.
- add mobile message-pane padding and remove card chrome from empty-state containers inside mobile chat messages
- expand the mobile chat rendering regression test to cover direct threads, room threads, loading, populated, streaming, and new-chat empty states
- rename the regression suite to FN-5997 and assert the empty state spans the full mobile message pane
Files changed:
packages/dashboard/app/components/ChatView.css | 9 +++++
.../__tests__/ChatView.mobile-render.test.tsx | 46 +++++++++++++++-------
2 files changed, 40 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-5997
Fusion-Task-Lineage: ea424660-e8c6-4691-9234-463866aacb2e
Normalize package file-filter verification to direct Vitest execution, kill timed-out process groups, and bound loop-recovery compaction so stuck tasks cannot spin indefinitely.
Fusion-Task-Id: FN-5994
- guard optional project selection callbacks and keep bookmarked search matches visible
- use structured timeout/rate-limit handling in retry backoff
- add focused regressions for selector and retry behavior
Note: pnpm test passed the merge gate but hit pre-existing non-blocking engine mock failures in changed-package tests.
- Bump workflow model lane changeset to minor
- Clear pending workflow model edits after value reload failures
- Exclude Vite source module requests with query strings from API proxy
Ensure the workflow node editor opens at the origin instead of auto-fitting away from the top-left.
- replace React Flow's fitView startup behavior with an explicit default viewport at x=0, y=0, zoom=1
- add a regression test that asserts the initial viewport transform starts at the top-left with scale 1
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.tsx | 2 +-
.../app/components/__tests__/WorkflowNodeEditor.test.tsx | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-5990
Fusion-Task-Lineage: 682ca8f8-a698-4234-a2d6-31c8efa657db
Add a browser demo workflow and supporting fixtures for board walkthroughs.
- add a demo README plus seeded Browser Demo Lifecycle workflow with Todo, In Progress, In Review, QA, and Publish columns
- seed representative browser demo tasks and lifecycle log entries across the custom workflow columns
- update the live simulator to advance workflow tasks through QA and Publish while preserving the legacy merge path
- add a core lifecycle test covering workflow selection and the Todo → In Progress → In Review → QA → Publish transitions
Files changed:
demo/README.md | 25 ++++
demo/seed.ts | 131 ++++++++++++++++++++-
demo/simulate.ts | 35 ++++--
packages/core/src/__tests__/browser-demo-lifecycle.test.ts | 71 +++++++++++
4 files changed, 248 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-5986
Fusion-Task-Lineage: 9638f7da-9b50-4de1-8ffa-d861dbf7aff2
Align mission goal link write paths on the documented GOAL_NOT_FOUND contract.
- return 400 GOAL_NOT_FOUND from linkable goal validation instead of 404 when a goal is missing
- update mission goal route tests to assert the new error payload across create, patch, set, and add flows
- document the link-vs-unlink missing-goal behavior and add a patch changeset for the published CLI package
Files changed:
.../FN-5985-mission-goal-not-found-contract.md | 5 ++++
docs/missions.md | 2 +-
.../__tests__/mission-goal-links-routes.test.ts | 32 +++++++++++++++++-----
packages/dashboard/src/mission-routes.ts | 9 +++++-
4 files changed, 39 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-5985
Fusion-Task-Lineage: 5649266e-5813-41b4-8a54-c7c46df61a35
Reduce SQLite and FTS churn on hot task-update paths.
- switch hot task writes to column-scoped UPDATE statements that touch only changed fields plus updatedAt
- keep create and replication-style persistence on full-row INSERT/UPSERT paths and rewrite task.json from the refreshed DB row after partial updates
- route executor lease renewals through renewCheckoutLease and add regression coverage plus storage docs for the narrower write paths
Files changed:
docs/storage.md | 5 +-
.../core/src/__tests__/task-partial-update.test.ts | 191 ++++++
packages/core/src/store.ts | 638 +++++++++++----------
.../src/__tests__/executor-lease-renewal.test.ts | 66 +++
packages/engine/src/executor.ts | 2 +-
5 files changed, 603 insertions(+), 299 deletions(-)
Fusion-Task-Id: FN-5945
Fusion-Task-Lineage: ad0c5b64-f411-4379-85ab-f81edfc18101