# Same-origin figure copies

These 66 images are byte-for-byte copies of the original published figures, not generated replacements. They are served locally to keep the method gallery usable when an external documentation host is slow or unavailable. The source URLs, image dimensions, SHA256 checksums and licenses are recorded in `sources.json`. Figure captions and scientific claims remain in their original workflow documents.

- **tidysynth** — Eric Dunford; MIT, declared by the upstream DESCRIPTION. Original LICENSE and DESCRIPTION plus the MIT permission notice are preserved in `licenses/`.
- **DoubleML documentation** — Philipp Bach, Victor Chernozhukov, Sven Klaassen, Malte S. Kurz and Martin Spindler; BSD 3-Clause. The upstream license is preserved in `licenses/`.
- **GRF documentation** — GRF authors and contributors; GPL-3.0-only. All 33 copied figures retain their original license. The complete GPL text is in `licenses/grf-GPL-3.0-only.txt`; the unmodified corresponding source vignettes, their data files, upstream DESCRIPTION and NOTICE are in `grf-source/`, pinned to the commit recorded in `sources.json`. These separate, unmodified documentation assets are not linked into the application as executable code. Decorative upstream logos and the sea otter photograph are not copied.
- **DoWhy / EconML documentation** — PyWhy contributors; MIT. Upstream license texts, including EconML's additional third-party notice, are retained in `licenses/`.
- **did2s documentation** — did2s authors; MIT. The upstream permission and copyright notice is retained in `licenses/`.
- **ggdag documentation** — Malcolm Barrett; MIT. The upstream permission and copyright notice is retained in `licenses/`.

All figures remain under their upstream licenses. No endorsement by their authors is implied. Do not extend this cache to arbitrary user-provided URLs; additions require an explicit source and license check. There is no runtime image proxy and no database rewriting. Existing first-party card figures remain in `static/img/cards/`.

The local/production URL audit contained 127 unique figure URLs. This cache resolves 66 of those; another 27 already use `static/img/cards/`. Remaining external images retain their source URLs and use honest loading, timeout and error states. The cache does not claim to cover every external figure.
