Repository navigation
t27f: idea factory cover still -- COVER=1 renders the reel's settled title frame, byte-identical to the reel #10828
Description
Part of epic #10560 (the t27f content factory).
Instagram Reels, YouTube Shorts and TikTok each show one still before a reel plays: the cover. Today the idea factory renders only the full reel. To get a cover, someone has to cut a frame out with ffmpeg and guess which frame shows the title once it has settled. Competitors make the still from the same source as the video (Remotion renderStill, CapCut and Opus Clip auto-covers). The factory should make it from the spec too, so the cover can never come from a different idea or preset than the reel.
Boundary
specs/t27f/idea_factory.t27, plus its seal.trinity/seals/t27f_idea_factory.json..claude/skills/t27f/SKILL.md: one bullet on how to cut a cover.- No other spec changes. This does not touch
particle_ds,scene_rasterorglyph57.
Scenarios
COVER = 0(the default): the binary writes exactly the reel it writes today, every byte.COVER = 1: the binary writes one 1080x1920 RGB24 frame, 6220800 bytes, and nothing else.- That frame is byte-identical to frame
cover_frame(IDEA)of theCOVER = 0reel. cover_frame(t)is the last frame of the first scene, when the law's clock has run out and the title has settled.- An idea that preflight refuses still writes 0 bytes under
COVER = 1.
Requirements
pub const COVER : i32 = 0;andpub fn cover_frame(t) -> i32.mainsimulates frames0..cover_frameunderCOVER = 1, but only rasters the last of them, so the physics state matches the reel's.- No
!in the new code (codegen trap codegen(zig): unary minus drops the parentheses of its operand: -(a + b) runs as -a + b #6549).
Criteria
t27c test-reportpasses with 0 vacuous tests. New tests:cover_frameis in scene 0, inside the reel, and atlive(...) == 0, for the sample idea, CTA, RU_IDEA and the batch ideas.- On the lab, binaries generated with
COVER = 1write 6220800 bytes.cmpagainst the matching slice of theCOVER = 0output reports no difference. A control, with the cover moved one frame, does differ. - The
COVER = 0output is md5-identical to the binary before this change. - Mutants of
cover_frameand of the raster guard are killed. - The t27b front end reports 0 unsupported constructs. The seal matches.
Requirements
FR-001: The spec specs/t27f/idea_factory.t27 MUST declare pub const COVER : i32 = 0; and pub fn cover_frame(t) -> i32.
FR-002: When COVER = 1, main MUST simulate frames 0..cover_frame(IDEA) but MUST raster only the final frame, so physics state matches the COVER = 0 reel.
FR-003: The COVER = 1 binary MUST write exactly one 1080x1920 RGB24 frame (6,220,800 bytes) and nothing else.
FR-004: The frame produced under COVER = 1 MUST be byte-identical to frame cover_frame(IDEA) of the COVER = 0 output.
FR-005: cover_frame(t) MUST return the last frame of the first scene where the law's clock has run out and the title has settled (live(...) == 0).
FR-006: An idea rejected by preflight MUST produce 0 bytes of output when COVER = 1.
FR-007: The new code MUST contain no ! (codegen trap #6549).
FR-008: .claude/skills/t27f/SKILL.md MUST gain one bullet describing how to cut a cover.
FR-009: The seal .trinity/seals/t27f_idea_factory.json MUST be updated to match the changed spec.
Success Criteria
t27c test-reportpasses with 0 vacuous tests; new tests verifycover_frameis in scene 0, inside the reel, and atlive(...) == 0for sample idea, CTA, RU_IDEA, and batch ideas —exit 0COVER=1binary writes 6220800 bytes;cmp <(./bin COVER=1) <(dd if=./bin COVER=0 bs=6220800 skip=1 count=1 2>/dev/null)reports no difference; samecmpwith cover frame ±1 differs —exit 0COVER=0output is md5-identical to pre-change binary —md5summatches —exit 0- Mutants of
cover_frameand the raster guard are killed —5 testsminimum t27bfront end reports 0 unsupported constructs —exit 0- Seal
.trinity/seals/t27f_idea_factory.jsonmatches regenerated spec —exit 0
Activity
github-actions commentedon Oct 19, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
FR-001: ... MUST ...exit 0, or a backticked commandMerge claude/t27f-preflight into claude/t27f-cover after #10806 lande…
t27f: re-save the idea_factory seal on the lab after the merge, MATCH…
gHashTag commentedon Oct 19, 2026
Reopened: the body now passes the generated issue-shape check (
check_issue()fromgen/c/policy/issue_shape.c, exit 0 on the Railway lab; a body with only a Boundary exits 1 as the control). The PR that closes this issue is resynced on master and its seal re-saved.t27f: re-seal idea_factory after the merge with preflight and master …
t27f: re-seal idea_factory after the merge with master (Refs #10828)
t27f: idea factory cover still -- COVER=1 writes the reel's settled t…