* fix(health): adjust gdeltIntel maxStaleMin for 6h cron; fix silent EXPIRE no-op on expired keys
- gdeltIntel maxStaleMin: 150 → 420 (6h cron + 1h grace). The 150 threshold was
calibrated for the old 2h cron — with 6h intervals it fires STALE throughout
most of each cycle, masking the signal entirely.
- _seed-utils extendExistingTtl: EXPIRE returns 0 (no-op) on expired/missing keys,
but the log always said "Extended TTL on N key(s)" regardless. Added per-result
checking: keys that returned 0 now emit a WARNING so the death-spiral condition
(validate fails + key expired + EXPIRE is silently a no-op) is visible in logs
rather than silently passing as if TTL was extended.
* fix(seed-health): align gdelt-intel intervalMin to 210 (420min maxStaleMin / 2)
Codex flagged mismatch: health.js allows 420min before flagging gdelt-intel
stale, but seed-health.js still used intervalMin: 150 (flags after 300min).
Ops tooling monitoring seed-health would generate spurious alerts for most
of each 6h cron cycle. Align to 210min per the maxStaleMin/2 convention.