**`main` is currently red**, so every open PR shows a failing Lint job
that is not its own fault. #3004 is how I found it — its gates all pass
in isolation and fail against main.
## Cause: an hour that does not exist
```
FNXC:OperatorScriptLaneAssumptions 2026-07-30-26:10
^^ hour 26
```
Four of them, across three files, from #2994.
## The part worth fixing is the message, not the stamps
This gate counts **two** defects — a date after today, and an impossible
clock time — but the failure text only ever explained the first:
```
scripts/reconcile-task-state-consistency.mjs: 2 future-dated FNXC stamp(s), baseline allows 0
A stamp dated after today (2026-07-31) records the change as happening in the future...
```
Every stamp in that file is dated `2026-07-30` or earlier — all valid
past dates. So the message sends you to inspect stamps that are fine,
and the natural conclusion is *the gate is broken*, not *the stamp is*.
I spent several minutes reproducing the regex by hand and getting
`future count = 0` before instrumenting the real script and finding
`hits += impossibleClockTimes(source)`.
A gate that detects the right defect and describes a different one is
worse than a slightly less sensitive gate, because it spends the
reader's trust. Now:
```
scripts/reconcile-task-state-consistency.mjs
FNXC:OperatorScriptLaneAssumptions 2026-07-30-26:10 (impossible clock time)
```
**Mutation-verified**: restoring one `26:10` stamp reproduces the
failure, and the message names it.
## The stamps: `2026-07-31-02:10`, not `23:59`
Hour 26 on the 30th is the informal spelling of 02:10 the next day.
Clamping to `23:59` would keep the file's stamps in a plausible order
but silently move the event; this preserves what the author meant.
Reversible either way — say the word if you would rather they were
clamped.
## The 176-file baseline drop is unrelated
`475 -> 183 known`. The clock crossed midnight, so yesterday's stamps
are no longer future-dated, and the ratchet auto-lowers on drops by
design. It rides along because the gate must leave a baseline matching
reality — an allowance nothing occupies is somewhere a real regression
can hide. It is not part of the fix.
## Verification
- `check:fnxc-future-dates` — exit 0 (was **exit 1 on main**)
- `check:lifecycle-columns`, `check:sql-column-literals`,
`check:inert-flag-seams`, `check:lane-wiring` — all exit 0
- eslint clean
## Worth someone's attention beyond this PR
`#2994` landed four impossible timestamps. The gate caught them, but
only after the clock crossed midnight changed which files it reported —
meaning the impossible-time check was live but effectively invisible
until it collided with an unrelated drop. It is worth asking whether
that check has ever produced a message anyone acted on before today.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>