Qdrant auto-formats 32-char MD5 hex as UUID with dashes. Normalize
both sides for comparison. Also read claim_path from payload correctly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add queue_staleness to vital signs (sources >7d unprocessed, bucketed by age).
Add ops/vector-gc.py to reconcile Qdrant vectors against filesystem claims —
reports orphan vectors and missing embeddings, with --purge flag for cleanup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>