H-1: validate_citations counted all SQL rows as 1 source, causing
systematic false "fabricated reference" warnings on multi-row SQL
queries. Now counts each row as a separate citable unit.
H-2: text.py and csv_tab.py were the only readers without try/except
wrappers. A single bad .txt/.csv file would crash the entire ingestion
pipeline. Added matching error handling.
174/174 tests passing. Final line-by-line audit by 3 independent agents
confirmed all 23 source files are clean.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Citation-verified research assistant with 6-layer anti-hallucination stack,
15 file format readers, 3 LLM providers, and dual CLI/Web interfaces.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>