Run: python retrieval.py
The expected sources are D1, D2, D3, none, none, D3. Ranking is token overlap; the answer function adds a small explicit topic/coverage gate and extracts the whole short approved note. This is not embedding search or a generative model. Add an unfamiliar paraphrase and report any failure honestly. Change D3 in a COPY to ten days and verify the changed source-linked response.