FN-7739: retry locked store access in backup/mcp/db CLI commands
Audits and hardens `fn backup`, `memory-backup`, `mcp`, and `db vacuum` CLI commands so they retry a locked board database instead of hanging, and reliably close store handles on every exit path.
- Add retryOnLock + closeProjectStore/asLocalProjectContext pattern to backup.ts, memory-backup.ts, mcp.ts, and db.ts (following the FN-7731/FN-7738 pattern)
- Close cached, uncached CWD-fallback, and ad-hoc MCP secrets TaskStores on every exit path (success, error, early-return)
- Retry MCP settings writes and DB VACUUM on lock contention, honoring FUSION_CLI_LOCK_RETRY_MS
- Add lock-retry regression test suites for backup, db, mcp, and memory-backup commands
- Update docs/cli-reference.md with the new retry/lock behavior
- Add changeset (patch) documenting the fix
Files changed:
.changeset/fn-7739-cli-cmd-lock-retry.md | 7 +
docs/cli-reference.md | 17 +
.../commands/__tests__/backup-lock-retry.test.ts | 202 +++++++++++
packages/cli/src/commands/__tests__/backup.test.ts | 15 +
.../src/commands/__tests__/db-lock-retry.test.ts | 182 ++++++++++
packages/cli/src/commands/__tests__/db.test.ts | 15 +
.../src/commands/__tests__/mcp-lock-retry.test.ts | 234 ++++++++++++
packages/cli/src/commands/__tests__/mcp.test.ts | 14 +
.../__tests__/memory-backup-lock-retry.test.ts | 201 +++++++++++
.../src/commands/__tests__/memory-backup.test.ts | 15 +
packages/cli/src/commands/backup.ts | 252 +++++++++----
packages/cli/src/commands/db.ts | 62 +++-
packages/cli/src/commands/mcp.ts | 391 +++++++++++++++------
packages/cli/src/commands/memory-backup.ts | 179 +++++++---
14 files changed, 1538 insertions(+), 248 deletions(-)
Fusion-Task-Id: FN-7739
Fusion-Task-Lineage: 6dbab086-2bf8-4cd4-950b-04fe39131933
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>