From 6566877b742a3887328d018be6fa3c56923e6bbc Mon Sep 17 00:00:00 2001 From: fOuttaMyPaint Date: Sun, 19 Jul 2026 13:50:36 -0400 Subject: [PATCH] feat: add vse-cut-list example witnessing the 4.5-to-5.x sequencer API rename AI-generated VSE code still targets the pre-rename API everywhere: sequence_editor.sequences is gone on 5.x, new_effect ends strips with length= there but frame_end= on 4.5, and frame_final_* reads are deprecated aliases for left_handle/right_handle/duration. No existing example covers the sequencer, so this drift had no smoke-gated witness. The example builds a deterministic cut list (color programs, a clamped GAMMA_CROSS fed by a dedicated source pair, a scene strip, a text strip), asserts every span against its closed form on each version's canonical accessors, and re-asserts after a save/reload round-trip. A --check-pixels mode witnesses the compositing contract on a tiny render. Hazards found while authoring are witnessed too: the cross clamps to the source overlap, effect strips consume their inputs only when stacked above them, and a same-scene scene strip renders transparent. Runs check-only on 4.5 LTS and 5.1 in blender-smoke; the render is the sequencer's own output staged in the dark studio per VISUAL-STYLE, gated against the pinned contact-sheet set. Signed-off-by: fOuttaMyPaint --- .cursor-plugin/plugin.json | 1 + .github/workflows/blender-smoke.yml | 19 + AGENTS.md | 4 +- CLAUDE.md | 6 +- README.md | 17 +- ROADMAP.md | 6 +- docs/gallery/assets/vse-cut-list-hero.webp | Bin 0 -> 13416 bytes .../vse-cut-list-contact-sheet.webp | Bin 0 -> 43174 bytes docs/gallery/index.html | 12 + docs/gallery/vse-cut-list/index.html | 780 ++++++++++++++++++ examples/gallery.json | 12 + examples/vse-cut-list/README.md | 108 +++ examples/vse-cut-list/preview.webp | Bin 0 -> 11464 bytes examples/vse-cut-list/vse_cut_list.py | 529 ++++++++++++ 14 files changed, 1486 insertions(+), 8 deletions(-) create mode 100644 docs/gallery/assets/vse-cut-list-hero.webp create mode 100644 docs/gallery/contact-sheets/vse-cut-list-contact-sheet.webp create mode 100644 docs/gallery/vse-cut-list/index.html create mode 100644 examples/vse-cut-list/README.md create mode 100644 examples/vse-cut-list/preview.webp create mode 100644 examples/vse-cut-list/vse_cut_list.py diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 91e56bb..f7aef7c 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -80,6 +80,7 @@ "examples/text-version-stamp", "examples/turntable", "examples/uv-layer-grid", + "examples/vse-cut-list", "examples/wave-displace" ] } diff --git a/.github/workflows/blender-smoke.yml b/.github/workflows/blender-smoke.yml index b08011f..b202638 100644 --- a/.github/workflows/blender-smoke.yml +++ b/.github/workflows/blender-smoke.yml @@ -350,3 +350,22 @@ jobs: # non-zero on failure. xvfb-run -a "$BLENDER" --background \ --python examples/png-exr-alpha/png_exr_alpha.py -- + + - name: Shipped example - vse cut list (sequencer 4.5 vs 5.x rename) + run: | + set -euo pipefail + # Check only (no render): asserts the accessor rename (.sequences + # gone on 5.x, bridged on 4.5), the new_effect end-kwarg rename + # (frame_end on 4.5, length on 5.x — the wrong kwarg TypeErrors), + # closed-form spans on each version's canonical accessors + # (frame_final_* vs left_handle/right_handle/duration with the + # deprecation bridge), GC wiring and clamping, scene-strip span, + # and a save/reload round-trip. Exits non-zero on failure. + xvfb-run -a "$BLENDER" --background \ + --python examples/vse-cut-list/vse_cut_list.py -- + # Compositing witness on a tiny Cycles render: mosaic cells carry + # their strip colors, the cross cell is a true mid blend, and a + # consumed cross source never composites independently. + xvfb-run -a "$BLENDER" --background \ + --python examples/vse-cut-list/vse_cut_list.py -- \ + --check-pixels --engine cycles diff --git a/AGENTS.md b/AGENTS.md index 8777846..8c53974 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -20,7 +20,7 @@ a `.cursor-plugin/plugin.json` manifest so the ecosystem drift checker classifies it as a `cursor-plugin`. This is content the AI loads when the user asks Blender questions or works on Blender add-ons in Cursor or Claude Code. -The content base is 12 skills, 6 rules, 2 templates, 17 snippets, and 22 +The content base is 12 skills, 6 rules, 2 templates, 17 snippets, and 23 examples (counts are CI-enforced against README.md and the manifest). The full inventory tables and per-item purposes live in `CLAUDE.md`. Example anatomy and authoring rules: copy `examples/bmesh-gear/`; the render look is specified @@ -35,7 +35,7 @@ Blender-Developer-Tools/ rules/.mdc # 6 rule files templates// # 2 starter templates snippets/.py # 17 standalone Python snippets - examples// # 22 runnable smoke-gated examples (+ gallery.json) + examples// # 23 runnable smoke-gated examples (+ gallery.json) scripts/build_gallery.py # generates docs/gallery/ (stdlib only) scripts/site/ # vendored landing-page build (build_site.py + template) docs/gallery/ # committed generated gallery pages + hero assets diff --git a/CLAUDE.md b/CLAUDE.md index f627257..1cc1b2f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -21,7 +21,7 @@ skills//SKILL.md - AI workflow definitions, 12 total rules/.mdc - Anti-pattern rules, 6 total templates// - Starter projects, 2 total snippets/.py - Standalone code patterns, 17 total -examples// - Runnable smoke-gated examples, 22 total (+ gallery.json) +examples// - Runnable smoke-gated examples, 23 total (+ gallery.json) scripts/build_gallery.py - Regenerates docs/gallery/ from gallery.json (stdlib only) scripts/site/ - Vendored landing-page build (Jinja2) docs/gallery/ - Committed generated gallery pages + hero renders @@ -82,11 +82,11 @@ v0.1.0: canonical object creation and deletion, depsgraph evaluated mesh, bmesh v0.2.0: Principled BSDF material, driver-with-custom-function via `driver_namespace`, application handler registration, shader node group with cross-version `interface` API, `foreach_get` bulk vertex read, version-branch skeleton, and USD export with `evaluation_mode='RENDER'`. -## Examples (22) +## Examples (23) Runnable scripts at `examples//`, each asserting a real API contract with deterministic checks (exit non-zero on failure) and optionally rendering a still via -`--output`. All twenty-two run headless on Blender 4.5 LTS and 5.1 in `blender-smoke.yml`; +`--output`. All twenty-three run headless on Blender 4.5 LTS and 5.1 in `blender-smoke.yml`; their renders ship in the site gallery at `docs/gallery/`. `examples/gallery.json` is the gallery's source of truth. When authoring a new one, copy the anatomy of `examples/bmesh-gear/` (script structure, README shape, dark-studio render recipe) and diff --git a/README.md b/README.md index 449b575..aff9516 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@

