commit 16f7d67465cf187c03c9fd9fd041e21204b02b84
parent b5026830894cf6ec9e302c0fdce422870f8f1816
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Sun, 4 Oct 2026 17:16:38 -0400
report-to-video: a src clip's log line ends at the file's end; the audio tier's notes say "many", not "every"
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Diffstat:
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/umtool/report-to-video/README.md b/umtool/report-to-video/README.md
@@ -171,7 +171,7 @@ order, and the first place holding the clip's **padded** span (its extent plus
`--skip-fetch`, or a record with no page (`webpageUrl`) to fetch from.
Being last, it never beats a picture already on disk. Without the rule a cut
- would quietly lose its pictures to it: every transcribed video keeps an
+ would quietly lose its pictures to it: many transcribed videos keep an
`audio.mp3`. Under `--no-network` an audio-only clip is satisfied — listed up
front as playing from audio only, not as a miss.
@@ -191,7 +191,7 @@ three-hour container. A raw-cache window is measured whole, as before, so no
cached cut moves. umtool's bench lists tiers 2 and 3 through the same module
(`clipWindowDirs`), with a container's span from its cue doc rather than an
ffprobe, so what the bench calls fetched is what the build cuts from. (Not the
-audio tier: the bench would call nearly every transcribed video fetched.)
+audio tier: the bench would call every video that kept its sound fetched.)
**A source with no picture plays under a poster.** Whatever a clip is cut from
— the audio tier, a `src` that is an mp3 (below), a window with no video
diff --git a/umtool/report-to-video/build-video.mjs b/umtool/report-to-video/build-video.mjs
@@ -773,7 +773,8 @@ async function fetchClip(entry, meta, render, local, opts) {
const file = LOCAL.file(entry);
const duration = entry.srcDuration ?? (await probeMedia(file)).duration;
EMIT("fetch", {
- id: entry.id, video: clipLabel(entry), from, to, cached: true, source: "src",
+ id: entry.id, video: clipLabel(entry), from, to: Number.isFinite(duration) ? Math.min(to, duration) : to,
+ cached: true, source: "src",
reuse: path.basename(file), local: file, window: [0, duration],
});
return {
diff --git a/umtool/report-to-video/sources.mjs b/umtool/report-to-video/sources.mjs
@@ -22,7 +22,7 @@
// platform carries none), or a build that could not fetch one anyway
// (`--no-network`, `--skip-fetch`, a record with no page to fetch from). Being
// last, it never beats a picture already on disk; asked before the network, it
-// is what plays a podcast. Every transcribed video keeps an `audio.mp3`, so
+// is what plays a podcast. Many transcribed videos keep an `audio.mp3`, so
// without the rule a cut would quietly lose its pictures to it.
//
// A window qualifies only if it holds the REQUESTED span whole -- the clip plus
@@ -400,7 +400,7 @@ export async function resolveLocalSource(want, config = {}) {
* `probe` decides a whole container's span. The bench passes a cheap one (the
* cue doc's duration) and is asked only for a video that has a container.
*
- * Not the audio tier: nearly every transcribed video keeps its sound, and a
+ * Not the audio tier: many transcribed videos keep their sound, and a
* bench that called each of those "fetched" would never offer a fetch.
*/
export async function corpusWindowsOf({ video, slug, channelsDir, probe = ffprobeSource }) {