feat(showcase): add bookshelf - #283
Merged
Merged
Conversation
The bookshelf with leaning books was the first unclaimed candidate in the ROADMAP pool. What an envelope check cannot see on it is whether a leaning book rests on its neighbour: tipped too far its board cuts the neighbour's head edge, not far enough it stands in the air, and every seat, the bounding box and the book-overlap budget (which must exempt the designed contact) still pass. The piece reads the leaning board's outer-face plane off the mesh and asserts the neighbour's head edge sits 0.3-2.0 mm behind it; --air-lean and --deep-lean exit 22 on it. Also asserts both sides on the floor, housed cross members, page blocks glued into their boards, gilt bands seated on the spine, every book seated on its shelf or the book below, headroom, size spread, zero unplanned book overlaps and no right-angle wood edges, 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) <[email protected]> Signed-off-by: TMHSDigital <[email protected]>
This was referenced Sep 26, 2026
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.
What
New showcase piece
showcase/bookshelf/: a stained bookcase (two housed shelves, a base on a recessed plinth, five lapped back boards, stepped cornice) with thirty-eight rounded-spine hardbacks. Twenty-nine stand, seven lie in three stacks, and two lean on a neighbour. Each book has a U-section cover (cloth or leather), a page block glued into its boards, and two gilt bands built on the spine's own chain.Why this item
MODE: auto,SUBJECT: auto. The first unclaimedROADMAP.mdcandidate that was not in flight was "Bookshelf with leaning books". No open PRs.origin/feat/showcase-butter-churnis a stale branch of a piece that already shipped. It is a showcase piece, not an example: it asserts declared asset budgets and witnesses no API contract.The budget that matters: lean contact (exit 22)
A leaning book has to rest on its neighbour's head edge and on the shelf, not in either. Neither mistake is visible to the seat, envelope, triangle or overlap budgets. The overlap budget has to exempt this contact by design. The piece:
It measures against a plane, not the cover solid. The first version measured against the solid, and
--deep-leanthen exited 0: the board is 2.8 mm thick, so a head edge driven 4.5 mm in ends up in the book's hollow and reads as no contact.Falsifiers (all live-run-proven on 4.5.11, 5.1.2, 5.2.1, identical exits; AABB unchanged in every run)
--skip-decimate--stray-vert--lift-z--float-side--short-shelves--loose-pages--float-books--float-bands--tall-book--uniform-books--air-lean--deep-lean--crowd-books--sharp-shelfpython tests/check_falsifier_targets.pypasses statically, and--run <5.2.1> --only bookshelfgives 14/14 ok. Both are live-run-proven.Exit-code matrix (live-run-proven, local binaries under
.scratch/)tests/smoke/run_example.pyThe default measurements are byte-identical across all three versions, with two exceptions. LOD2 is 2388 tris on 5.2 against 2398 on 4.5 and 5.1; this is the known DECIMATE COLLAPSE divergence, and the LOD2 ratio stays inside its band. The glTF file is 8 bytes smaller on 5.2 (785828 vs 785836 bytes).
The version reported by each binary:
Blender 4.5.11 LTS,Blender 5.1.2,Blender 5.2.1 LTS. The smoke runs on CI's floating 4.5/5.2 point releases will be CI-proven once the checks report.Local validate jobs (live-run-proven)
check_engine_id,check_exit_code_readme,check_falsifier_targets,check_gallery_imagesandcheck_import_export_ruleschecks all pass.tests/smoke/test_harness.pypasses.measure_hero_drift --only bookshelfreports "matches" (mean_abs 0.0036).build_gallery.pybuilds 51 examples and 35 showcase pieces. I read the generated<img alt>indocs/gallery/index.htmlanddocs/gallery/bookshelf/index.html: it is the full sentence, not truncated.Visual gates
docs/gallery/contact-sheets/bookshelf-contact-sheet.webp. Measured values are fromcontact_sheet.py; the verdicts are inspection-only.docs/gallery/asset-sheets/bookshelf.webp, set against collision-hull-proxy, socket-attach-points, vertex-color-ao, wheelbarrow and apothecary-shelf. Verdict (inspection-only): not the least-designed object in the lineup. The book fill, the spine bands, the stacks and the leaners give it detail comparable to apothecary-shelf, and more than the hydrant or the well. The carcass alone is plainer than the apothecary's crest-and-drawer carcass.Findings the budgets forced
These are recorded in the piece README:
Labels
needs-5.1is applied because the piece runs a Cycles normal bake and uses the version-branched EEVEE id, so CI also exercises 5.1.🤖 Generated with Claude Code