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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions