A generated artifact went stale inside its own PR

The plan playground for #3474 was rendered from the tree at commit 1, then commit 2 changed one of the facts it had already baked in. Nothing regenerated it.

The sequence

commit 1  adopt 2.1.231            playground rendered here, from the tree as it was
          └─ override expiry: 2026-09-20, risk R1 = "expires in ~38 days"

commit 2  renew override             the fact changed
          └─ override expiry: 2026-11-20

MERGE     both commits land          playground still describes commit 1's world

The artifact was accurate when written and false when merged. CI could not catch it: the HTML is valid, the JSON island is well-formed, the security test passes. Only reading the rendered page against ground truth finds it.

What the page claimed vs what shipped

as merged (stale) after this fix

The eight references, and which were actually wrong

LineRoleVerdict
255BASE (before) statecorrect — the base really was 2026-09-20
265HEAD state, marked "UNCHANGED"wrong — it changed in commit 2
282phase P1 detailwrong — quoted the old expiry
295-298risk R1, severity warningwrong — the risk was resolved by commit 2
311decision D2 contextwrong — asserted the old deadline
314decision D2 tradeoffwrong — claimed the decision point was kept intact
324the original promptcorrect — a historical record of what was asked

Two of the eight were legitimately historical and were left alone. Rewriting those would have been the opposite error: falsifying the record to make it look current.

The generalizable rule

A generated artifact is a snapshot with a timestamp, not a live view. If a later commit on the same branch changes a fact the artifact asserts, the artifact is now wrong and no gate will say so. Either regenerate it as the last step before opening the PR, or write it to describe only what cannot change under it.