Features
- verification: report PDF quality by default (cb8eef3)
- indexing: reindex stale policy manifests (fd64b18)
- search: exclude PDF references by default (8bfbadd)
- cli: show arc and its options in ps/top (8c3ae38)
- corpus: record hook-driven drains in a durable log (d1fd046)
- corpus: guide hook install when no corpus is named (1e065ca)
- corpus: auto-sync a git repo into a corpus via a commit hook (09c9ad5)
- corpus: serialize writes with a per-corpus lock (7d5734f)
- markdown: index zstd-compressed markdown (.md.zst) (acb079c)
- verify: detect duplicated chunks and repair the affected files (96ca962)
- sync: name the phase a resumed --order newest sync is working through (2a6c660)
- sync: add --order to control file index ordering (53f8756)
- markdown: add 200-char fragment floor to chunker (RDR-023) (bbd93ed)
Bug Fixes
- sync: stale policy migration follow-ups — Low (2 findings) (5ec719b)
- sync: make stale policy migration opt-in (3644754)
- verification: unify policy-only repair reporting (85a3290)
- cli: separate repair from policy migration (b39892b)
- indexing: delete source-less PDF aliases safely (98aa823)
- verification: retain legacy PDF section grouping (62c69cd)
- indexing: clean stale PDF alias provenance (428b748)
- verification: preserve PDF section identity (9dff016)
- indexing: promote surviving PDF aliases (bab3d74)
- verification: align policy and section diagnostics (96e585f)
- verification: exempt sole section fragments (b9ea518)
- indexing: address PDF quality review findings (1e3128a)
- indexing: consolidate duplicate PDF sources (aa729dd)
- pdf: select better extraction per page (6688f0c)
- pdf: preserve clean text around replacement characters (d84909e)
- pdf: reject replacement-heavy chunks (ba75bd9)
- pdf: merge short fragments before indexing (18e6ed9)
- pdf: preserve words across chunk boundaries follow-ups — Low (2 findings) (597ecca)
- pdf: preserve words across chunk boundaries (74ca509)
- corpus: pick the right rewrite base for amend vs rebase (74cb10f)
- corpus: compare trees, not commits, when a rebase rewrites history (210c483)
- corpus: make spawn gating work without flock(1) (11761ae)
- corpus: bound memory for OS-driven spool drains (33c66a1)
- corpus: keep spooled work when a drain batch fails (bdfc45f)
- corpus: read each hook's real range instead of guessing ORIG_HEAD (dfa93c9)
- markdown: report a sane extension for bare .zst, drop dead helper (ad7a6a3)
- sync: stop parity fabricating and misreporting chunk mismatches (ba7af05)
- container: surface snapshot warnings in JSON and reclaim partial copies (0c122c0)
- markdown: stop fragment merging dropping a prefix-colliding heading (94219d0)
- container: reclaim Qdrant snapshots left in containers (ea4a2ec)
- tests: stop accelerator worker tests spawning a real subprocess (823bf51)
- fulltext: poll MeiliSearch tasks past the retry cap while progressing (c7bedcc)
- tests: contain the SIGSEGV in CPython interpreter finalization (74a5d65)
- cli: relay native stderr through the progress console (31f18e6)
- pdf: fall back to normalized extraction on any layout conversion error (a77ce90)
- indexing: expose accelerator resource pressure (d1f84cb)
- cli: use supported PyMuPDF import (8679d16)
Performance
- verification: reuse PDF repair breakdowns (c259adc)
- pdf: avoid duplicate quality manifest work (8a0f142)
- corpus: collapse a rebase into one spool entry, not one per commit (b906168)
- corpus: stop spawning drains that will die on the lock (d9a1f6d)
- container: size MeiliSearch limits to the Docker VM page cache (3ecf40a)
- container: raise MeiliSearch indexing memory and thread budget (17c8f34)
- sync: stop double-stat'ing files for --order newest/oldest (55b8055)
Documentation
- release: document features since v0.9.0 (91bc895)
- corpus: describe the probe that shipped, not the removed command (1645b1c)
- guides: explain MeiliSearch indexing performance and container sizing (e6af8fd)
- cli: fix delete-project signature and document remaining flags (26a6a33)
- cli: document every command and option in the CLI reference (b4b6591)
- rdr: add RDR-024 adaptive cross-file index batching (e73154b)
- rdr: finalize RDR-023 on a measured 200-char fragment floor (c19449e)
- rdr: add RDR-023 markdown chunk coalescing, blocked on retrieval regression (6194da9)
- install: document local development setup (35f3033)
Tests
- indexing: align missing rename expectations (9dce336)
- pdf: cover multi-span fragment collapse (a02b281)
- corpus: mirror spool setup in hook spawn test (3cefc57)
- corpus: trim the hook tool list to what the hook actually invokes (3cf3a0c)
- corpus: make the flock-less hook tests actually flock-less (3a2a313)
- docs: fail when a subcommand or flag is undocumented (d843f74)
- deselect executable RDR specifications by default (25f7252)
CI
- test: isolate Ubuntu package indexes (a1f3782)
- test: align Qdrant with supported release image (2cf50ff)
- test: drop unused ML model cache steps (dad3638)
Chores
- release: 0.10.0 (3af7a15)
- ci: baseline transitive NLTK advisory (1ad267e)
- scripts: add duplicate chunk finder (265c3dc)
- deps: sync uv.lock to released version 0.9.0 (134018c)
Style
Full Changelog: v0.9.0...v0.10.0