commit 80620811587ad9125755a1a429b7f2d6b6acb923
parent aded793b48103864385ee8c72a9ac12ac80dcafb
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Fri, 2 Oct 2026 01:35:55 -0400
plans: slice RL — the re-review's cheap items (R1, R3, R4, R5), R2 and the exit-code nit as follow-ups, the gates before the merge
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Diffstat:
1 file changed, 20 insertions(+), 0 deletions(-)
diff --git a/plans/release-17.md b/plans/release-17.md
@@ -1677,6 +1677,20 @@ Editor unit **109/109**. EDITOR e2e:
test:scripts, the build and the full suite were not rerun, as ruled (the fixes touch no `scripts/` or
umtool file; the new client code is covered by tsc and the e2e above).
+**Re-review (SHIP) → the cheap items before the merge.**
+
+| finding | fix |
+|---|---|
+| R1 — a subtitle 429 beside another subtitle failure (`en` 429 + `live_chat` 404) still classed `rate_limit` | `9c01dea2`: `classifyDownloadFailure` drops the subtitle-429 lines before the generic rate-limit test, so the class is the other failure's (`unknown` for the 404, `network` for a 403); a real platform 429 beside them still wins |
+| R3 — a manual run that asked the source nothing counted as clean | `9c01dea2`: `runYtdlpMode` counts requests (`requestCounter`, shared through every `{...opts}` copy: the listing, each per-video download, each raw spawn) and calls `onPlatformClean` only when it is above 0 — download-missing with nothing to fetch, or download-missing-subs with every video deferred, no longer lifts a due hold (`platformClean.test.ts`, 2 cases) |
+| R4 — `clear-platform-hold` was not a declared kind | `9c01dea2`: declared in `jobKinds.ts` ("Clear rate-limit hold"; not drainable, not replayable, custom queue, neither `needsMedia` nor `needsText`) |
+| R5 — "probe due — it waits for a pending video" on a paused lane | `8a59dce6`: a running lane whose gate is held, or idle `lane-held` / `downloads-paused` / `snoozed` / `disk-gate`, says "probe overdue — the lane is paused" |
+
+**Gates before the merge** (tip `8a59dce6`): tsc clean; common **2641 tests, 2613 pass, 0 fail, 28
+skipped** (main's T1 mover cases); editor unit **109/109**; capped editor build ok (compiled in 17.7 s,
+62 s; the fix pass added a `"use server"` module); EDITOR e2e `pacing.spec rumble-sweep.spec
+no-subs-fallback.spec rate-limit.spec` (`$T/RL-specs-merge.txt`): run 10 (`RL-e2e10.log`): **12 passed, 0 failed, 2 min**.
+
**Left, recorded only (follow-ups).**
- The video page's own download, the re-acquire backfill and import neither record nor clear a
subtitle deferral, so the page's "Left alone … until" note can be stale after a page download fetched
@@ -1687,5 +1701,11 @@ umtool file; the new client code is covered by tsc and the e2e above).
- umtool's own spawns (`check-availability.mjs`, `build-video.mjs` through `platformArgsForUrl`) run in
a separate process and stay at the fixed pace: "every spawn" means every spawn of the editor and the
CLI (N12).
+- R2: a persistent per-video subtitle 403 is `network`, which escalates the backoff without deferring
+ the video, so one video can walk a platform into a hold (pre-RL behaviour plus the hold; a clean
+ manual Sync once the probe is due, or Clear hold, gets out). Follow-up: defer the video when the
+ only failure is a subtitle line.
+- An H1 failure records `ytdlpExitCode: 0` with an `error` (the one attempt that does; the job log
+ line says why).
## Rollout