Tom Boucher
a28dcec981
chore( #597 ): replace count-based ratchet guards with AST lint + named-set allowlists ( #603 )
...
The windows-test-parity ratchet greps test source for fs.rmSync-without-
maxRetries (and six other Windows-portability anti-patterns), failing when an
integer offender COUNT exceeds a frozen baseline (rmSync: 95). A count ratchet
is a Goodhart metric: fixing one offender and adding another keeps the count
constant, so a new defect slips through green. Replace it — and every other
count ratchet in the repo — with a layered, masking-proof design.
Behavioral seam test
- tests/helpers-cleanup.test.cjs proves helpers.cleanup() carries the Windows
EBUSY retry budget. cleanup() delegates retries to Node's fs.rmSync via
maxRetries (it owns no loop), so the test asserts the option contract
(recursive/force/maxRetries>0/retryDelay>0) + real-FS removal + the cwd-guard,
rather than a loop that does not exist. The EBUSY risk is now tested ONCE at
the helper, not approximated textually at every call site.
Write-time ESLint rule (AST-accurate, replaces the grep)
- eslint-rules/no-raw-rmsync-in-tests.cjs (error in tests/**/*.test.cjs) bans
raw fs.rmSync, steering to cleanup(). Catches member, computed (fs['rmSync']),
destructured and aliased forms; escape hatch is inline
`// eslint-disable-next-line local/no-raw-rmsync-in-tests -- <reason>` only.
- Migrated 336 raw fs.rmSync teardown calls across ~116 test files to cleanup().
~18 genuinely load-bearing sites (mid-test SUT/fault-injection removals,
error-swallowing or name-colliding local teardown helpers) keep the raw call
with an inline eslint-disable + reason.
Shared anti-ratchet primitive
- scripts/lib/allowlist-ratchet.cjs:
- assertWithinAllowlist: fails on NOVEL ids (new offender introduced) AND on
STALE ids (a known offender was fixed but not pruned) — identity, not count,
and a ratchet DOWN toward zero.
- assertTightCeiling: a size/length budget whose ceiling must stay within a
grace band of the high-water mark, so budgets may only tighten, never creep.
Ratchets converted onto the primitive
- windows-test-parity-guard.test.cjs: rmSync rule deleted (now ESLint-enforced);
the remaining six patterns moved from integer baselines to named-set
allowlists with ratchet-down.
- scripts/lint-test-file-count.{cjs,allowlist.json}: per-module integer counts →
named filename sets (closes the swap-a-file-keep-the-count blind spot); a
module dropping under cap now FAILS to force pruning its allowlist entry.
- enh-2790 skill-count `<= 63` → named skill allowlist (ratchets toward ~58).
Size budgets hardened (tighten-only)
- agent-size / workflow-size / feat-3039 help-tiered: ceilings lowered to the
current high-water mark and an assertTightCeiling anti-creep check added per
tier. Fixed external-contract limits (description ≤100 chars, agent ≤100 KB)
are intentionally left as-is — they are not grandfathered creeping budgets.
No user-facing behavior change (tests + tooling only); no USER_FACING_PREFIXES
touched, so no changeset fragment is required.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 22:43:49 -04:00
..
2026-06-01 22:43:49 -04:00
2026-05-26 11:23:42 -04:00
2026-05-29 18:21:25 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-31 20:04:03 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:07:07 -04:00
2026-05-11 23:01:34 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 14:25:12 -04:00
2026-05-26 12:08:18 -04:00
2026-05-30 17:25:02 -04:00
2026-06-01 22:43:49 -04:00
2026-04-25 10:50:54 -04:00
2026-06-01 22:43:49 -04:00
2026-05-01 19:50:10 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-13 19:34:23 -04:00
2026-05-29 11:39:52 -04:00
2026-04-04 14:29:03 -04:00
2026-04-25 10:50:54 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-31 14:42:37 -04:00
2026-05-31 23:15:55 -04:00
2026-05-24 18:14:56 -04:00
2026-05-23 18:10:19 -04:00
2026-05-24 20:26:53 -04:00
2026-05-25 10:58:36 -04:00
2026-05-25 10:58:36 -04:00
2026-05-27 20:22:09 -04:00
2026-06-01 22:43:49 -04:00
2026-05-24 14:37:10 -04:00
2026-05-30 17:25:02 -04:00
2026-05-25 10:58:36 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 21:42:08 -04:00
2026-06-01 22:31:37 -04:00
2026-05-24 19:19:50 -04:00
2026-05-24 16:34:02 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-26 12:08:53 -04:00
2026-05-26 12:22:02 -04:00
2026-05-27 23:14:43 -04:00
2026-06-01 22:43:49 -04:00
2026-05-30 17:25:02 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 17:12:50 -04:00
2026-06-01 22:43:49 -04:00
2026-05-31 14:42:18 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 09:52:39 -04:00
2026-05-30 12:01:01 -04:00
2026-05-30 12:00:58 -04:00
2026-05-30 16:53:44 -04:00
2026-05-30 19:19:14 -04:00
2026-05-31 22:05:59 -04:00
2026-05-31 22:05:45 -04:00
2026-06-01 09:46:18 -04:00
2026-06-01 09:44:58 -04:00
2026-06-01 15:06:41 -04:00
2026-05-17 12:00:59 -04:00
2026-06-01 10:56:06 -04:00
2026-04-05 17:49:20 -04:00
2026-05-02 11:45:33 -04:00
2026-04-05 18:05:32 -04:00
2026-05-08 21:25:37 -04:00
2026-06-01 22:43:49 -04:00
2026-05-24 16:34:02 -04:00
2026-05-12 19:02:18 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 18:13:43 -04:00
2026-04-10 11:19:32 -04:00
2026-04-10 11:25:55 -04:00
2026-06-01 22:43:49 -04:00
2026-05-27 23:14:43 -04:00
2026-06-01 22:43:49 -04:00
2026-04-17 09:20:26 -04:00
2026-04-22 10:41:58 -04:00
2026-04-25 12:02:58 -04:00
2026-04-17 09:20:42 -04:00
2026-04-29 07:56:51 -04:00
2026-05-27 20:21:05 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-04-20 10:09:33 -04:00
2026-05-11 15:27:35 -04:00
2026-05-29 11:39:52 -04:00
2026-04-30 00:43:47 -04:00
2026-04-20 10:11:00 -04:00
2026-04-20 10:08:46 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-22 14:54:20 -04:00
2026-05-29 11:39:52 -04:00
2026-04-21 21:20:27 -04:00
2026-04-21 10:10:10 -04:00
2026-05-29 11:39:52 -04:00
2026-04-22 10:41:58 -04:00
2026-04-21 20:33:43 -04:00
2026-05-06 15:19:34 -04:00
2026-05-23 18:42:47 -04:00
2026-04-22 12:04:17 -04:00
2026-05-29 11:39:52 -04:00
2026-04-22 12:03:56 -04:00
2026-05-12 19:02:18 -04:00
2026-05-29 11:39:52 -04:00
2026-04-25 12:09:27 -04:00
2026-04-24 18:05:10 -04:00
2026-04-24 18:05:33 -04:00
2026-04-29 22:56:59 -04:00
2026-04-24 20:22:17 -04:00
2026-04-24 20:22:29 -04:00
2026-05-27 20:21:05 -04:00
2026-04-25 12:15:39 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-04-27 12:31:49 -04:00
2026-05-01 19:50:10 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 22:39:34 -04:00
2026-05-16 11:55:55 -04:00
2026-05-17 12:00:59 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-27 20:21:05 -04:00
2026-05-16 11:49:26 -04:00
2026-05-26 18:56:21 -04:00
2026-05-30 17:25:02 -04:00
2026-05-30 17:25:02 -04:00
2026-04-30 17:30:19 -04:00
2026-04-30 21:08:26 -04:00
2026-06-01 22:43:49 -04:00
2026-05-01 09:22:13 -04:00
2026-06-01 22:43:49 -04:00
2026-05-12 21:53:24 -04:00
2026-05-29 11:39:52 -04:00
2026-05-15 22:02:55 -04:00
2026-05-30 17:25:02 -04:00
2026-05-16 12:03:44 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-24 14:16:16 -04:00
2026-05-29 11:39:52 -04:00
2026-05-01 21:13:25 -04:00
2026-05-02 00:29:43 -04:00
2026-05-30 17:25:02 -04:00
2026-05-02 00:29:34 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-16 12:16:20 -04:00
2026-05-02 11:45:36 -04:00
2026-05-02 11:45:33 -04:00
2026-05-02 17:44:52 -04:00
2026-05-04 23:34:57 -04:00
2026-05-04 23:30:35 -04:00
2026-05-16 11:55:55 -04:00
2026-05-04 22:52:30 -04:00
2026-05-14 12:06:36 -04:00
2026-05-05 15:02:03 -04:00
2026-05-05 15:02:23 -04:00
2026-05-26 12:09:26 -04:00
2026-05-05 15:02:19 -04:00
2026-05-24 14:17:03 -04:00
2026-06-01 22:43:49 -04:00
2026-05-09 11:39:31 -04:00
2026-05-05 15:02:15 -04:00
2026-05-30 17:25:02 -04:00
2026-05-05 15:02:38 -04:00
2026-05-05 18:53:35 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 15:00:08 -04:00
2026-05-06 22:06:56 -04:00
2026-05-22 14:54:20 -04:00
2026-05-06 21:51:42 -04:00
2026-06-01 22:43:49 -04:00
2026-05-08 08:40:53 -04:00
2026-05-08 08:40:41 -04:00
2026-05-09 14:21:42 -04:00
2026-05-08 08:40:36 -04:00
2026-06-01 22:43:49 -04:00
2026-05-08 09:26:35 -04:00
2026-05-08 09:06:37 -04:00
2026-05-08 23:53:21 -04:00
2026-06-01 22:43:49 -04:00
2026-05-09 07:40:56 -04:00
2026-05-25 10:58:36 -04:00
2026-05-30 17:25:02 -04:00
2026-05-09 19:27:36 -04:00
2026-05-16 11:55:55 -04:00
2026-05-14 12:59:38 -04:00
2026-05-20 23:13:50 -04:00
2026-05-27 20:21:05 -04:00
2026-05-27 20:21:05 -04:00
2026-06-01 20:10:59 -04:00
2026-06-01 22:43:49 -04:00
2026-05-12 20:15:43 -04:00
2026-05-11 22:09:59 -04:00
2026-05-20 23:13:50 -04:00
2026-05-20 23:13:50 -04:00
2026-05-12 18:50:35 -04:00
2026-05-12 18:50:19 -04:00
2026-06-01 22:43:49 -04:00
2026-05-12 20:15:43 -04:00
2026-06-01 22:43:49 -04:00
2026-05-18 12:42:43 -04:00
2026-05-13 13:54:30 -04:00
2026-05-14 07:47:18 -04:00
2026-05-16 12:52:46 -04:00
2026-06-01 22:43:49 -04:00
2026-05-14 19:00:32 -04:00
2026-05-27 20:21:05 -04:00
2026-05-14 19:47:48 -04:00
2026-06-01 22:43:49 -04:00
2026-05-15 09:16:41 -04:00
2026-06-01 22:43:49 -04:00
2026-05-30 17:25:02 -04:00
2026-05-15 14:54:58 -04:00
2026-06-01 22:43:49 -04:00
2026-05-15 22:56:32 -04:00
2026-05-23 18:39:02 -04:00
2026-06-01 22:43:49 -04:00
2026-05-16 14:00:34 -04:00
2026-05-15 22:08:28 -04:00
2026-05-15 21:54:03 -04:00
2026-05-30 16:53:44 -04:00
2026-05-30 17:25:02 -04:00
2026-05-16 00:07:59 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 23:12:44 -04:00
2026-05-27 20:21:05 -04:00
2026-06-01 22:43:49 -04:00
2026-05-17 19:31:31 -04:00
2026-05-18 00:14:03 -04:00
2026-06-01 22:43:49 -04:00
2026-05-18 00:13:59 -04:00
2026-06-01 22:43:49 -04:00
2026-05-18 12:42:43 -04:00
2026-05-22 11:53:40 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 23:09:42 -04:00
2026-05-20 23:10:09 -04:00
2026-05-20 22:39:34 -04:00
2026-05-22 11:39:57 -04:00
2026-05-22 11:39:51 -04:00
2026-05-22 11:23:58 -04:00
2026-05-29 11:39:52 -04:00
2026-05-30 17:44:36 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-05-30 17:25:02 -04:00
2026-05-01 18:12:20 -04:00
2026-06-01 22:43:49 -04:00
2026-05-16 13:09:54 -04:00
2026-05-01 18:12:20 -04:00
2026-05-30 17:25:02 -04:00
2026-05-28 09:23:59 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 19:03:22 -04:00
2026-05-26 11:23:53 -04:00
2026-04-11 09:15:36 -04:00
2026-05-15 19:32:02 -04:00
2026-06-01 22:43:49 -04:00
2026-05-31 22:31:54 -04:00
2026-05-30 17:25:02 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:18:10 -04:00
2026-05-29 11:39:52 -04:00
2026-05-08 23:53:32 -04:00
2026-04-12 08:10:30 -04:00
2026-05-01 19:50:10 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-05-27 20:21:36 -04:00
2026-05-05 16:06:29 -04:00
2026-05-26 12:21:04 -04:00
2026-05-29 11:52:47 -04:00
2026-04-05 17:02:20 -04:00
2026-04-10 10:56:09 -04:00
2026-05-29 11:18:10 -04:00
2026-04-25 11:34:55 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:07:07 -04:00
2026-05-30 17:08:11 -04:00
2026-05-15 00:02:56 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:07:07 -04:00
2026-04-30 01:04:41 -04:00
2026-05-09 11:39:24 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-04-11 09:20:27 -04:00
2026-04-04 14:29:03 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-04-05 09:15:41 -04:00
2026-05-01 19:50:10 -04:00
2026-05-29 11:39:52 -04:00
2026-04-25 11:34:55 -04:00
2026-05-29 11:39:52 -04:00
2026-05-14 12:43:48 -04:00
2026-05-30 17:08:11 -04:00
2026-04-01 08:47:31 -06:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-25 10:58:36 -04:00
2026-05-29 11:39:52 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-04-25 16:26:15 -04:00
2026-05-05 15:44:59 -04:00
2026-05-27 20:21:05 -04:00
2026-05-01 19:50:10 -04:00
2026-05-27 20:21:46 -04:00
2026-05-06 21:51:29 -04:00
2026-05-16 12:39:02 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-27 20:21:05 -04:00
2026-04-30 00:48:49 -04:00
2026-05-14 16:38:05 -04:00
2026-05-11 23:01:34 -04:00
2026-06-01 22:43:49 -04:00
2026-05-06 21:51:38 -04:00
2026-05-29 11:39:52 -04:00
2026-05-10 19:48:28 -04:00
2026-05-15 22:02:55 -04:00
2026-05-29 11:39:52 -04:00
2026-05-06 21:51:38 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-30 17:08:11 -04:00
2026-06-01 15:41:56 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 20:53:46 -04:00
2026-05-29 10:32:58 -04:00
2026-05-29 10:32:58 -04:00
2026-05-29 10:32:58 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-04-22 20:49:52 -04:00
2026-06-01 22:43:49 -04:00
2026-05-02 23:12:50 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-02 15:24:26 -04:00
2026-06-01 22:43:49 -04:00
2026-05-11 15:27:40 -04:00
2026-06-01 22:43:49 -04:00
2026-05-13 21:19:47 -04:00
2026-06-01 22:43:49 -04:00
2026-05-09 11:46:34 -04:00
2026-06-01 22:43:49 -04:00
2026-05-09 23:29:11 -04:00
2026-05-09 13:54:06 -04:00
2026-05-15 23:57:38 -04:00
2026-05-15 23:57:38 -04:00
2026-05-15 23:57:38 -04:00
2026-05-29 17:12:41 -04:00
2026-05-16 00:23:27 -04:00
2026-05-16 00:23:27 -04:00
2026-06-01 22:43:49 -04:00
2026-05-16 12:39:02 -04:00
2026-05-31 21:21:00 -04:00
2026-05-26 11:23:42 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:07:07 -04:00
2026-04-26 21:40:38 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 10:54:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 20:39:17 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 20:39:17 -04:00
2026-05-01 19:50:10 -04:00
2026-05-30 16:53:44 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-05-26 18:55:40 -04:00
2026-04-04 14:37:54 -04:00
2026-05-29 17:12:41 -04:00
2026-06-01 22:43:49 -04:00
2026-05-26 11:23:35 -04:00
2026-05-26 11:23:42 -04:00
2026-06-01 22:43:49 -04:00
2026-04-04 14:29:03 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-05-06 20:27:33 -04:00
2026-05-20 20:39:01 -04:00
2026-05-26 11:23:42 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 20:38:30 -04:00
2026-05-20 20:38:30 -04:00
2026-06-01 22:43:49 -04:00
2026-05-30 16:53:44 -04:00
2026-05-11 14:36:14 -04:00
2026-05-31 07:16:19 -05:00
2026-05-15 08:16:28 -04:00
2026-06-01 22:43:49 -04:00
2026-05-30 17:08:11 -04:00
2026-05-29 11:39:52 -04:00
2026-04-20 09:39:05 -04:00
2026-05-29 11:39:52 -04:00
2026-05-30 16:53:44 -04:00
2026-05-30 17:25:02 -04:00
2026-05-30 16:53:44 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:18:10 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-04-04 14:29:03 -04:00
2026-06-01 22:43:49 -04:00
2026-05-31 23:15:55 -04:00
2026-05-31 23:15:55 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 20:38:53 -04:00
2026-05-29 11:52:47 -04:00
2026-05-09 00:15:04 -04:00
2026-05-08 21:25:37 -04:00
2026-04-30 22:48:08 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-06-01 22:43:49 -04:00
2026-05-06 21:51:38 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-31 20:28:57 -04:00
2026-05-28 09:23:59 -04:00
2026-05-29 11:39:52 -04:00
2026-05-09 00:15:04 -04:00
2026-05-29 11:39:52 -04:00
2026-05-08 09:08:06 -04:00
2026-04-06 15:13:23 -04:00
2026-05-30 17:25:02 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-04-16 17:15:29 -04:00
2026-04-04 14:29:03 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-26 12:25:52 -04:00
2026-05-27 20:21:12 -04:00
2026-06-01 22:43:49 -04:00
2026-05-26 12:21:04 -04:00
2026-04-04 14:29:03 -04:00
2026-04-25 12:02:58 -04:00
2026-05-30 17:08:11 -04:00
2026-05-06 21:51:38 -04:00
2026-05-29 11:39:52 -04:00
2026-05-30 17:08:11 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-06 21:51:38 -04:00
2026-06-01 22:43:49 -04:00
2026-05-01 19:50:10 -04:00
2026-05-27 20:27:33 -04:00
2026-05-29 11:39:52 -04:00
2026-05-27 20:22:03 -04:00
2026-05-27 20:21:59 -04:00
2026-05-28 09:23:59 -04:00
2026-04-30 12:13:55 -04:00
2026-05-18 12:06:46 -04:00
2026-05-28 18:06:19 -04:00
2026-05-28 18:06:19 -04:00
2026-05-29 11:39:52 -04:00
2026-05-26 11:24:01 -04:00
2026-05-14 12:43:48 -04:00
2026-05-01 19:50:10 -04:00
2026-05-06 21:51:38 -04:00
2026-05-18 23:13:09 -04:00
2026-05-29 11:07:07 -04:00
2026-05-18 23:13:09 -04:00
2026-06-01 09:44:58 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 10:23:41 -04:00
2026-05-01 19:50:10 -04:00
2026-06-01 22:43:49 -04:00
2026-04-04 14:29:03 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 17:12:41 -04:00
2026-06-01 22:43:49 -04:00
2026-04-30 00:43:47 -04:00
2026-05-27 20:21:22 -04:00
2026-05-26 22:46:09 -04:00
2026-05-29 10:54:49 -04:00
2026-05-30 17:25:02 -04:00
2026-05-13 14:10:15 -04:00
2026-05-13 14:10:15 -04:00
2026-05-13 14:10:15 -04:00
2026-04-26 13:33:45 -04:00
2026-05-31 23:15:55 -04:00
2026-05-06 21:51:38 -04:00
2026-05-27 20:21:08 -04:00
2026-05-10 14:43:53 -05:00
2026-06-01 20:37:49 -04:00
2026-05-26 11:23:23 -04:00
2026-05-26 19:11:58 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-05-20 20:39:09 -04:00
2026-05-10 17:39:06 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-04-01 16:53:20 -04:00
2026-05-26 18:56:00 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 22:43:49 -04:00
2026-04-20 10:08:18 -04:00
2026-05-29 11:39:52 -04:00
2026-05-24 18:14:56 -04:00
2026-05-12 21:53:24 -04:00
2026-05-29 11:39:52 -04:00
2026-04-10 13:55:27 -04:00
2026-05-13 17:12:53 -04:00
2026-05-09 02:49:19 -04:00
2026-05-16 12:39:02 -04:00
2026-05-31 23:33:49 -04:00
2026-05-29 11:18:10 -04:00
2026-04-11 15:02:55 -04:00
2026-05-29 18:21:25 -04:00
2026-05-06 21:51:38 -04:00
2026-05-29 11:39:52 -04:00
2026-04-11 15:39:50 -04:00
2026-06-01 22:43:49 -04:00
2026-05-29 11:39:52 -04:00
2026-05-26 11:23:29 -04:00
2026-04-05 17:49:20 -04:00
2026-05-01 19:50:10 -04:00
2026-05-05 15:44:59 -04:00
2026-04-20 10:08:18 -04:00
2026-05-29 11:39:52 -04:00
2026-05-01 09:22:13 -04:00
2026-05-15 19:32:02 -04:00
2026-04-12 17:56:19 -04:00
2026-04-25 16:26:15 -04:00
2026-05-06 21:51:38 -04:00
2026-06-01 22:43:49 -04:00
2026-05-06 21:51:38 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-04-04 14:29:03 -04:00
2026-05-30 17:25:02 -04:00
2026-06-01 22:43:49 -04:00
2026-04-04 14:29:03 -04:00
2026-04-06 08:40:37 -04:00
2026-05-29 11:39:52 -04:00
2026-05-29 11:39:52 -04:00
2026-05-31 07:46:56 -05:00
2026-05-30 17:25:02 -04:00
2026-06-01 22:43:49 -04:00
2026-05-16 12:16:20 -04:00
2026-05-26 11:24:12 -04:00
2026-06-01 22:43:49 -04:00
2026-06-01 20:10:59 -04:00
2026-05-22 11:23:34 -04:00
2026-06-01 20:10:59 -04:00