feat(showcase): add apothecary-shelf - #254
Merged
Merged
Conversation
The apothecary shelf was the first unclaimed showcase candidate. What an envelope check cannot see on a stocked shelf is whether each vessel fits under the shelf above: a flask too tall still stands on its shelf, the shelf above is still in its dado, and the bounding box does not move. The piece reads every vessel's top and the underside of the member above it off the mesh and asserts a 20 mm headroom floor; --tall-flask exits 20 at -5.5 mm while every seat, joint and the envelope still pass. Also asserts dado bites into both sides, cork, lid and knob bites, vessel, drawer and label seats, zero vessel overlaps, form spread and chamfered wood, each with a falsifier proven on 4.5.11, 5.1.2 and 5.2.1. 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.
Adds
showcase/apothecary-shelf: a stained shelf unit stocked with fifteen vessels in five forms (bottle, flask, jar, albarello, vial). The carcass has three housed shelves behind gallery rails, lapped back boards, a bank of three drawers with brass knobs and an arched crest. Every vessel is corked or lidded and labelled.Selection: it is the first unclaimed candidate in the ROADMAP pool now that brazier has shipped. It is a prop, so it goes in showcase. There were no open PRs, and the only
feat/showcase-*ref is already-merged work. The pool is restocked with a bookshelf-with-leaning-books candidate identified while building this.Binaries (all local,
.scratch/):blender-4.5.11-windows-x64reportsBlender 4.5.11 LTSblender-5.1.2-windows-x64reportsBlender 5.1.2blender-5.2.1-windows-x64reportsBlender 5.2.1 LTSThe budget that matters: headroom (exit 20)
A vessel that is too tall runs its neck up into the next shelf, and every other check still passes:
The piece reads each vessel's top (body or closure) and the underside of the lowest horizontal member above it off the finished mesh, and asserts a 20 mm floor.
--tall-flask: stretches the middle-shelf flask by 1.20. It exits 20 at −5.51 mm, with every seat, joint and the envelope still passing.live-run-proven
Falsifiers: exit codes per binary (live-run-proven)
--skip-decimate--stray-vert--lift-z--float-side--short-shelves--pop-corks--pull-knobs--float-jars--lift-drawers--float-labels--tall-flask--crowd-jars--uniform-vessels--sharp-rail--output--skip-decimate--stray-vert--lift-z--float-side--short-shelves--pop-corks--pull-knobs--float-jars--lift-drawers--float-labels--tall-flask--crowd-jars--uniform-vessels--sharp-railEnvelope: every falsifier leaves the AABB unchanged except
--pull-knobs, which adds 6 mm in Y, inside the 20 mmBBOX_TOL. live-run-provenChecks run locally
tests/check_falsifier_targets.py: the static check passes (32 pieces).--run <BLENDER> --only apothecary-shelfpasses all 14 falsifiers on each of the three binaries. live-run-proventests/smoke/run_example.py --forbid-skip:[PASS] apothecary-shelfon 4.5.11, 5.1.2 and 5.2.1. live-run-provenOther local checks:
check_exit_code_readme,check_import_export_rules,check_engine_id,check_gallery_images,test_harness32 showcase pieces)All pass. live-run-proven
Determinism: every budget value is byte-identical across 4.5.11, 5.1.2 and 5.2.1, including both LOD counts. The only difference is the glTF byte count: 448596 on 5.2.1 against 448604 on the others, which is exporter metadata. There is no RNG. Check-only wall-clock is about 4.5–5.7 s on 5.2.1. The 4.5.11 first run took 13 s cold, so its steady-state time is not measured. live-run-proven
Remote-only checks: the ecosystem drift check and the 4.5 / 5.1 / 5.2 smoke jobs are CI-proven on this PR.
Fix cycles (live-run-proven unless marked)
convex_hullreturned the same vertex in both the interior and unused sets, anddeleteraised an exception. The two sets are now deduplicated.Visual gates
Contact sheet:
docs/gallery/contact-sheets/apothecary-shelf-contact-sheet.webpAsset sheet:
docs/gallery/asset-sheets/apothecary-shelf.webp. The four reference panels were re-rendered with the current harness, because the stored panels predate the camera-fit fix. Verdict: passes.inspection-only
Close-ups (lit and clay: bottom shelf, necks, drawers, crest, dado, back, label): corks sit in the mouths, lids overhang their rims, and knobs are seated. There is no z-fight speckle. After the lap fix, no daylight shows through the back. inspection-only
The hero was rendered on 5.2.1 through
scripts/render_hero.py, andbuild_gallery.pywas run last. I read the generated<img alt>and the witnesses callout indocs/gallery/index.htmlanddocs/gallery/apothecary-shelf/index.html. inspection-only🤖 Generated with Claude Code