Skip to content

feat: witness Geometry Nodes zone pairing - #127

Merged
TMHSDigital merged 1 commit into
mainfrom
feat/zone-witnesses
Sep 9, 2026
Merged

feat: witness Geometry Nodes zone pairing#127
TMHSDigital merged 1 commit into
mainfrom
feat/zone-witnesses

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

  • One example, gn-zone-iterate: Repeat Zone row + For Each Element tower. pair_with_output is load-bearing; asserts evaluated counts and per-iteration centers against closed forms, not tree structure.
  • USD export_subdivision='BEST_MATCH' trap (silences evaluation_mode) taught in skills/depsgraph-and-evaluated-data and logged in docs/technical-audit.md. Zone pairing taught in skills/geometry-nodes-python.

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 Geometry Nodes zone pairing

Evidence

USD BEST_MATCH skill check — inspection-only of prior content, then this PR

No skill taught export_subdivision / BEST_MATCH before this branch. The trap lived only in examples/usd-export-evaluation-mode/. Added to skills/depsgraph-and-evaluated-data/SKILL.md (TESSELLATE vs BEST_MATCH, closed form 2 + 6 × 4^n, AI mistake) and docs/technical-audit.md. Zone pairing added to skills/geometry-nodes-python + the same audit log.

Check-only — live-run-proven

Windows .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.

No skips. Catalog row has no min_version. Zones are 4.3+.

Example Binary Exit Marker
gn-zone-iterate Win 5.2.1 + Win 4.5.11 0 Repeat 32/24, For Each 48/36, pairing=ok

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

Count alone is not a sufficient witness. --no-offset still hits 32 verts with one X-center. Centers are the second axis. For Each main Geometry is a passthrough (6 verts) — a linked tree that does not iterate.

Flag Exit Result
(none) 0 32/24 and 48/36, pairing=ok
--unpair-repeat 3 Repeat 0/0
--unpair-foreach 5 For Each 0/0
--repeat-iterations 1 3 Repeat 16/12
--foreach-count 3 5 For Each 24/18
--foreach-main 5 For Each 6/0
--no-offset 4 32 verts, all on first X-center

Closed forms (cube = 8 verts / 6 faces): Repeat verts = 8 × (1 + N), N=3 → 32, X-centers at k × 1.2. For Each verts = 8 × P, P=6 → 48, Z-centers at i × 0.6 + 0.21.

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

fill y=0.833, margins left 0.222 / right 0.213 / bottom 0.078 / top 0.089. Camera (6.6, -9.3, 3.55), aim (0, 0, 1.50), lens 50.

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

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

Mean luma (Rec.709 / 255, 2×2 panels): armature-bend 0.2788, damped-track-aim 0.1722, bmesh-gear 0.3048, gn-zone-iterate 0.2112.

Stage darkness matches the pin set; wedge warmth on the back wall; brass row vs teal tower reads at thumbnail; saturation in family. Pass.

Composite: gn-zone-iterate

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

docs/gallery/index.html:

  • alt="gn-zone-iterate — Repeat Zone and For Each Element only iterate after pair_with_output."

Not truncated at a dotted API path. Detail witnesses callout matches gallery.json witnessesFix. Reverted a drive-by regen of docs/gallery/vse-cut-list/index.html.

Release-owned fields — do not hand-edit

VERSION, CHANGELOG.md, CLAUDE.md **Version:**, ROADMAP.md **Current:**, plugin.json "version". Left at 0.49.0.

Test plan

  • blender-smoke 5.2 LTS: catalog row gn-zone-iterate PASS, no SKIP, zero-PASS job would be red
  • blender-smoke 4.5 LTS: same
  • validate-counts / validate-manifest green (48 examples)
  • Socket Security not pending/failing
  • After squash-merge: quote release.yml decision line; expect RELEASE (bump=minor) → v0.50.0

Made with Cursor

pair_with_output is load-bearing; assert evaluated cubes against closed forms, not tree structure. Teach USD BEST_MATCH silencing evaluation_mode in the depsgraph skill.

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added skills documentation Improvements or additions to documentation labels Sep 9, 2026
@TMHSDigital
TMHSDigital merged commit 0f3a1e9 into main Sep 9, 2026
10 checks passed
@TMHSDigital
TMHSDigital deleted the feat/zone-witnesses branch September 9, 2026 23:23
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 skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant