gsxdsm
d07a5d6ce5
Offload background integrity_check off the main event loop
...
The boot-time integrity check (scheduleBackgroundIntegrityCheck, ~60s
after init) ran PRAGMA integrity_check on the live connection, walking
every page and freezing the event loop for several seconds — the largest
single read-contention stall in normal operation.
Offload it to the sqlite3 CLI in a child process (async spawn), matching
the existing out-of-process pattern used by quickCheckSqliteFile and
.recover. The CLI connection is opened -readonly so it can never
checkpoint or write the live WAL; this works because the live process
holds the DB open (so the -shm exists). When the CLI is unavailable or
can't open read-only, fall back to the in-process check (verified=false),
preserving today's behavior on those environments.
- New integrityCheckSqliteFileAsync(dbPath, limit) module helper.
- New private runBackgroundIntegrityCheck() seam (offload + fallback) so
the scheduler has one testable, deterministic policy point.
- Background scheduler callback is now async (IIFE + finally) with errors
swallowed so a background timer can't crash the process.
VACUUM is intentionally NOT offloaded: the call graph shows it is invoked
only by the `fn db vacuum` CLI command and tests, never from the periodic
maintenance loop, so it is not a background event-loop stall — and an
out-of-process VACUUM on a live WAL DB would add corruption surface for no
hot-path benefit.
Tests updated to the async/offloaded seam (deterministic regardless of
whether the sqlite3 CLI exists in the environment), plus coverage for the
new helper.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 14:12:59 -07:00
gsxdsm
61c29cc6b4
Reduce SQLite read contention: bound WAL growth + release vacuum lock
...
Investigation of reported DB read contention found two cross-process
contention sources in the SQLite layer (single synchronous node:sqlite
connection per process, WAL mode):
- Unbounded WAL on central-db and archive-db. Neither set
journal_size_limit, so their WAL never truncated back down after a
checkpoint and every reader paid an ever-growing WAL-index scan. Add
journal_size_limit=4MB (matching db.ts) plus explicit
synchronous=FULL/wal_autocheckpoint=1000 for intent. central-db is the
most cross-process-shared DB; archive-db had the same latent gap.
- vacuum() held the EXCLUSIVE lock past its own runtime. Resetting
locking_mode to NORMAL does not drop the WAL exclusive lock until the
connection next touches the DB, so other processes stayed locked out of
reads (SQLITE_BUSY) until some unrelated query ran. A plain read does
NOT release it in WAL mode (verified); a PASSIVE checkpoint does. Run
one in the finally, guard the locking_mode reset so it can't mask the
original error or skip the release, and log swallowed failures.
Tests: assert the new PRAGMAs on central-db and archive-db, and that a
second connection can read immediately after vacuum() returns.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 13:24:38 -07:00
gsxdsm
711bf3e1b8
FN-6746: attribute token analytics per runtime model
...
Persist and expand per-model token usage so Command Center reports every model used by a task.
- Add a nullable per-model token usage column and task model bucket types.
- Merge session token deltas into provider/model buckets while retaining task-level totals.
- Expand model/provider analytics from per-model buckets with legacy fallbacks for older rows.
- Cover persistence, migration, aggregation, and session accumulation behavior with tests.
- Document the per-model storage contract alongside existing token analytics tables.
Files changed:
docs/storage.md | 2 +
packages/core/src/__tests__/db-migrate.test.ts | 62 ++++++++++
.../core/src/__tests__/store-persistence.test.ts | 49 ++++++++
.../core/src/__tests__/token-analytics.test.ts | 127 ++++++++++++++++++++-
packages/core/src/db.ts | 13 ++-
packages/core/src/index.ts | 2 +-
packages/core/src/store.ts | 7 +-
packages/core/src/token-analytics.ts | 58 ++++++++--
packages/core/src/types.ts | 32 ++++++
.../src/__tests__/session-token-usage.test.ts | 23 ++++
packages/engine/src/executor.ts | 20 +++-
packages/engine/src/session-token-usage.ts | 50 +++++++-
packages/engine/src/step-session-executor.ts | 7 ++
13 files changed, 429 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-6746
Fusion-Task-Lineage: 1b1a3b31-b669-4e89-ac38-a871f3349015
2026-06-19 16:47:34 -07:00
gsxdsm
87f18f87ed
FN-6705: add plugin activation analytics
...
Record plugin activation events and expose them to Command Center analytics.
- Add plugin activation persistence, aggregation helpers, and exports.
- Record load/reload activation events through the plugin loader and store APIs.
- Surface plugin activation counts in the Command Center Ecosystem area and API route.
- Cover migrations, aggregation behavior, plugin loader recording, route auth, UI rendering, and quarantined flaky suites.
Files changed:
.changeset/fn-6705-plugin-activation-analytics.md | 5 +
docs/architecture.md | 2 +-
docs/dashboard-guide.md | 2 +-
packages/cli/vitest.config.ts | 8 +
packages/core/src/__tests__/db-migrate.test.ts | 34 ++---
packages/core/src/__tests__/db.test.ts | 59 ++++----
packages/core/src/__tests__/goals-schema.test.ts | 6 +-
packages/core/src/__tests__/insight-store.test.ts | 12 +-
.../src/__tests__/merge-request-record.test.ts | 3 +-
packages/core/src/__tests__/mission-store.test.ts | 6 +-
.../__tests__/plugin-activation-analytics.test.ts | 67 ++++++++
packages/core/src/__tests__/plugin-loader.test.ts | 168 ++++++++++++++++++++-
packages/core/src/__tests__/run-audit.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 3 +-
.../src/__tests__/store-plugin-activations.test.ts | 52 +++++++
packages/core/src/__tests__/task-documents.test.ts | 3 +-
packages/core/src/db.ts | 35 ++++-
packages/core/src/index.ts | 8 +
packages/core/src/plugin-activation-analytics.ts | 104 +++++++++++++
packages/core/src/plugin-loader.ts | 27 ++++
packages/core/src/store.ts | 24 ++-
packages/core/src/types.ts | 22 +++
packages/core/vitest.config.ts | 12 ++
.../command-center/areas/EcosystemArea.tsx | 40 +++--
.../command-center/areas/__tests__/areas.test.tsx | 52 ++++++-
.../register-command-center-routes.auth.test.ts | 1 +
.../register-command-center-routes.test.ts | 29 ++++
.../src/routes/register-command-center-routes.ts | 20 +++
.../src/store/__tests__/roadmap-store.test.ts | 9 +-
scripts/boot-smoke.mjs | 24 ++-
scripts/lib/test-quarantine.json | 55 +++++++
31 files changed, 799 insertions(+), 99 deletions(-)
Fusion-Task-Id: FN-6705
Fusion-Task-Lineage: 12ed6227-f935-4038-bbe9-a605a054850e
2026-06-19 16:47:33 -07:00
gsxdsm
47e7b4a150
FN-6704: capture merge LOC for productivity analytics
...
Capture merge-time diff stats so Command Center Productivity can report real Lines changed when available.
- Add nullable additions/deletions columns to task commit associations with migration and storage normalization.
- Persist git shortstat counts from merge association paths without blocking merges when stats are unavailable.
- Aggregate Productivity LOC from recorded commit stats while preserving the unavailable sentinel for historical unknowns.
- Cover migration, store upsert, analytics, and merger association stats behavior with tests and documentation.
Files changed:
.changeset/fn-6704-command-center-loc.md | 5 ++
docs/architecture.md | 4 +-
docs/storage.md | 3 +
packages/core/src/__tests__/db-migrate.test.ts | 32 ++++----
packages/core/src/__tests__/db.test.ts | 90 ++++++++++++++++------
.../src/__tests__/productivity-analytics.test.ts | 47 +++++++++--
packages/core/src/__tests__/store-upsert.test.ts | 40 ++++++++++
packages/core/src/db.ts | 14 +++-
packages/core/src/productivity-analytics.ts | 56 +++++++++-----
packages/core/src/store.ts | 17 +++-
packages/core/src/task-lineage.ts | 2 +
packages/core/src/types.ts | 2 +
.../merger-commit-association-stats.test.ts | 90 ++++++++++++++++++++++
packages/engine/src/merger-ai.ts | 2 +
packages/engine/src/merger.ts | 17 +++-
15 files changed, 349 insertions(+), 72 deletions(-)
Fusion-Task-Id: FN-6704
Fusion-Task-Lineage: f079fecb-eade-4318-bc55-23aa48097b4a
2026-06-19 06:51:57 -07:00
gsxdsm
94a081f4f3
FN-6666: store GitHub issue closure timestamps
...
Persist GitHub source issue closure timestamps so Fixed by Fusion analytics can use exact close dates.
- add nullable sourceIssueClosedAt storage, migration coverage, serialization, and task source issue typing
- persist observed or newly closed GitHub issue closed timestamps during source issue reconciliation
- update GitHub issue analytics to prefer sourceIssueClosedAt with updatedAt fallback and cover the behavior in tests
- document the stored timestamp and publish a patch changeset
Files changed:
.changeset/fn-6666-source-issue-closed-at.md | 5 ++
docs/dashboard-guide.md | 2 +-
docs/storage.md | 2 +
packages/core/src/__tests__/db-migrate.test.ts | 94 +++++++++++++++++----
packages/core/src/__tests__/db.test.ts | 89 ++++++++++++++------
.../src/__tests__/github-issue-analytics.test.ts | 47 ++++++++++-
packages/core/src/db-migrate.ts | 5 +-
packages/core/src/db.ts | 12 ++-
packages/core/src/github-issue-analytics.ts | 28 +++----
packages/core/src/store.ts | 7 +-
packages/core/src/types.ts | 6 ++
.../__tests__/github-tracking-reconciler.test.ts | 80 +++++++++++++++++-
packages/dashboard/src/__tests__/github.test.ts | 95 +++++++++++++++++++++-
.../dashboard/src/github-tracking-reconciler.ts | 37 ++++++++-
packages/dashboard/src/github.ts | 20 ++++-
15 files changed, 457 insertions(+), 72 deletions(-)
Fusion-Task-Id: FN-6666
Fusion-Task-Lineage: 0fa8e824-14de-400e-b2a3-aa55d126e218
2026-06-18 18:48:05 -07:00
gsxdsm
ef544597da
FN-6665: group token analytics by runtime model
...
Record runtime model snapshots so token analytics group usage by the model that actually generated it.
- Add token-usage provider/model snapshot columns, store mapping, and migration support.
- Preserve actually-used session model metadata during executor/session token accumulation without changing task model overrides.
- Prefer runtime model snapshots in token provider/model aggregation and cover the behavior with regression tests and docs.
Files changed:
.changeset/fn-6665-tokens-by-model.md | 5 ++
docs/dashboard-guide.md | 2 +-
docs/storage.md | 2 +
.../core/src/__tests__/store-token-usage.test.ts | 4 ++
.../core/src/__tests__/token-analytics.test.ts | 54 ++++++++++++++++++++-
packages/core/src/db.ts | 12 ++++-
packages/core/src/store.ts | 10 +++-
packages/core/src/token-analytics.ts | 12 ++++-
packages/core/src/types.ts | 10 ++++
.../src/__tests__/session-token-usage.test.ts | 55 ++++++++++++++++++++--
packages/engine/src/executor.ts | 37 +++++++++++++--
packages/engine/src/session-token-usage.ts | 7 +++
12 files changed, 194 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-6665
Fusion-Task-Lineage: e103de14-6298-4a9e-93af-4dd15798fde5
2026-06-18 16:58:11 -07:00
gsxdsm
61f389ed3c
Address PR review feedback ( #1683 )
...
- monitor-trait: atomic incident-level claim (conditional UPDATE) so concurrent
regression ingests can't open duplicate fix tasks; loser absorbs (+ tests)
- register-git-github: attach/detach KnowledgeIndexRefreshService per project
store so task:moved→done refreshes the index for non-primary projects
- agent-logger: make usage-event emission genuinely fail-soft (try/catch +
absorb async rejection) so a throwing emitUsageEvent can't break tool logging
(+ sync-throw and rejected-promise tests)
- db: add composite (kind, ts) index on usage_events backing Command Center
tool analytics; folded into migration 118 (unreleased) — no SCHEMA_VERSION bump
- db.test: assert the six v120 deployments/incidents indexes survive migration
- lazy-loaded-views-docs.test: fix stale "20-view" → "21-view" description
- add FNXC_LOG change-log annotations across the touched package files per AGENTS.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 05:56:11 -07:00
gsxdsm
f5bd86214f
feat(monitor): U13 — monitor stage (deployments, incidents, MTTR) closes the loop
...
Adds deployments + incidents tables (db migration 119→120), real MTTR/deploy/
incident aggregation replacing the U7 seam, an auth-gated SSRF-safe deploy/
incident ingestion route, and a monitor trait that auto-opens a single fix task
on a regression signal. Storm guard groups by the U11 Signal groupingKey with a
threshold gate, cooldown absorption, per-window circuit breaker, and self-loop
guard. Also completes the otel test ActivityAnalytics fixture.
2026-06-15 20:59:57 -07:00
gsxdsm
0a87890bd8
feat(knowledge): U14 — persistent knowledge index
...
Adds knowledge_pages (db migration 118→119) + a deterministic, model-free
keyword index of task/PR history in packages/dashboard/src, incrementally
refreshed on task completion (task:moved→done listener) and queryable via an
auth-gated, project-scoped API. Complements the LLM-extracted insights/memory
surfaces rather than duplicating them.
Follow-ups: no React view yet; PR-history page population attaches via U18.
2026-06-15 20:34:52 -07:00
gsxdsm
ab9fdc4136
feat(telemetry): U1 — queryable usage_events table + emitUsageEvent capture
...
Schema migration 117→118 adds usage_events; events captured via a dedicated
emitUsageEvent seam wired through AgentLogger tool hooks + executor session
context (model/provider/nodeId), not by widening log signatures. meta is
size-capped and carries only non-sensitive descriptors.
2026-06-15 19:20:38 -07:00
gsxdsm
066c919ace
test: quarantine slow and flaky test lanes
...
Move observed load-sensitive and slow tests out of the default lanes per the deletion-ratchet policy, keep the quarantine ledger in sync, and preserve corrupt databases when recovery fails during verification.
2026-06-13 19:22:00 -07:00
gsxdsm
bffae81a98
FN-6277: track and reconcile legacy auto-merge stamps
...
Track legacy auto-merge stamp provenance and add safe operator cleanup.
- Add autoMergeProvenance storage and migration support so user overrides can be distinguished from legacy review-entry stamps.
- Mark existing ambiguous in-review autoMerge=true tasks as legacy stamps without changing behavior, and expose a dry-run/apply reconciliation API to clear them safely.
- Emit a non-mutating advisory when global auto-merge is disabled while legacy stamped review tasks remain.
- Cover migration, persistence, reconciliation, movement, merge resolution, and advisory behavior with regression tests and docs.
Files changed:
.../fn-6277-legacy-automerge-stamp-cleanup.md | 5 +
docs/architecture.md | 2 +-
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/db-migrate.test.ts | 30 ++--
packages/core/src/__tests__/db.test.ts | 44 +++---
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../legacy-automerge-stamp-reconcile.test.ts | 144 +++++++++++++++++++
.../src/__tests__/merge-request-record.test.ts | 2 +-
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 4 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/store-movement.test.ts | 14 ++
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/__tests__/task-merge.test.ts | 16 ++-
packages/core/src/db.ts | 10 +-
packages/core/src/index.ts | 1 +
packages/core/src/store.ts | 157 ++++++++++++++++++++-
packages/core/src/task-merge.ts | 8 +-
packages/core/src/types.ts | 10 +-
.../automerge-toggle-legacy-advisory.test.ts | 128 +++++++++++++++++
packages/engine/src/project-engine.ts | 68 ++++++++-
22 files changed, 593 insertions(+), 70 deletions(-)
Fusion-Task-Id: FN-6277
Fusion-Task-Lineage: 22d36519-f2ba-4ca7-8a09-12fc803c9a5b
2026-06-13 05:06:05 -07:00
gsxdsm
0897b2a0bf
FN-6281: add bounded graph resume retries
...
Add a narrow persisted retry path for transient workflow-graph failures during resume after restart or unpause.
- Persist graphResumeRetryCount with schema migration, store round-tripping, manual retry reset, and task serialization coverage.
- Retry only no-progress execute-seam graph failures immediately following resume markers, then clear transient status/error and re-run within a capped budget.
- Preserve terminal graph failure handling for explicit reasons, durable task failures, completed progress, non-resume cases, and exhausted retry budgets.
- Document the resume-limbo retry contract and add a patch changeset for @runfusion/fusion.
Files changed:
.changeset/fn-6281-graph-resume-retry.md | 5 +
docs/architecture.md | 1 +
packages/core/src/__tests__/db-migrate.test.ts | 30 +--
packages/core/src/__tests__/db.test.ts | 44 ++---
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../core/src/__tests__/manual-retry-reset.test.ts | 1 +
.../src/__tests__/merge-request-record.test.ts | 2 +-
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 4 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
.../core/src/__tests__/store-persistence.test.ts | 22 +++
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 10 +-
packages/core/src/manual-retry-reset.ts | 1 +
packages/core/src/store.ts | 14 +-
packages/core/src/types.ts | 5 +
.../engine/src/__tests__/executor-recovery.test.ts | 201 +++++++++++++++++++++
packages/engine/src/executor.ts | 54 ++++++
19 files changed, 359 insertions(+), 53 deletions(-)
Fusion-Task-Id: FN-6281
Fusion-Task-Lineage: f9061445-8624-465a-9255-c3d02eac1bdb
2026-06-12 11:10:12 -07:00
gsxdsm
f16b038fab
refactor(workflow): add workflow work-item store slice
2026-06-09 12:41:29 -07:00
gsxdsm
2fd214b4f2
FN-5975: extend archive FTS maintenance coverage
...
Add archive-database FTS maintenance and document the expanded compaction policy.
- add archive FTS maintenance helpers for optimize, rebuild, size measurement, and row counts
- extend self-healing maintenance to compact and rebuild archived_tasks_fts on a slower archive-specific cadence
- cover archive FTS maintenance with new core and engine tests and update architecture/storage docs
Files changed:
docs/architecture.md | 2 +-
docs/storage.md | 12 +-
.../__tests__/archive-db-fts-maintenance.test.ts | 221 +++++++++++++++++++++
packages/core/src/archive-db.ts | 61 +++++-
packages/core/src/db.ts | 21 +-
packages/core/src/store.ts | 20 ++
.../src/__tests__/fts-maintenance-archive.test.ts | 207 +++++++++++++++++++
packages/engine/src/self-healing.ts | 80 ++++++++
8 files changed, 608 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-5975
Fusion-Task-Lineage: 13645c8c-3126-4d1b-af23-7cab1a8bb276
2026-06-08 10:33:16 -07:00
gsxdsm
294209f64b
FN-5943: maintain tasks FTS5 indexes automatically
...
Keep the tasks FTS5 index compact and self-healing during routine maintenance.
- add FTS5 trigger helpers, index sizing utilities, and a schema migration that skips no-op searchable-field rewrites
- run merge/optimize/rebuild maintenance from self-healing with thresholds, cadence, and run-audit logging
- add focused FTS maintenance coverage and update storage/architecture docs for the new behavior
Files changed:
docs/architecture.md | 1 +
docs/storage.md | 14 ++
packages/core/src/__tests__/db-migrate.test.ts | 50 ++--
packages/core/src/__tests__/db.test.ts | 84 +++----
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../src/__tests__/merge-request-record.test.ts | 2 +-
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
.../src/__tests__/store-archive-search.test.ts | 33 +++
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/archive-db.ts | 6 +-
packages/core/src/db.ts | 162 ++++++++++---
packages/core/src/store.ts | 16 ++
.../engine/src/__tests__/fts-maintenance.test.ts | 268 +++++++++++++++++++++
packages/engine/src/self-healing.ts | 70 ++++++
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
18 files changed, 622 insertions(+), 108 deletions(-)
Fusion-Task-Id: FN-5943
Fusion-Task-Lineage: 9a851ede-95ee-4b76-bc34-737912f0e3fc
2026-06-07 18:51:46 -07:00
gsxdsm
1922b5efc2
merge: main (workflow editor 109 / cli_sessions 110-111 / workflow_settings 112) — renumber PR-entity migration to 113, union core exports, TaskCard prNode + cliSessionState badges, executor PrNodeDeps + CliAgentRuntime options
2026-06-05 23:06:46 -07:00
gsxdsm
f1e9ab5587
fix(review): apply autofix feedback
...
Security hardening + cleanups from code review: parseAgentVerdicts now
ignores out-of-batch thread ids and fails safe (disagree) on conflicting
duplicate verdicts for one thread; drop the unused store param from
makePrResponseAgentRunner; correct the rework-bound doc (to-node, not
from-node) and the migration idempotency comment (PK is the re-run guard).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 22:49:39 -07:00
gsxdsm
4ecf3e86fa
feat(pr): PR entity foundation — schema v109, store CRUD, predicates (U1)
...
Adds the unified PR entity: pull_requests + pull_request_thread_state
tables (schema v109, re-runnable migration with three partial unique
indexes and a compat helper), PrEntity/PrThreadState types, store CRUD
(create-or-reuse, update, per-thread outcome upsert), and core-owned
predicates (isPrBacked merge-target-scoped, unverified hard gate,
auto-merge readiness). Migrates legacy branch_groups PR fields into
unverified entities (R19). Fixes the misleading 'transactional migration'
docstring.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 17:26:07 -07:00
gsxdsm
1f68348441
merge: main (CLI agent interface #1446 ) — renumber workflow_settings migration to 112 behind main's cli_sessions(110)/adapter(111), full-workspace literal sweep, i18n union
2026-06-05 16:18:39 -07:00
gsxdsm
693ed6290a
Merge remote-tracking branch 'origin/main' into gsxdsm/cli-agent-interface
...
# Conflicts:
# CONCEPTS.md
# packages/core/src/__tests__/db-migrate.test.ts
# packages/core/src/__tests__/db.test.ts
# packages/core/src/__tests__/goals-schema.test.ts
# packages/core/src/__tests__/insight-store.test.ts
# packages/core/src/__tests__/merge-request-record.test.ts
# packages/core/src/__tests__/mission-store.test.ts
# packages/core/src/__tests__/run-audit.test.ts
# packages/core/src/__tests__/store-merge-queue.test.ts
# packages/core/src/__tests__/task-documents.test.ts
# packages/core/src/db.ts
# packages/dashboard/src/__tests__/agent-onboarding.test.ts
# packages/dashboard/src/__tests__/ai-refine.test.ts
# packages/dashboard/src/__tests__/chat-attachment-routes.test.ts
# packages/dashboard/src/__tests__/experiment-routes.finalize.test.ts
# packages/dashboard/src/__tests__/milestone-slice-interview.test.ts
# packages/dashboard/src/__tests__/mission-interview.test.ts
# packages/dashboard/src/__tests__/pr-metadata-generator.test.ts
# packages/dashboard/src/__tests__/project-pause-resume-routes.test.ts
# packages/dashboard/src/__tests__/routes-approval-sandbox-provisioning.test.ts
# packages/dashboard/src/__tests__/routes-approval-secrets.test.ts
# packages/dashboard/src/__tests__/routes-approval.test.ts
# packages/dashboard/src/__tests__/routes-worktrunk.test.ts
# packages/dashboard/src/__tests__/session-error-recovery.test.ts
# packages/dashboard/src/__tests__/session-persistence-roundtrip.test.ts
# packages/dashboard/src/__tests__/session-reconnect.test.ts
# packages/dashboard/src/__tests__/session-resume-history.test.ts
# packages/dashboard/src/__tests__/setup-routes.test.ts
# packages/dashboard/src/__tests__/subtask-breakdown.test.ts
# packages/dashboard/src/routes/__tests__/agent-avatar-routes.test.ts
# packages/dashboard/src/routes/__tests__/custom-providers.test.ts
# packages/dashboard/src/routes/__tests__/docker-node-routes.test.ts
# packages/i18n/locales/en/app.json
# plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts
2026-06-05 15:30:59 -07:00
gsxdsm
6d16c07197
merge: main (editor consolidation #1433 , fast-tests, learnings) — renumber workflow_settings migration to 110, settings panel joins the sidebar disclosures, full-workspace literal sweep
2026-06-05 15:23:15 -07:00
gsxdsm
b9afce306e
fix(review): schema-version gate, output-filter escape-bypass, generic double-wrap, follow-up resolution
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 03:41:54 -07:00
gsxdsm
ace710633c
feat(dashboard): cli-agent hybrid chat transcript with raw-terminal toggle (U12)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 02:38:38 -07:00
gsxdsm
6c9a81a05f
fix(review): apply autofix feedback
2026-06-05 01:53:42 -07:00
gsxdsm
ad5205f186
feat(core): add cli_sessions table and CliSessionStore (U1)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 22:52:20 -07:00
gsxdsm
28e74f10d6
feat(core): workflow kind discriminator and steps-to-IR converter
2026-06-04 22:18:36 -07:00
gsxdsm
db4cdc6f5c
feat(core): workflow setting values store — per-(workflow,project) table, validating write authority, drop-on-orphan resolution
2026-06-04 22:12:38 -07:00
gsxdsm
0a3cc50f6f
feat(core): U4-core — schema v108 (workflow_run_step_instances + tasks.customFields), instance CRUD trio, literal sweep
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:50:45 -07:00
gsxdsm
fcf175afb8
feat(engine): fan-out/join branch execution with crash-recoverable branch state, schema v107 (U13)
2026-06-04 00:54:05 -07:00
gsxdsm
2bebddb807
feat(core): typed transition contract + transitionPending marker, schema v106 (U3)
2026-06-04 00:19:58 -07:00
gsxdsm
12b418a524
FN-5942: add agent-run and config-revision pruning
...
Extend operational log retention pruning to cover agent runs and config revisions.
- prune completed agentRuns by endedAt while preserving in-flight runs
- prune old agentConfigRevisions by createdAt while always keeping each agent's latest revision
- document the expanded retention behavior and add regression coverage for pruning invariants
Files changed:
docs/settings-reference.md | 2 +-
docs/storage.md | 2 +
packages/core/src/__tests__/db.test.ts | 127 +++++++++++++++++++++++++++++++++
packages/core/src/db.ts | 55 ++++++++++++--
packages/core/src/types.ts | 9 ++-
5 files changed, 185 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-5942
Fusion-Task-Lineage: 2bc49182-d52b-44c9-b17e-2737fac58eed
2026-06-03 22:31:23 -07:00
gsxdsm
18ba5c0c59
Address PR review feedback ( #1363 )
...
- db.ts: restrict migration-105 orphan-step cleanup to JSON arrays
(json_type guard so json_each can't expand objects/strings)
- project-engine.ts: requestInterpreterMerge throws on null task lookup
instead of casting null into MergeResult (seam converts to clean failure)
- executor.ts: truncate dual-observe shadow stage walk at the live terminal
stage so healthy in-review tasks don't record a phantom merge transition
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 21:02:01 -07:00
gsxdsm
07489e5820
fix(core): finish deferred agentLogEntries drop when migrations 103+ outrun it
...
Migration 102 defers the destructive agentLogEntries drop until TaskStore
copies legacy rows to JSONL and writes the __meta guard, then relies on a
second init() pass gated on schemaVersion < SCHEMA_VERSION. Migrations
103-105 bump the version to 105 on the first pass, so the second pass never
fired and the legacy table survived forever. Make the drop version-independent
in migrate() and trigger the re-init whenever the legacy table remains.
Also pin secrets-schema.test.ts to String(SCHEMA_VERSION) instead of the
hardcoded "102" string the schema bump invalidated.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 20:42:00 -07:00
gsxdsm
eb67d08213
Address PR review feedback ( #1363 )
...
Greptile + CodeRabbit findings across core/engine/dashboard. Stale findings
(written against earlier commits) verified and skipped; valid ones fixed.
Engine:
- await-input: do not clear pausedReason in the /input route (the node's
marker must survive unpause); the node clears it after consuming input.
Embed a colon-free epoch watermark in the marker so only post-pause steering
comments count as the reply (ISO timestamps collided with the colon
separator and the dashboard question parser).
- gate nodes without a registered runner now fail closed (throw) instead of
silently passing.
- a thrown interpreter error in maybeExecuteWorkflowGraph now falls back to the
legacy pipeline instead of stranding the task in-progress.
- approved-CLI path clears the stale awaiting-cli-approval status/marker.
Core:
- persist+cascade workflow selection: purge task_workflow_selection rows and
compiled workflow_steps on physical task deletes; migration 105 cleans
already-orphaned rows; catch-cleanup for materialized steps when the owner
write fails; WF-id allocation now in a BEGIN IMMEDIATE transaction.
- compiler validates the canonical execute->review->merge seam order (rejects
duplicate/misordered seams).
- disk-backed reopen round-trip + tightened updatedAt/list assertions.
Dashboard:
- WorkflowSelector clears stale default/options across project changes and on
fetch failure; InlineCreateCard/NewTaskModal reset the workflow on all
clear/discard paths and include it in dirty-state.
- WorkflowNodeEditor: config-key deletion now persists; removed an invalid
eslint-disable that was itself a hard lint error.
- TaskCard: single status badge for awaiting-input (no duplicate).
- WorkflowResultsTab: reset paused-action UI between pauses; surface
resume/approve failures inline.
- TaskDetailModal: treat awaiting-user-input/awaiting-cli-approval/paused as
not-in-progress for the live-log subscription.
- workflow-flow-mapping: don't write synthetic node names back into IR.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 17:32:12 -07:00
gsxdsm
5502025001
fix: apply safe_auto code-review fixes
...
- runner: report visited nodes on mid-run interpreter errors
- handleGraphFailure: clear completed-task watchdog + untrack stuck detector
- getDefaultWorkflowId: use getSettingsFast (drop per-create listWorkflowSteps read)
- db: index workflows(createdAt) in base schema + migration 103
- store: hoist workflow-definition type imports; mapping: single editorKind call
- executor: drop backwards TaskDetail->Task cast in execute seam
2026-06-03 12:26:49 -07:00
gsxdsm
47a42994ed
feat(core): per-task workflow selection + project default (U3)
...
Selecting a workflow compiles it, materializes WorkflowStep rows (tagged and
hidden from the step manager), and writes their ids into the task's existing
enabledWorkflowSteps — the executor's read path is untouched. Re-selection
replaces prior steps with no orphans; non-linear graphs abort before any write.
New tasks inherit a project default workflow (settings.defaultWorkflowId) ahead
of legacy default-on steps. Adds task_workflow_selection table (migration 104).
No scheduler/executor/merger changes.
2026-06-03 09:30:48 -07:00
gsxdsm
ffce42ff9c
feat(core): persist named workflow definitions (U1)
...
Add a workflows table (migration 103) storing WorkflowIr graphs plus editor
layout, with CRUD on TaskStore (create/list/get/update/delete) that validates
the IR via parseWorkflowIr on write. IDs (WF-001…) use a monotonic __meta
counter that never reuses across deletes.
2026-06-03 09:22:35 -07:00
gsxdsm
d72cb2ab2b
FN-5911: move agent logs to per-task JSONL storage
...
Store agent logs in per-task JSONL files instead of the legacy SQLite table.
- add a file-backed agent log store with JSONL append/read/prune helpers and task-scoped source refs
- migrate legacy SQLite agentLogEntries data into task files, rewrite goal citation references, and preserve soft-deleted logs for forensics
- update task store, settings, docs, dashboard route coverage, and add regression tests for migration, retention, and log access
Files changed:
.changeset/fn-5911-agent-log-jsonl.md | 5 +
AGENTS.md | 2 +-
docs/diagnostics.md | 2 +-
docs/settings-reference.md | 2 +
docs/soft-delete-verification-matrix.md | 7 +-
docs/storage.md | 8 +-
.../src/__tests__/agent-log-file-store.test.ts | 123 ++++++
.../core/src/__tests__/agent-log-migration.test.ts | 186 +++++++++
.../core/src/__tests__/agent-log-retention.test.ts | 208 ++++++++++
packages/core/src/__tests__/db-migrate.test.ts | 14 +-
packages/core/src/__tests__/db.test.ts | 39 +-
.../src/__tests__/goal-citations-store.test.ts | 38 +-
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../src/__tests__/merge-request-record.test.ts | 2 +-
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../src/__tests__/soft-delete-agent-logs.test.ts | 71 ++--
.../src/__tests__/store-agent-log-file.test.ts | 91 +++++
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/store-test-helpers.ts | 43 +-
packages/core/src/__tests__/store-upsert.test.ts | 37 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/agent-log-constants.ts | 25 ++
packages/core/src/agent-log-file-store.ts | 267 ++++++++++++
packages/core/src/db.ts | 51 ++-
packages/core/src/settings-schema.ts | 1 +
packages/core/src/store.ts | 453 ++++++++++++---------
packages/core/src/types.ts | 10 +-
.../__tests__/agent-log-routes.integration.test.ts | 48 +++
.../src/__tests__/evaluator-evidence.test.ts | 47 ++-
packages/engine/src/self-healing.ts | 12 +
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
34 files changed, 1477 insertions(+), 345 deletions(-)
Fusion-Task-Id: FN-5911
Fusion-Task-Lineage: 07c42f3a-87cf-4558-8f01-ac8460b5558b
2026-06-03 01:10:18 -07:00
gsxdsm
30a09e3422
FN-5896: persist mission-goal linkage in schema
...
Persist mission↔goal relationships through the core mission schema and store APIs.
- add the mission_goals join table, schema migration coverage, and schema version bump to 101
- add MissionStore goal link/unlink/list helpers plus a MissionGoalLink type and emitted linkage events
- add regression tests for persistence, idempotency, ordering, and cascade behavior, and document the new linkage model with a published changeset
Files changed:
.changeset/fn-5896-mission-goal-linkage.md | 5 +
docs/missions.md | 19 +++
docs/storage.md | 1 +
packages/core/src/__tests__/db-migrate.test.ts | 49 ++++++-
packages/core/src/__tests__/db.test.ts | 34 ++---
packages/core/src/__tests__/goals-schema.test.ts | 4 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../src/__tests__/merge-request-record.test.ts | 2 +-
.../core/src/__tests__/mission-goals-link.test.ts | 142 +++++++++++++++++++++
packages/core/src/__tests__/mission-store.test.ts | 4 +-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 31 ++++-
packages/core/src/mission-store.ts | 111 ++++++++++++++++
packages/core/src/mission-types.ts | 6 +
.../src/store/__tests__/roadmap-store.test.ts | 2 +-
18 files changed, 391 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-5896
Fusion-Task-Lineage: a4c7c495-b20a-454b-9605-782671cdd8c8
2026-06-02 14:41:41 -07:00
gsxdsm
f9e551317f
Harden fusion.db against recurring corruption
...
Root cause: node:sqlite SIGSEGVs inside pager_write leave the B-tree
malformed in a way that still opens but fails integrity checks; large
operational-log tables widen the write window where the crash strikes.
- backup: verify every copy with PRAGMA quick_check, quarantine corrupt
copies as *.corrupt, and never rotate out the last verified-good backup
- db: add Database.recoverIfCorrupt() startup guard (wired into
TaskStore.init, disk-backed only, opt out via FUSION_DISABLE_DB_AUTORECOVER)
that rebuilds a malformed db via sqlite3 .recover, preserving the corrupt
original; also fixes the latent `.recover main` invalid-option bug that made
recoverDatabase() always fail
- db: drop lost_and_found* scratch tables on init; add pruneOperationalLogs()
- settings: add operationalLogRetentionDays (default 30, 0 = off) and prune
activityLog/agentLogEntries/runAuditEvents/agentHeartbeats during maintenance
- dashboard: expose retention in Settings -> Backups -> Database Maintenance
Tests: backup 59/59, db 135/135 (incl. real corrupt->recover->reopen),
self-healing cleanup/corruption 10/10, settings 77/77, SettingsModal 460/460.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-01 21:55:10 -07:00
gsxdsm
9c29e2e776
FN-5829: add shared feature branch option for new tasks
...
Allow new tasks to target a shared branch-group feature branch during creation.
- Add branch-group aware branch selection handling in task workflow routes.
- Update store/types/db wiring to support and persist shared feature-branch targeting.
- Extend dashboard task creation UI/tests and route tests to cover the new option.
- Add a changeset for @runfusion/fusion documenting the new CLI/task behavior.
Files changed:
.changeset/fn-5829-shared-feature-branch-option.md | 7 ++
.../src/commands/__tests__/task-lifecycle.test.ts | 2 +-
.../core/src/__tests__/branch-group-store.test.ts | 26 ++++++
packages/core/src/db.ts | 4 +-
packages/core/src/store.ts | 9 +-
packages/core/src/types.ts | 2 +-
packages/dashboard/app/components/NewTaskModal.tsx | 2 +-
packages/dashboard/app/components/TaskForm.tsx | 9 +-
.../app/components/__tests__/NewTaskModal.test.tsx | 37 ++++++++
.../src/__tests__/branch-selection.test.ts | 12 +++
.../dashboard/src/__tests__/mission-e2e.test.ts | 8 +-
.../src/__tests__/routes-planning.test.ts | 6 +-
.../src/__tests__/routes-tasks.test.ts | 102 +++++++++++++++++++++
packages/dashboard/src/routes/branch-selection.ts | 19 +++-
.../src/routes/register-task-workflow-routes.ts | 23 +++--
15 files changed, 242 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-5829
Fusion-Task-Lineage: 7d69acc8-19a3-4112-9bf2-5ac7b5e5a929
2026-06-01 03:23:10 -07:00
gsxdsm
20c1c3261e
FN-5741: persist merge-request handoff shadow contract
...
Introduce Phase 1 write-only persistence for merge-request handoff acceptance across core and engine paths.
- add persisted merge-request record types, schema/settings plumbing, and store write-path support
- update merger/executor/self-healing/run-audit flows to emit and consume the handoff-accepted shadow marker
- expand core/engine/roadmap tests and docs to cover the new merge-request shadow contract
- add a patch changeset for @runfusion/fusion for this bundled package update
Files changed:
.changeset/fn-5741-merge-request-shadow.md | 5 +
AGENTS.md | 1 +
docs/architecture.md | 2 +
docs/settings-reference.md | 1 +
packages/core/src/__tests__/db-migrate.test.ts | 12 +-
packages/core/src/__tests__/db.test.ts | 34 ++--
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
.../src/__tests__/merge-request-record.test.ts | 97 +++++++++++
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/settings-parity.test.ts | 3 +
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 49 +++++-
packages/core/src/index.ts | 4 +-
packages/core/src/settings-schema.ts | 30 ++++
packages/core/src/store.ts | 189 ++++++++++++++++++++-
packages/core/src/types.ts | 37 ++++
.../src/__tests__/merger-merge-lifecycle.test.ts | 54 ++++++
.../merge-request-shadow-handoff.test.ts | 74 ++++++++
packages/engine/src/executor.ts | 15 +-
packages/engine/src/merger.ts | 37 ++++
packages/engine/src/run-audit.ts | 1 +
packages/engine/src/self-healing.ts | 16 +-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
27 files changed, 646 insertions(+), 45 deletions(-)
Fusion-Task-Id: FN-5741
Fusion-Task-Lineage: 3fec14c3-47ff-4f14-bc02-24021518c992
2026-05-30 14:42:50 -07:00
gsxdsm
0dbb1cd6f9
FN-5704: escalate self-owned execution limbo instead of endless resume
...
Escalate reclaimable in-progress resume limbo into an explicit failure path to stop infinite self-healing loops.
- add resume-limbo escalation handling in self-healing/executor flow so self-owned stuck execution is failed and surfaced
- extend core task/run-audit types and retry-reset/store behavior to persist and expose the new escalation state
- add reliability interaction coverage for reclaim self-owned resume limbo escalation and update related schema/store/CLI/plugin tests and docs
Files changed:
AGENTS.md | 1 +
docs/architecture.md | 2 +
packages/cli/src/commands/__tests__/task.test.ts | 2 +
packages/core/src/__tests__/db-migrate.test.ts | 12 +-
packages/core/src/__tests__/db.test.ts | 34 ++---
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 13 +-
packages/core/src/manual-retry-reset.ts | 1 +
packages/core/src/store.ts | 37 ++++-
packages/core/src/types.ts | 11 ++
...laim-self-owned-resume-limbo-escalation.test.ts | 168 +++++++++++++++++++++
packages/engine/src/executor.ts | 5 +
packages/engine/src/run-audit.ts | 1 +
packages/engine/src/self-healing.ts | 72 +++++++++
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
21 files changed, 345 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-5704
Fusion-Task-Lineage: c8f73d16-d95b-450f-a514-e7d3c2f7aebe
2026-05-29 20:05:14 -07:00
gsxdsm
0605d13ab5
FN-5675: add mission branch strategy and planning breakdown controls
...
Add mission-level branch strategy support and expose planning breakdown controls across mission flows.
- Extend mission/core data models and store logic to track and persist base-branch strategy metadata.
- Update mission API routes and legacy adapters to read/write new mission branch strategy fields.
- Enhance MissionManager and PlanningModeModal UX to configure branch strategy and planning breakdown behavior.
- Add/adjust coverage across core, dashboard, and roadmap plugin tests for mission branch and planning flow behavior.
- Add a changeset and mission docs updates for the new mission branch strategy behavior.
Files changed:
.changeset/fn-5675-mission-branch-strategy.md | 9 +
docs/missions.md | 13 ++
packages/core/src/__tests__/db-migrate.test.ts | 12 +-
.../src/__tests__/db-mission-base-branch.test.ts | 14 +-
packages/core/src/__tests__/db.test.ts | 34 ++--
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +-
packages/core/src/__tests__/mission-store.test.ts | 148 +++++++++++++-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 9 +-
packages/core/src/index.ts | 1 +
packages/core/src/mission-store.ts | 64 ++++--
packages/core/src/mission-types.ts | 9 +
packages/dashboard/app/api/legacy.ts | 23 ++-
.../dashboard/app/components/MissionManager.tsx | 226 +++++++++++++++++++--
.../dashboard/app/components/PlanningModeModal.tsx | 9 +-
.../components/__tests__/MissionManager.test.tsx | 100 +++++++++
.../PlanningModeModal.planning-flow.test.tsx | 91 +++++++++
packages/dashboard/app/components/mission-types.ts | 4 +
.../dashboard/src/__tests__/mission-e2e.test.ts | 49 ++++-
packages/dashboard/src/mission-routes.ts | 41 +++-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
25 files changed, 808 insertions(+), 76 deletions(-)
Fusion-Task-Id: FN-5675
Fusion-Task-Lineage: cfd13c13-9eff-4b82-90c3-88505d51bfb2
2026-05-29 15:25:47 -07:00
gsxdsm
bac12d1e28
FN-5695: sync feature assertions for late-added mission features
...
Close the assertion-graph gap by making mission feature assertions store-managed and automatically synchronized.
- add `sourceFeatureId` to contract assertions (types, schema migration, persistence, snapshot restore)
- auto-create/update/delete managed assertions when features are added, edited, or removed in `MissionStore`
- remove duplicate/manual assertion creation from mission routes and rely on centralized store behavior
- expand core, dashboard, engine, and plugin tests plus docs to cover validator behavior for later-added features
Files changed:
docs/missions.md | 11 ++-
docs/storage.md | 2 +-
packages/core/src/__tests__/db-migrate.test.ts | 12 ++--
packages/core/src/__tests__/db.test.ts | 34 ++++-----
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +--
packages/core/src/__tests__/mission-store.test.ts | 82 +++++++++++++++++++---
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 11 ++-
packages/core/src/mission-store.ts | 69 ++++++++++++++++--
packages/core/src/mission-types.ts | 4 ++
.../dashboard/src/__tests__/mission-e2e.test.ts | 70 ++++++++++++------
packages/dashboard/src/mission-routes.ts | 16 +----
.../src/__tests__/mission-execution-loop.test.ts | 46 +++++++++++-
.../src/store/__tests__/roadmap-store.test.ts | 4 +-
18 files changed, 288 insertions(+), 97 deletions(-)
Fusion-Task-Id: FN-5695
Fusion-Task-Lineage: 337f030c-e883-41aa-b982-13ebe45bd5ee
2026-05-29 13:35:13 -07:00
gsxdsm
b265d6b395
FN-5700: remove duplicate task autoMerge declarations
...
Clean up duplicate task autoMerge declarations across core schema, store mapping, and tests.
- Remove the redundant task-level autoMerge field from core Task types and DB schema expectations.
- Keep task hydration autoMerge mapping in a single path and normalize boolean conversion to explicit integer checks.
- Update affected core and roadmap store tests to match the deduplicated autoMerge surface.
Files changed:
packages/core/src/__tests__/db-migrate.test.ts | 12 ++++----
packages/core/src/__tests__/db.test.ts | 34 +++++++++++-----------
packages/core/src/__tests__/goals-schema.test.ts | 2 +-
packages/core/src/__tests__/insight-store.test.ts | 10 +++----
packages/core/src/__tests__/mission-store.test.ts | 2 +-
packages/core/src/__tests__/run-audit.test.ts | 2 +-
packages/core/src/__tests__/secrets-schema.test.ts | 6 ++--
.../core/src/__tests__/store-merge-queue.test.ts | 2 +-
packages/core/src/__tests__/task-documents.test.ts | 2 +-
packages/core/src/db.ts | 1 -
packages/core/src/store.ts | 4 +--
packages/core/src/types.ts | 5 ----
.../src/store/__tests__/roadmap-store.test.ts | 4 +--
13 files changed, 39 insertions(+), 47 deletions(-)
Fusion-Task-Id: FN-5700
Fusion-Task-Lineage: d2d4d41e-31b1-44a0-9594-9d75056c59a2
2026-05-29 12:25:17 -07:00
gsxdsm
72214132d2
FN-5678: add branch-group data model foundation
...
Establish per-mission/per-planning branch-group persistence and task metadata plumbing for shared auto-merge behavior.
- add `branch_groups` schema, indexes, exports, and store types for mission/planning branch assignment
- wire task source metadata branch-context helpers and branch-group row handling into core store flows
- add branch-group and migration coverage plus roadmap schema-version assertion wording fix
- add published changeset and storage doc note for the new branch-group persistence layer
- preserve forward-only migration safety by advancing schema to 96 and gating branch-group migration at `< 96`
Files changed:
.changeset/per-mission-automerge-foundation.md | 11 ++
docs/storage.md | 1 +
packages/core/src/__tests__/backup.test.ts | 32 ++++
.../core/src/__tests__/branch-group-store.test.ts | 148 ++++++++++++++++++
packages/core/src/__tests__/db-migrate.test.ts | 40 +++++
packages/core/src/__tests__/db.test.ts | 16 ++
packages/core/src/__tests__/mission-store.test.ts | 16 ++
packages/core/src/db.ts | 52 ++++++-
packages/core/src/index.ts | 2 +-
packages/core/src/mission-store.ts | 19 ++-
packages/core/src/mission-types.ts | 4 +
packages/core/src/store.ts | 171 ++++++++++++++++++++-
packages/core/src/types.ts | 59 +++++++
13 files changed, 556 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-5678
Fusion-Task-Lineage: cd6e5312-a9c5-475f-a0de-1d3090395bdd
2026-05-29 11:16:00 -07:00
gsxdsm
a014c6d42d
FN-5697: retry transient auto-merge failures and fix migration versioning
...
Treat transient auto-merge/provider abort errors as bounded retries while preserving correct schema migration ordering.
- Add transient merge retry handling with capped exponential backoff, queue re-enqueue, and exhaustion logging before failing tasks.
- Extend task/core types and evaluator evidence plumbing for merge transient retry tracking and MergeTransientRetryExhausted visibility.
- Add regression coverage for transient auto-merge retries and exhaustion behavior in merge error recovery tests.
- Resolve migration collision by promoting workflow_steps.gateMode migration to version 77, shifting subsequent migrations, and bumping schema version to 95.
- Add a changeset and architecture note documenting transient retry behavior.
Files changed:
.changeset/fn-5697-auto-merge-transient-retry.md | 5 ++
docs/architecture.md | 1 +
packages/core/src/db.ts | 85 +++++++++++----------
packages/core/src/eval-types.ts | 1 +
packages/core/src/store.ts | 19 +++--
packages/core/src/types.ts | 7 ++
packages/engine/src/__tests__/evaluator-evidence.test.ts | 1 +
packages/engine/src/__tests__/merge-error-recovery.test.ts | 87 ++++++++++++++++++++++
packages/engine/src/evaluator-evidence.ts | 1 +
packages/engine/src/project-engine.ts | 68 +++++++++++++++++
10 files changed, 231 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-5697
Fusion-Task-Lineage: c8be7374-7cb6-444e-9920-9227e05a43dc
2026-05-29 10:23:59 -07:00