gsxdsm
f2d68939be
FN-9138: guard same-millisecond approval audit ID collisions
...
Validate that lifecycle guards prevent duplicate deterministic approval audit IDs during concurrent writes.
- Add database-free coverage for losing and successful guarded approval transitions.
- Add PostgreSQL overlap probes for decisions, completions, and physical ID uniqueness.
- Document the deterministic audit identity and lifecycle ordering guarantees.
Files changed:
docs/storage.md | 2 +-
.../approval-request-audit-id-race.test.ts | 115 ++++++++++++++++++
.../postgres/approval-request-lifecycle.pg.test.ts | 132 ++++++++++++++++++++-
.../async-stores/async-approval-request-store.ts | 10 ++
4 files changed, 253 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-9138
Fusion-Task-Lineage: ccfc084f-2cd8-4549-8a42-242167139b8d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 17:07:40 -07:00
gsxdsm
fca8dd9841
FN-9137: Define approval request ordering semantics
...
Clarify and verify deterministic newest-first approval request listing across storage paths.
- Document created-at descending order with request-ID descending tie resolution.
- Align dedupe ordering commentary across async and legacy SQL stores.
- Add PostgreSQL coverage for ties, pagination, filters, project binding, and audit isolation.
Files changed:
.../approval-request-list-ordering.pg.test.ts | 184 +++++++++++++++++++++
packages/core/src/agents/approval-request-store.ts | 11 ++
.../async-stores/async-approval-request-store.ts | 9 +-
3 files changed, 202 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-9137
Fusion-Task-Lineage: b87867aa-fdf3-49bf-a037-7d74163a093d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 16:19:42 -07:00
gsxdsm
2160f7500c
FN-9132: order approval audits by lifecycle on timestamp ties
...
Ensure approval audit histories preserve lifecycle chronology when events share a timestamp.
- rank tied audit events by the declared approval lifecycle before audit ID
- cover tied and distinct timestamps through module and public store surfaces
- document the diagnosed satellite assertion and add a patch changeset
Files changed:
.changeset/fn-9132-approval-audit-order.md | 7 +++
.../suite-only-flakes-observed-register.md | 27 +++++++++++
...oval-request-audit-project-isolation.pg.test.ts | 2 +-
.../postgres/approval-request-lifecycle.pg.test.ts | 53 +++++++++++++++++++++-
.../async-stores/async-approval-request-store.ts | 17 +++++--
5 files changed, 100 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-9132
Fusion-Task-Lineage: 2f49e896-69bf-48c8-b813-4b1b2b72fc65
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-16 16:04:18 -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
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
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
Phil Larson
6cc15fd73d
fix(ci): restore clean-main CLI and lifecycle gates ( #3420 )
...
## Summary
- Complete the isolated `@fusion/core` mock used by the
experiment-finalize extension suite
- Classify three intentional physical/synthetic lifecycle literals
introduced on current main
- Re-record the strict lifecycle census baseline with zero unexamined
guards
## Test plan
- `pnpm --filter @runfusion/fusion exec vitest run
src/__tests__/extension-experiment-finalize.test.ts --silent=passed-only
--reporter=dot`
- `pnpm --filter @fusion/core exec vitest run
src/__tests__/task-intake-owner-resolver.test.ts --silent=passed-only
--reporter=dot`
- `pnpm --filter @fusion/engine exec vitest run --project engine-default
src/__tests__/mission-feature-sync-lanes.test.ts --silent=passed-only
--reporter=dot`
- `pnpm check:lifecycle-columns`
- `node scripts/check-mock-completeness.mjs`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved mission reconciliation previews for task links, specification
alignment, and lifecycle updates.
- Prevented stale or superseded validation runs from overwriting current
feature status or ownership.
- Improved blocked-feature diagnostics and archived-task handling across
workflow configurations.
- **Documentation**
- Clarified validation, assignment checks, and mission synchronization
behavior.
- **Tests**
- Expanded coverage for reconciliation previews and validator ownership
scenarios.
- **Chores**
- Updated lifecycle baseline data for known archived-task cases.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-11 10:57:36 -10: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
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
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
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
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
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
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
00ddafd5fe
FN-8845: persist deterministic spec alignment
...
Persist approved-plan drift alignment on linked mission features.
- Store spec alignment across PostgreSQL and SQLite mission feature projections
- Reconcile and render durable alignment instead of browser-side task joins
- Preserve migration identities and cover drift persistence regressions
Files changed:
docs/architecture.md | 2 +
docs/missions.md | 2 +-
.../core/src/__tests__/planner/spec-lock.test.ts | 1 +
.../src/__tests__/postgres/schema-applier.test.ts | 9 ++++-
.../async-stores/async-mission-store-queries.ts | 5 +++
packages/core/src/missions/mission-store.ts | 9 ++++-
packages/core/src/missions/mission-types.ts | 10 +++++
packages/core/src/planner/spec-lock.ts | 7 +++-
.../0053_mission_feature_spec_alignment.sql | 3 ++
packages/core/src/postgres/schema-applier.ts | 13 +++++-
packages/core/src/postgres/schema/project.ts | 2 +
packages/dashboard/app/api/missions/missions.ts | 2 +
.../dashboard/app/components/MissionManager.tsx | 40 ++++++------------
packages/dashboard/app/components/mission-types.ts | 2 +
.../src/__tests__/plan-approval-status.pg.test.ts | 4 +-
.../src/__tests__/mission-feature-sync.test.ts | 37 ++++++++++++++++-
.../src/__tests__/spec-drift-reconciler.test.ts | 14 +++++++
packages/engine/src/missions/mission-autopilot.ts | 17 +++++---
.../engine/src/missions/mission-feature-sync.ts | 47 +++++++++++++++++++++-
packages/engine/src/project-engine.ts | 3 +-
packages/engine/src/scheduler.ts | 40 +++++++++++-------
packages/engine/src/spec-drift-reconciler.ts | 5 +++
22 files changed, 215 insertions(+), 59 deletions(-)
Fusion-Task-Id: FN-8845
Fusion-Task-Lineage: d4a30472-f1c3-41ba-a61b-3f2be1ad32ab
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 11:50:56 -07:00
gsxdsm
0fc6f3d849
FN-8946: enable attributed agent mission status updates
...
Enable authorized agents to update feature and mission statuses with transactional, attributed audit events.
- Add mission and feature status tools to the Fusion extension and engine allowlists.
- Record bounded actor, reason, and hierarchy metadata for status transitions across every writer.
- Guard linked feature transitions and document the agent-facing workflow.
Files changed:
.changeset/fn-8946-mission-status-writes.md | 7 +
docs/missions.md | 7 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 20 +++
.../skill/fusion/references/fusion-capabilities.md | 2 +
packages/cli/src/__tests__/extension.test.ts | 46 ++++++
packages/cli/src/extension.ts | 27 +++
.../mission-status-event-metadata.test.ts | 50 ++++++
.../__tests__/postgres/mission-store.pg.test.ts | 160 +++++++++++++++++-
.../core/src/async-stores/async-mission-store.ts | 182 +++++++++++++++------
packages/core/src/index.ts | 5 +
packages/core/src/missions/mission-store.ts | 7 +-
packages/core/src/missions/mission-types.ts | 99 +++++++++--
.../src/__tests__/chat-toolset-permissions.test.ts | 24 +++
packages/dashboard/src/mission-routes.ts | 3 +-
.../src/__tests__/agent-mission-tools.test.ts | 42 ++++-
.../src/__tests__/heartbeat-executor.test.ts | 4 +-
.../workflow-step-readonly-allowlist.test.ts | 2 +
packages/engine/src/agent-tools.ts | 18 ++
.../engine/src/execution/gating-classifications.ts | 2 +
20 files changed, 635 insertions(+), 74 deletions(-)
Fusion-Task-Id: FN-8946
Fusion-Task-Lineage: 473cc0e0-e632-48b3-ac84-adaaeb81db4b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-10 07:30:42 -07:00
gsxdsm
fb125b6f5e
FN-8852: exclude heartbeat writes from revision history
...
Prevent liveness bookkeeping from evicting real settings changes while making revision history pageable.
- Exclude engineLastActiveAt from project revision snapshots and preserve its live value during rollback.
- Add validated limit/offset paging with hasMore to configuration revision stores and the API.
- Cover heartbeat filtering, rollback compatibility, and paging contracts; document the behavior and add a patch changeset.
Files changed:
.changeset/fn-8852-config-revision-heartbeat.md | 7 +
docs/settings-reference.md | 4 +
docs/storage.md | 6 +
.../__tests__/configuration-revision-store.test.ts | 178 ++++++++++++++++++++-
.../configuration-revision-heartbeat.pg.test.ts | 118 ++++++++++++++
.../async-configuration-revision-store.ts | 46 ++++--
.../src/config/configuration-revision-store.ts | 9 +-
packages/core/src/config/global-settings.ts | 2 +-
packages/core/src/config/settings-schema.ts | 20 +++
packages/core/src/index.gate.ts | 2 +-
packages/core/src/index.ts | 2 +-
packages/core/src/task-store/task-mutation-ops.ts | 24 ++-
packages/core/src/types.ts | 6 +
packages/core/src/types/settings/settings-scope.ts | 3 +
.../register-org-portability-routes.test.ts | 19 ++-
.../src/routes/register-org-portability-routes.ts | 18 ++-
16 files changed, 437 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-8852
Fusion-Task-Lineage: 46d5ac9d-d2c0-4294-a5f7-d228fcb341c9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-08 23:16:01 -07:00
gsxdsm
7b010ec95f
FN-8824: enforce serial mission slice advancement
...
Keep mission autopilot progression limited to one active, milestone-ordered slice.
- Add atomic store-level admission for the next serially eligible slice.
- Reconcile completed active slices before advancing and route scheduler activation through the shared guard.
- Cover duplicate completion signals, recovery, PostgreSQL, and API behavior; document and release the fix.
Files changed:
.changeset/fn-8824-mission-slice-advancement.md | 7 +
docs/missions.md | 10 +-
.../mission-store.sync-loop-transition.test.ts | 43 ++++++
.../postgres/mission-autopilot.pg.test.ts | 25 ++++
.../core/src/async-stores/async-mission-store.ts | 48 ++++++-
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/missions/mission-store.ts | 37 ++++-
packages/core/src/missions/mission-types.ts | 35 +++++
packages/dashboard/src/mission-routes.ts | 9 +-
.../__tests__/mission-autopilot-end-to-end.test.ts | 95 ++++++++++--
.../engine/src/__tests__/mission-autopilot.test.ts | 22 +++
.../engine/src/__tests__/mission-scheduler.test.ts | 159 +++++++++++----------
packages/engine/src/missions/mission-autopilot.ts | 50 +++----
packages/engine/src/scheduler.ts | 42 +-----
15 files changed, 432 insertions(+), 152 deletions(-)
Fusion-Task-Id: FN-8824
Fusion-Task-Lineage: 22638d56-a51b-424c-aa07-871f544fb7cc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-07 20:56:52 -07:00
gsxdsm
eaadd153b1
FN-8764: route workflow stages through durable role agents
...
Route workflow stages through task-scoped durable role agents.
- Persist normalized multi-role agents and workflow principal fences with migrations.
- Route planning, execution, review, and merge workflow nodes through authorized permanent principals with capacity leasing and recovery.
- Retire ephemeral workflow-stage workers and expose role-aware agent configuration, workflow editing, and documentation.
- Preserve lifecycle-column ratchet coverage by centralizing workflow-role classification rather than adding test exemptions.
Files changed:
.changeset/fn-8764-workflow-role-agents.md | 7 +
CONCEPTS.md | 3 +
docs/agents.md | 6 +
docs/architecture.md | 6 +
docs/cli-reference.md | 2 +
docs/dashboard-guide.md | 4 +
docs/settings-reference.md | 6 +-
docs/storage.md | 2 +
docs/workflow-steps.md | 6 +
.../src/__tests__/extension-agent-update.test.ts | 11 +-
packages/cli/src/__tests__/extension.test.ts | 18 +-
packages/cli/src/extension.ts | 41 +-
.../core/src/__tests__/agent-permissions.test.ts | 12 +
.../core/src/__tests__/agent-role-policy.test.ts | 7 +
packages/core/src/__tests__/agent-roles.test.ts | 21 +
.../legacy-column-collection-gating-ledger.test.ts | 19 +-
.../src/__tests__/postgres/schema-applier.test.ts | 16 +-
.../core/src/__tests__/settings-parity.test.ts | 9 +-
.../workflow-agent-node-classification.test.ts | 25 +
.../src/__tests__/workflow-work-item-cas.test.ts | 38 ++
packages/core/src/agents/agent-permissions.ts | 11 +-
packages/core/src/agents/agent-role-policy.ts | 39 +-
packages/core/src/agents/agent-store.ts | 190 ++++++-
.../core/src/async-stores/async-agent-store.ts | 6 +
packages/core/src/config/settings-schema.ts | 5 +-
packages/core/src/index.gate.ts | 2 +-
packages/core/src/index.ts | 7 +-
.../0045_fn_8764_multi_role_workflow_agents.sql | 20 +
.../0046_fn_8764_workflow_principal_fence.sql | 49 ++
packages/core/src/postgres/schema-applier.ts | 22 +-
packages/core/src/postgres/schema/project.ts | 21 +
packages/core/src/store.ts | 2 +-
.../task-store/async/async-workflow-workitems.ts | 49 +-
packages/core/src/task-store/row-types.ts | 4 +
packages/core/src/task-store/settings-helpers.ts | 16 +-
packages/core/src/task-store/settings-ops-2.ts | 13 +-
packages/core/src/task-store/settings-ops.ts | 16 +-
packages/core/src/task-store/task-row-mappers.ts | 4 +
.../src/task-store/workflow-task-create-ops.ts | 6 +-
.../src/task-store/workflow-workitems-ops-2.ts | 25 +-
packages/core/src/types.ts | 2 +
packages/core/src/types/agents/agents.ts | 45 +-
packages/core/src/types/merge/merge-queue.ts | 17 +
packages/core/src/types/settings/settings-scope.ts | 9 +-
packages/core/src/workflows/workflow-ir-types.ts | 58 +++
packages/core/src/workflows/workflow-ir.ts | 19 +
.../dashboard/app/components/AgentDetailView.css | 14 +
.../dashboard/app/components/AgentDetailView.tsx | 34 +-
.../dashboard/app/components/NewAgentDialog.tsx | 28 +-
.../app/components/WorkflowNodeEditor.tsx | 19 +
.../__tests__/AgentDetailView.core.test.tsx | 4 +-
.../app/components/__tests__/AgentsView.test.tsx | 2 +-
.../__tests__/SettingsModal.general.test.tsx | 86 ---
.../__tests__/SettingsModal.test-harness.tsx | 1 -
.../components/agent-presets/agentCreatePayload.ts | 9 +-
.../app/components/settings/section-keys.ts | 1 -
.../settings/sections/GeneralSection.tsx | 8 -
.../settings-default-descriptions.test.tsx | 1 -
.../app/components/workflow-flow-mapping.ts | 7 +
packages/dashboard/src/mission-routes.ts | 26 +-
.../src/routes/__tests__/agent-core-routes.test.ts | 23 +-
.../src/routes/register-agent-core-routes.ts | 42 +-
...gister-agent-import-export-generation-routes.ts | 21 -
.../engine/src/__tests__/agent-action-gate.test.ts | 33 ++
.../engine/src/__tests__/agent-assignment.test.ts | 370 -------------
.../src/__tests__/ephemeral-worker-manager.test.ts | 575 ---------------------
...ecutor-ephemeral-disabled-dispatch-gate.test.ts | 223 --------
.../__tests__/executor-fast-mode-workflows.test.ts | 58 +++
.../engine/src/__tests__/log-severity-manifest.ts | 1 -
.../__tests__/log-severity-spam-contract.test.ts | 3 -
.../resolved-read-with-literal-filter.test.ts | 4 -
.../__tests__/scheduler-ephemeral-toggle.test.ts | 175 -------
.../__tests__/scheduler-workflow-cutover.test.ts | 19 -
.../src/__tests__/workflow-agent-capacity.test.ts | 47 ++
.../src/__tests__/workflow-agent-routing.test.ts | 137 +++++
.../src/__tests__/workflow-graph-foreach.test.ts | 15 +
.../__tests__/workflow-graph-task-runner.test.ts | 73 +++
.../src/__tests__/workflow-task-runtime.test.ts | 95 ++++
.../src/__tests__/workflow-work-scheduler.test.ts | 20 +
packages/engine/src/agents/agent-action-gate.ts | 64 +++
packages/engine/src/agents/agent-assignment.ts | 135 -----
packages/engine/src/agents/agent-reflection.ts | 1 +
.../engine/src/agents/ephemeral-worker-manager.ts | 429 ---------------
.../engine/src/agents/workflow-agent-capacity.ts | 113 ++++
.../engine/src/agents/workflow-agent-router.ts | 185 +++++++
packages/engine/src/execution/reviewer.ts | 26 +-
packages/engine/src/executor.ts | 501 +++++++++++++++---
packages/engine/src/index.ts | 1 -
packages/engine/src/merger.ts | 20 +-
packages/engine/src/pi.ts | 11 +
packages/engine/src/runtimes/in-process-runtime.ts | 37 --
packages/engine/src/scheduler.ts | 114 +---
packages/engine/src/triage.ts | 196 ++++++-
.../src/workflows/workflow-graph-executor.ts | 109 +++-
.../engine/src/workflows/workflow-graph-loop.ts | 13 +-
.../src/workflows/workflow-graph-task-runner.ts | 12 +
.../engine/src/workflows/workflow-task-runtime.ts | 125 ++++-
.../src/workflows/workflow-work-scheduler.ts | 8 +-
98 files changed, 2722 insertions(+), 2468 deletions(-)
Fusion-Task-Id: FN-8764
Fusion-Task-Lineage: 5527fccb-342d-46f6-8108-bbf89142efec
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-07 01:36:34 -07:00
gsxdsm
4f4aef7173
FN-8811: preserve explicit shared-member review holds
...
Keep shared branch-group integration moving unless an operator explicitly holds the task.
- Track auto-merge provenance and distinguish explicit user holds from inherited mission policy.
- Preserve manual holds across workflow recovery, merge coordination, API updates, and dashboard status.
- Add regression coverage, document the behavior, and quarantine the observed flaky test.
Files changed:
.changeset/fn-8811-shared-member-review-hold.md | 7 ++
docs/architecture.md | 4 +-
docs/dashboard-guide.md | 1 +
.../mission-store.sync-auto-merge.test.ts | 7 +-
.../__tests__/postgres/mission-store.pg.test.ts | 1 +
.../__tests__/postgres/store-movement.pg.test.ts | 20 ++++
packages/core/src/__tests__/task-merge.test.ts | 14 +++
.../core/src/async-stores/async-mission-store.ts | 6 +-
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/merge/task-merge.ts | 20 +++-
packages/core/src/missions/mission-store.ts | 6 +-
packages/core/src/task-store/serialization.ts | 2 +-
packages/core/src/task-store/task-creation.ts | 8 +-
packages/core/src/types/task/task-core.ts | 12 ++-
.../components/__tests__/TaskDetailModal.test.tsx | 63 ++++++++++++
.../dashboard/src/__tests__/routes-tasks.test.ts | 47 +++++++++
.../src/routes/register-task-workflow-routes.ts | 15 ++-
...cutor-live-branch-group-auto-merge-hold.test.ts | 87 +++++++++++++++++
.../src/__tests__/group-merge-coordinator.test.ts | 99 ++++++++++++++++++-
.../engine/src/__tests__/project-engine.test.ts | 57 ++++++++++-
.../self-healing-paused-abort-recovery.test.ts | 52 +++++++++-
packages/engine/src/__tests__/self-healing.test.ts | 106 +++++++++++++++++++++
.../workflow-graph-executor-handlers.test.ts | 23 +++++
packages/engine/src/executor.ts | 37 ++++++-
packages/engine/src/project-engine.ts | 25 +++--
packages/engine/src/self-healing.ts | 71 ++++++++++++--
.../src/workflow-node-runners/merge-runner.ts | 24 ++++-
.../src/workflows/workflow-graph-executor.ts | 4 +
.../src/workflows/workflow-graph-task-runner.ts | 6 ++
.../engine/src/workflows/workflow-node-handlers.ts | 5 +-
packages/engine/vitest.config.ts | 11 ++-
scripts/lib/test-quarantine.json | 5 +
33 files changed, 789 insertions(+), 58 deletions(-)
Fusion-Task-Id: FN-8811
Fusion-Task-Lineage: 5c1609bf-3132-4988-a254-fedec6c0e33d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-05 17:39:15 -07:00
gsxdsm
b9c5df04af
FN-8791: prevent NUL-containing chat checkpoints from crashing
...
Prevent malformed tool output from breaking chat checkpoint persistence.
- Sanitize NUL characters at chat JSONB persistence boundaries without mutating clean values.
- Observe rejected best-effort checkpoint writes so streaming sessions do not emit unhandled rejections.
- Add PostgreSQL, dashboard, and sanitizer regression coverage with operator-facing release notes.
Files changed:
.changeset/fn-8791-chat-nul-checkpoint.md | 7 ++
.../reliability/chat-jsonb-nul-sanitization.md | 44 +++++++++++
packages/core/src/__tests__/nul-sanitize.test.ts | 21 ++++-
.../chat-store-content-search-edit.pg.test.ts | 91 +++++++++++++++++++++-
packages/core/src/async-stores/async-chat-store.ts | 61 ++++++++++-----
packages/core/src/postgres/nul-sanitize.ts | 17 ++--
.../dashboard/src/__tests__/chat-manager.test.ts | 90 +++++++++++++++++++++
packages/dashboard/src/chat.ts | 21 ++++-
8 files changed, 322 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-8791
Fusion-Task-Lineage: 51e13634-04cc-4827-b72f-f33e40760940
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-04 19:15:20 -07:00
gsxdsm
7824150715
FN-8769: protect default-branch mission merges
...
Keep mission group members behind manual release controls when their target is the default branch.
- Create deterministic intermediate branches for project-default mission groups.
- Gate default-branch group routing and auto-merge exemptions behind the normal manual-release flow.
- Cover intermediate and default-branch group behavior with core and engine tests.
Files changed:
...fn-8769-default-branch-group-auto-merge-gate.md | 7 ++
docs/architecture.md | 2 +-
docs/missions.md | 2 +-
.../mission-store.sync-auto-merge.test.ts | 4 +-
packages/core/src/__tests__/task-merge.test.ts | 16 ++-
.../core/src/async-stores/async-mission-store.ts | 12 ++-
packages/core/src/merge/task-merge.ts | 23 +++-
packages/core/src/missions/mission-store.ts | 11 +-
...cutor-live-branch-group-auto-merge-hold.test.ts | 16 ++-
.../src/__tests__/group-merge-coordinator.test.ts | 118 ++++++++++++++++++++-
.../engine/src/__tests__/project-engine.test.ts | 16 ++-
packages/engine/src/executor.ts | 4 +-
.../engine/src/merge/group-merge-coordinator.ts | 13 +++
packages/engine/src/project-engine.ts | 15 ++-
14 files changed, 235 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-8769
Fusion-Task-Lineage: dff96c8e-ca96-437c-94bf-9691bdf572e9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-03 16:48:25 -07:00
gsxdsm
78543233aa
fix(planning): allow repeated task creation
...
Advance the durable creation epoch for each explicit Planning Mode action while preserving idempotency for transport retries. Recover soft-deleted task links with a fresh claim key and cover live, deleted, and retry paths.
2026-08-03 12:15:19 -07:00
gsxdsm
cb57093d03
refactor: domain folder layout (types, API, core, engine) ( #2398 )
...
## Summary
Wave 17 organizes Fusion into **domain folders** (stacks on #2397 ).
### Layout
- **core/types/** — board, task, agents, settings, merge, workflow,
mesh, …
- **core/src/** — agents, ai, async-stores, workflows, tasks, config,
db, …
- **dashboard/app/api/** — client, tasks, agents, git, missions,
planning, …
- **engine/src/** — agents, auth, execution, merge, missions, overseer,
worktree, …
Root keepers retained for large entrypoints (`store.ts`, `executor.ts`,
`merger.ts`, …).
Public barrels (`@fusion/core`, `@fusion/engine`, `app/api.ts` → legacy)
stay stable.
## Test plan
- [x] `@fusion/core` typecheck
- [x] `@fusion/engine` typecheck (pre-existing playwright-core noise
only)
- [ ] CI merge gate
**Stack:** #2394 → #2397 → **this PR**
2026-08-03 00:20:53 -07:00