- Move docling-agent + mellea out of requirements.txt into a dedicated
requirements-reasoning.txt. They are no longer pulled into latest-remote
(regression fix) nor into latest-local by default.
- Dockerfile: split into builder-remote / builder-local / runtime-base
stages. The runtime image carries no pip and no build cache; the source
is COPYed only in the final stages so a code-only change reuses every
pip-install layer.
- Add WITH_REASONING build-arg (default false) on the local target. Set to
true to bundle the R&D reasoning-trace deps for a local-reasoning image.
- Harden .dockerignore: tests/, data/, uploads/, IDE files, stray
node_modules / package-lock.json, the one-shot migrate_06.py utility.
- Set HF_HOME so the Docling/HF model cache lands in a deterministic
appuser-owned path that compose can mount as a volume.