ReadonlyheadlineReadonlysummaryReadonlyextendedLonger (up to ~300 chars) summary lifted from the same brief BLUF
paragraph as summary, used for og:description and
twitter:description. Empty string when the BLUF is short enough
that the regular summary already captures it — see
truncateExtendedDescription for the cutoff. The caller should
fall back to summary when this field is empty.
ReadonlysourceReadonlysource
One resolved per-language brief highlight.
headlineandsummaryfollow the same semantics asextractArtifactHighlightinarticle-metadata.ts— either may be empty when the localized brief lacks the relevant section.sourceFileis the run-relative path to the file that produced the highlight; downstream callers can record this when populatingmanifest.metadataFallbackso editors can later audit which locales fell through to English.sourceLangmatches the language code of the brief that produced the highlight (always equal to the requested language for a successful lookup; the caller infers"en"fallback when this module returnsnull).