feat: two more smoke-gated examples — bmesh-gear and shader-node-group#47
Merged
Conversation
bmesh-gear witnesses the bmesh ownership contract as its subject: a 14-tooth parametric gear (profile ring, face, extrude_face_region) with bm.free() in a try/finally. Because construction is parametric the check asserts closed-form topology — verts 2x(4xteeth), faces sides+2, edges 3xprofile — and watertightness (every edge borders exactly two faces). shader-node-group witnesses the node-group contract: a TintedGloss group declared via tree.interface.new_socket (the 4.x/5.x interface API), instanced in two materials. Asserts the interface sockets exist, the group datablock is shared (users == 2), and the per-instance Tint values differ — the render is the proof: two spheres, one group, two colors (teal and magenta, extending the gallery's one-accent-per-render system; the gear is machined steel). Both verified headless on Blender 5.1.1 and 4.4.3 and wired into the smoke workflow for 4.5 LTS + 5.1, with READMEs, hero/preview renders from each example's own --output path, gallery + manifest + README rows. Gallery grows to 8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Summary
Examples grow 6 → 8, filling the two biggest coverage gaps: bmesh as a subject, and shader node groups.
bm.free()intry/finallyper the always-free-bmesh rule. The check asserts closed-form topology (verts = 2×(4×teeth), faces = sides+2 caps, edges = 3×profile) and watertightness (every edge borders exactly 2 faces) — leaked geometry or an unclosed face fails the math.TintedGlossgroup declared viatree.interface.new_socket, instanced in two materials. Asserts interface sockets exist, the group datablock is shared (users == 2), and instance Tint values differ. The render IS the witness: two spheres, one group, two colors.bmesh/node-groupschips), CI-gated manifest, README gallery rows, regenerated pages.Testing
Both correctness checks pass headless on Blender 5.1.1 and 4.4.3 (CI gates 4.5 LTS); manifest↔disk check passes (8 examples); gallery rebuilt with 8 detail pages.
🤖 Generated with Claude Code