commit 7e34cc17dedda9f9843e3489bebaefaf325327ca
parent 15e50d6e34e50c9e469e7f3186988087593b96f8
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Sun, 20 Sep 2026 17:44:08 -0400
e2e: a read-only walk-fixture, where what the walk skips is fixed
bench-fixture cannot state what the walk visits: every test in that file
writes verdicts into it, so a "ready 2 of 3" assertion would hold only until
somebody pressed y. walk-fixture is four locked vid1 clips -- w01 and w04
fetched and unjudged, w02 with nothing cached that holds it, w03 already
confirmed -- so the walk is w01 <-> w04 over both reasons at once.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
1 file changed, 41 insertions(+), 0 deletions(-)
diff --git a/umtool/e2e/fixtures/make-fixture.mjs b/umtool/e2e/fixtures/make-fixture.mjs
@@ -838,6 +838,34 @@ const BENCH = writeProject(
]),
);
+// A FOURTH copy, for the WALK -- and this one is READ-ONLY.
+//
+// The walk visits the clips that still need judgement and are fetched, so what
+// it skips has to be pinned down by the fixture rather than by whichever spec
+// ran last. bench-fixture cannot do it: every test in that file writes verdicts
+// into it, so "ready 2 of 3" would be true only until somebody pressed `y`.
+//
+// Four clips, all on vid1 (whose cues run 0-21, so none of them outruns its
+// transcript), locked so none of them raises a decision:
+//
+// w01 3.00- 6.00 fetched, unjudged -> on the walk
+// w02 9.00-12.00 NOT fetched -> skipped; nothing to play
+// w03 12.00-15.00 fetched, CONFIRMED -> skipped; already answered
+// w04 15.00-18.00 fetched, unjudged -> on the walk
+//
+// So the walk is w01 <-> w04, over two different reasons, and the counter reads
+// `ready 2 of 3`: three clips need judgement, two of them can have it today.
+const WALK = writeProject(
+ "walk-fixture",
+ manifest("walk-fixture", "The Walk Fixture", { siteOrigin: "https://archive.example" }, [
+ { type: "clip", id: "w01", video: "vid1", start: 3.0, end: 6.0, cite: 3, section: 0, lock: true, quote: "and because" },
+ { type: "clip", id: "w02", video: "vid1", start: 9.0, end: 12.0, cite: 9, section: 0, lock: true, quote: "another whole sentence" },
+ { type: "clip", id: "w03", video: "vid1", start: 12.0, end: 15.0, cite: 12, section: 0, lock: true, quote: "a fourth one", verdict: "confirmed" },
+ { type: "clip", id: "w04", video: "vid1", start: 15.0, end: 18.0, cite: 15, section: 0, lock: true, quote: "trailing off" },
+ ]),
+);
+
+
// -- STUB BINARIES, so a build is offline and deterministic --------------------
//
// The pipeline shells out to yt-dlp for the availability preflight and for every
@@ -1022,6 +1050,18 @@ for (const name of ["vid1_10.00-16.00.mp4", "vid1_14.50-18.50.mp4"]) {
path.join(BENCH, "out", "clips-raw", name),
);
}
+// walk-fixture's cache: a file holding w01, one holding w03 and one holding
+// w04, and NOTHING covering w02 -- 9.00-12.00 falls between 0.00-9.00 and
+// 11.50-15.50. The content is the same nine seconds of tone in all three; what
+// is being fixed here is which windows are held, not what is in them.
+mkdirSync(path.join(WALK, "out", "clips-raw"), { recursive: true });
+for (const name of ["vid1_0.00-9.00.mp4", "vid1_11.50-15.50.mp4", "vid1_14.50-18.50.mp4"]) {
+ copyFileSync(
+ path.join(REPORT, "out", "clips-raw", "vid1_0.00-9.00.mp4"),
+ path.join(WALK, "out", "clips-raw", name),
+ );
+}
+
copyFileSync(
path.join(REPORT, "out", "clips-raw", "vid1_0.00-9.00.mp4"),
path.join(reports, "no-origin-fixture", "out", "no-origin-fixture.mp4"),
@@ -1100,5 +1140,6 @@ console.log(` CHANNELS_DIR=${CHANNELS} (testchan/vid1 punctuated, vid2 not)`);
console.log(` projects: report-fixture (4 clips, 1 mid-sentence), no-origin-fixture,`);
console.log(` localhost-fixture, bike-fixture (sweep), find/ (shadowed),`);
console.log(` deep/nested/solo-fixture (collapse case), bench-fixture (writable),`);
+console.log(` walk-fixture (read-only: w01/w04 walkable, w02 unfetched, w03 judged),`);
console.log(` longform-fixture (cue gap, legacy .bak, ffmeta), longform-edit-fixture, dash-fixture`);
console.log(` ${taken} candidate files copied, 2 mix tracks synthesised`);