- 12 skills  •  6 rules  •  2 templates  •  17 snippets  •  22 examples + 12 skills  •  6 rules  •  2 templates  •  17 snippets  •  23 examples

@@ -285,6 +285,21 @@ A depsgraph-evaluated export — builds a cube with `SUBSURF`, measures the eval `evaluated_get().to_mesh()` / `to_mesh_clear()`, and asserts `wm.obj_export` ships the modifier-applied geometry (exported vertex count == evaluated > base). + + + + +VSE cut list: a two-by-two program wall in a dark studio — crimson, teal, and amber color strips plus the mid cross-blend cell, composited by the sequencer over a scene strip, with the span caption below + + + +### [vse-cut-list](examples/vse-cut-list/) + +The sequencer API rename from 4.5 LTS to 5.x — `strips` (never `.sequences`), `new_effect` +ending in `length=` vs `frame_end=`, and `left_handle`/`right_handle`/`duration` replacing +the deprecated `frame_final_*`. Asserts closed-form spans, GC wiring and clamping, the +consumed-input compositing contract, and a save/reload round-trip. + diff --git a/ROADMAP.md b/ROADMAP.md index eb9a28b..9225bd0 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -97,12 +97,14 @@ Not committed; target list for the next content version. (v0.3.0 shipped the smo - Refresh the `slotted-actions-animation` skill against any 5.2 changes - Bump `blender_version_min` in the templates if 5.2 APIs are used - Additional snippets for asset library scripting, EXR baking, multi-file extensions -- Gallery coverage follow-ups from the GPv3 review: light-linking, VSE sequences-to-strips witness (`grease-pencil-rosette`, `armature-bend`, `text-version-stamp`, and `image-pixels-testcard` shipped first) +- Gallery coverage follow-ups from the GPv3 review: light-linking (`grease-pencil-rosette`, `armature-bend`, `text-version-stamp`, `image-pixels-testcard`, and `vse-cut-list` shipped first) - ~~UV-layer authoring witness~~ **SHIPPED** as `examples/uv-layer-grid/` — `create_grid(..., calc_uvs=True)` silent no-op without a pre-existing UV layer; closed-form UV fill + explicit assignment fallback; dual-panel render (flat texel (0,0) vs neon checker) - ~~Image save-format witness~~ **SHIPPED** as `examples/png-exr-alpha/` — float→PNG is RGBA16 and false-unpremultiplies as if associated-alpha (closed-form err 0.98 at RGB 0.02 / a=1/255); OpenEXR preserves float RGBA; byte→PNG is straight RGBA8; `EXR color_mode='RGB'` drops alpha - Attribute domain witness: writing a POINT-domain color attribute and reading it as if it were CORNER (or vice versa) silently shears colors across shared verts — companion to `color-attribute-wheel` - Light-linking collection witness: object light linking / receiver collections so a key illuminates only the hero (common AI miss when staging multi-light studios) -- VSE sequences-to-strips witness: building a short cut list from `sequences.new_effect` / movie strips and asserting frame ranges survive reload +- ~~VSE sequences-to-strips witness~~ **SHIPPED** as `examples/vse-cut-list/` — `.sequences` removed on 5.x (4.5 bridges to `.strips`), `new_effect` end kwarg `frame_end=` (4.5) vs `length=` (5.x), `frame_final_*` deprecated in favor of `left_handle`/`right_handle`/`duration`, TRANSFORM effect type removed, GAMMA_CROSS clamps to the source overlap, effect strips consume inputs only when stacked above them, same-scene scene strips render transparent; save/reload round-trip + tiny-render pixel witness +- GAMMA_CROSS blend-curve witness: the cross blend is not the naive linear mix (mid-cross measured (0.341, 0.349, 0.463) from crimson (0.85, 0.10, 0.22) and teal (0.06, 0.75, 0.80)) — derive and assert the gamma-space closed form per frame; follow-up to `vse-cut-list` +- Falsy `bpy_prop_collection` trap snippet: an empty collection is falsy, so `editor.strips or editor.sequences` silently falls through to the legacy accessor on an empty timeline — always branch on `hasattr`; likely generalizes across the API (found authoring `vse-cut-list`) ## Future (uncommitted) diff --git a/docs/gallery/assets/vse-cut-list-hero.webp b/docs/gallery/assets/vse-cut-list-hero.webp new file mode 100644 index 0000000000000000000000000000000000000000..d0a70f1565b9dc7e138ea515cae8375adcd7dc2c GIT binary patch literal 13416 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 z77}15eExamples Gallery + @@ -446,6 +447,17 @@

uv-layer-grid

View example +
+ + vse-cut-list — The sequencer API rename from 4.5 LTS to 5.x — strips (never .sequences), new_effect ending in length= vs frame_end=, and left_handle/right_handle/duration… + +
+

vse-cut-list

+

The sequencer API rename from 4.5 LTS to 5.x — strips (never .sequences), new_effect ending in length= vs frame_end=, and left_handle/right_handle/duration replacing the deprecated frame_final_*. A deterministic cut list — color programs, a clamped GAMMA_CROSS, a scene strip, a text strip — asserted before and after save/reload.

+

witnesses Each side hard-fails the other's spelling: TypeError on the wrong end kwarg, AttributeError on .sequences. The cross clamps to the source overlap, effect strips consume their inputs only when stacked above them, and a same-scene scene strip renders transparent.

+ View example +
+