## Dicklesworthstone/coding_agent_session_search — v0.8.0…v0.9.0

_818+ commits._

### Features
- **feat(search): Boolean queries follow the documented grammar in every lane (coding_agent_session_search-2l1b0.52)** (ff7fa96)
- **feat(pages): --verify rescans a plaintext bundle with its declared share profile (coding_agent_session_search-2l1b0.60)** (d5c6c30)
- **feat(pages): share profiles redact every exported text (coding_agent_session_search-2l1b0.60)** (a8caad2)
- **feat(robot): search --robot-meta echoes what it actually ran under _meta.effective (coding_agent_session_search-2l1b0.68)** (bc5c3ba)
- **feat(tui): the first run indexes by itself and search goes live without a restart (coding_agent_session_search-2l1b0.56)** (f3aee3d)
- **feat(tui): ranking modes order non-empty search results (coding_agent_session_search-2l1b0.53)** (ee7b9fa)
- **feat(serve): retain semantic and hybrid search contexts across requests** (d666dec)
- **feat(index): background runs defer the one-time migration repair of a large archive (coding_agent_session_search-2l1b0.6)** (36c5d4d)

### Fixes
- **fix(connectors): keep upstream Copilot evidence when no native store exists; register the adapter** (74829b0)
- **fix(doctor): advertise the exit codes doctor returns; archive I/O exits 14 (coding_agent_session_search-2l1b0.58)** (b274476)
- **fix(forget): prove every surface drops forgotten conversations; say what forget keeps (coding_agent_session_search-2l1b0.50)** (7a2457c)
- **fix(codex): keep the GH #489 colon-list warning with its only caller, the indexer (coding_agent_session_search-2l1b0.62)** (f034c4b)
- **fix(search): robot searches set up semantics once, inside the budget, and never spawn the daemon (coding_agent_session_search-2l1b0.68)** (600cddf)
- **fix(ci): link the real frankensearch facade and walkdir in the retained-WAL harness (coding_agent_session_search-2l1b0.62)** (b16b661)
- **fix(introspect): the view schema names its coordinate system and content source (#493)** (73995e2)
- **fix(connectors): detect Copilot Chat from VS Code's native chat stores** (cc16f0a)
- **fix(index): credit a leftover rebuild-staging generation against the full-rebuild headroom (#498)** (060807c)
- **fix(indexer): bound macOS telemetry probes so a hung footprint cannot stall indexing** (8c9ba0b)
- **fix(docs): the README dependency row names the lexical-tantivy oracle lane again (coding_agent_session_search-2l1b0.59)** (3f1f9fb)
- **fix(schedule): bound incremental-index deferral under sustained load** (355dfd2)
- **perf(indexer): streaming catch-up paces commits by their cost and folds segments as it goes** (cfe29dd)
- **fix(tests): golden helpers compare an owned String, so both targets compile (coding_agent_session_search-2l1b0.62)** (a191c8a)
- **fix(pages): share profiles never rewrite credentials; the secret scan still fails closed (coding_agent_session_search-2l1b0.60)** (dd1dc2a)
- **fix(deps): resolve frankensearch-quill 0.3.2, the GH #499 hotfix (coding_agent_session_search-2l1b0.49)** (7ba6786)
- **fix(docs-truth): report a crashing --help as a crash, and cache help per path (coding_agent_session_search-2l1b0.59)** (19bb200)
- **fix(tui): the update banner and first-run search go live without a keypress (coding_agent_session_search-2l1b0.56)** (a67cc8a)
- **fix(search): --highlight never marks a term twice; say what it adds (coding_agent_session_search-2l1b0.68)** (b64acb8)
- **fix(robot): one spelling per error kind; drop the producerless update-check (coding_agent_session_search-2l1b0.58)** (7acddd4)
- **fix(archive): a locked source database is busy and retryable, not exit 9 (coding_agent_session_search-2l1b0.59)** (ed9dfde)
- **fix(pages): the decryptor's config allowlist admits next_slot_id (coding_agent_session_search-2l1b0.61)** (5a49d04)
- **fix(analytics): drop the ignored `analytics rebuild --force` flag (coding_agent_session_search-2l1b0.68)** (fd1433b)
- **fix(export-html): --include-tools and --show-timestamps can be turned off (coding_agent_session_search-2l1b0.68)** (5a2c179)
- **fix(robot): search --highlight marks JSON snippets too (coding_agent_session_search-2l1b0.68)** (83933ae)
- **fix(indexer): legacy OMP analytics runs on its own writer connection (coding_agent_session_search-2l1b0.75)** (59df1c1)
- **fix(indexer): background index children cap glibc malloc arenas (coding_agent_session_search-2l1b0.72)** (3dcf9a6)
- **fix(tui): Alt+S says how to enable semantic search when the model is absent (coding_agent_session_search-2l1b0.66)** (71c5673)
- **fix(locks): the remaining contention checks recognise Windows lock violations (coding_agent_session_search-2l1b0.74)** (b4521d3)
- **fix(indexer): index-run and source advisory locks detect Windows contention (coding_agent_session_search-2l1b0.74)** (d4a8257)
- **fix(tui): Enter in the bulk-actions menu runs the highlighted action (coding_agent_session_search-2l1b0.54)** (993b6fd)
- **fix(pages): revoked key-slot ids are never reused (coding_agent_session_search-2l1b0.61)** (2af6354)
- **fix(robot): jsonl search output is hits only unless metadata is asked for (coding_agent_session_search-2l1b0.58)** (3258868)
- **fix(doctor): read-only guidance routes archive failures to the repair planner (coding_agent_session_search-2l1b0.73)** (22be9cd)
- **fix(tui): F9 match mode changes the search, and saved views keep the query (coding_agent_session_search-2l1b0.55)** (d05c29b)
- **fix(robot): exit-code contract matches what cass emits (coding_agent_session_search-2l1b0.58)** (c12062a)
- **fix(tui): no blocking update prompt before the TUI draws (coding_agent_session_search-2l1b0.56)** (e125df9)
- **fix(ci): repair the Codex, OpenClaw and raw-mirror consumer lanes (coding_agent_session_search-2l1b0.62)** (8a7fd2e)
- **fix(search): an engine cursor-invariant failure is not retryable (coding_agent_session_search-2l1b0.49)** (2bb48ea)
- **fix(cli): CASS_DB_PATH selects the archive exactly like --db (coding_agent_session_search-2l1b0.57)** (99f7aed)
- **fix(export-html): encrypted exports reveal nothing about the conversation before unlock (coding_agent_session_search-2l1b0.67)** (52394e5)
- **fix(cli): no silent substitution for typos, time bounds and forget (coding_agent_session_search-2l1b0.51) (coding_agent_session_search-2l1b0.64) (coding_agent_session_search-2l1b0.50)** (4a7f619)
- **fix(tui): Ctrl+Shift+C copies content instead of force-quitting (coding_agent_session_search-2l1b0.54)** (5f3d796)
- **perf(redact): ASCII word boundaries make secret redaction ~26x faster on real text** (ff6d648)
- **perf(search): count totals exactly up to 5M documents instead of 50k** (1ca2503)
- **fix(doctor): clear the FTS repair-pending marker after a verified canonical FTS rebuild (#497)** (71b72ed)
- **fix(index): do not double a failed rebuild's leftover staging in the full-rebuild headroom (coding_agent_session_search-ztlqc)** (149ee21)
- **fix(index): name the scan and lexical rebuild in index-run.lock (coding_agent_session_search-7qirz)** (2436643)
- **fix(doctor): settle an oversized FTS shadow retirement and name the interrupted-artifact cleanup (#497, #495)** (89e053f)
- **fix(search): hand unfinished lexical repairs to a detached background index** (76306c0)
- **fix(gate): honour .ubsignore when naming changed files to UBS (coding_agent_session_search-ggq7g)** (01854fa)
- **fix(lexical): keep every Quill fold within the per-term posting limit (coding_agent_session_search-o5d74)** (da06837)
- **fix(pages): restore the six pinned vendor assets a formatter rewrote (coding_agent_session_search-ggq7g)** (aa47c7f)
- **fix(search): honor HNSW maintenance for current and incremental vectors** (50a58b2)
- **fix(index): bound watch notifications and retain overflow reconciliation** (b51ebb1)
- **fix(contract): explicit semantic budget exhaustion is a typed exit-10 timeout; align spec test and docs (coding_agent_session_search-vy4ic)** (c3ac835)

### Backend
- **merge: preserve the July CASS profiling branch in main history** (94c78a7)
- **Merge the #497 doctor FTS retirement follow-up (89e053f3) onto origin/main** (6925aeb)
- **Merge the background lexical-repair handoff (76306c0c) onto origin/main** (78ba672)

### Tests
- **test(watch): make the backlog-overflow test's negative control real (coding_agent_session_search-fqt9s)** (41af938)
- **test: assert the current contracts in eight integration tests red on main** (89d00eb)
- **test(pages): re-pin the viewer safety checks to the prettier-formatted JS (coding_agent_session_search-2l1b0.77)** (dc884ca)
- **test(fixtures): restore pinned fixtures and goldens a JSON formatter rewrote** (a0543bd)
- **test(search): date window after a native revision tombstones a sealed segment (GH #499) (coding_agent_session_search-2l1b0.49)** (ef9e3aa)
- **test(goldens): the encrypted-export golden shows the sealed pre-unlock page (coding_agent_session_search-2l1b0.67)** (9372724)
- **test(goldens): metamorphic and regression search goldens pass again on main (coding_agent_session_search-2l1b0.62)** (4f3bbb0)
- **test(search): date window over a tombstoned sealed segment (GH #499) (coding_agent_session_search-2l1b0.49)** (47bffdf)
- **test(tui): semantic-guidance test starts from lexical; focus graph has 10 nodes (coding_agent_session_search-2l1b0.66)** (7df31d1)
- **test(frankensqlite): registry-identity gate expects the 0.4.4 family it guards (coding_agent_session_search-2l1b0.76)** (4737812)
- **test(search): metamorphic search-semantics oracle over a generated corpus (coding_agent_session_search-2l1b0.68)** (cce360a)
- **test(robot): README and AGENTS exit-code tables must match capabilities (coding_agent_session_search-2l1b0.69)** (724280f)
- **test(daemon): observe embedding progress directly instead of through a scoped tracing subscriber (coding_agent_session_search-2l1b0.71)** (156ab97)
- **test(index): scope injected worker panics to the arming test (coding_agent_session_search-2l1b0.70)** (697c9a7)
- **test(index): prove the completed-checkpoint fast path over a real generation (coding_agent_session_search-fqt9s)** (6f86acc)
- **test(tui): anchor seven cached-detail fixtures to their hit under the #493 matcher (coding_agent_session_search-2gy3y)** (7aa102c)
- **test(errors): count migration-repair-pending in the audited kind total (coding_agent_session_search-2l1b0.6)** (8325ddf)
- **test(storage): prove a rebuild batch past one FTS5 segment leaf builds (coding_agent_session_search-gh369-fts5-multileaf-segment-writer-cb0gl)** (10e0cdd)
- **test: align three e2e tests with the #493 view/expand/pack contracts (coding_agent_session_search-2l1b0.43)** (8a1a597)
- **test(codex): show index stdout when it is not one JSON document (coding_agent_session_search-2l1b0.37)** (640d2c6)
- **test: compare the #495 DDL whitespace-free; satisfy clippy in the sentinel sweep (coding_agent_session_search-2l1b0.45) (coding_agent_session_search-2l1b0.37)** (557cf59)
- **test(index): import the franken_sync ConnectionExt the #495 e2e test needs (coding_agent_session_search-2l1b0.45)** (ec7fd8b)
- **test(codex): sweep the data dir for excluded sentinels, with a positive control (coding_agent_session_search-2l1b0.37)** (5ab5f7d)
- **test(index): prove #495 residue FTS shadows converge through doctor and full index (coding_agent_session_search-2l1b0.45)** (d34142f)
- **test(search): show the budget object when a completed search reports a timeout (coding_agent_session_search-u3vho)** (00a7403)

### Docs
- **docs(changelog): v0.9.0 -- date the release and record what landed after the version bump** (f6de87b)
- **docs: dependency-constraint style and daemon auto-spawn match the code (coding_agent_session_search-2l1b0.59)** (30755d8)
- **docs(performance): bench names, env defaults, memory advice and baseline provenance match the code (coding_agent_session_search-2l1b0.59)** (6a4bcc0)
- **docs(gh458): section 5 landed; name its tests and drop the empty gh404_ filter (coding_agent_session_search-2l1b0.59)** (95a1c50)
- **docs(robot-mode): guide covers budgets, index-busy, background rebuilds and _meta.effective (coding_agent_session_search-2l1b0.59)** (0cbeb65)
- **docs(errors): Pages E-codes are defined but never shown; point to err.kind (coding_agent_session_search-2l1b0.59)** (2e551c6)
- **docs(limits): index and env limits describe Quill-era cass (coding_agent_session_search-2l1b0.59)** (4da3126)
- **docs(swarm): contract states where the shipped swarm commands differ (coding_agent_session_search-2l1b0.59)** (ee70341)
- **docs(pack): contract states where the shipped pack command differs (coding_agent_session_search-2l1b0.59)** (543cc42)
- **docs(readme): golden coverage, live swarm lint and guide claims match the code (coding_agent_session_search-2l1b0.59)** (ac2e060)
- **docs(readme): forgiving-syntax table matches normalize_args (coding_agent_session_search-2l1b0.59)** (41a4cbe)
- **docs: cass serve is not lexical-only; document all nine operations (coding_agent_session_search-2l1b0.59)** (65d2223)
- **docs(readme): TUI borders, footer progress, Alt+A and Json tab match the code (coding_agent_session_search-2l1b0.59)** (10b1024)
- **docs(readme): TUI contrast, toast and frame-budget claims match the code (coding_agent_session_search-2l1b0.59)** (6fd0f1e)
- **docs(agents): export-html error kinds are the kebab-case kinds cass emits (coding_agent_session_search-2l1b0.59)** (084e7b7)
- **docs(changelog): v0.9.0 is not released yet (coding_agent_session_search-2l1b0.59)** (86f3be9)
- **docs: all 32 runtime connectors are listed, including Kiro (coding_agent_session_search-2l1b0.59)** (c291e0b)
- **docs: dependency tables show the pins Cargo.toml actually has (coding_agent_session_search-2l1b0.59)** (f9e76c0)
- **docs(readme): robot-output and caching claims match the code (coding_agent_session_search-2l1b0.59)** (b49ae74)
- **docs(readme): search-behavior claims match the code (coding_agent_session_search-2l1b0.59)** (c251861)
- **docs(readme): remote-source claims match the code (coding_agent_session_search-2l1b0.59)** (0c25015)
- **docs(readme): storage and publish-recovery claims match the code (coding_agent_session_search-2l1b0.59)** (9d0e1e2)
- **docs(readme): env table matches the code (coding_agent_session_search-2l1b0.59)** (3f82160)
- **docs(readme): document the repair handoff, match-count precision, and the redaction engine** (740df75)
- **docs(changelog): Unreleased entries for the search repair handoff, exact counts, and redaction speedup** (9fb9f17)
- **docs: reality check night 2026-09-23 — logical round-trip import inconclusive (coding_agent_session_search-2l1b0)** (29051b0)
- **docs: reality check night 2026-09-23 — owner full-history ingest result, corrected counts (coding_agent_session_search-2l1b0)** (17fc3e6)
- **docs: reality check — night of 2026-09-23 (owner archive, wrong-answer class, TUI, gate) (coding_agent_session_search-2l1b0)** (7723521)
- **docs: reality check — afternoon of 2026-09-23 (TUI residuals, lock breadcrumb, #496 headroom, diagnoses) (coding_agent_session_search-2l1b0)** (aaa4424)
- **docs: 2026-09-23 reality check — first full lib run, vendor-pin revert, #498, gate UBS fix (coding_agent_session_search-2l1b0)** (bf3b379)
- **docs: reality check — delegated decisions, #450/#495/#486 work, UBS delta-gate finding (coding_agent_session_search-2l1b0)** (0e77ef7)
- **docs: evening reality-check pass — receipts, landed fixes, UBS finding, open decisions (coding_agent_session_search-2l1b0)** (db902d5)

### Chore
- **chore(beads): record b2744760's full green gate on 2l1b0.58 (coding_agent_session_search-2l1b0)** (bc425d2)
- **chore(beads): close fqt9s (named probe passes, 41af9387); status on 2l1b0.50 (7a2457c0) and .58 (b2744760) (coding_agent_session_search-2l1b0)** (02983ee)
- **chore(beads): file 2l1b0.78 (semantic never recovers after forget) and .79 (incremental index never converges a deletion-stale lexical index); status on .58, .62, .68 (coding_agent_session_search-2l1b0)** (a979726)
- **chore(beads): close 2l1b0.70 (injection stress 0/200), .71 (gh470 20/20 + full suite), .77 (pages_bundle green and gated)** (6aa20d5)
- **chore(gate): the default integration list runs pages_bundle (coding_agent_session_search-2l1b0.77)** (8943cbf)
- **chore(beads): close 2l1b0.52 (grammar in every lane, quill 0.3.4); .68 gate-list landed; .77 root cause** (a5d16f1)
- **chore(gate): the default integration list runs the search_metamorphic oracle (coding_agent_session_search-2l1b0.68)** (83af5d3)
- **chore(beads): close 1xpbn (355dfd2e verified); file d32jo (cli_robot pack FIFO test: dyld launch stall)** (ab13216)
- **chore(beads): close 2l1b0.49 on the real-indexer probe; file 2l1b0.77 (pages_bundle drift); .59 incident and .68 daemon findings** (89c3c65)
- **chore(beads): close xhw6y (bookmarks CLI verified) and vj32r (cfe29dd3); file b3woj, 5ajer, xicw9** (b8e0069)
- **chore(beads): close 2l1b0.51 .56 .57 .59 .60 .64 .66 .75 .76 on gate evidence; landed-hash status on the rest** (62dd71f)
- **refactor(tui): remove the unreachable semantic-model consent dialog (coding_agent_session_search-2l1b0.66)** (57ca0fe)
- **chore(beads): file reality-check 2026-09-23 night gaps as 2l1b0.49-.67 (coding_agent_session_search-2l1b0)** (fce32fb)
- **chore(beads): file dhfzn (gh496 budget visibility); record kfem7 bisect evidence** (6faa8a0)
- **chore(beads): close 7qirz with gate receipt; file kfem7 (gh439 liveness test red on main)** (a25a4f7)
- **chore(beads): close f9a6z as superseded by 89e053f3; correct the 2l1b0.47 note** (a25d726)
- **chore(beads): record rebased SHAs for 2gy3y and fqt9s item-2 evidence** (dbed5c1)
- **chore(beads): close 2gy3y with gate receipt; record nohx1 root-cause diagnosis** (d9cf05e)
- **chore(beads): close o5d74 (#498) and ggq7g (vendor pins) with gate receipts** (e2c31c9)
- **chore(beads): close tdvbf with evidence; record #495 and #486 CLI evidence (2l1b0.45, 2l1b0.37)** (ec4d603)
- **chore(beads): close vy4ic with gate receipt; record gh450/gh481/UBS decisions (2l1b0.6, gl29d, 5v57k)** (439c73f)
- **chore(beads): record SageSnow baseline-delta UBS gate proposal in 5v57k** (a909f19)
- **chore(beads): record UBS triage and runner findings in 5v57k** (a4699ef)
- **chore(beads): record GH #481 external embedding architecture decision in gl29d** (f4ec36b)
- **chore(beads): record audit epic closure and remediation tracking** (fe3a380)
- **chore(beads): record closures with gate receipts (ukg62, gdwzy, dndyv, ljf90, 0dbkt, ubq10, qu81y.1) and new beads (vy4ic)** (0fbc2a2)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/Dicklesworthstone/coding_agent_session_search?utm_source=github-action)._