commit b9e2849d2c90bbcc4e0544c471ec6318af974c2f
parent c5819828c5a08a52d18e419f10dae3dc4a100ec0
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Mon, 5 Oct 2026 05:22:52 -0400
umtool cues: a cited report site is named as such (it publishes no transcripts), not reported as a missing channel
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Diffstat:
2 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/umtool/report-to-video/cues.mjs b/umtool/report-to-video/cues.mjs
@@ -208,6 +208,16 @@ export function createCueSource({
async function channelEntry(origin, channelSlug) {
const corpus = await getJson(`${origin}/corpus.json`);
+ // A cited report site (corpus spec 5, `site.scope: "cited"`) publishes its
+ // reports and the moments they cite — no channels, no transcript shards —
+ // so there are no cues to walk to. Say that, not "channel not found".
+ if (corpus.site?.scope === "cited") {
+ throw new CueLookupError(
+ `${origin} is a cited report site (corpus.json site.scope "cited"): it publishes no transcripts, ` +
+ `so cues cannot be read from it — point the manifest at a full archive or use a local corpus`,
+ { channelSlug, videoId: null, tried: [`${origin}/corpus.json`] },
+ );
+ }
const found = (corpus.channels ?? []).find((c) => c.slug === channelSlug);
if (!found) {
throw new CueLookupError(
diff --git a/umtool/report-to-video/cues.test.mjs b/umtool/report-to-video/cues.test.mjs
@@ -474,6 +474,17 @@ test("a channel absent from corpus.json is reported as such", async () => {
});
});
+test("a cited report site is named as such: it has no cues to read", async () => {
+ const cited = {
+ [`${ORIGIN}/corpus.json`]: { spec: 5, site: { scope: "cited" }, channels: [] },
+ };
+ await assert.rejects(() => source({ fetchImpl: stubFetch(cited) }).load("chan", "vid1"), (err) => {
+ assert.match(err.message, /cited report site/);
+ assert.match(err.message, /publishes no transcripts/);
+ return true;
+ });
+});
+
// --- reality check ----------------------------------------------------------
// Opt-in: `LIVE=1 pnpm test:scripts`. The stubs above encode assumptions about a