Postmortem: the share-image 404

A small failure, written up properly, because the size of the failure is not what determines whether the write-up is useful.

Summary

qr-forge served a 404 on /favicons/og-image.jpg after its share-image and icon set merged. The set was corrected and re-verified, and the path now returns 200. (F-1, source: app-inventory sheet, qr-forge row notes, verified 2026-09-21)

Found on 2026-09-19 during a host verification pass, not by a report from anyone looking at it. On 2026-09-19 I ran a host verification pass on qr.bryancalabro.com, which found and fixed the share-image 404. (T-2, source: app-inventory sheet, qr-forge row notes, verified 2026-09-21)

Impact window

Impact was invisible to anyone using the app and visible to everyone who shared a link to it: the preview card rendered without its image. Nothing was down.

Timeline

The deployment sweep that followed

Rather than fix one host and move on, I verified the hosts around it. Every figure below is from my own dated notes in the app-inventory sheet.

Host Checked HTTP www to apex Commit
qr.bryancalabro.com 2026-09-19 200 301 share image 404 fixed
signal.bryancalabro.com 2026-09-19 200 301 3a9e46f
sift.bryancalabro.com 2026-09-20 200 301 2e96914
cairn.bryancalabro.com 2026-09-20 200 301 8f5fe11

Four hosts over two days, all serving, all redirecting www correctly, one share image fixed. That is the whole of it. There is no cost figure, no request volume, and no deployment count on this page, because Cost and volume figures are not supplied. None reproduce from a repo or report in scope. (N-1, source: company/product-facts.md, section 3, verified 2026-09-21)

Contributing factors

The share image is the one asset on a page that the person building the page never looks at. It renders somewhere else, on someone else's crawler, after the link is already shared. Nothing in the local workflow surfaces it.

The check that would have caught it is one line of curl, and nothing was running that line.

What has not been confirmed

The second finding from the same merge, relative Open Graph URLs and the apple-touch icon wiring, is recorded as noted and its fix is not confirmed. It is carried openly on the quality desk's bug log rather than closed out quietly here.

Action items

What I would not write

A root cause sentence that sounds like a conclusion. The honest version is that nobody was checking, and nobody was checking because there was nothing to check with. That is now three pages of this network: a crawler, a runbook step, and this.