Handle cqs schema version upgrades — check version, attempt migration, rebuild if needed.
Handle schema version mismatches when upgrading cqs.
cqs stats 2>&1
If it works normally, no migration needed. If you see a schema error, continue.
Errors tell you the versions:
from, cqs expects to. Auto-migration was attempted but no migration path exists.cqs attempts auto-migration when it opens the database. If you're seeing SchemaMismatch, it means no migration path exists for that version jump.
Check available migrations:
grep -n "migrate_v" src/store/migrations.rs
When auto-migration isn't available, the only option is a full rebuild:
# Back up the old index (just in case)
cp -r .cqs/ .cq.backup/
# Delete and rebuild
rm -rf .cqs/
cqs init
cqs index
This re-parses all source files and re-embeds them. Notes in docs/notes.toml are preserved (they live outside .cqs/).
References have their own databases at the same schema version:
cqs ref list
For each reference:
cqs ref update <name>
If that fails with schema errors, remove and re-add:
cqs ref remove <name>
cqs ref add <name> <source_path> --weight <weight>
cqs stats
Should show the current schema version and correct chunk counts.
rm -rf .cq.backup/
.cqs/ is gitignored — rebuilding only costs time, not data. But it now holds named slots (.cqs/slots/<name>/index.db) and the embeddings cache (.cqs/embeddings_cache.db) — rm -rf .cqs/ nukes ALL slots and the cache. Prefer removing just the broken slot dir if only one slot is affected.docs/notes.toml) are never lost — they're separate from the indexmetadata table: SELECT value FROM metadata WHERE key = 'schema_version'src/store/helpers/mod.rs:CURRENT_SCHEMA_VERSION)systemctl --user stop cqs-watch (restart after)