Repository navigation
t27f: beat clock -- reel beats cut where the voice changes, crossfaded (Closes #10596) - #10598
Merged
Merged
Conversation
…s, crossfaded (Closes #10596) R4a of epic #10560. lesson_reel.t27 gains a beat clock: cut 0 at the goal phrase's start (held to a 1250 ms open floor), cut 1 at cta_from, each a crossfade of reel.t27's TRANSITION_FRAMES centred on the cut. Seven tests: frame constants, lesson 1's measured cuts, the short-title floor, a grid of 80 voices x every lesson x both languages (full clock, voice too short for an open scene, refused), weights summing to 1000 at every 10 ms, exactly two beat changes over 450 frames, and a fixed-thirds control that lands mid-phrase. The clock lives in lesson_reel.t27, not in the beat_clock.t27 module the issue names: importing phrase_start or cta_from into another module leaves them UNRESOLVED because token_floor_mux.t27 declares the same names, and the splicer drops ambiguous imports even on an explicit path (#10556). Lab: 13/13 tests pass, 0 vacuous; seal saved and verified. t27b still blocked on type [N]T, as the ledger row already says; max_not_pass unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eel (Refs #10596) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 18, 2026
This was referenced Oct 18, 2026
This was referenced Oct 18, 2026
Closed
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #10596 (R4a of epic #10560).
What
specs/t27f/lesson_reel.t27gets a beat clock. For any millisecond or frame of a lesson reel it says which of the three beats from R7 (#10584) is on screen, and how much of each when two crossfade:cta_from, the point where the address takes over.reel.t27'sTRANSITION_FRAMES(500 ms atBASE_FPS), centred on the cut.Tests (13/13 pass on the Railway lab, 0 vacuous)
The grid test reaches all three outcomes: a full clock, a voice too short for an open scene (counted exactly), and a voice the rule refuses.
My first draft failed this test. Its grid never reached a voice the rule refuses, and it missed the dropped-task case, where the main beat would have been alone for only 950 ms.
Deviation from the issue
The issue names a new module
specs/t27f/beat_clock.t27. That module was written and measured, but it cannot work.use t27f::lesson_reel::phrase_start(andcta_from,voice_fits) from another module comes back asUNRESOLVED ... ambiguous, not spliced, becausetoken_floor_mux.t27declares the same names. An explicit path does not disambiguate (#10556). So the clock lives insidelesson_reel.t27, where local declarations win, underbeat_names.Ledger and seal
blockedontype [N]T, as the existing row says.max_not_passis unchanged at 134.Not done
Wiring the clock into the ffmpeg graph is R4b.
🤖 Generated with Claude Code