cass v0.10.0
Long sessions become fully searchable, giant conversations index in bounded slices, a doctor repair for leaked archive pages, and robot output that says how it read your query.
Upgrade notes:
- The first
cass indexafter upgrading rebuilds the lexical index once from the database, on an archive of any size. The old index capped each conversation at 8 MiB of text in total, so messages past that point were stored but never searchable (on one owner archive, 39.6% of non-empty messages). The cap now applies per message. Expect that first run to take as long as a full rebuild. - The archive schema moves to v22 (
forgotten_sources, forcass forget) in place on first open. Logical archives exported by v0.9.0 (schema v21) and v20 still restore (cass archive import --allow-compatible-schema).
Fixes reporters were waiting on:
- #504: OpenCode 2.x sessions (
session_v2/session_message) are indexed, via franken-agent-detection 0.3.3 (6d75777). - #500: Claude Code prompts typed while the agent is mid-turn (
queued_commandattachments) are indexed as user messages (1171950). Sessions indexed before upgrading pick up their earlier queued prompts aftercass index --full. - #502:
cass index --watch-oncesees commits that live only in a SQLite source's WAL (OpenClaw, Cursor, OpenCode, Goose, Devin, Shelley, Antigravity) (b420678). - #505:
sources setup --tailscaleno longer probes Mullvad exit nodes as SSH hosts (3a48d21). - #506:
CASS_RAW_MIRROR=0turns raw-mirror capture off, so acass mirror prunesticks (e021334). - #507:
cass packsays why it used lexical evidence (realized.fallback_reason) (ae2c0cc). - #495:
cass statusno longer reports a retired FTS shadow as a pending repair. - #496:
cass statusreports the cgroup memory limit the process actually runs under.
Also fixed:
- A conversation over 16,384 messages or 32 MiB is persisted in bounded slices instead of one transaction, so a 1 GiB Codex rollout no longer outlives the index watchdog. A batch that mixes such a conversation with ordinary ones indexes all of them (9f1d16d).
- Index runs on multi-million-message archives no longer spend 25+ minutes counting touched conversations at startup or get killed after ingest (95b8e91).
- The one-time legacy analytics rebuild no longer reads the whole archive into memory (17.3 GB -> 1.1 GB on a 16 GB copy).
- Codex rollouts above 100 MiB index again when
CASS_CODEX_MAX_SOURCE_BYTESallows them. - Semantic search comes back after
forget,dedup --applyandsources agents exclude(the v0.9.0 known issue). - A forgotten session stays forgotten when other sessions in its directory change, and a purge interrupted mid-rebuild is finished by the next plain
cass index. - FrankenSQLite 0.4.6: a live B-tree page can no longer be freed and handed out again (
page N is referenced multiple times).
Added:
cass doctor --repair-leaked-pagesfrees leaked archive pages (page N is never used) in place, with a verified backup, when they are the only damage.- Robot search echoes how the query was grouped (
_meta.effective.query_structure), why the automatic wildcard retry did not run, and, for an empty--workspacesearch, azero_result_diagnosiswith likely candidates.cass pack --jsonechoes what its search ran, redacted like the rest of the pack. - The Pages viewer accepts a typed recovery key.
Contract change (pre-1.0 minor bump):
- Every robot error kind is kebab-case:
lexical_generationis nowlexical-generation, andlexical-shard,failed-seed-bundle-fileandretained-publish-backupmoved with it.artifact_kindvalues in status, diag and doctor output keep their snake_case spelling.
Known open at release (details in CHANGELOG.md):
ann_shards::wal_tests(3 tests) are red, as at v0.9.0 (non-native graph sidecar fixtures).metamorphic_introspect_schema::introspect_response_schemas_cover_runtime_json_shapes: at--max-tokens 1200, the pack envelope (now including_meta.effective) leaves no room for the fixture's evidence, so the pack comes back with none. Small--max-tokensbudgets hold less evidence than in v0.9.0; the default budget (12,000) is unaffected.gh457_hollow_generationfailed once in a sharded run on a build host whose workspace held untracked agent-session files; on a clean tree at the release commit (2bfe708) it passes (61/61), so this is test isolation, not a regression.- The integration suite was run in part (72 of 287 targets plus the release gate's targets and goldens) because the build fleet was saturated; the rest is still running.
cass index --semanticholds a whole conversation's text in memory while embedding it; on a conversation of hundreds of MiB that is a large transient peak. No data is lost.
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.