cass v0.9.0
Sharded native ANN semantic search, a daemon that stays answerable under load, responsive transcript pages, and a round of fixes for large archives.
Fixes reporters were waiting on:
- #498:
cass index --fullon multi-million-document archives no longer fails atcheckpoint_after_foldwith "posting validation limit exceeded". Every lexical fold now stays within the per-term posting limit (da06837). - #495 / #497:
cass doctor --rebuild-canonical-fts --yestreats retiring an oversized FTS residue shadow as a completed repair (exit 0, not 13). It no longer rewrites markers on an already-retired archive, and it clears the repair-pending marker after a verified rebuild, socass statusstops reporting a pending repair (89e053f, 71b72ed). - #496 / #498: the full-rebuild disk check no longer counts a failed rebuild's leftover
.rebuild-staginggeneration twice. It now credits those bytes against the requirement, because the next rebuild resumes into them or clears them first:max(512 MiB, 2*db + 2*lexical - staging)(149ee21, 060807c).
Also fixed:
- Date-filtered search works again on long-lived indexes (#499; frankensearch-quill 0.3.4). Boolean queries follow the documented grammar in every search lane.
- A robot search that finds the lexical index missing or unusable on a large archive starts a detached background
cass indexinstead of retrying an inline rebuild that could not finish (76306c0). - macOS: a wedged
footprint(1)can no longer stall indexing. All OS telemetry probes now have a 3 s deadline (8c9ba0b). - GitHub Copilot Chat history stored only in VS Code's native chat stores (
workspaceStorage/*/chatSessions, legacystate.vscdb) is now detected and indexed (cc16f0a). total_matchesis exact up to 5M documents (was 50k).
Contract changes (pre-1.0 minor bump):
- When the remaining robot budget cannot fit semantic work, an explicit
--mode semanticsearch now fails with exit 10 (timeout, retryable) instead of returning an empty exit-0 envelope. Lexical hits are never substituted. cass archiveerrors use distinct exit codes: 2 usage, 5 integrity, 7 busy, 14 I/O, 9 other.- Search follow-ups use
--message-index(a hit'sline_number).--lineaddresses only a physical JSONL line. View payloads now namecoordinate_spaceandcontent_source, andcass introspectdescribes both fields. - An index run that cannot read a source keeps what it committed, then exits 9 (retryable) and names the incomplete scan.
The full list, including tests knowingly red at release, is in CHANGELOG.md.
Assets: Linux x86_64 and arm64 (glibc 2.28 floor), macOS arm64, Windows x86_64. Install with install.sh / install.ps1 from this release, or download an archive and check it against SHA256SUMS.