Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

GN socket identifier rename

A jo-block (steel plinth + copper column) whose Geometry Nodes tree witnesses the 5.2 socket-identifier collapse on FunctionNodeCompare and FunctionNodeRandomValue. Follows geometry-nodes-python.

On 4.5.11 and 5.1.2, Compare INT exposes A_INT / B_INT and Random Value FLOAT exposes Min_001 / Max_001 / Value_001. On 5.2.1 those identifiers are gone — the live sockets reuse A / B and Min / Max / Value. Looking up the unique enabled socket of a given name wires on all three. Hard-coding the pre-5.2 identifiers raises on 5.2.

What it witnesses: identifier-agnostic wiring produces a 16-vert evaluated mesh (plinth + column) with POINT gauge_h == 1.80 on exactly the eight column verts. Compare INT 7 > 2 switches the column in (vert count). Random Value FLOAT with min=max=HEIGHT is stored as a named attribute (Random is a field; using it as a constant Size source evaluates to 0 — hazard found while authoring). zmax 1.94 is the construction axis, not the Random axis.

Scaffolding matches cross-version-property-delete (check() returns, argparse naive-API flag, FATAL wrapper). That example does not version-branch, so the per-version inventory assert is the gn-modifier-inputs shape.

What failure each check would catch:

  • exit 4 — identifier inventory wrong for this Blender
  • exit 5 — pre-5.2 identifier lookup failed (--legacy-ids on 5.2)
  • exit 6 — enabled-name lookup failed
  • exit 7 — Compare did not switch the column in (8 verts)
  • exit 8 — column not sitting on the plinth
  • exit 9 — gauge_h not 1.80 on eight verts (Random unwired)

--legacy-ids is the falsifier: wire by Min_001 / A_INT. It exits 0 on 4.5.11 and 5.1.2 (those identifiers still exist) and 5 on 5.2.1. Unlike --same-axis, it is not red on every binary.

No SMOKE_SKIP. Do not pass deviation= to check_framing.

Run

blender --background --python gn_socket_rename.py --
blender --background --python gn_socket_rename.py -- --legacy-ids
blender --background --python gn_socket_rename.py -- --output gauge.png

The --output render path measures framing against the Layer 1 band via examples/gallery_framing.py (exit 10 on violation) before writing the still.

Render

The still witnesses both axes, not only the Compare one. The column's graduations — a tick every 0.1 m in from each vertical corner, a heavier one every 0.5 m — are drawn by the column shader from the evaluated POINT gauge_h attribute, and only up to its stored height. With Compare broken the column is missing; with Random Value unwired the Store default leaves gauge_h at 0 and the column renders blank copper. Both were rendered to confirm it. The shader is render-path only and nothing in it feeds back into check(); the column is also turned to 18° for the still so two faces show, which check() cannot see because it reads object-space vertices.

The gauge is staged as a height gauge on a bench: it stands on a granite surface plate, and a brass scriber carriage clamped on the column reaches out to rest its point on a wrung stack of three steel gauge blocks. The bench props are built after check() in dress_bench and parented to the gauge object; no assertion reads them.

Exit codes

Per-script sequential checks. 9 is a valid check code; there is no rule against it. 10 is the shared framing helper.

Code Meaning
0 Success
1 Uncaught exception (FATAL wrapper)
2 argparse / usage
4 Identifier inventory wrong for this Blender version
5 Pre-5.2 identifier missing (--legacy-ids on 5.2)
6 Enabled-name socket lookup failed
7 Evaluated vert count off (Compare did not switch the column in)
8 Evaluated zmax off closed form
9 POINT gauge_h not 1.80 on eight column verts
10 Gallery framing violation
12 --output produced no file

The blender-smoke workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the needs-5.1 PR label, or manual dispatch). Smoke does not pass --output or --legacy-ids.