On This Day event-poster pipeline
Event entries have one dedicated poster path. General On This Day image resolution does not choose event art.
Source order
Every unresolved event follows the same order in every workflow:
- Canonical registry/cache — restore any previously verified assignment first. A solved event is not searched again during routine runs.
- Tapology — exact event title/date match, exact event page, event-bound
poster_imagesasset, byte/dimension validation, SHA-256 fingerprint, immutableotd-poster-cachecopy. - Wikipedia/Wikimedia — exact event page plus poster/key-art filename evidence.
- Official/archive sources — promotion-hosted event art such as Pancrase, then curated archived-promotion rules.
- Manual verified override — only with explicit visual verification.
- Generated archive card — presentation fallback only. It is never registered as authentic poster art.
Fighter portraits, fight photos, generic promotion logos, adjacent-event artwork and orientation-only guesses cannot satisfy an event-poster record.
One canonical registry
assets/data/on-this-day-poster-registry.json is version 2 and is source-agnostic.
It stores the active verified poster assignment for Tapology, Wikipedia/Wikimedia, official promotion, archived promotion and manually verified sources. Tapology records retain the stricter event-page identity, image-byte, dimensions and SHA-256 fields. If Tapology verifies that an exact event page has no poster and another trusted source later resolves the event, that Tapology evidence is preserved while the active poster assignment becomes the verified non-Tapology source.
The pipeline always restores this registry before performing discovery and captures the final verified assignments back into it after discovery. This prevents the same historical event from being searched repeatedly.
Tapology acceptance contract
A Tapology poster is published only when:
- search produces one unique event matching title and date;
- the exact Tapology event page independently matches;
- that page exposes a
poster_imagesasset; - numeric event IDs agree when Tapology provides them;
- downloaded bytes are an actual image of plausible size and dimensions;
- bytes are SHA-256 fingerprinted and copied to the immutable poster-cache branch;
- registry, history metadata and cached bytes agree in QA.
Changed poster bytes are quarantined unless a deliberate refresh is requested.
Single entry point
All automated poster work now goes through:
npm run resolve:history-event-posters
Useful modes:
# Full discovery: registry → Tapology → Wikipedia → official/manual fallbacks
npm run resolve:history-event-posters
# Restore verified poster assignments only; no network discovery
node scripts/history/resolve-on-this-day-event-poster-pipeline.mjs --apply-only
# Current-date fast path, still using the same source order
node scripts/history/resolve-on-this-day-event-poster-pipeline.mjs --current-window
# History rebuild: reuse Tapology registry without fetching new Tapology pages,
# then allow Wikipedia and lower-priority sources to resolve new events.
node scripts/history/resolve-on-this-day-event-poster-pipeline.mjs --skip-tapology-fetch
Low-level Tapology and Wikipedia scripts remain implementation details for verification and troubleshooting; workflows should not compose them independently.
Automation
.github/workflows/otd-poster-sync.ymlruns the full resolver and publishes new immutable Tapology bytes..github/workflows/otd-current-window-fast-publish.ymlruns the same resolver in current-window mode..github/workflows/update-on-this-day-events.ymlkeeps ordinary fighter/moment images separate, then runs the event-poster pipeline without a fresh Tapology crawl. The dedicated poster sync performs the broader Tapology discovery pass.
All three share the on-this-day-history concurrency group, so history writers cannot race each other.
Use OTD_TAPOLOGY_POSTER_LIMIT for the Tapology batch size and OTD_EVENT_POSTER_LIMIT for Wikipedia recovery. Use OTD_POSTER_REFRESH=1 or --refresh only for deliberate Tapology asset review.