Skip to content

Source-faithful output profiles, automated cut-boundary QA stills, and SKILL.md rule-maintenance procedure #64

Description

@devbrother2024

Problem Statement

Three related gaps, found while using the skill on vertical/screen-recording footage:

  1. Hardcoded output format fights the source. render.py scales every segment to a 1920 long edge and forces -r 24. Smaller sources get upscaled, and 30/60fps screen recordings get resampled to 24fps (visible judder). fix(render): preserve orientation for portrait video sources #29 fixed portrait orientation but the long-edge/fps hardcoding remains. There are also a few doc-code drifts: SKILL.md still shows MarginV=35 while the code ships MarginV=90 (the safe-zone value from fix(subtitles): raise MarginV to 90 to clear vertical safe zones #5), SKILL.md's Output spec mentions a --filter flag that render.py doesn't have (it belongs to grade.py), and concat_segments writes a fixed _concat.txt so two concurrent renders in the same edit dir clobber each other.

  2. Self-eval step 7 is instruction-only. "Check every cut boundary" relies on the model actually looping over all boundaries — a skipped boundary is invisible. Meanwhile timeline_view.py's docstring forbids calling it in a scan loop, so the instruction and the tool contradict each other.

  3. No procedure for evolving the rules. Hard Rules and anti-patterns carry no dates, no triggering incidents, and no supersession markers, so future edits can only append — the failure mode that bloats skill docs over time.

Proposed Solution

  1. Source-faithful output profile (render.py): probe the source with ffprobe once per render; default to the source's resolution capped at a 1080p-class long edge (no upscaling, vertical stays 1080×1920) and the source fps halved while above 30 (60→30, 59.94→29.97). Add an optional output field to the EDL — {width, height, fps} or a "shorts" / "landscape" preset — for explicit targets. Fix the doc drifts and make the concat list name unique per output in the same change.

  2. helpers/boundary_stills.py: from the EDL + rendered output, generate one horizontal 3-frame strip (t−0.5 / t / t+0.5) per cut boundary plus 2s start/end strips into edit/verify/boundaries/, each with a ±0.5s waveform ribbon (reusing timeline_view.py's envelope rendering) so audio spikes are visible. Rewrite SKILL.md step 7 around it: run the script, read every image, report the four checks (visual jump / waveform spike / hidden subtitle / clean ending). timeline_view.py stays as the on-demand drill-down tool — the docstring conflict goes away.

  3. Three-line rule-maintenance procedure in SKILL.md: new rules get a one-line date + triggering incident; replacements say "supersedes X" and delete the old body; past 400 lines, split details into references/ with SKILL.md body taking precedence on conflict.

Additional Context

Keeps the skill's design philosophy intact: hard rules only for silent-failure territory, everything else stays artistic freedom.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions