Skip to content

#1199 stage 3: chain duration_seconds - ask for a chain by its length #1204

Closed

Description

@dkackman

Stage of #1199, filed by model claude-opus-5-5 via provider anthropic. Already
built on feat/long-form-media (merged 3f8ed222). The authoritative spec is the
plan (docs/superpowers/plans/2026-11-03-long-form-media.md, task named below) and
the design record. If they differ, the design record says what shipped.

Built: chain.duration_seconds (0f075b3, 315bfaf). The segment count and the
last segment's frame snap are derived from the length, and the video and its generated
audio are trimmed to exactly that many seconds. Given beside segments, it overrides
them and logs it (R18). It is refused with match_audio, guide_backoff and
carry_pick. The estimate scales with the derived segment count.

Observe over MCP:

  • run_workflow templates/minimax/chained-segments with duration_seconds: 10 (not
    a whole number of segments).
  • get_job reports the output's duration and frame count, get_output_frames gives
    the last frame, and get_job_events has the "segments ignored" line.

Acceptance intent:

  • The output's frame count equals round(seconds × fps), and its audio is the same
    length.
  • segments beside duration_seconds is ignored, with a log line.
  • Validate refuses duration_seconds with match_audio, guide_backoff or
    carry_pick, naming both keys.
  • A template that carries both a segments default and a duration_seconds
    reference resolving to null validates.

Bench evidence: aa80458ab4f7 (duration_seconds 120 through the template), and
the drill's 90 s chain ab7f54f73b2f.

Owes: nothing. Deploy: done at 3f8ed222.

verify: run every pending: #1204 case.

Activity

  1. dkackman commented on Nov 7, 2026

    @dkackman
    OwnerAuthor

    Verified over MCP against lem develop @ 85bcd33. Tester model claude-opus-5-5, provider anthropic.

    pending: #1204 cases: there are none. A grep of every regression-suite-*.md finds no pending: #1204 line, so no suite lines needed removing. I checked the issue's acceptance intent directly instead.

    1. Length → frames + audio. run_workflow templates/minimax/chained-segments {"duration_seconds": 10, "segments": 3}, job f5cd7720d9f1, succeeded in 304.8 s.

    • get_gallery_metadata: frame_count: 240 (= round(10 × 24)), fps: 24.0, duration_seconds: 10.0, audio_stream_seconds: 10.0, frames: 320000 at 32000 Hz (exactly 10.0 s). findings: [].
    • Shots: 124 + 102 + 14 = 240. The last segment was snapped and trimmed to 14 frames, and its audio to 18667 samples.

    2. segments ignored, with a log line. get_job_events seq 10: Chain 'segments' (3) ignored: 'duration_seconds' (10) sets the segment count. In this run the derived count happened to equal the 3 I passed. So I also validated {"duration_seconds": 10, "segments": 7}: the estimate was 13.5 min catalog, the 3-segment price, not scaled to 7. That shows segments really is overridden.

    3. The estimate scales with the derived count. {"duration_seconds": 30} gives 31.5 min, derived, with scaled from the curated 13.5 min: segments 7 vs 3.

    4. Refusals. Each was an inline guide/last_frame chain with duration_seconds: 10. The control without the extra key is valid: true.

    • match_audio: true is refused at steps[0].pipeline.chain. The message names both keys, but as a raw jsonschema dump (... should not be valid under {'anyOf': [{'required': ['segments', 'match_audio']}, {'required': ['duration_seconds', 'match_audio']}]}). That meets the acceptance, though it reads worse than the other two.
    • guide_backoff: 17 is refused: guide_backoff does not combine with match_audio or duration_seconds: ... - use 'segments'.
    • carry_pick: {"sharpest": 6} is refused: carry_pick does not combine with match_audio or duration_seconds: ... - use 'segments'.

    5. A null duration_seconds reference beside a segments default validates. The stock template with {"segments": 3} (duration_seconds resolves to its null default) is valid: true, at 5.3 min observed.

    Everything matches the acceptance intent. Closing as verified.

  2. added
    status:verifiedTester confirmed the fix via a real MCP call
    and removed on Nov 7, 2026
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

    owner:testerTester's turn to actstageA child issue: one stage of a featurestatus:verifiedTester confirmed the fix via a real MCP calltarget:lem

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions