Build the SERP <meta name="description">. The executive-brief BLUF IS the description โ already localized, already story-specific, already in the per-language SERP window for every language thanks to the cascade in aggregator/seo/description.ts ยง truncateToSentenceBoundary.
Latin LTR (en sv da no fi de fr es nl) โ 140-200 chars.
RTL (ar he) โ 120-170 chars.
CJK (ja ko zh) โ 70-120 glyphs.
The renderer-side cap matters in three fallback paths: (1) when no localized brief exists and the EN description leaks through unchanged, (2) when an agent ships a long description: front-matter line that bypasses the cascade, and (3) when a downstream caller invokes buildSeoMetadata directly without pre-truncating. Capping at the per-language hardMax here closes those three gaps so CJK / RTL pages never overshoot their visual SERP budget regardless of where the description came from.
We never append Coverage: <Type> on <topic>; <lang> edition update for <date> with Riksdag/OSINT provenance. boilerplate because:
It duplicates words already in the BLUF.
It collapses 14 hreflang siblings to near-identical snippets that only vary by the Coverage: translation โ defeating the point of per-language BLUFs.
Search engines silently truncate beyond the per-language hardMax, so the boilerplate often replaced the actual analytical context with editorial plumbing.
No date dateline (since 2026-05-24): pre-2026-05-24 this function prepended a localized newsroom dateline (May 11, 2026 โ โฆ) to every description. The 480-article EN audit showed the dateline burns 15-18 chars of the per-language budget on a signal that's already auto-rendered next to every SERP result, inflates 14 hreflang siblings with locale-varying dates (May 11, 2026 / 11. Mai 2026 / 2026ๅนด5ๆ11ๆฅ), and reduces room for the BLUF. Per the title-side rationale (see buildSeoTitle), publication date is already carried by the URL slug, og:article:published_time, JSON-LD datePublished, and the visible page byline. The description now ships the BLUF (truncated to the per-language hardMax) with no date prefix.
Build the SERP
<meta name="description">. The executive-brief BLUF IS the description โ already localized, already story-specific, already in the per-language SERP window for every language thanks to the cascade inaggregator/seo/description.ts ยง truncateToSentenceBoundary.Per-language SERP budgets (
seo-metadata-contract.mdยง4):en sv da no fi de fr es nl) โ 140-200 chars.ar he) โ 120-170 chars.ja ko zh) โ 70-120 glyphs.The renderer-side cap matters in three fallback paths: (1) when no localized brief exists and the EN description leaks through unchanged, (2) when an agent ships a long
description:front-matter line that bypasses the cascade, and (3) when a downstream caller invokesbuildSeoMetadatadirectly without pre-truncating. Capping at the per-languagehardMaxhere closes those three gaps so CJK / RTL pages never overshoot their visual SERP budget regardless of where the description came from.We never append
Coverage: <Type> on <topic>; <lang> edition update for <date> with Riksdag/OSINT provenance.boilerplate because:Coverage:translation โ defeating the point of per-language BLUFs.No date dateline (since 2026-05-24): pre-2026-05-24 this function prepended a localized newsroom dateline (
May 11, 2026 โ โฆ) to every description. The 480-article EN audit showed the dateline burns 15-18 chars of the per-language budget on a signal that's already auto-rendered next to every SERP result, inflates 14 hreflang siblings with locale-varying dates (May 11, 2026/11. Mai 2026/2026ๅนด5ๆ11ๆฅ), and reduces room for the BLUF. Per the title-side rationale (seebuildSeoTitle), publication date is already carried by the URL slug,og:article:published_time, JSON-LDdatePublished, and the visible page byline. The description now ships the BLUF (truncated to the per-languagehardMax) with no date prefix.