fix: cart, grindstone and attribute-domain-shear quality pass - #242
Merged
TMHSDigital merged 4 commits intoSep 24, 2026
Merged
Conversation
…legs The shaft tips hovered 0.30 m off the floor with the centre of mass ahead of the axle, slat ends poked out under the front board as a row of teeth, the hub was a 46 mm disc and every edge was razor sharp. The chassis is now stacked from the axle by named bites (bolster, rails that run on as shafts, floor, board walls), two prop legs stand it level, and the wheels get long banded naves. New budgets: prop legs as named supports (16), wall board seams (17), one BVH-contact assembly (18), edge treatment (20) and bake texel density (21), each with a falsifier. A 0.08 m bake cage was baking the wheel rim onto the side wall; it is 0.01 m now. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…e frame Iron shoes exactly as wide as the sill shared three planes with it, which a centre-coincidence z-fight test never saw; the trough hovered 6 mm over its stretchers; both diagonals met at one apex; only the trough was chamfered and the stone was a flat-shaded chalk-white 32-gon. Shoes are now cups with a 6 mm reveal, the coplanar budget is cross-shell, the stretchers carry the trough (bite asserted, exit 18), diagonals tenon into the king post, every edge is chamfered (exit 20), and the stone is 48 smooth segments in a sandstone material with a texel-floored bake (21). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…ir sticks Render path only. The two canopies met tip to tip at the centre of the frame, and each dark steel stick stopped 0.6 m under its hub. The stands now sit 2.72 m apart and a wooden stick runs from the floor into each hub. Check, 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>
…bake cages Also refreshes the gallery cards and alts for the rebuilt cart and grindstone. 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
fix/cart-grindstone-attribute-domain-shear-quality-pass
branch
September 24, 2026 22:41
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 on two showcase pieces (Track A) and one gallery example (Track B). All numbers below come from live runs on the local binaries
.scratch/blender-4.5.11-windows-x64(reportsBlender 4.5.11 LTS),blender-5.1.2-windows-x64(Blender 5.1.2) andblender-5.2.1-windows-x64(Blender 5.2.1 LTS). Hero stills were rendered on 5.2.1 throughscripts/render_hero.py, and the framing gate passed withoutdeviation=. Inspection sheets were rendered to.scratch/and not committed.Picks:
cartandgrindstoneare the last two showcase pieces without a quality pass in this series.attribute-domain-shearis an unreviewed gallery example. All eight check-only examples already had Track C passes, so there is no Track C item this run.Track A:
cartDefects (inspection round 0: six orthos, two 3/4 views, clay, wire, 14 joint close-ups, ground contact):
bed_front_shaftjoint and the old hero.bed_front_shaftand the front ortho.hub_mand the bottom ortho.tyre_top_*.Generator changes, and why each is structural rather than a nudge:
chassis_levels()stacks every level from the axle with named bites (AXLE_BITE,RAIL_BITE,FLOOR_BITE,WALL_SEAT), so a changed wheel radius moves the whole bed. The rails run under the full bed and continue as the shafts, with a pull bar through their tips. Two prop legs tenonLEG_BITEinto the rails (1, 3, 4). The walls are stacked boards standing on the floor, insetWALL_INSETfrom its edge. The end boards are recessed and seated, split and topped differently, so no face lands on a side board's plane (2, 8). The nave is a 130 mm lathe with iron bands and washers (5). The felloe is 40 mm deep, derived from a fixed tread radius (6). The tie plates became L-section corner straps built from the wall's corner (7). Chamfer passes select every wood and iron edge over 50°, and caps are n-gons triangulated after the bevel (9). Shading is smooth, hard at chamfers and material boundaries (10). Wood tone and grain are per shell, the iron is rusted, and the stage is 60 m (11, 12). The cage is 0.01 m and the bake is 1024 px (13, 14).New budgets (identical on 4.5.11 / 5.1.2 / 5.2.1):
The re-declared envelope is 1.580 × 0.842 × 0.640 m. Triangles went from 2856 to 5284, with the band re-centred at 5160–5410. The collider is 192 against a ceiling of 360.
Exit codes, identical on all three binaries: default 0.
--skip-decimate9,--flush-tyre15 (144 pairs),--lift-z16,--float-wheel16,--short-props16,--wide-seams17,--sink-tyre18,--lift-bed18 (2 components),--skew-wheel19,--sharp-bar20 (24 edges),--low-bake21 (4.36 px). My first edge falsifier skipped the whole iron pass. It exited 4, because 1200 fewer triangles tripped the triangle floor, so I replaced it with--sharp-bar, which squares only the pull bar's rims. Inspection rounds: 2, plus the hero-driven bake fix.Track A:
grindstoneDefects (round 0):
foot_m/foot_pclose-ups. The old z-fight budget matched only faces whose centres fell within 0.1 mm of each other, so it reported 0.stretcher.Generator changes: each shoe is a cup built from the sill end plus
SHOE_REVEAL. The coplanar budget is now the cross-shell KD-tree version (1). The stretcher top is derived from the trough bottom plusTROUGH_BITE, and the stretchers are stationed inboard of the shoes (2). The tenon boxes are removed (3). All wood and iron is chamfered, with n-gon caps triangulated after the bevel (4). The stone is 48 segments, smooth with hard chamfer rings, in a sandstone material with bump and speckle roughness. The baked normal is chained under the bump (5, 6). Wood tone and grain are per member and the iron is rusted (7). Each diagonal endsDIAG_BITEinside the king post's face (8). The stage is 60 m (9).New budgets: coplanar cross-shell pairs 0 (15). Trough bearing is 2 stretchers biting 2–8 mm; measured [4.0, 4.0] mm (18). Right-angle edges 0 (20). Texels ≥ 12 px, measured 29.44 (21). Material face floors were raised to about 70% of measured (280 / 190 / 260).
Triangles went from 928 to 1668, with the band at 1560–1780. The collider ceiling was re-fitted from 240 to 320, because the 48-segment stone puts more of its rim on the hull (304 measured). The envelope is 0.722 × 0.419 × 0.610 m. The dip is 24.2 mm, because the rim chamfer lowers the trough top; it is within its 15–45 mm band.
Exit codes, identical on all three: default 0.
--skip-decimate9,--stray-vert15,--flush-shoes15 (4 pairs),--lift-z16,--short-legs16,--float-crank17,--float-legs17,--narrow-trough18,--no-dip18,--low-stretchers18 (−5.9 mm bite),--sharp-handle20 (20 edges),--low-bake21 (7.36 px). Inspection rounds: 2.Track B:
attribute-domain-shearRender path only. At ±1.15 the two canopies met tip to tip at x=0, so the pair read as one shape. Each stick was near-black steel that stopped 0.6 m under its hub, holding nothing. The stands are now at ±1.36 with a 44 mm lens. The stick runs from the floor into the hub, with both ends derived from the stand's tilt, in a wooden-dowel material. The umbrella shape is
build_fan, the checked mesh, and was left alone.Contract unchanged:
check(), the assertions and the exit codes are untouched. Before and after, on 4.5.11, 5.1.2 and 5.2.1: default 0,--no-overwrite5. The measured shear is 0.751031 on every run. Framing: fill x 0.850, minimum margin 0.075.Contact sheets
Mean luma against the pinned calibration set (0.151–0.305): cart 0.182, grindstone 0.180, attribute-domain-shear 0.265. Stage darkness is in family, the wedge is warm on both showcase pieces, the subject fills the frame, and saturation is 0.19 / 0.12 / 0.17. All three are legible at thumbnail size.
Checks run locally
tests/check_falsifier_targets.py(223 falsifiers, 28 pieces),check_exit_code_readme.py,check_gallery_images.py,check_engine_id.pyandcheck_import_export_rules.pyall pass. I read the generated alt text indocs/gallery/index.htmland in each detail page.Established by inspection only: I checked determinism by repeating the default run on 5.2.1 (5284 / 1668 triangles and identical measurements on every run), not by a byte diff of the mesh.
🤖 Generated with Claude Code