Skip to content

feat: witness ID-property delete and USD evaluation_mode - #126

Merged
TMHSDigital merged 1 commit into
mainfrom
feat/property-delete-and-usd-witnesses
Sep 9, 2026
Merged

feat: witness ID-property delete and USD evaluation_mode#126
TMHSDigital merged 1 commit into
mainfrom
feat/property-delete-and-usd-witnesses

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Witness the custom ID-property delete contract (del, not property_unset) with IDs built through the data API, and wm.usd_export evaluation_mode RENDER vs VIEWPORT — which is silent unless export_subdivision='TESSELLATE'.

Type

  • feat — new skill / rule / snippet / template / example (minor bump)
  • fix — correction to existing content or a broken contract (patch bump)
  • docs / chore / ci / refactor — no release; release.yml still runs and should exit without a tag

Squash-merge subject: feat: witness ID-property delete and USD evaluation_mode

Evidence

USD probe (before any example code) — live-run-proven

CI Linux portable tarballs extracted in WSL (NTFS cannot create Blender lib/ symlinks). Do not drop this example.

Binary Version Hash poll() evaluation_mode Tiny export
~/blender-linux/blender-5.2.1-linux-x64/blender Blender 5.2.1 LTS 9e2066aef7ef True RENDER, VIEWPORT FINISHED
~/blender-linux/blender-4.5.13-linux-x64/blender Blender 4.5.13 LTS daeeeca98fb0 True same FINISHED

RNA trap (live-run-proven, all four binaries): default export_subdivision='BEST_MATCH' writes the 8-vert cage + subdivisionScheme = catmullClark. VIEWPORT and RENDER files are identical. TESSELLATE is load-bearing. Closed form: verts = 2 + 6 × 4^n (n=1 → 26, n=2 → 98).

Windows supporting probe (not the CI-leg gate): .scratch/blender-5.2.1-windows-x64/blender.exe 5.2.1 LTS 9e2066aef7ef; .scratch/blender-4.5.11-windows-x64/blender.exe 4.5.11 LTS 4db51e9d1e1e.

Check-only — live-run-proven

No skips. Catalog rows have no min_version.

Example Binary Exit Marker
property-delete Win 5.2.1 9e2066aef7ef, Win 4.5.11 4db51e9d1e1e, Linux 5.2.1 9e2066aef7ef, Linux 4.5.13 daeeeca98fb0 0 active_object=None keep_has=True clear_has=False
usd-export same four 0 usda_vp=26/24 usda_rd=98/96 usda_cage=8

Falsify (break, red, restore) — live-run-proven

Flag Binary Exit What it proves
--skip-delete Win 5.2.1 + 4.5.11 7 an example that never deleted still fails
--unset-instead Win 5.2.1 7 property_unset is not a delete
--evaluation-mode VIEWPORT Win 5.2.1 + 4.5.11 4 RENDER TESSELLATE wrote 26/24, expected 98/96
--subdivision BEST_MATCH Win 5.2.1 4 wrote 8/6 catmullClark, expected 98/96 none

Framing — live-run-proven (render path, Win 5.2.1)

  • property-delete: fill y=0.700, margins bottom=0.022. Camera (3.55, -6.59, 3.30).
  • usd-export: fill x=0.806, margins right=0.050. Camera (4.16, -5.85, 3.00).

Contact-sheet gate — live-run-proven luminance, inspection of composite

Pinned set: armature-bend / damped-track-aim / bmesh-gear. Not asset-sheet subjects.

Mean luma (Rec.709 / 255): armature-bend 0.2787, damped-track-aim 0.1722, bmesh-gear 0.3048, property-delete 0.1940, usd-export 0.1471.

  • property-delete: cyan enamel vs empty pocket reads at thumbnail; dark studio; gold rim; same family as the pin set. Pass.
  • usd-export: darker (empty floor, two steel spheres) but same studio as damped-track; faceted L1 vs smooth L2 is the thumbnail; wedge warmth on the back wall. Pass.

Composites: property-delete · usd-export

Generated HTML alts — inspection-only (read character-by-character after build_gallery.py)

docs/gallery/index.html:

  • alt="cross-version-property-delete — Custom ID properties are removed with del, not property_unset."
  • alt="usd-export-evaluation-mode — The USD exporter evaluation_mode chooses viewport versus render modifier quality."

Not truncated at a dotted API path. Detail witnesses callouts match gallery.json witnessesFix.

Gallery stills

The USD still depicts L1 vs L2 tessellation; the USDA point counts are the evidence. Inspection-only vs VISUAL-STYLE: Standard transform, no remaining clipped-white facet after roughness 0.58 / key 200.

Backlog (not this PR)

Inverted canaries currently assert wrapper exit 1. A canary that dies for the wrong reason still satisfies that. Tighten to also require the expected [FAIL] marker text. Logged in ROADMAP candidate pool.

Release-owned fields — do not hand-edit

Untouched: VERSION, CHANGELOG.md, CLAUDE.md **Version:**, ROADMAP.md **Current:**, plugin.json "version" (still 0.48.0). Counts 45 → 47.

Checklist

  • Explicit paths only. CLAUDE.md hunks are the 45→47 count lines only.
  • Counts match disk (47 examples).
  • Manifest lists both new example dirs. "version" untouched.
  • gallery.json, catalog.json (no skip / sidecar), README rows, hero/preview, build_gallery.py, framing + contact-sheet.
  • Every new check falsified.
  • DCO Signed-off-by:
  • No credentials or local filesystem paths in shipped content.

Test plan

  • Local check-only + falsify on Windows 5.2.1 and 4.5.11 as tabled above
  • Linux portable probe + check-only on 5.2.1 and 4.5.13
  • CI blender-smoke 5.2 LTS and 4.5 LTS catalog rows (no SKIP)
  • CI inverted canaries still red (Phase 5; unchanged)
  • Socket Security not pending/failing
  • After squash-merge: quote release.yml decision line; expect RELEASE (bump=minor) → v0.49.0

Made with Cursor

The snippet __main__ is dark headless because it keys off active_object;
the example builds IDs via the data API. USD evaluation_mode is silent
under default BEST_MATCH; TESSELLATE is what makes RENDER vs VIEWPORT
observable.

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 9, 2026
@TMHSDigital
TMHSDigital merged commit 764c90f into main Sep 9, 2026
10 checks passed
@TMHSDigital
TMHSDigital deleted the feat/property-delete-and-usd-witnesses branch September 9, 2026 22:57
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant