mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-10-26 06:43:15 +08:00
A project name failing cbm_validate_project_name made project_db_path() return an empty path, which cbm_store_open_path_query passed to SQLite - and SQLite opens "" as an anonymous temp database. The healthy temp db then failed the integrity check (no projects table) and quarantine_corrupt_store rendered ".corrupt.<hex>" from the empty prefix: a RELATIVE path, dropped as a 4 KB file into whatever directory the daemon was started from, on every such query. The caller only ever saw a clean 'project not found', so nothing pointed at the litter. Two guards, per the reporter's analysis: resolve_store_internal skips the direct open on an empty path and falls through to the existing fallback scan (which can still resolve legacy dbs whose internal name predates validation), and quarantine_corrupt_store refuses an empty path outright (belt-and-braces - nothing at such a path is worth quarantining). Regression test: tools/call search_graph with project "bad name" from a temp cwd asserts the clean not-found error AND that no .corrupt.* file appears in the cwd. RED before (litter created), GREEN after, RED again on revert. Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>