fix: street-lantern, watchtower, parent-inverse-orrery and ngon-triangulate quality pass - #239
Merged
Merged
Conversation
The brace ends sat just outside the post and under the arm, so one bevelled corner grazed each host and it read as a loose stick; the BVH gap budget passed on the graze. Both ends now tenon in, and a brace-bite budget asserts each end inside its host (exit 20, --shallow-brace). Aged brass, sorted bevel input, 60 m stage, temp glb removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
The platform floated: no deck bearers, joists ending in the air, plank ends over nothing, and side rails stopping 0.30 m short of the front posts. Four deck girts, girt-to-girt joists and post-to-post side rails, with deck-bearing and side-rail budgets (exit 17, --short-joists, --open-sides). Grained wood, weathered shakes, rusted iron, sorted bevels, 60 m stage, temp glb removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…framing gate Render path only: Standard view transform (AgX turned the sun into a peach bulb), house lighting that brings mean luma from 0.33 into the calibration band, a 60 m stage, and a framing gate the render never had. Contract and exit codes unchanged on 4.5.11, 5.1.2 and 5.2.1. Also regenerates the index. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…bort Re-verified on 4.5.11, 5.1.2 and 5.2.1: the abort text, the glTF 12-tri claim and all exits hold. Documents the UV-map error that calc_tangents raises first and that differs by version, states nothing is version-gated, and corrects the exit-1 wrapper description. No code change. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
From the street-lantern and watchtower passes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.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.
Quality pass: four items, one per track plus a second showcase piece. Everything below comes from live runs on
.scratch/blender-{4.5.11,5.1.2,5.2.1}-windows-x64/blender.exe, which report 4.5.11 LTS / 5.1.2 / 5.2.1 LTS, unless it is labelled inspection. Baselines were taken on the pristine tree before any edit.(The prompt asks for "four or five pieces" in its intro and "two or three items" in Step 2. This run takes four.)
Picks. No showcase piece is unreviewed, so Track A took the two whose earlier pass had aged worst:
street-lanternandwatchtowerboth still had the 14 m stage, set-ordered bevel input, flat materials, and a leaked temp.glb(157 of them had piled up in%TEMP%from local runs). Track B:parent-inverse-orrery, never reviewed and outside both pinned reference sets. Track C:ngon-triangulate, the only check-only example never reviewed.A —
showcase/street-lanternTook 2 inspection rounds.
Defects
ortho_left,ortho_right,joint_arm_post,joint_brace). Its post end was centred 0.35 ×BRACE_Toutside the post, and its arm end sat under the arm. One bevelled corner grazed each host: −0.0059 m into the post, 0.0000 m into the arm..glbleak. Set-ordered bevel input.Fixes, and why each is structural
post_radius_at(z), and the arm end sits atarm_z − 0.35 × ARM_R. Both ends follow their hosts' dimensions instead of an offset.New budget, identical on 4.5.11, 5.1.2 and 5.2.1:
It runs last, after plumb, so
--rake-poststill reports as plumb (19).Triangles: 3338 → 3338. Same-binary deterministic (three runs of the measured output hash identically).
Falsifier:
--shallow-bracerestores the first build's ends → 20 on all three binaries (post −0.00593, arm −0.00000).Existing exit codes, before → after, identical on all three: default 0→0,
--skip-decimate9→9,--stray-vert15→15,--lift-z16→16,--float-brace17→17,--sink-arm18→18,--rake-post19→19.Hero:
check_framingwithoutdeviation=(fill y 0.711, min margin 0.072). Contact sheet:docs/gallery/contact-sheets/street-lantern-contact-sheet.webp, luma 0.171 (band 0.151–0.305).A —
showcase/watchtowerTook 3 inspection rounds. Round 1 fixed the rails; a full-resolution ortho in round 2 exposed the floating deck, which the downsampled contact tile had hidden.
Defects
ortho_left/ortho_rightat full resolution,joint_platform_post). They stopped 0.30 m short of the front posts (−0.246 m of engagement) for a "hatch clearance". The hatch sits at the centre of the front edge, nowhere near them.ortho_leftfull resolution, then a dump of the deck-level shells)..glbleak. Set-ordered bevel input.Fixes
New budgets, identical on all three binaries:
Both count their members, so a dropped rail or girt cannot pass vacuously.
Triangles: 6408 → 6840 (the four deck girts; band 6200–8200). Envelope unchanged (1.594 × 1.594 × 2.973 m). Z-fight pairs 0. Same-binary deterministic (three runs).
Falsifiers, identical on all three binaries:
--open-sidesrestores the old side rails → 17 (−0.2460).--short-joistsrestores the old joist span with the girts kept, so the triangle floor and envelope cannot steal it → 17 (−0.1625).Existing exit codes, before → after, identical on all three: default 0→0,
--skip-decimate9→9,--stray-vert15→15,--lift-z16→16,--short-shoes16→16,--short-rails17→17 (still on the back-rail check),--float-band18→18,--rake-posts19→19.Hero: framing passes (fill y 0.767, min margin 0.083). Contact sheet:
docs/gallery/contact-sheets/watchtower-contact-sheet.webp, luma 0.180.B —
examples/parent-inverse-orreryChecked first: the render path samples no pixels, and the rig the checks measure is not touched.
Presentation changes (render path only):
Standardview transform. Under the default AgX the orange sun clipped to a peach-white bulb and read as a lamp. The sun emission also dropped from 3.2 to 1.3.check_framing, exit 10, which was unused in this example. Falsified with a scratch copy at a 90 mm lens → 10 (fill 1.000, all edges touched).Contract unchanged. Before → after, identical on all three binaries: default 0 → 0,
--skip-mpi6 → 6. Re-run after the final lighting edit.Framing: passes (fill y 0.828, min margin 0.039). Contact sheet:
docs/gallery/contact-sheets/parent-inverse-orrery-contact-sheet.webp, luma 0.237 (was 0.329).C —
examples/ngon-triangulateAssertion strength: real. It counts the n-gon's loops and faces, requires the
tris/quadsabort (not merely a raise), and re-counts after the repair. Both falsifiers land on real assertions.Re-verified live on all three binaries with a scratch probe:
tris/quadsabort, byte-identical text"(null)"""""--no-dissolve/--skip-triangulateEvery documented claim holds.
README improvements:
calc_tangentschecks for a UV map before face sizes, so a mesh with both problems shows only the UV error, and its placeholder differs by version.ERROR: <type>: <message>, not "FATAL".Doc links were already current (4.5 and
current). No code change.Also
showcase/README.mdconventions: A joint bites; touching is not joining; A platform bears on something (exit 17).witnessesFixtext and root README alts updated. Gallery regenerated, with the generated<img alt>read back.tests/check_falsifier_targets.py: passed, 204 falsifiers across 28 pieces.🤖 Generated with Claude Code