Skip to content

t27f: R4f -- mode 5 holds the address for REEL_CTA_MIN_MS on a sped-up voice #10629

Closed as not planned

Description

@gHashTag

Follow-up to R4d (#10614, PR #10627), epic #10560.

In LR_MODE=5, crossfade 1 is centred on cta_from, the moment the address takes over. The address is now kept off the crossfade, so it only comes in after the crossfade ends. On a voice the reel had to speed up, that leaves it on screen for less than REEL_CTA_MIN_MS. A test in PR #10627 measures this cost: it is real, and it is at least MIN_SCENE_FRAMES - 1 frames.

Boundary

  • specs/t27f/lesson_reel.t27 and its seal: the beat cut for the address, or the address window, in mode 5.
  • Out of scope: modes 3 and 4. If the fix moves crossfade 1 in mode 4 too, that is a decision to name in the PR with its own cmp evidence, not a side effect.

User Scenarios

  • A viewer of a mode 5 reel narrated by a fast voice still has at least REEL_CTA_MIN_MS to read the address before the reel ends.

Requirements

  • Mode 5 holds the address for at least REEL_CTA_MIN_MS on every voice the clock accepts, and it is still never on a crossfade.
  • The candidate fix is to end crossfade 1 at cta_from instead of centring it there. If that is the fix, the change to mode 4's cut is stated and tested.
  • The test "the cost: on a voice the reel speeds up, mode 5 holds the address for less than REEL_CTA_MIN_MS" is replaced by a test that the hold holds, plus a control showing the old cut fails it.

Success Criteria

  • On the Railway lab, t27c test-report passes with 0 vacuous tests, and the seal is saved and verified.
  • A grid test over every lesson, both languages and every voice the clock accepts shows the mode 5 address hold is at least REEL_CTA_MIN_MS and is never on a crossfade.
  • The cmp regression for mode 3 finds 0 differences. For mode 4, either 0 differences or a counted, explained diff that is limited to crossfade 1.

Requirements

FR-001: Mode 5 MUST hold the address for at least REEL_CTA_MIN_MS on every voice the clock accepts.
FR-002: The address in mode 5 MUST never appear on a crossfade.
FR-003: If the fix ends crossfade 1 at cta_from instead of centring it there, the change to mode 4's cut MUST be stated and tested.
FR-004: The existing test that measures the cost (mode 5 holds address for less than REEL_CTA_MIN_MS on a sped-up voice) MUST be replaced by a test that the hold meets REEL_CTA_MIN_MS, plus a control demonstrating the old cut fails it.

Success Criteria

  • t27c test-report on the Railway lab exits 0 with 0 vacuous tests, and the seal for specs/t27f/lesson_reel.t27 is saved and verified.
  • A grid test over every lesson, both languages, and every voice the clock accepts shows mode 5 address hold ≥ REEL_CTA_MIN_MS and the address is never on a crossfade (measured in frames).
  • cmp regression for mode 3 shows 0 differences. For mode 4, either 0 differences or a counted, explained diff limited to crossfade 1.

Activity

  1. added
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 18, 2026
  2. github-actions commented on Oct 18, 2026

    @github-actions
    Contributor

    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.

    • missing: ## Requirements -- numbered obligations, FR-001: ... MUST ...
    • missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
  3. added 2 commits that reference this issue on Oct 18, 2026
    8c1ca72
    8c7a2c2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    queen-shapedshape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions