On This Day verified poster pipeline
The poster pipeline treats event identity and image retrieval as separate steps. A search result may suggest an event, but it is never enough to publish a poster.
Acceptance contract
A Tapology poster is published only when all of these checks pass:
- Tapology search returns one unique event whose date and normalized title match the On This Day entry.
- The exact Tapology event page independently matches the expected title.
- The image is exposed by that event page from Tapology’s
poster_imagesCDN path. - When Tapology uses a numeric event ID, the same ID appears in the poster asset path.
- Downloaded bytes are a real image, at least 10 KB, at least 240 pixels in both dimensions, and have a plausible poster aspect ratio.
- The bytes receive a SHA-256 fingerprint and an immutable filename before being copied to the
otd-poster-cachebranch. - The registry record, history entry, cached URL, dimensions, and SHA-256 fingerprint all agree in offline QA.
An ambiguous match, transport failure, changed image hash, or malformed asset cannot overwrite a previously verified record. Hash changes are quarantined until a deliberate --refresh run.
No-poster events
If an exact title-and-date Tapology event page is proven but it exposes no usable poster, the registry records verified-unavailable. The event receives no generic event image, fighter portrait, or adjacent-event artwork. This is a successful identity result, not an excuse to substitute a visually similar image.
Automated operation
.github/workflows/otd-poster-sync.yml runs after the main daily history refresh and can also be dispatched manually. It restores every existing registry record first, works through a bounded unresolved batch, validates the registry, publishes new immutable poster bytes, rebuilds the browser history shards and social-image cache, then commits only generated On This Day data.
The workflow shares the on-this-day-history concurrency group with the history updater and does not cancel an in-progress run. This prevents two writers from racing on main.
Useful commands:
npm run resolve:history-posters
npm run check:poster-registry
npm run check:history-images
Use OTD_TAPOLOGY_POSTER_LIMIT to control backlog size. Use --apply-only to restore the last verified registry without making network requests. Use --refresh only when deliberately reviewing a changed Tapology poster asset.