Skip to content

#1199 stage 1: shot presets and the guide default on minimax/chained-segments #1202

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:

  • templates/minimax/chained-segments defaults to continuity: guide (it was
    last_frame).
  • A shot variable, a presets selector, defaults to moving:
    • static: guide, anchor: segment_1, anchor_strength: 0.25;
    • static_long: guide, keystone: segment_1, keystone_slot: last, anchor off;
    • moving and dialogue: guide only.
  • The cost row is 13.5 min, with continuity/shot/anchor in cost_drivers.
  • keystone_slot is a stable chain key (43a0fb8, d555a37). Commits 23196f7,
    18df52f, 5996db4.

Observe over MCP:

  • validate_workflow and run_workflow on templates/minimax/chained-segments, with
    image, prompt, segments 2 and each shot value.
  • get_job_workflow shows the chain block's realized continuity, anchor,
    anchor_strength, keystone and keystone_slot.
  • get_job_events shows the guide hand-over lines.

Acceptance intent:

  • With no shot, the chain is a guide chain with no counters.
  • Each shot value sets exactly its bundle.
  • An explicit argument beats the bundle. For example, shot: static with
    anchor_strength: 0.5 runs 0.5, and shot: static with continuity: last_frame is
    refused or runs last_frame by the chain's own rules, never silently guide.
  • shot: static with anchor: none and no anchor_strength: null is refused,
    naming both keys (a documented case).
  • keystone_slot: last with an fl2va step that passes no last_image runs, and
    with match_audio on a short last segment it is refused at validate (22ca7f8).
  • The estimate quotes the guide cost.

Bench evidence:

  • Template static_long at 120 s: aa80458ab4f7 (59.2 min, fine drift 0.121; lem:8766).
  • Slot last: 3232cabd16b1, 94c5c0b219b3, f55bd445faa5, 00ed8fb067ca.
  • static (anchor 0.25): 0a40c41af97c, 93dd359dc11e, 25f6bd1da507 (120 s).
  • Records: bench/records/counters.md Defaults by shot type, structural.md
    Keystone slot.

Breaking change: the default continuity moved. A caller who relied on last_frame
must pass continuity: last_frame.

Owes: nothing. Deploy: done at 3f8ed222.

verify: run every pending: #1202 case.

Activity

  1. added
    breaking-changeInterface change the tester must account for before re-testing
    stageA child issue: one stage of a feature
    on Nov 7, 2026
  2. dkackman commented on Nov 7, 2026

    @dkackman
    OwnerAuthor

    Verified by tester model claude-opus-5-5 via provider anthropic, against lem develop @ 85bcd33, workspace default.

    Suite acceptance: no case in any regression-suite-*.md carries pending: #1202 (I also grepped for 1202 and 1199, and checked the git history). So I verified against the issue's own acceptance intent, and there were no pending lines to remove.

    Runs (templates/minimax/chained-segments, segments: 2, the template's default image and prompt):

    job args realized chain (get_job_workflow) events
    a215e574e1a7 none (no shot) shot moving, continuity guide, anchor none/null, keystone none/null "Guide chain: trim_frames is ignored…", "crossfade_ms is ignored…", seam "trimmed 22 head frame(s), crossfade none (the guide held the audio)". No anchor/keystone lines
    370c61760e05 shot: static, anchor_strength: 0.5 guide, anchor segment_1, anchor_strength 0.5 (explicit argument beat the bundle's 0.25) guide lines
    6b1d97bb30ab shot: static, continuity: last_frame ran last_frame: seam "trimmed 2 head frame(s), crossfade 80.0 ms", no guide lines. The bundle's anchor still applied ("segment 2/2: latent anchor applied"), which the chain allows for last_frame. Not silently guide —
    0a2616745fb8 shot: static_long guide, keystone segment_1, keystone_slot last, anchor none guide lines, 22-frame guide trim

    All four succeeded.

    Validate-only checks:

    • shot: static, anchor: none is refused at steps[0].pipeline.chain.anchor: "anchor_strength needs anchor 'segment_1' … and anchor is 'none'". The message names both keys.
    • shot: static, anchor: none, anchor_strength: null is valid.
    • shot: dialogue is valid; its bundle (guide only) is the same as moving.
    • shot: bogus is refused: "'bogus' is not a 'shot' value; allowed: dialogue, moving, static, static_long".
    • Estimate: every non-default shot/continuity is quoted as "scaled from the curated 13.5 min: segments 2 vs 3" (9.0 min), with differs naming continuity/shot/anchor/keystone_slot. The no-shot case quotes observed 6.2 min. cost_drivers includes continuity, shot, anchor and keystone_slot, and the cost row is 13.5.

    Not exercised: keystone_slot: last with an fl2va step that has no last_image plus match_audio on a short last segment. The template doesn't expose match_audio, so this needs a hand-written inline chain. The static_long run above does cover keystone_slot: last running on the template's fl2va step without a last_image.

    Side note, not filed: every validate warns "This workflow sets no 'seed'…" even though the template declares seed: variable:seed (default null), so the warning's wording is misleading here.

  3. 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

    breaking-changeInterface change the tester must account for before re-testingowner: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