Miguel Palhas and Claude Opus 5
55373d228c
fix: pack backoff runs from the failure
...
#239 moved §5.7's attention window to `failed_at` and left §6.2's pack
ladder on `grabbed_at`. A torrent that stalls for weeks before ffprobe
condemns it at import has elapsed the whole ladder the moment it fails,
so the pack lane retried a source that had just failed — the one thing
the backoff exists to prevent.
The ladder now measures from the failure, the same anchor and the same
column §5.7 reads, with `grabbed_at` as the fallback for rows written
before the column existed. All three sites read
`max(coalesce(failed_at, grabbed_at))`, so the `last_failed_at` alias
holds what its name says — including the one the season deck feeds into
`reopens_at` and `pack_retry_at`, which was showing a grab time under a
name §5.7 had redefined.
DESIGN.md §6.2 states the anchor the way §5.7 states its own.
Tests cover a pack grabbed 35 days ago and failed 10 minutes ago on the
targeted lane, the RSS lane and the season deck.
`just ci` through the gate: 519/519 tests pass, web checks clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-25 11:49:44 +01:00
..
2026-08-22 22:38:31 +01:00
2026-08-23 14:56:51 +01:00
2026-08-22 21:00:35 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:05:59 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 23:21:30 +01:00
2026-08-24 18:12:10 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 21:43:03 +01:00
2026-08-22 21:43:03 +01:00
2026-08-24 22:15:14 +01:00
2026-08-24 22:45:55 +01:00
2026-08-25 11:17:33 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 09:55:18 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:45:55 +01:00
2026-08-23 01:40:53 +01:00
2026-08-25 11:49:44 +01:00
2026-08-25 11:05:59 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 09:13:37 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:45:55 +01:00
2026-08-22 21:43:03 +01:00
2026-08-25 11:05:59 +01:00
2026-08-22 23:02:34 +01:00
2026-08-22 20:40:31 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 23:02:34 +01:00
2026-08-23 14:56:51 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 01:40:53 +01:00
2026-08-22 21:00:35 +01:00
2026-08-25 09:55:18 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:05:59 +01:00
2026-08-24 16:43:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 01:40:53 +01:00
2026-08-22 23:42:36 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:15:14 +01:00
2026-08-23 09:08:52 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 09:13:37 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 23:02:34 +01:00
2026-08-24 20:10:23 +01:00
2026-08-25 10:49:02 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 14:56:51 +01:00
2026-08-24 20:14:48 +01:00
2026-08-25 09:55:18 +01:00
2026-08-23 19:34:55 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:05:59 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 16:43:53 +01:00
2026-08-23 14:56:51 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 10:20:37 +01:00
2026-08-22 23:02:34 +01:00
2026-08-22 21:43:03 +01:00
2026-08-25 09:55:18 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:40:32 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 17:59:45 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:15:14 +01:00
2026-08-24 18:12:10 +01:00
2026-08-24 20:10:23 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 10:20:37 +01:00
2026-08-24 20:14:48 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 16:43:53 +01:00
2026-08-23 18:23:41 +01:00
2026-08-23 17:59:45 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 18:24:50 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 23:42:36 +01:00
2026-08-23 09:13:37 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 09:08:52 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 23:02:34 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 02:31:50 +01:00
2026-08-22 23:02:34 +01:00
2026-08-23 01:40:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 18:24:50 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:45:55 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 19:51:28 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:40:32 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 20:10:23 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 01:40:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:15:14 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 19:34:55 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:45:55 +01:00
2026-08-22 23:02:34 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 10:20:37 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:28:35 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 01:40:53 +01:00
2026-08-22 23:23:56 +01:00
2026-08-22 23:21:30 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:49:44 +01:00
2026-08-23 17:59:45 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:17:33 +01:00
2026-08-23 01:40:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 21:43:03 +01:00
2026-08-23 17:45:09 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 23:02:34 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 23:02:34 +01:00
2026-08-23 17:45:09 +01:00
2026-08-23 01:40:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:05:59 +01:00
2026-08-24 16:43:53 +01:00
2026-08-23 19:34:55 +01:00
2026-08-23 22:12:05 +01:00
2026-08-23 18:24:50 +01:00
2026-08-24 22:15:14 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 17:45:09 +01:00
2026-08-22 22:38:31 +01:00
2026-08-23 09:02:42 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 20:40:31 +01:00
2026-08-23 14:56:51 +01:00
2026-08-24 22:45:55 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 22:45:55 +01:00
2026-08-24 18:10:53 +01:00
2026-08-23 22:12:05 +01:00
2026-08-24 20:14:48 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-22 22:38:31 +01:00
2026-08-24 18:10:53 +01:00
2026-08-24 18:10:53 +01:00
2026-08-25 11:05:59 +01:00
2026-08-22 23:21:30 +01:00
2026-08-23 17:45:09 +01:00
2026-08-24 22:45:55 +01:00