The HTML references screenshots relatively, so it only renders inside a
checkout -- mailing the file on its own gives broken images. The PDF is one
self-contained file, which is what actually gets sent to Ozlem.
- tools/humans_to_pdf.py: renders .humans/*.html via headless Chrome (or
Edge), so the output is what the browser shows. HTML stays the source.
- @media print block on the page: the wide tables and the pipeline diagram
scroll on screen but would be cut off at the paper edge; this reflows
them and keeps figures, callouts and table rows off page breaks.
Verified at A4 content width -- 6 pages, both screenshots embedded.
- *.pdf -> LFS. Each regeneration is a whole new ~2 MB blob, and unlike
png/jpg there are no PDFs tracked raw yet, so there is no history to
rewrite by adding it now.
Also corrects working-files.md: it claimed .gitattributes does not LFS-track
.blend, which was true when written and is no longer -- .blend/.zprj/.obj/
.npy/.npz have since been added. The note now covers what is actually still
excluded (png/jpg, deliberately) and why that makes QA renders scratch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>