Skip to content

feat: add eval-mesh-datablock-name and mesh-automasking-settings examples - #147

Merged
TMHSDigital merged 4 commits into
mainfrom
feat/eval-name-and-automasking
Sep 13, 2026
Merged

feat: add eval-mesh-datablock-name and mesh-automasking-settings examples#147
TMHSDigital merged 4 commits into
mainfrom
feat/eval-name-and-automasking

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Two pathology cross-version breakage examples, plus a ROADMAP correction of the survey's Claim C (direction was wrong) and a CONTRIBUTING note so version-gated falsifiers are not "fixed" to fail on every binary.

Framing deviation contract and #138 stay queued. Do not merge this PR from the authoring session.

  • examples/eval-mesh-datablock-name/ — pathology, no gallery still.
  • examples/mesh-automasking-settings/ — pathology, no gallery still.

Authoring-gate conflict (tracked, not fixed here)

docs/new-example-prompt.md wants a render for every example. CLAUDE.md pathology/sidecar examples omit gallery by design. Both examples follow CLAUDE.md. Issue filed as part of this phase (number in Task 5 below).

Claim C, restated (live-run-proven)

The survey said to_mesh().name no longer equals the source. Binaries say the opposite. Witness is evaluated_get().data.name. Source mesh named SourceMesh, SUBSURF levels=1 (8 vs 26 verts).

Accessor 4.5.11 5.1.2 5.2.1
obj.data.name SourceMesh SourceMesh SourceMesh
evaluated_get().data.name Mesh Mesh SourceMesh
to_mesh().name SourceMesh SourceMesh SourceMesh

Code that treats name inequality as "this is evaluated" is silently wrong on 5.2. Nothing raises.

ROADMAP one-line correction is commit 1 of this PR.

Claim D (live-run-proven, no restatement)

4.5.11 5.1.2 5.2.1
bpy.types.MeshAutomaskingSettings absent absent present (20 RNA props)
Old Brush.use_automasking_* / Brush.automasking_* present present gone
.mesh_automasking_settings absent absent on Brush / Sculpt / Paint / …

Factory-empty has zero brushes. bpy.data.brushes.new("ProbeBrush", mode="SCULPT") yields the relevant attrs. mode="SCULPT" is load-bearing on 5.2: default-mode new(name) leaves mesh_automasking_settings is None.

Subset (not all 18+): use_automasking_topology, use_automasking_cavity (same identifier after the move), cavity factor (Brush.automasking_cavity_factor vs MeshAutomaskingSettings.cavity_factor). Covers the location move and the nested identifier shortening.

Exit codes (live-run-proven)

Local binaries: 4.5.11 LTS 4db51e9d1e1e · 5.1.2 ec6e62d40fa9 · 5.2.1 LTS 9e2066aef7ef.

Example Flag 4.5.11 5.1.2 5.2.1
eval-mesh-datablock-name default 0 0 0
eval-mesh-datablock-name falsifier --assume-distinct-names 0 0 6
mesh-automasking-settings default 0 0 0
mesh-automasking-settings falsifier --assume-brush-attrs 0 0 5

Each falsifier is red only on 5.2.1, and exits 0 on 4.5.11 and 5.1.2 by design (the old API / old naming still works). Same class as --assume-present / --legacy-ids from #145. Unlike --same-axis.

Task 4

CONTRIBUTING.md § Exit codes, Version-gated falsifiers subsection. Lists the four examples.

Task 5

#146docs: new-example-prompt requires a render that the pathology convention forbids. Not fixed in this PR.

Shape (inspection of #145, then live-run of these two)

Scaffolding from cross-version-property-delete (check() returns, argparse naive-API flag, FATAL wrapper). Version gates from gn-modifier-inputs (bpy.app.version tuple). No third approach. No gallery_framing.py, no deviation=, no gallery entries.

Inventory (inspection)

README / plugin.json / catalog / CLAUDE.md / AGENTS.md 57→59. catalog.json rows for the two new examples only. AGENTS.md example count was stale at 55 (missed in #145); brought in line with README as the new examples landed.

Test plan

  • needs-5.1 present and Blender 5.1 smoke job appears
  • Validate / manifest / counts
  • Blender 4.5 smoke
  • Blender 5.2 smoke
  • Blender 5.1 smoke (label)
  • Socket Security
  • Do not merge from this session

TMHSDigital and others added 4 commits September 13, 2026 12:05
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@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
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 13, 2026
@TMHSDigital
TMHSDigital merged commit cb1f2bc into main Sep 13, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the feat/eval-name-and-automasking branch September 13, 2026 16:40
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