# Step 4: model-cache-offline

## Read First
- /AGENTS.md
- /PLAN.md
- /PROGRESS.md
- /docs/HARNESS.md
- /docs/IMPLEMENTATION_PLAN.md
- /docs/TOOLCHAIN.md
- /docs/ARCHITECTURE.md
- /phases/6-cli-runtime-resume/step3.md

## Task
Document and wire model cache/offline behavior for Marker, Nougat, and Hugging Face cache paths.

Add CLI/runtime hooks for environment variables or explicit cache paths without downloading models during tests.

## Sprint Contract
- Done means: users can see how to pre-download models and run offline, and runtime cache paths are configurable.
- Hard thresholds: no test performs network download; docs include Windows commands; cache path policy matches Phase 1.
- Files owned: `src/pdftomd/runtime.py`, `README.md`, `docs/TOOLCHAIN.md`, tests, `PROGRESS.md`, phase index.
- Dependencies: Device/runtime policy and cache contracts.

## Acceptance Criteria
```powershell
python scripts\validate_workspace.py
.\venv\python.exe -m pytest tests
```

## Verification
1. Run the acceptance commands.
2. Confirm offline instructions are clear and do not imply bundled weights.
3. Update `PROGRESS.md` and this phase index.

## Do Not
- Do not download model weights as part of tests.
- Do not commit model caches.
- Do not make online access mandatory for already-cached models.
