Skip to content

feat: add VSE linear-modifiers and GN socket-rename cross-version examples - #145

Merged
TMHSDigital merged 2 commits into
mainfrom
feat/cross-version-breakage-examples
Sep 13, 2026
Merged

feat: add VSE linear-modifiers and GN socket-rename cross-version examples#145
TMHSDigital merged 2 commits into
mainfrom
feat/cross-version-breakage-examples

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Two cross-version breakage examples. Default path exits 0 on 4.5.11, 5.1.2, and 5.2.1 while asserting different behavior per version. Framing deviation contract and #138 stay queued.

  • examples/vse-linear-modifiers/ — pathology, no gallery still.
  • examples/gn-socket-rename/ — gallery still + contact sheet.

Authoring-gate conflicts (repo docs win)

  • docs/new-example-prompt.md wants a render for every example. CLAUDE.md pathology/sidecar examples omit gallery by design. VSE example follows CLAUDE.md (and exit-pre-sidecar / ngon-triangulate).
  • docs/new-example-prompt.md says merge. This phase does not merge.
  • cross-version-property-delete does not version-branch (del is identical on 4.5 and 5.x). Copied its scaffolding (check() returns, argparse naive-API flag, FATAL wrapper). Version-gated assertions copy gn-modifier-inputs (bpy.app.version >= (5, 2, 0)).

Task 2 — observed API matrix (live run)

Binaries:

Path Reports Hash
.scratch/blender-4.5.11-windows-x64/blender.exe 4.5.11 LTS 4db51e9d1e1e
.scratch/blender-5.1.2-windows-x64/blender.exe 5.1.2 ec6e62d40fa9
.scratch/blender-5.2.1-windows-x64/blender.exe 5.2.1 LTS 9e2066aef7ef

Claim A — use_linear_modifiers on ColorStrip. Holds. 5.1 matches 4.5; not a third behavior.

Version hasattr getattr setattr RNA property
4.5.11 True False bool ok present
5.1.2 True False bool ok present
5.2.1 False AttributeError AttributeError absent (modifiers remains)

Claim B — Compare / Random Value identifiers. Holds. 5.1 matches 4.5.

FunctionNodeCompare INT:

Version identifiers (enabled INT pair)
4.5.11 / 5.1.2 A_INT, B_INT (plus typed A, A_VEC3, …)
5.2.1 A, B only — A_INT / B_INT absent

FunctionNodeRandomValue FLOAT:

Version identifiers
4.5.11 / 5.1.2 inputs Min_001 / Max_001; output Value_001
5.2.1 inputs Min / Max; output ValueMin_001 / Value_001 absent

Exit codes (live run, local Windows)

vse-linear-modifiers

4.5.11 5.1.2 5.2.1
default 0 0 0
--assume-present 0 0 4

Falsifier is red only on 5.2.1 (use_linear_modifiers missing). On 4.5/5.1 the old RNA still works, so the naive path is green. That is unlike --same-axis.

gn-socket-rename

4.5.11 5.1.2 5.2.1
default 0 0 0
--legacy-ids 0 0 5

Default measured on all three: verts=16 faces=12 zmax=1.940000 gauge_h_hi=8 gauge_h_lo=8.

Falsifier is red only on 5.2.1 (FunctionNodeRandomValue has no inputs identifier 'Min_001'). On 4.5/5.1 those identifiers still exist.

5.1 evidence is local (.scratch/blender-5.1.2-windows-x64, hash ec6e62d40fa9), not CI. Apply needs-5.1 so CI re-proves it.

GN still

Rendered on 5.2.1 LTS (9e2066aef7ef), EEVEE. Framing (no deviation=):

  • fill x=0.272 y=0.728 band 0.70–0.90 ok
  • margins min 0.133 ≥ 0.020 ok

Contact sheet: docs/gallery/contact-sheets/gn-socket-rename-contact-sheet.webp

Mean luma (full hero): armature-bend 70.76, damped-track-aim 44.46, bmesh-gear 77.74, candidate 73.14. Stage darkness and wedge warmth sit with the calibration set; subject is a jo-block (contract vehicle, same class as gn-modifier-inputs cubes), not a game prop — no asset sheet.

Authoring hazard (live)

FunctionNodeRandomValue used as a constant Size source evaluates to 0 even with min=max set. The witness stores min=max=HEIGHT as POINT gauge_h (field context). Documented in the example README.

Proven vs inspection

Claim How
Claim A/B matrices live probe on the three binaries
Default/falsifier exits live run of the shipped scripts on the three binaries
Framing numbers live 5.2.1 --output
Mean luma live Pillow on the committed heroes
Catalog/manifest/README counts inspection + build_gallery.py
CI 4.5/5.2/5.1 smoke this PR's jobs (5.1 via needs-5.1)

Remaining candidates

The version-dependent assertion shape worked. The next two (to_mesh().name, MeshAutomaskingSettings) can use the same pattern. Both pathology, no gallery. Framing contract and #138 stay behind them.

Do not merge from this phase.

TMHSDigital and others added 2 commits September 13, 2026 11:25
Naive getattr still works on 4.5.11 and 5.1.2 and raises AttributeError on 5.2.1. Version-guarded hasattr then read exits 0 on all three; --assume-present is red only where the RNA is gone.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…on 5.2

Enabled-name lookup wires on 4.5.11, 5.1.2, and 5.2.1. Pre-5.2 identifiers Min_001 and A_INT are absent on 5.2; --legacy-ids is red only there. Regenerates gallery pages so the new still is in the index.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 13, 2026
@TMHSDigital TMHSDigital added the needs-5.1 Opt-in Blender 5.1 smoke on this PR. Default matrix stays 4.5 + 5.2. Auto-label will not apply this. label Sep 13, 2026
@TMHSDigital
TMHSDigital merged commit f5649d9 into main Sep 13, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the feat/cross-version-breakage-examples branch September 13, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-5.1 Opt-in Blender 5.1 smoke on this PR. Default matrix stays 4.5 + 5.2. Auto-label will not apply this.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant