Skip to content

intl-pipeline: deterministic propagation drops newly added frontmatter keys #18891

Description

@myelinated-wackerow

Bug

Phase 3 (deterministic propagation) applies inert frontmatter changes by replacing the value portion of an existing key line (per tests/specs/PIPELINE-SPEC.md, Frontmatter scope). A newly added inert key has no key line to find in the locale file, so the addition is silently dropped — and the manifests are still stamped as current, burying the gap from all future incremental runs.

Observed

  • 26bdbe8 added template: roadmap/template: upgrade to 12 English roadmap pages (2026-06-24).
  • The next pipeline run (PR i18n: translation pipeline (all languages) #18868, 2026-07-22) re-translated several of those pages (e.g. single-slot-finality in 22 locales) yet 0 of 24 locales received the key on any of the 12 pages, and the stamped manifests now treat the change as handled.
  • User-facing result: every non-English version of those 12 pages rendered the Static layout instead of TopicLayout, since app/[locale]/[...slug]/page.tsx resolves frontmatter.template || getLayoutFromSlug(slug) and the slug fallback returns static for roadmap/*.

Expected

An inert frontmatter key added in English is inserted into each locale's frontmatter (mirroring English key order); translatable key additions route to the LLM list. Key removals are presumably the same class — worth covering in the same fix.

Remediation already applied

Hand-propagated the 288 missing key lines in #18890 + a scoped stamp_only run against that branch. The pipeline gap itself remains.

Pointers

  • tests/specs/PIPELINE-SPEC.md — Phase 2 classifies frontmatter fields independently (template = inert); Phase 3 frontmatter rules only specify value replacement
  • Phase 3 implementation: src/scripts/intl-pipeline/ deterministic propagation
  • Repro fixture idea: add a new inert key to an English fixture and assert it lands in locale output (mutation table in tests/specs/SPEC.md has no key-addition case)

-- Fable 5

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🐛Something isn't workingdev requiredThis requires developer resources

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions