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
6d2c1bf0c9
FN-9020: parallelize boot smoke preflights
...
Reduce durable boot-smoke latency while preserving its CLI, initialization, health, and shutdown assertions.
- Run independent help and init preflights concurrently with bounded async child processes.
- Add phase timing diagnostics and deterministic init failure classification.
- Cover phase scheduling and isolated environment behavior, and document the diagnostics flag.
Files changed:
docs/testing.md | 4 +-
scripts/__tests__/boot-smoke.test.mjs | 65 ++++++++++-
scripts/boot-smoke.mjs | 201 +++++++++++++++++++++++++---------
3 files changed, 214 insertions(+), 56 deletions(-)
Fusion-Task-Id: FN-9020
Fusion-Task-Lineage: 1f5d3d7f-dc0c-4d16-a4ab-fd5e3952dbdf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 19:45:40 -07:00
gsxdsm
f8f828357f
FN-9018: refresh W33 test velocity baseline
...
Refresh the weekly test-velocity report with the latest captured measurements.
- Update baseline metrics, deltas, quarantine status, and #leads summary.
- Append the W33 measurement and slowest-test metadata to the velocity history.
Files changed:
docs/test-velocity-baseline.md | 24 ++++----
scripts/test-velocity-history.json | 114 +++++++++++++++++++++++++++++++++++++
2 files changed, 126 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-9018
Fusion-Task-Lineage: b4d91cfd-2d5d-4e5a-ac9a-e62c50915f49
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-12 19:10:03 -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
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
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
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
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
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
f2c729bf77
FN-8994: add workspace package graph validation
...
Prevent cold workspace installs from failing on missing or unglobbed local packages.
- Validate workspace-protocol dependencies and overrides against glob-covered packages.
- Add static-gate coverage and regression tests for missing plugin packages.
- Document the workspace package graph check.
Files changed:
docs/testing.md | 4 +-
package.json | 9 +-
scripts/__tests__/check-workspace-package-graph.test.mjs | 103 +++++++++++++++
scripts/check-workspace-package-graph.mjs | 138 +++++++++++++++++++++
4 files changed, 249 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8994
Fusion-Task-Lineage: 17dbe062-79aa-4417-ae38-43df881e9fa4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 14:56:14 -07: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
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
gsxdsm
9f24a517cf
FN-8956: track resolved review findings
...
Add durable, scoped resolution states for workflow review findings.
- Persist reviewer-applied and superseded finding receipts without making them actionable.
- Scope supersession claims to a named prior workflow result, preserving duplicate IDs in other review lanes.
- Render informational resolution badges and reject resolved items from revision requests.
Files changed: .changeset/fn-8956-review-finding-resolution.md | 7 +
docs/dashboard-guide.md | 2 +-
docs/workflow-steps.md | 8 +-
.../src/__tests__/review-severity-gate.test.ts | 25 ++++
.../src/__tests__/workflow-step-results.test.ts | 45 +++++-
packages/core/src/index.gate.ts | 6 +
packages/core/src/index.ts | 6 +
packages/core/src/types.ts | 2 +
packages/core/src/types/task/task-review.ts | 4 +
packages/core/src/types/workflow/workflow-steps.ts | 15 +-
.../src/workflows/builtin-code-review-group.ts | 2 +-
.../src/workflows/builtin-plan-review-group.ts | 2 +-
.../core/src/workflows/review-severity-gate.ts | 37 ++++-
.../core/src/workflows/workflow-step-results.ts | 54 ++++++-
packages/dashboard/app/api/agents/run-audit.ts | 1 +
.../dashboard/app/components/TaskReviewTab.css | 22 +++
.../dashboard/app/components/TaskReviewTab.tsx | 36 +++--
.../components/__tests__/TaskReviewTab.test.tsx | 46 ++++++
.../dashboard/src/__tests__/routes-tasks.test.ts | 48 ++++++
.../src/routes/register-task-workflow-routes.ts | 14 +-
.../__tests__/review-finding-supersession.test.ts | 163 +++++++++++++++++++++
.../__tests__/review-findings-injection.test.ts | 22 +++
.../workflow-step-verdict-parsing.test.ts | 16 +-
.../engine/src/executor/execute-workflow-graph.ts | 129 ++++++++--------
.../engine/src/executor/execute-workflow-step.ts | 25 +++-
.../engine/src/executor/run-graph-custom-node.ts | 7 +
.../executor/workflow-step-failure-injection.ts | 8 +-
.../engine/src/executor/workflow-step-verdict.ts | 17 ++-
.../src/workflows/workflow-graph-executor.ts | 15 ++
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 +-
36 files changed, 703 insertions(+), 109 deletions(-)
Fusion-Task-Id: FN-8956
Fusion-Task-Lineage: 80568280-85aa-4a49-a60a-99b75f88f486
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 13:34:27 -07:00
gsxdsm
6ae9299576
FN-8953: defer terminal wedge alerts during recovery
...
Hold terminal wedge alerts until their recovery window has elapsed.
- Persist and settle pending wedge notifications across restarts.
- Clear pending alerts on task progress and reconcile expired holds during self-healing.
- Expose the settle window in notification settings with coverage for store and notification flows.
Files changed:
.changeset/fn-8953-wedge-settle-window.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 3 +-
docs/settings-reference.md | 1 +
.../core/src/__tests__/store-wedge-pending.test.ts | 56 +++++
packages/core/src/config/settings-schema.ts | 1 +
packages/core/src/store.ts | 46 ++++
packages/core/src/types/settings/settings-scope.ts | 2 +
packages/core/src/types/task/task-core.ts | 15 ++
.../app/components/settings/save-split.ts | 1 +
.../sections/NotificationsSection.search.ts | 9 +
.../settings/sections/NotificationsSection.tsx | 15 ++
.../settings-default-descriptions.test.tsx | 1 +
...self-healing-pending-wedge-notification.test.ts | 148 ++++++++++++
.../__tests__/notification-service.test.ts | 7 +-
.../__tests__/task-wedge-notification.test.ts | 258 ++++++++++++++++++++-
.../src/notification/notification-service.ts | 260 +++++++++++++++++++++
packages/engine/src/self-healing.ts | 38 +++
packages/i18n/locales/en/app.json | 2 +
19 files changed, 850 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-8953
Fusion-Task-Lineage: fd5b5827-c69d-409f-86d5-01ff23405ee3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 12:34:47 -07:00
gsxdsm
eef68fe0b9
FN-8933: capture semantic memory from completed work
...
Add inferred graph relationships and detached recall capture across completed-work memory surfaces.
- Validate and persist deterministic inferred semantic edges with audit outcomes.
- Capture completed tasks, research findings, and insights as bounded recall entries.
- Wire memory semantics through engine, research APIs, and coverage tests.
Files changed:
.changeset/fn-8933-memory-semantics-capture.md | 7 +
AGENTS.md | 1 +
docs/knowledge-graph.md | 10 +-
.../src/__tests__/memory/recall-capture.test.ts | 111 +++++++++++++
.../__tests__/postgres/insight-store.pg.test.ts | 25 +++
.../postgres/research-execution.pg.test.ts | 38 +++++
.../__tests__/research-feature-promotion.test.ts | 39 +++++
.../core/src/async-stores/async-insight-store.ts | 23 ++-
packages/core/src/index.ts | 1 +
.../__tests__/graph-builder-incremental.test.ts | 28 ++++
.../__tests__/inferred-edge-writer.test.ts | 74 +++++++++
packages/core/src/knowledge-graph/graph-builder.ts | 27 ++-
.../src/knowledge-graph/graph-serialization.ts | 2 +-
packages/core/src/knowledge-graph/graph-store.ts | 12 ++
packages/core/src/knowledge-graph/graph-types.ts | 2 +-
packages/core/src/knowledge-graph/index.ts | 1 +
.../src/knowledge-graph/inferred-edge-writer.ts | 96 +++++++++++
packages/core/src/memory/index.ts | 1 +
packages/core/src/memory/recall-capture.ts | 184 +++++++++++++++++++++
.../src/research/research-feature-promotion.ts | 23 ++-
packages/core/src/task-store/task-store-helpers.ts | 13 +-
.../src/__tests__/research-routes.test.ts | 80 ++++++++-
packages/dashboard/src/research-routes.ts | 27 ++-
.../src/__tests__/agent-mission-tools.test.ts | 60 ++++++-
.../src/__tests__/in-process-runtime.pg.test.ts | 28 +++-
.../memory-consolidation-heartbeat-hook.test.ts | 8 +-
.../__tests__/memory-consolidation-ports.test.ts | 17 +-
.../src/__tests__/memory-semantics-pass.test.ts | 115 +++++++++++++
.../engine/src/__tests__/project-engine.test.ts | 65 +++++++-
packages/engine/src/agent-heartbeat.ts | 14 +-
packages/engine/src/agent-tools.ts | 12 +-
packages/engine/src/agents/agent-reflection.ts | 9 +-
packages/engine/src/memory/index.ts | 1 +
.../src/memory/memory-consolidation-adapters.ts | 18 +-
packages/engine/src/memory/memory-consolidation.ts | 13 +-
packages/engine/src/memory/memory-semantics.ts | 67 ++++++++
packages/engine/src/project-engine.ts | 3 +
.../engine/src/research/research-orchestrator.ts | 20 ++-
packages/engine/src/runtimes/in-process-runtime.ts | 12 ++
packages/engine/src/util/run-audit.ts | 11 ++
40 files changed, 1250 insertions(+), 48 deletions(-)
Fusion-Task-Id: FN-8933
Fusion-Task-Lineage: b75a6b23-906f-4255-92f1-7684beb742b8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 05:45:36 -07:00
gsxdsm
f1fe399184
FN-8991: add runtime skill-loader drift gate
...
Enforce the intentional Claude-to-Grok runtime skill-loader clone relationship across verification lanes.
- Add an exact rename-diff validator with fixture and live-loader coverage.
- Run the validator in pretest, fast verification, and static merge-gate checks.
- Document the loader duplication contract and expanded static-validator inventory.
Files changed:
AGENTS.md | 2 +
docs/testing.md | 4 +-
package.json | 7 +-
.../check-runtime-skill-loader-drift.test.mjs | 113 +++++++++++++++++++++
scripts/__tests__/run-static-gate-checks.test.mjs | 1 +
scripts/__tests__/verify-fast.test.mjs | 1 +
scripts/check-runtime-skill-loader-drift.mjs | 113 +++++++++++++++++++++
7 files changed, 236 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8991
Fusion-Task-Lineage: a3b67752-0043-4336-9a2a-ff391672b31f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 05:23:02 -07:00
gsxdsm
5a1853cac6
FN-8934: add memory pre-steering across agent prompts
...
Add bounded memory-first guidance and consolidation observability across agent workflows.
- Apply mode-aware memory pre-steering to execution, triage, reviewer, heartbeat, and merger prompts.
- Export and test shared memory nudges while documenting memory inclusion settings.
- Expose agent memory consolidation history through dashboard API and detail UI.
Files changed:
.changeset/fn-8934-memory-pre-steering.md | 7 ++
docs/agents.md | 4 +
docs/settings-reference.md | 2 +
.../core/src/__tests__/memory-pre-steering.test.ts | 28 +++++++
packages/core/src/__tests__/project-memory.test.ts | 22 ++++++
packages/core/src/index.gate.ts | 7 ++
packages/core/src/index.ts | 7 ++
packages/core/src/memory/index.ts | 1 +
packages/core/src/memory/memory-pre-steering.ts | 41 ++++++++++
packages/core/src/memory/project-memory.ts | 19 +++++
packages/dashboard/app/api/agents/agents.ts | 12 +++
packages/dashboard/app/api/legacy.ts | 2 +
.../dashboard/app/components/AgentDetailView.css | 41 ++++++++++
.../dashboard/app/components/AgentDetailView.tsx | 56 +++++++++++++-
...etailView.memory-consolidation-history.test.tsx | 58 +++++++++++++++
.../__tests__/AgentDetailView.test-helpers.ts | 3 +
.../register-agent-memory-consolidations.test.ts | 87 ++++++++++++++++++++++
.../register-agent-reflection-rating-routes.ts | 36 +++++++++
.../memory-pre-steering-injection.test.ts | 50 +++++++++++++
packages/engine/src/__tests__/reviewer.test.ts | 18 +++++
packages/engine/src/__tests__/triage.test.ts | 18 ++++-
packages/engine/src/agent-heartbeat.ts | 14 +++-
.../engine/src/agents/agent-heartbeat-prompts.ts | 2 +
packages/engine/src/agents/agent-instructions.ts | 16 ++--
packages/engine/src/execution/reviewer.ts | 31 +++++---
packages/engine/src/executor/execution-prompt.ts | 6 +-
packages/engine/src/merger.ts | 9 ++-
packages/engine/src/triage.ts | 12 ++-
28 files changed, 577 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-8934
Fusion-Task-Lineage: a062cc6b-1277-4d36-9926-b3ecba4945eb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 04:57:14 -07:00
gsxdsm
25e292d0e6
FN-8954: preserve CLI liveness during startup
...
Ensure CLI startup operations settle before process exit on supported Node runtimes.
- Keep awaited QMD probes and ephemeral port selection ref'd until completion.
- Add CLI process regressions for init persistence and exit code 13.
- Declare the Node 22.4 runtime floor and extend boot smoke coverage.
Files changed:
.changeset/fn-8954-cli-exit-13.md | 7 ++
docs/testing.md | 4 +-
package.json | 3 +
packages/cli/agent-browser.mjs | 6 ++
packages/cli/bin.mjs | 7 ++
packages/cli/package.json | 3 +
packages/cli/src/__tests__/ci-workflow.test.ts | 9 +++
packages/cli/src/__tests__/cli-exit-code.test.ts | 82 ++++++++++++++++++++++
packages/cli/src/__tests__/package-config.test.ts | 12 ++++
packages/cli/src/bin.ts | 6 ++
.../__tests__/postgres/embedded-free-port.test.ts | 37 ++++++++++
packages/core/src/memory/memory-backend.ts | 17 +++--
packages/core/src/postgres/embedded-lifecycle.ts | 16 +++--
scripts/boot-smoke.mjs | 62 +++++++++++-----
14 files changed, 244 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-8954
Fusion-Task-Lineage: 05303d07-2662-48d5-a442-6d43fa0a4493
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 04:20:33 -07:00
gsxdsm
f038d04dc5
FN-8986: stage computer-use skill only on Darwin
...
Stage the bundled computer-use discovery skill exclusively for supported macOS runtimes.
- Gate Claude and Grok session skill resolution and staging by platform.
- Install the Hermes discovery skill on Darwin while preserving user overrides and non-Darwin suppression.
- Document runtime discovery behavior, add coverage, and add a minor release changeset.
Files changed:
.../darwin-only-computer-use-skill-staging.md | 7 +
docs/computer-use.md | 10 +-
.../custom-provider-routes-hermes-additive.test.ts | 2 +-
.../src/__tests__/skill-loader.test.ts | 197 +++++++++++++++++++++
.../src/skill-loader.ts | 145 ++++++++++-----
.../src/__tests__/skill-loader.test.ts | 51 +++++-
.../fusion-plugin-grok-runtime/src/skill-loader.ts | 145 ++++++++++-----
.../src/__tests__/fusion-skill-install.test.ts | 62 ++++++-
.../src/__tests__/index.test.ts | 37 +++-
.../src/fusion-skill-install.ts | 151 ++++++++--------
plugins/fusion-plugin-hermes-runtime/src/index.ts | 21 ++-
11 files changed, 649 insertions(+), 179 deletions(-)
Fusion-Task-Id: FN-8986
Fusion-Task-Lineage: 373d558a-1d0a-4737-99be-f53189a9aeaf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 04:13:35 -07:00
gsxdsm
637854ad36
FN-8932: add durable memory consolidation agent
...
Add a provisioned memory agent that consolidates durable recall material through idempotent heartbeat ticks.
- Provision and configure the durable memory agent with an enabled workflow setting.
- Add consolidation adapters, material collection, recall graph references, and run-audit metadata.
- Expose the setting in the dashboard and document the memory-agent behavior.
- Cover provisioning, heartbeat, consolidation, audit, and recall graph behavior with tests.
Files changed:
.changeset/fn-8932-memory-agent.md | 7 ++
AGENTS.md | 1 +
docs/agents.md | 10 ++
docs/settings-reference.md | 1 +
docs/storage.md | 2 +-
.../memoryConsolidationEnabled-default.test.ts | 22 ++++
.../memory-recall-graph-cross-reference.pg.test.ts | 115 +++++++++++++++++++++
.../__tests__/memory-agent-provisioning.test.ts | 31 ++++++
packages/core/src/agents/agent-store.ts | 85 +++++++++++++++
packages/core/src/agents/memory-agent-defaults.ts | 30 ++++++
packages/core/src/index.gate.ts | 2 +
packages/core/src/index.ts | 9 ++
packages/core/src/memory/recall/index.ts | 1 +
packages/core/src/memory/recall/recall-dedup.ts | 3 +
packages/core/src/memory/recall/recall-store.ts | 35 ++++++-
.../src/workflows/builtin-workflow-settings.ts | 14 +++
.../src/workflows/workflow-settings-resolver.ts | 12 ++-
.../__tests__/WorkflowSettingsPanel.test.tsx | 8 ++
.../__tests__/workflow-setting-display.test.ts | 6 ++
.../app/components/workflow-setting-display.ts | 5 +
.../memory-consolidation-heartbeat-hook.test.ts | 92 +++++++++++++++++
.../__tests__/memory-consolidation-ports.test.ts | 34 ++++++
...memory-consolidation-run-audit-metadata.test.ts | 19 ++++
.../__tests__/memory-consolidation-tick.test.ts | 62 +++++++++++
packages/engine/src/agent-heartbeat.ts | 55 ++++++++++
packages/engine/src/index.ts | 1 +
packages/engine/src/memory/index.ts | 3 +
.../src/memory/memory-consolidation-adapters.ts | 29 ++++++
.../src/memory/memory-consolidation-material.ts | 22 ++++
packages/engine/src/memory/memory-consolidation.ts | 41 ++++++++
packages/engine/src/util/run-audit.ts | 10 ++
31 files changed, 764 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-8932
Fusion-Task-Lineage: b4fdec50-1f42-4120-af17-0b6f3a94586e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 03:53:11 -07:00
gsxdsm
41bb94ba77
FN-8957: isolate PostgreSQL agents by project
...
Keep durable PostgreSQL agent records and analytics isolated to their bound project.
- Scope agent reads, mutations, satellite records, ratings, reassignment links, and analytics task data by project.
- Add a project-local agent-ratings migration and schema coverage.
- Exercise duplicate agent IDs, ratings, and token analytics across shared PostgreSQL projects.
Files changed:
.changeset/fn-8957-agent-project-isolation.md | 7 +
docs/multi-project.md | 9 +
.../postgres/agent-project-isolation.pg.test.ts | 207 +++++++++++++++++++++
.../src/__tests__/postgres/schema-applier.test.ts | 13 +-
packages/core/src/agents/agent-store.ts | 52 +++---
.../core/src/async-stores/async-agent-store.ts | 118 ++++++++++--
packages/core/src/board/team-analytics.ts | 20 +-
...0054_fn_8957_agent_rating_project_isolation.sql | 32 ++++
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 6 +-
packages/core/src/task-store/task-artifacts-ops.ts | 19 +-
11 files changed, 443 insertions(+), 53 deletions(-)
Fusion-Task-Id: FN-8957
Fusion-Task-Lineage: 02cb3f13-e5d1-4cea-8afb-72bcd9fae890
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 03:32:16 -07:00
gsxdsm
8f6190910d
FN-8971: add mission blocked-status clearing tool
...
Add an operator-only CLI tool for repairing stale mission blocked badges.
- Register and document fn_mission_clear_blocked with PostgreSQL and status-error handling.
- Withhold the repair action from agent principals and deny it in readonly workflow steps.
- Classify the tool consistently across engine permission gates and add coverage.
- Add a minor CLI changeset for the new operator capability.
Files changed:
.changeset/fn-8971-mission-clear-blocked-tool.md | 7 +++
docs/missions.md | 7 ++-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 9 ++++
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../__tests__/extension-permission-gates.test.ts | 26 ++++++++++
packages/cli/src/__tests__/extension.test.ts | 56 +++++++++++++++++++++-
packages/cli/src/extension.ts | 54 +++++++++++++++++++++
.../src/__tests__/agent-mission-tools.test.ts | 5 +-
.../src/__tests__/gating-classifications.test.ts | 8 ++++
.../workflow-step-readonly-allowlist.test.ts | 5 +-
.../engine/src/execution/gating-classifications.ts | 7 +++
12 files changed, 182 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8971
Fusion-Task-Lineage: 650c13b3-c6c4-4dc5-a0b5-9c71d3b94fc5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 01:45:08 -07:00
gsxdsm
7ddcf7e2a6
FN-8979: remove legacy mission resume blockers
...
Retire the deprecated v0 mission-resume blocker payload in favor of canonical descriptors.
- Remove legacy blocker types, conversions, exports, and HTTP payload mirrors.
- Deduplicate canonical blocker descriptors and update clients, tests, and documentation.
- Add a major changeset for the breaking API removal.
Files changed:
.changeset/fn-8979-removal.md | 7 +++++
docs/missions.md | 4 +--
.../suite-only-flakes-observed-register.md | 14 +++++++++
.../src/__tests__/mission-blocked-clear.test.ts | 23 ++++++++++++++-
.../core/src/__tests__/mission-blockers.test.ts | 26 +++++++++++------
.../__tests__/postgres/mission-store.pg.test.ts | 5 +---
.../core/src/async-stores/async-mission-store.ts | 7 +----
packages/core/src/index.gate.ts | 3 +-
packages/core/src/index.ts | 3 +-
packages/core/src/missions/mission-blockers.ts | 34 +++++++++++++---------
packages/core/src/missions/mission-types.ts | 9 ++----
packages/core/src/types.ts | 2 +-
packages/dashboard/app/api/missions/missions.ts | 25 +++++-----------
.../MissionManager.blocked-repair.test.tsx | 17 +++++++----
.../MissionManager.resume-conflict.test.tsx | 9 ++++--
.../src/__tests__/mission-resume-conflict.test.ts | 11 ++++---
packages/dashboard/src/mission-routes.ts | 10 +++----
17 files changed, 127 insertions(+), 82 deletions(-)
Fusion-Task-Id: FN-8979
Fusion-Task-Lineage: 2a0dd0b6-43ca-44ad-b992-79f4ef8eda67
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 01:30:04 -07:00
gsxdsm
eacd6687bc
FN-8961: add computer-use skill and version-matched guide
...
Ship the computer-use skill across bundled clients and surface its matching guide through the CLI.
- add the computer-use skill, computer command descriptor, and `fn skills get computer-use` guide
- reconcile all shipped Claude skills at project and startup entry points
- cover both skills' reconciliation outcomes and every required call site
Files changed:
.changeset/fn-8961-computer-use-skill.md | 7 +
docs/cli-reference.md | 6 +-
docs/computer-use.md | 8 +
packages/cli/skill/computer-use/SKILL.md | 31 +++
packages/cli/src/__tests__/package-config.test.ts | 20 ++
packages/cli/src/bin.ts | 14 +-
.../__tests__/claude-skills-callsites.test.ts | 64 ++++++
.../src/commands/__tests__/claude-skills.test.ts | 221 ++++++++-------------
.../__tests__/computer-surface-descriptor.test.ts | 108 ++++++++++
.../commands/__tests__/computer-use-guide.test.ts | 36 ++++
.../commands/__tests__/computer-use-skill.test.ts | 20 ++
packages/cli/src/commands/__tests__/daemon.test.ts | 36 +++-
.../__tests__/dashboard-claude-skills.test.ts | 19 ++
packages/cli/src/commands/__tests__/init.test.ts | 48 ++++-
.../cli/src/commands/__tests__/project.test.ts | 38 ++++
packages/cli/src/commands/__tests__/serve.test.ts | 36 +++-
.../commands/__tests__/skill-installation.test.ts | 12 ++
.../cli/src/commands/__tests__/skills-get.test.ts | 67 ++++++
packages/cli/src/commands/claude-skills-runner.ts | 55 ++---
packages/cli/src/commands/claude-skills.ts | 47 +++--
packages/cli/src/commands/computer.ts | 6 +-
packages/cli/src/commands/computer/contract.ts | 52 +++++
packages/cli/src/commands/computer/guide.ts | 62 ++++++
packages/cli/src/commands/init.ts | 4 +-
packages/cli/src/commands/skill-installation.ts | 45 +++--
packages/cli/src/commands/skills.ts | 24 +++
26 files changed, 853 insertions(+), 233 deletions(-)
Fusion-Task-Id: FN-8961
Fusion-Task-Lineage: b6baaebb-bf72-4991-8239-eb9bcf9cbcf1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 01:16:59 -07:00
gsxdsm
3eec1338c5
FN-8970: add mission reconcile controls
...
Add a dry-run mission reconciliation control with explicit apply feedback.
- Add the dashboard reconcile API client and exported result type.
- Present preview, apply, empty, and archived reconciliation states in Mission Manager.
- Guard reconcile requests across direct selection and target-mission deep-link changes.
- Cover reconcile interactions, stale requests, and deep-link intent updates.
Files changed:
.changeset/fn-8970-mission-reconcile-control.md | 7 +
docs/missions.md | 6 +
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/api/missions/missions.ts | 31 +++
packages/dashboard/app/components/MissionManager.css | 48 +++++
packages/dashboard/app/components/MissionManager.tsx | 184 +++++++++++++-
packages/dashboard/app/components/__tests__/MissionManager.mobile-css.test.ts | 8 +
packages/dashboard/app/components/__tests__/MissionManager.reconcile.test.tsx | 277 +++++++++++++++++++++
8 files changed, 557 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8970
Fusion-Task-Lineage: 62802129-a7ea-43cb-8068-5ce2c2c21b77
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-11 00:23:10 -07:00
gsxdsm
844512ed3e
FN-8976: prevent concurrent automatic validator runs
...
Prevent automatic validation from running alongside a fresh manual or non-memoized validator.
- Serialize validator admission around a feature-scoped fresh-running check.
- Report feature-versus-fingerprint blocking scope and preserve memoization semantics.
- Add regression coverage, documentation, and a patch changeset.
Files changed:
.changeset/fn-8976-validator-admission.md | 7 ++
docs/missions.md | 4 +-
.../__tests__/postgres/mission-store.pg.test.ts | 110 +++++++++++++++++++--
.../core/src/async-stores/async-mission-store.ts | 61 ++++++++++--
packages/core/src/missions/mission-types.ts | 2 +
.../src/__tests__/mission-execution-loop.test.ts | 10 +-
6 files changed, 171 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-8976
Fusion-Task-Lineage: 61b487e8-5542-4cce-94f7-58d5295fe177
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 22:57:21 -07:00
gsxdsm
918a4c4bfa
FN-8973: add versioned mission resume blockers
...
Expose versioned mission resume blockers across API and UI.
- Add versioned blocker descriptors with fail-closed legacy normalization and v0 compatibility projections.
- Return typed resume-conflict envelopes and render root stop details in Mission Manager.
- Cover descriptor behavior, route conflicts, UI handling, and PostgreSQL persistence.
Files changed:
.changeset/fn-8973-mission-blocker-descriptor.md | 7 ++
docs/missions.md | 2 +-
.../src/__tests__/mission-blocked-clear.test.ts | 18 ++---
.../core/src/__tests__/mission-blockers.test.ts | 43 ++++++++++++
.../__tests__/postgres/mission-store.pg.test.ts | 22 ++++--
.../core/src/async-stores/async-mission-store.ts | 23 +++---
packages/core/src/index.gate.ts | 4 ++
packages/core/src/index.ts | 4 ++
packages/core/src/missions/mission-blockers.ts | 43 ++++++++++++
packages/core/src/missions/mission-types.ts | 81 ++++++++++------------
packages/core/src/types.ts | 4 +-
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/api/missions/missions.ts | 46 +++++++-----
.../dashboard/app/components/MissionManager.tsx | 11 +--
.../MissionManager.blocked-repair.test.tsx | 10 +--
.../MissionManager.resume-conflict.test.tsx | 24 +++++++
.../__tests__/mission-blocked-clear-routes.test.ts | 2 +-
.../src/__tests__/mission-resume-conflict.test.ts | 42 +++++++++++
packages/dashboard/src/mission-routes.ts | 12 +++-
19 files changed, 297 insertions(+), 102 deletions(-)
Fusion-Task-Id: FN-8973
Fusion-Task-Lineage: 5d36c9c9-dc0f-4cb0-bd0c-ad41c8dde5c0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 22:36:01 -07:00
gsxdsm
79206c3f31
FN-8977: unify CLI Vitest mock resolution
...
Route CLI test mocks through dashboard and engine runtime imports.
- Anchor pi-coding-agent resolution to the CLI package instance
- Preserve real session exports while overriding runtime dependencies
- Add a regression test and document cross-package mock scoping
Files changed:
docs/testing.md | 6 ++
.../__tests__/extension-permission-gates.test.ts | 10 ++-
.../vitest-cross-package-mock-scope.test.ts | 75 ++++++++++++++++++++++
packages/cli/vitest.config.ts | 12 ++++
4 files changed, 101 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8977
Fusion-Task-Lineage: a652cdf4-463e-4603-8d71-87db91d0b846
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 22:12:15 -07:00
gsxdsm
9571f73666
FN-8972: preserve blocked mission status during rollups
...
Protect explicitly blocked or archived hierarchy statuses from automatic recomputation.
- Restrict mission and milestone rollups to statuses they own.
- Make asynchronous recomputations transactional and preserve status events.
- Cover guarded rollups in SQLite and PostgreSQL tests.
Files changed:
.../fn-8972-mission-recompute-blocked-guard.md | 7 ++
docs/missions.md | 2 +
.../mission-status-recompute-guard.test.ts | 85 +++++++++++++++++
.../__tests__/postgres/mission-store.pg.test.ts | 105 +++++++++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 67 +++++++++++--
packages/core/src/missions/mission-store.ts | 12 ++-
packages/core/src/missions/mission-types.ts | 21 +++++
7 files changed, 286 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-8972
Fusion-Task-Lineage: 07ede656-dec0-4d3e-b35c-06e0f6304b74
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 22:03:57 -07:00
gsxdsm
1da61f35f7
FN-8960: add macOS computer automation CLI
...
Add a snapshot-backed macOS computer-use surface to the Fusion CLI.
- Register fn computer commands for app state, permission, capability, and UI actions.
- Implement macOS JXA automation with locator replay and persisted snapshot safety checks.
- Document the CLI surface, add contract coverage, and include a release changeset.
Files changed:
.changeset/fn-8960-computer-use-cli.md | 7 +
docs/README.md | 1 +
docs/cli-reference.md | 21 ++
docs/computer-use.md | 156 +++++++++++++
packages/cli/src/bin.ts | 11 +
.../__tests__/computer-adapter-registry.test.ts | 154 ++++++++++++
.../commands/__tests__/computer-commands.test.ts | 71 ++++++
.../commands/__tests__/computer-contract.test.ts | 34 +++
.../__tests__/computer-snapshot-index.test.ts | 87 +++++++
packages/cli/src/commands/computer.ts | 182 +++++++++++++++
.../cli/src/commands/computer/adapter-macos.ts | 211 +++++++++++++++++
.../cli/src/commands/computer/adapter-registry.ts | 42 ++++
.../src/commands/computer/adapter-unsupported.ts | 44 ++++
packages/cli/src/commands/computer/adapter.ts | 97 ++++++++
packages/cli/src/commands/computer/contract.ts | 83 +++++++
packages/cli/src/commands/computer/exec-seam.ts | 61 +++++
.../cli/src/commands/computer/scripts/macos-jxa.ts | 37 +++
.../cli/src/commands/computer/snapshot-store.ts | 257 +++++++++++++++++++++
18 files changed, 1556 insertions(+)
Fusion-Task-Id: FN-8960
Fusion-Task-Lineage: 5870bf69-b751-4879-bf9d-5f5396cc0f55
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 21:56:18 -07:00
gsxdsm
90573e31b0
FN-8963: prevent concurrent mission validation runs
...
Prevent duplicate manual validation runs while preserving recovery from stale validator state.
- Add atomic mission-store claims and release handling for manual validator runs.
- Return a conflict response and disable the validation action while a run is active.
- Cover concurrent claims, API behavior, UI state, and stale-window parity.
Files changed:
.changeset/fn-8963-validate-inflight-guard.md | 7 ++
docs/missions.md | 2 +
.../__tests__/postgres/mission-store.pg.test.ts | 129 +++++++++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 87 ++++++++++++--
packages/core/src/index.ts | 2 +
packages/core/src/missions/mission-store.ts | 69 ++++++++++-
packages/core/src/missions/mission-types.ts | 13 +++
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/api/missions/missions.ts | 11 +-
.../dashboard/app/components/MissionManager.tsx | 15 ++-
.../MissionManager.validate-inflight.test.tsx | 77 ++++++++++++
.../mission-validate-inflight-guard.test.ts | 55 +++++++++
packages/dashboard/src/mission-routes.ts | 32 +---
.../src/__tests__/mission-execution-loop.test.ts | 61 +++++++++-
.../validator-run-stale-window-parity.test.ts | 9 ++
15 files changed, 549 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-8963
Fusion-Task-Lineage: 7e5d0ae4-98ac-4f79-99ca-45fd1450362d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 21:41:47 -07:00
gsxdsm
5dd3031e34
FN-8962: add mission blocked status repair controls
...
Add explicit diagnostics and repair paths for stale mission blocked badges.
- Expose audited core and REST APIs that recompute and clear stale mission blocked status without resuming automation.
- Add mission-manager controls, blocker diagnostics, responsive styling, and operator documentation.
- Cover clear conflicts, persistence, routes, and desktop/mobile UI behavior.
Files changed: .changeset/fn-8962-mission-blocked-clear.md | 7 ++
docs/missions.md | 12 ++-
.../src/__tests__/mission-blocked-clear.test.ts | 40 ++++++++
.../__tests__/postgres/mission-store.pg.test.ts | 71 ++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 90 +++++++++++++++--
packages/core/src/index.gate.ts | 4 +
packages/core/src/index.ts | 5 +-
packages/core/src/missions/mission-types.ts | 62 ++++++++++++
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/api/missions/missions.ts | 29 ++++++
.../dashboard/app/components/MissionManager.css | 6 ++
.../dashboard/app/components/MissionManager.tsx | 90 ++++++++++++++++-
.../MissionManager.blocked-repair.test.tsx | 106 +++++++++++++++++++++
.../__tests__/MissionManager.mobile-css.test.ts | 8 ++
.../__tests__/mission-blocked-clear-routes.test.ts | 71 ++++++++++++++
packages/dashboard/src/mission-routes.ts | 49 ++++++++++
16 files changed, 638 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-8962
Fusion-Task-Lineage: 38cab277-a0c3-4c60-af3e-dd25d2f88dea
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 20:41:11 -07:00
gsxdsm
cef07527f6
FN-8948: reconcile mission state from task ground truth
...
Centralize mission and feature state repair around deterministic task lifecycle evidence.
- Add a reusable mission reconciliation authority with task-move, API, tool, and maintenance callers.
- Repair unambiguous title links while preserving terminal, validation, and audit safeguards.
- Route scheduler moves through the authority and reject duplicate feature-title ownership.
- Expose reconcile controls and document the operator workflow.
Files changed:
.changeset/fn-8948-mission-auto-reconcile.md | 7 +
AGENTS.md | 1 +
docs/missions.md | 8 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 9 +
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../extension-experiment-finalize.test.ts | 2 +
.../__tests__/extension-gitlab-tracking.test.ts | 2 +
.../cli/src/__tests__/extension-web-fetch.test.ts | 2 +
packages/cli/src/extension.ts | 14 +
packages/dashboard/src/mission-routes.ts | 24 +-
.../src/__tests__/agent-mission-tools.test.ts | 2 +-
.../engine/src/__tests__/mission-autopilot.test.ts | 8 +-
.../src/__tests__/mission-state-reconcile.test.ts | 67 +++++
packages/engine/src/agent-tools.ts | 6 +
.../engine/src/execution/gating-classifications.ts | 1 +
packages/engine/src/index.ts | 6 +
packages/engine/src/missions/index.ts | 8 +-
packages/engine/src/missions/mission-autopilot.ts | 106 +------
.../engine/src/missions/mission-feature-sync.ts | 1 +
.../engine/src/missions/mission-state-reconcile.ts | 169 +++++++++++
packages/engine/src/runtimes/in-process-runtime.ts | 4 +-
packages/engine/src/scheduler.ts | 331 +++++----------------
packages/engine/src/util/run-audit.ts | 2 +
24 files changed, 426 insertions(+), 357 deletions(-)
Fusion-Task-Id: FN-8948
Fusion-Task-Lineage: 0fbccef3-eeac-46d2-b3d8-aca679b3657e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 20:32:26 -07:00
gsxdsm
b82f1a41f3
FN-8947: add repairable mission validation controls
...
Add repairable mission-validation badges with clear and re-run flows.
- Persist repair metadata and audit events for mission validation state changes.
- Expose validation repair through dashboard routes, UI controls, engine tools, and CLI capabilities.
- Add database, API, UI, engine, and extension coverage plus operator documentation.
Files changed: .changeset/fn-8947-mission-validation-repair.md | 7 +
docs/missions.md | 15 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 10 +
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../extension-experiment-finalize.test.ts | 2 +
.../__tests__/extension-gitlab-tracking.test.ts | 2 +
.../cli/src/__tests__/extension-web-fetch.test.ts | 2 +
packages/cli/src/__tests__/extension.test.ts | 24 +++
packages/cli/src/extension.ts | 40 ++++
.../mission-status-event-metadata.test.ts | 23 +++
.../postgres/mission-validation-repair.pg.test.ts | 187 ++++++++++++++++++
.../core/src/async-stores/async-mission-store.ts | 216 ++++++++++++++++++---
packages/core/src/index.gate.ts | 5 +
packages/core/src/index.ts | 5 +-
packages/core/src/missions/mission-types.ts | 49 +++++
packages/core/src/types.ts | 7 +
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/api/missions/missions.ts | 13 ++
.../dashboard/app/components/MissionManager.css | 26 ++-
.../dashboard/app/components/MissionManager.tsx | 207 +++++++++++++++++---
.../__tests__/MissionManager.mobile-css.test.ts | 8 +
.../MissionManager.validation-repair.test.tsx | 83 ++++++++
.../__tests__/mission-task-prefix-routes.test.ts | 162 +++++++++++++++-
packages/dashboard/src/mission-routes.ts | 104 +++++++++-
.../src/__tests__/agent-mission-tools.test.ts | 119 +++++++++++-
.../__tests__/mission-feature-sync-lanes.test.ts | 59 +++++-
.../workflow-step-readonly-allowlist.test.ts | 1 +
packages/engine/src/agent-tools.ts | 36 ++++
.../engine/src/execution/gating-classifications.ts | 1 +
packages/engine/src/index.ts | 1 +
.../engine/src/missions/mission-feature-sync.ts | 79 ++++++++
32 files changed, 1430 insertions(+), 67 deletions(-)
Fusion-Task-Id: FN-8947
Fusion-Task-Lineage: b93e5ab6-021c-4d32-bffb-f89f4c3894bc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 19:36:31 -07:00
gsxdsm
4c9f14e21a
FN-8965: restore explicit intake owner routing
...
Restore deliberate engineer and authorized override assignments while preserving executor-only automatic routing.
- Accept eligible engineers as explicit intake owners through normal and reserved-ID task creation.
- Honor metadata-authorized role overrides without weakening runtime, state, or assignment-policy gates.
- Add resolver and PostgreSQL coverage plus release and architecture documentation.
Files changed:
.../fn-8965-intake-owner-explicit-routing.md | 7 +++
docs/architecture.md | 2 +-
.../postgres/create-task-reserved-id.pg.test.ts | 29 ++++++++++++
.../__tests__/task-intake-owner-resolver.test.ts | 51 ++++++++++++++++++++--
packages/core/src/task-store/task-creation.ts | 7 +++
.../core/src/tasks/task-intake-owner-resolver.ts | 38 ++++++++++++----
6 files changed, 121 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-8965
Fusion-Task-Lineage: 4ecf7fc8-e966-49c8-abf6-e50ae26d8224
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 19:31:21 -07:00
ischindl
f775039f5b
feat(engine): add typed delivery-pipeline run-audit catalogue ( #3410 )
...
## What
Adds a typed, queryable catalogue for engine run-audit events as the
first step of the delivery-pipeline reliability & observability effort.
- **New module** `packages/engine/src/run-audit/run-audit-catalogue.ts`
— a typed registry describing run-audit event kinds (scheduler,
self-healing, merger, worktree, symbol-lock, …) so pipeline
observability can ingest and reason about them consistently.
- **Parity test** `run-audit-catalogue.test.ts` — asserts the catalogue
matches the emitted run-audit event space.
- **Docs** `docs/run-audit.md` + index pointer.
## Why
Run-audit events are currently emitted ad-hoc without a typed contract.
A catalogue gives:
- a single source of truth for event kinds/names,
- a parity guard so any new or renamed event is caught,
- a foundation for delivery-pipeline reliability dashboards.
## Verification
- `@fusion/engine` `tsc` build → **PASS**
- `vitest run run-audit-catalogue.test.ts` → **3 tests passed**
- No production behavior change outside the new module.
## Scope
New isolated module + its test + docs. No changesets/release artifacts.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Added a run-audit catalogue covering delivery-pipeline finalization,
self-healing reconciliation, and durable-agent error events.
* Documented recorded outcomes, emission conditions, audit-store
querying, and event catalogue maintenance.
* Added a documentation index entry linking to the new catalogue.
* **Tests**
* Added validation to ensure documented audit events remain complete,
consistently formatted, and synchronized with the supported event
catalogue.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-10 15:19:43 -10:00
gsxdsm
d749a11a5b
FN-8923: document orphan merge durable-write fences
...
Record the bounded cancellation frontier for orphaned AI merge bodies.
- Add AST-derived durable-writer inventory and drift guard for the pinned merge closure.
- Characterize orphan and successor merge-lane writes with production-path fixtures.
- Document unresolved follow-ups and link the fence from the architecture guide.
Files changed:
docs/architecture.md | 2 +-
.../merge-orphan-body-durable-write-fences.md | 92 +
.../__tests__/_merge-durable-write-callsites.ts | 938 ++
.../merge-orphan-durable-write-inventory.json | 9965 ++++++++++++++++++++
.../merge-orphan-body-durable-writes.test.ts | 348 +
...ge-orphan-durable-write-inventory-drift.test.ts | 56 +
packages/engine/src/merge/merger-ai.ts | 6 +
packages/engine/src/project-engine.ts | 6 +
8 files changed, 11412 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8923
Fusion-Task-Lineage: 5b2d278c-1626-439a-affd-077f2de2aef1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 17:55:46 -07:00
gsxdsm
a839c61929
FN-8926: expose graph and recall through MCP
...
Expose Fusion knowledge graph and durable recall through a built-in MCP transport.
- Add the reserved fusion-memory server with graph and recall MCP tools.
- Resolve built-in availability and enable/disable tombstones across configuration and UI.
- Add CLI transport, documentation, release metadata, and lane coverage tests.
Files changed:
.changeset/fn-8926-memory-mcp-server.md | 7 +
docs/cli-reference.md | 4 +
docs/mcp.md | 10 ++
packages/cli/src/bin.ts | 6 +
.../__tests__/mcp-memory-server-spawn.test.ts | 79 ++++++++++
.../commands/__tests__/mcp-memory-server.test.ts | 83 +++++++++++
packages/cli/src/commands/__tests__/mcp.test.ts | 27 +++-
packages/cli/src/commands/mcp-memory-server.ts | 104 +++++++++++++
packages/cli/src/commands/mcp.ts | 64 ++++++--
packages/core/package.json | 10 ++
.../core/src/__tests__/mcp-builtin-servers.test.ts | 17 +++
packages/core/src/__tests__/mcp-config.test.ts | 12 ++
packages/core/src/config/mcp-builtin-descriptor.ts | 16 ++
packages/core/src/config/mcp-builtin-servers.ts | 18 +++
packages/core/src/config/mcp-config.ts | 40 +++--
packages/core/src/config/mcp-discovery.ts | 3 +-
packages/core/src/index.ts | 6 +
packages/core/src/memory/index.ts | 1 +
.../mcp/__tests__/memory-mcp-handler.test.ts | 36 +++++
.../mcp/__tests__/memory-mcp-serialization.test.ts | 23 +++
packages/core/src/memory/mcp/index.ts | 4 +
.../core/src/memory/mcp/memory-mcp-backends.ts | 39 +++++
packages/core/src/memory/mcp/memory-mcp-handler.ts | 54 +++++++
.../src/memory/mcp/memory-mcp-serialization.ts | 48 ++++++
packages/core/src/memory/mcp/memory-mcp-tools.ts | 64 ++++++++
packages/core/src/types.ts | 10 ++
.../settings/sections/GlobalMcpSection.tsx | 14 +-
.../settings/sections/McpServersCard.tsx | 67 +++++++--
.../settings/sections/ProjectMcpSection.tsx | 15 +-
.../__tests__/McpServersCard.builtin.test.tsx | 45 ++++++
.../dashboard/src/__tests__/chat-manager.test.ts | 24 +++
.../register-config-mcp-pi-settings-routes.ts | 20 ++-
packages/dashboard/vitest.config.ts | 2 +
.../__tests__/mcp-builtin-lane-coverage.test.ts | 163 +++++++++++++++++++++
packages/engine/src/mcp/mcp-resolution.ts | 10 +-
packages/engine/vitest.config.ts | 2 +
36 files changed, 1097 insertions(+), 50 deletions(-)
Fusion-Task-Id: FN-8926
Fusion-Task-Lineage: b2861491-33da-4b05-b9f8-a7c1448c1c8c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 17:50:27 -07:00
gsxdsm
3143f9536f
FN-8908: auto-recover terminal task failures
...
Recover generic terminal task failures through a bounded, durable retry budget before escalating them to operators.
- add fenced task-store recovery claims, retries, budget resets, and audit events
- defer terminal-failure notifications until recovery is exhausted while preserving a single escalation
- expose operator retry budget reset and cover recovery lifecycle behavior
Files changed:
.../fn-8908-terminal-failure-auto-recovery.md | 7 +
AGENTS.md | 1 +
docs/agents.md | 2 +
docs/architecture.md | 2 +
packages/cli/src/commands/task.ts | 2 +
packages/cli/src/extension.ts | 2 +
...terminal-failure-auto-recovery-store.pg.test.ts | 108 +++++++++
.../terminal-failure-auto-recovery.test.ts | 60 +++++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/store.ts | 179 ++++++++++++++-
.../core/src/task-store/archive-lifecycle-2.ts | 15 ++
packages/core/src/task-store/moves.ts | 48 +++-
packages/core/src/task-store/persistence.ts | 18 +-
packages/core/src/task-store/project-store-ops.ts | 4 +-
.../src/task-store/workflow-task-create-ops.ts | 4 +-
packages/core/src/tasks/index.ts | 1 +
.../src/tasks/terminal-failure-auto-recovery.ts | 114 ++++++++++
packages/core/src/types/task/task-core.ts | 24 ++
.../src/routes/register-task-workflow-routes.ts | 2 +
...-healing-terminal-failure-auto-recovery.test.ts | 199 ++++++++++++++++
.../__tests__/notification-service.test.ts | 86 ++++++-
.../__tests__/task-wedge-notification.test.ts | 2 +-
.../src/notification/notification-service.ts | 103 +++++++--
.../src/notification/task-wedge-notification.ts | 30 ++-
packages/engine/src/self-healing.ts | 251 ++++++++++++++++++++-
packages/engine/src/util/run-audit.ts | 7 +
27 files changed, 1240 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-8908
Fusion-Task-Lineage: 99e96b16-0306-41f1-87da-8623d69735f7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 16:53:51 -07:00
gsxdsm
67cdb33a92
chore: gitignore the knowledge-graph build artifact
...
`.fusion-knowledge/` is `fn knowledge-graph build` output (FN-8920 memory epic):
~85MB of generated JSON, rewritten on every build. edges.json alone is 43MB,
past GitHub's 50MB warning threshold.
It is deterministic and fully regenerable from source — the manifest's SHA-256
fingerprints drive incremental rebuilds — so tracking it preserves nothing a
rebuild cannot reproduce, while adding irreversible, compounding history bloat to
every clone and CI checkout.
docs/knowledge-graph.md previously left this to the operator ("it is not
ignored"); that guidance is updated here so the doc and .gitignore agree. An
operator who explicitly wants a snapshot in history can still force one with
`git add -f .fusion-knowledge/graph`.
Nothing under the path was ever tracked, so no index purge is needed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-10 13:49:37 -07:00