PLAN.md's design has corpus/ committed and chroma/+bm25/ regenerated
at CI time. The scaffold's .gitignore over-ignored corpus/, which
meant refresh.yml's `git add bundles.json corpus` silently dropped
the corpus and the changed-detection logic always reported "no
changes — skipping reindex and image build". Net result: refresh
would scrape successfully and then ship nothing.
chroma/ and bm25/ stay ignored — those are rebuilt by
`python -m rag.index --rebuild` before docker build copies them.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>