commit 946e6f75f25993fc6c9d9fa9ea3dc4c091df3de0
parent b5a1b354a74db59e78ff596343ff157c303933cf
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Thu, 1 Oct 2026 22:14:28 -0400
plans: slice T1's re-review (SHIP), R1 and R2 folded in; FACTS
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/plans/FACTS.md b/plans/FACTS.md
@@ -3888,8 +3888,10 @@ as they were measured.
name missing; the link carries the file's mtime (`lutimes`), and the
live-chat freshness check and the index's sub-track key (`subsMs`) `lstat` a tierable name, so the
index's scan never reaches the media drive; when a tiered live chat's cues are stale the index reads
- the raw through `onDrive(mediaDir)` only while the channel's media is `ok`/`in-place`, and otherwise
- keeps the cues the last build held (`buildIndex.test.ts` (k): a stalled drive, nothing asked of it).
+ the raw only while the channel's media is `ok`/`in-place` — one `stat` probe through `onDrive(mediaDir)`
+ (the watchdog's budget is sized for a stat), then a direct read — and otherwise keeps the cues the last
+ build held, or, with none, stores `subsMs: null` so the next build retries (`buildIndex.test.ts` (k): a
+ stalled drive, nothing asked of it; (l): the retry).
An EXDEV tier gives the copy the file's times, so `stat` and `lstat` agree. Every deleter of
a video-dir entry goes through `removeMediaFile` / `removeVideoDirMedia`.
- **`inspectChannelMedia`** now describes the `media` link + `mediaDir`, returns `mediaLink` and
diff --git a/plans/release-17.md b/plans/release-17.md
@@ -532,4 +532,12 @@ line (finding 12): tip `f3f23792` → `001e9de7`; the shas in the table above ar
:391, :484, :1091), the old mover's layout reading `legacy`, nothing else red. Privacy: 0 added lines carry
the user or host name.
+**Re-review: SHIP**, with R1 and R2 folded in before the merge. R1 (`15acd7c7`): the index read a whole raw
+live chat under the watchdog's one-stat budget, and a timeout was never retried. Ruling: it probes the
+drive with one `stat` through `onDrive(mediaDir)` and then reads the raw directly, and a track that is
+neither read nor kept is stored with `subsMs: null`, so the next build retries it (case (l),
+mutation-checked). R2 (`ba24a313`): the classifier calls the hook's media-side temp
+(`.<name>.tiering-<pid>`) scratch, and `tierVideoDir` sweeps a dead process's temp from `media/<id>/` while
+the tier answers. Gates at `ba24a313`: `buildIndex.test.ts` + the tier tests 72/72; tsc clean; common 2,538 passed, 0 failed, 28 skipped (2,566).
+
## Rollout