commit af03e1a48f86f2e477d24efb9bc1c46d373bb5af
parent 03061ce11308b0a1c045077d7faaeee190394165
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Thu, 1 Oct 2026 17:48:49 -0400
report-to-video: framingProblems builds its sentence without a template nested in a template's ${} -- the build-trace check's scanner read the rest of build-video as one call reaching the CLI guard's import.meta.url
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Diffstat:
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/umtool/report-to-video/build-video.mjs b/umtool/report-to-video/build-video.mjs
@@ -269,6 +269,9 @@ export function framedUnderDeck(entry, render) {
return entry.type === "card" && !hidesDeck(entry, resolveDeck(render));
}
+/** A framing layout as a refusal names it. */
+const layoutName = (layout) => (layout === "feed" ? "posts feed" : "deck");
+
/**
* Why segments on disk cannot carry this cut's chrome, as sentences: each
* framed segment's record names the box it was framed into, and it is not the
@@ -289,12 +292,13 @@ export function framingProblems({ entries, records, render, want }) {
const got = records[i]?.framing ?? null;
const box = got?.box ?? deckBox;
if (same(box, want.box)) return;
- wrong.push(`${e.id} (${got ? `framed for the ${got.layout}, ${where(box)}` : `no framing record: built for the deck's ${where(box)}`})`);
+ const why = got ? `framed for the ${got.layout}, ${where(box)}` : `no framing record: built for the deck's ${where(box)}`;
+ wrong.push(`${e.id} (${why})`);
});
if (!wrong.length) return [];
return [
`${wrong.length} segment(s) are framed for another layout than this cut's ` +
- `${want.layout === "feed" ? "posts feed" : "deck"} (footage ${where(want.box)}): ${wrong.join(", ")}. ` +
+ `${layoutName(want.layout)} (footage ${where(want.box)}): ${wrong.join(", ")}. ` +
"Reframing rebuilds them -- run a normal build (with --skip-fetch it re-cuts from the cached windows), not --chrome-only.",
];
}