The half that #2948 and #2950 did not cover. Both of those fixed today's
redness; **#2949** landed the un-redding first, so both are now
conflicting and redundant. This is the placement, which is what made
today's failure so expensive.
## Why it hurt
`check-fnxc-future-dates` was wired into `pretest` **and** `test:gate`,
with no `check:*` script and no `pr-checks.yml` step. So a baseline
frozen below the tree it froze did not produce "one CI step is red" — it
produced:
- `pnpm test:gate` → exit 1, merge gate down for everyone
- `pnpm test` → refuses to run before a single test executes
## The precedent
All three sibling ratchets are dedicated `pr-checks.yml` steps.
`lifecycle-column-census` always has been; `check-sql-column-literals`
and `check-inert-flag-seams` moved there in #2941. The census's own
header states the reason, and it is the one that matters here:
> a permanently-red gate is a bigger hole than a stale allowance,
because it gets ignored and then nothing is guarded at all
## The change
```
check:fnxc-future-dates script, beside check:inert-flag-seams
"FNXC stamp dates" step in pr-checks.yml, after the other three
removed from pretest / pretest:full / test:gate
```
**Enforcement where it matters is unchanged** — `pr-checks.yml` is the
blocking gate, so a newly added future-dated stamp still cannot merge.
What changes is that a baseline mismatch stops halting work unrelated to
it.
## Deliberately not touching
The drop behaviour. This gate **already** tightens on a drop rather than
failing — the #2888 pattern, already correct here. I checked rather than
assuming it needed the same fix its siblings did.
## Verification
`pnpm check:fnxc-future-dates` exit 0 · `pnpm test:gate` green (now
without this check in it) · lint 0 · step confirmed adjacent to the
other three ratchets.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Added automated validation for FNXC stamp dates to lint checks.
* Updated test and validation scripts to run the date check through a
dedicated command.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>