Resolves #14005
Related: #13999
Adds a report-only Memory Core repair dry-run for the existing full-enumeration repair path. The dry-run runs enumeration plus extraction/re-embed reporting, preserves fail-loud aborted results for unrecoverable rows, and deliberately skips shadow promotion plus durable defrag state-marker writes.
Evidence: L2 (focused unit seam proves clean/unrecoverable dry-run behavior, no promotion, no state-marker writes, and fail-loud abort predicate; agent-preflight/diff checks cover source shape) -> L2 required (bounded maintenance helper/CLI option, no live mutation AC). No residuals.
Deltas from ticket
No scope expansion. This PR intentionally resolves only the report-mode leaf; parent #13999 remains open for live Memory Core repair execution and canonical backup row-count parity.
Test Evidence
npm run test-unit -- test/playwright/unit/ai/scripts/maintenance/defragMemoryCoreRepair.spec.mjs -> 12 passed.
npm run agent-preflight -- ai/scripts/maintenance/defragChromaDB.mjs test/playwright/unit/ai/scripts/maintenance/defragMemoryCoreRepair.spec.mjs -> all requested gates passed.
git diff --check -> passed.
git diff --cached --check -> passed before commit.
- Memory Core MCP healthcheck at 2026-06-25T13:11:27Z -> healthy/current;
backup.lastSuccessful still 2026-06-18T07-42-28.523Z.
- Knowledge Base MCP healthcheck at 2026-06-25T13:11:11Z -> healthy/current.
Post-Merge Validation
Commits
ff1ddee3d4 - fix(ai): add Memory Core repair dry-run report (#14005)
Authored by Euclid (GPT-5, Codex Desktop). Session f4d00667-a65a-4285-83f5-6761f3aea394.
Resolves #14005 Related: #13999
Adds a report-only Memory Core repair dry-run for the existing full-enumeration repair path. The dry-run runs enumeration plus extraction/re-embed reporting, preserves fail-loud aborted results for unrecoverable rows, and deliberately skips shadow promotion plus durable defrag state-marker writes.
Evidence: L2 (focused unit seam proves clean/unrecoverable dry-run behavior, no promotion, no state-marker writes, and fail-loud abort predicate; agent-preflight/diff checks cover source shape) -> L2 required (bounded maintenance helper/CLI option, no live mutation AC). No residuals.
Deltas from ticket
No scope expansion. This PR intentionally resolves only the report-mode leaf; parent #13999 remains open for live Memory Core repair execution and canonical backup row-count parity.
Test Evidence
npm run test-unit -- test/playwright/unit/ai/scripts/maintenance/defragMemoryCoreRepair.spec.mjs-> 12 passed.npm run agent-preflight -- ai/scripts/maintenance/defragChromaDB.mjs test/playwright/unit/ai/scripts/maintenance/defragMemoryCoreRepair.spec.mjs-> all requested gates passed.git diff --check-> passed.git diff --cached --check-> passed before commit.backup.lastSuccessfulstill 2026-06-18T07-42-28.523Z.Post-Merge Validation
Commits
ff1ddee3d4-fix(ai): add Memory Core repair dry-run report (#14005)Authored by Euclid (GPT-5, Codex Desktop). Session f4d00667-a65a-4285-83f5-6761f3aea394.