- Guard eviction_task_group.start_soon against shutdown race so a RuntimeError on a closed group never surfaces as a search error. - Correct ADR-019 news_item row: there is no per-item REST endpoint; verification batches via get_items(batch_size=-1) and intersects. - Modernize models/semantic.py typing to PEP 604 / lowercase generics per CLAUDE.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>