fix: chopping-block, gn-socket-rename and gn-bundle-roundtrip quality pass - #207
Merged
TMHSDigital merged 5 commits intoSep 22, 2026
Merged
Conversation
…ts and section budgets Adds four conventions from the chopping-block quality pass: equal facets on an organic or turned body read as staves, so smooth it and carry the surface in the material; one substance per material slot; fasteners aimed down the host's surface normal with a radial seat band (--float-rivets, exit 18); a recognisable cross-section asserted as a ratio band (--round-haft, exit 19). Also records that a thickening falsifier scales only the axis its budget measures. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…ection budgets The log read as a tub: flat-shaded equal facets made staves, the hoop was a flat-shaded stripe with piano-key highlights, the end grain was a triangle-fan sunburst, a pale ring ran round the base, and the haft was a round dowel with a pencil-stub knob in the bark's material. The generator now smooth-shades the log and hoop and carries bark furrows, growth rings and drying checks in the materials, keeps bark down to the ground, builds the hoop as a lapped strip with two rivets aimed down the host normal, and sweeps an oval haft that hooks at the knob in its own material slot. New budgets: rivet seat band and proud minimum (exit 18, --float-rivets) and haft section ratio (exit 19, --round-haft). --fat-haft now thickens across the cheeks only so it still fails on eye clearance. Triangle band, AABB and collider ceiling re-fitted to the new measurements. The temp glTF is removed after measuring. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Presentation only; the contract, assertions and exit codes are unchanged. The column shader now draws gauge graduations from the evaluated POINT gauge_h attribute, so an unwired Random Value renders a blank column where before the still looked identical either way. Brushed copper with engraved ticks from each corner, a steel plinth that no longer mirrors the dark stage into a void, the rim light cut so its floor reflection stops lifting the stage, and an 18 degree presentation turn so two faces show. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…ersion table Exit 5 had no falsifier. --mismatch-mark renames only Separate's Float item, so count and bbox pass and bundle_mark reads 0.0, exit 5. The README now states the RNA per version as a table, re-verified by probe on 4.5.11, 5.0.1, 5.1.2 and 5.2.1: GeometryNodeCombineBundle is undefined on all of 5.x, not only 5.2; on 4.5 it exists with the experimental flag off and evaluates empty. --force-run on 4.5 is documented as exit 1, not under exit 3. Assertions and exit codes unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
… pages Output of scripts/build_gallery.py. The cart and stone-well detail pages were not regenerated after #206 changed their scripts and READMEs. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
TMHSDigital
deleted the
quality-pass/chopping-block-socket-rename-bundle
branch
September 22, 2026 22:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Quality pass over three items, one per track:
showcase/chopping-block— Track A. First visual pass; the previous run's queue ranked it "take first".examples/gn-socket-rename— Track B. The weakest hero in a thumbnail grid of all 51 gallery examples: a matte orange bar on a slab.examples/gn-bundle-roundtrip— Track C. Queued for re-verification of itsmin_version5.0 floor.Plus one
showcase/README.mdconventions commit and one gallery regeneration commit.Binaries (exact self-reported versions):
.scratch/blender-4.5.11-windows-x644.5.11 LTS,.scratch/blender-5.0.1-windows-x645.0.1 (downloaded this run for the Track C floor),.scratch/blender-5.1.2-windows-x645.1.2,.scratch/blender-5.2.1-windows-x645.2.1 LTS.1.
showcase/chopping-block— Track AThe inspection sheet was rendered on 5.2.1 into
.scratch/(untracked) and every image was opened and looked at: six flat-lit orthos, two material three-quarter views, clay, wireframe overlay, nine joint close-ups (axe eye, bit bury, haft shoulder/waist/knob, hoop, top grain, log base, and later the lap rivets) and ground contact. It took two rounds of fixes after the round-0 baseline.Defects, and the view that revealed each
Fixes in the generator, and why each is structural
TOP_CRACKSangles the geometry notches. These are the same constants, so they cannot drift apart.lap_thickness(u)is a piecewise function of angle: a step up, a flat lap, then a taper-out.band_angles()adds a band section at every kink and at every rivet station, so the lap follows the log whatever its radius function does.band_outer_radius, aimed down the hoop's surface normal. The normal is differentiated from that same function, not taken as the radial. Measured seats are now 1.50 and 1.54 mm.haft_ringssweeps an oval section (1.35 wide over thick, long axis in the swing plane) plus a smoothstep hook toward the bit over the last fifth. The knob holds its width to within 2 mm of the butt before rounding off.HAFT_IDX) with its own face floor.New hygiene budgets, measured identically on 4.5.11 / 5.1.2 / 5.2.1
All existing hygiene budgets are still 0 on all three binaries: non-manifold, loose geometry, doubles, zero-area faces, n-gons, coplanar cross-shell pairs, zmin, plumb.
Exit codes, default and every falsifier (4.5.11 / 5.1.2 / 5.2.1)
--skip-decimate--stray-vert--lift-z--fat-haft--round-band--float-rivets(new)--round-haft(new)tests/check_falsifier_targets.py --run(5.2.1,--only chopping-block) confirms all seven declared targets.One falsifier collision was fixed on the falsifier side. Once the haft became oval,
--fat-haft's ×1.85 also scaled the swing-plane width, and the knob grew 16 mm past the AABB, so it exited 8 on all three binaries. It now thickens across the cheeks only, the axis the eye clearance measures, and exits 17 with the identical clearance as before (0.00057 m). No band was widened.Triangles and determinism
Base triangles went from 1472 to 1800. LOD1/LOD2 went from 736/322 to 900/396. The collider went from 434 to 538 triangles (ceiling 470 → 560); for the record, excluding the rivets from the collider source saved only 4. These were re-fitted to the measurements: triangle band 1730–1870 (± 4 %), AABB (0.526, 0.526, 1.006). Two default runs on each binary print identical measurements, and all three binaries agree on every gated axis. Export bytes differ by 16 B on 5.2.1, which is not gated.
Hero
Re-rendered on 5.2.1.
check_framingpasses with nodeviation=: fill y 0.794, margins ≥ 0.072. It reads at a glance as a log round with bark, growth rings and checks, a riveted hoop, and an axe standing in it. I'd put it on a landing page. Contact sheet:docs/gallery/contact-sheets/chopping-block-contact-sheet.webp.No asset sheet: following #205/#206, no showcase piece has one yet, and the backfill for all 28 is #202.
2.
examples/gn-socket-rename— Track BThe contract, assertions and exit codes are unchanged. Every change is on the
--outputrender path. The build's material creation andcheck()are untouched.What was wrong in the before inspection
The inspection covered the hero angle, clay, a wireframe attempt and three close-ups. The wireframe pass drew no lines, because GN
Set Materialbypasses object slots; the topology is the two asserted 8-vert cubes, so nothing was hidden.VISUAL-STYLE.md: "if the contract failed, the render should visibly break".What changed
gauge_hattribute: a tick every 0.1 m from each vertical corner, a heavier one every 0.5 m, and only up to the stored height. Proven with a probe that unlinks Random Value from the Store:check()exits 9 and the column renders blank. Both axes are now visible in pixels.render_stillso two faces show.check()reads object-space vertices, so the turn cannot reach an assertion.check_framingpasses on 5.2.1 (fill y 0.756). The render path also runs clean on 4.5.11 and 5.1.2.docs/gallery/contact-sheets/gn-socket-rename-contact-sheet.webp. Mean luminance is 67.8 (73.1 before), inside the band; dark fraction 0.188.Exit codes, before and after (4.5.11 / 5.1.2 / 5.2.1)
--legacy-idsThe measured check line is identical on every binary: 16 verts / 12 faces, zmax 1.940000,
gauge_hhi = 8 / lo = 8.3.
examples/gn-bundle-roundtrip— Track CRe-verification
Probed on 4.5.11, 5.0.1, 5.1.2 and 5.2.1. Every behaviour claim in the README holds; one was stated too narrowly.
use_bundle_and_closure_nodesexists and readsFalse.GeometryNodeCombineBundlecan be created with the flag off, and a Combine → Separate of a cube evaluates to 0/0 off and 8/6 on.NodeCombineBundleis undefined.GeometryNodeCombineBundleis undefined,NodeCombineBundleexists, and the flag is gone. The README said "undefined on 5.2"; it is undefined on all of 5.x.Improvements
--mismatch-markrenames only Separate's Float item, so count and bbox pass andbundle_markreads 0.0: exit 5 on 5.0.1, 5.1.2 and 5.2.1. This adds a falsifier only; the assertions and exit codes are unchanged.--force-runon 4.5 as exit 1 (it was listed under exit 3) and carries the full measured exit-code grid across the four binaries.current/…NodeCombineBundle,current/…NodeSeparateBundle,4.5/…GeometryNodeCombineBundle,4.5/…PreferencesExperimental.--force-run--bypass--legacy-rna--mismatch--mismatch-mark(new)--pack-scale 1Before this change, every row except
--mismatch-markmatched this table on 4.5.11 / 5.1.2 / 5.2.1.4.
showcase/README.mdconventionsFour conventions now apply to every future piece:
--float-rivets, exit 18).--round-haft, exit 19).It also records that a thickening falsifier scales only the axis its budget measures.
5. Gallery regeneration
Output of
python scripts/build_gallery.py. It also refreshes thecartandstone-welldetail pages, which were not regenerated after #206. The generated card alts and witness callouts forchopping-blockandgn-socket-renamewere read in the HTML.Proven by live run vs. inspection
check_exit_code_readme.pyandcheck_engine_id.pypass.🤖 Generated with Claude Code