Skip to content

feat: add modular-kit-snap example#115

Merged
TMHSDigital merged 2 commits into
mainfrom
feat/modular-kit-snap
Jul 24, 2026
Merged

feat: add modular-kit-snap example#115
TMHSDigital merged 2 commits into
mainfrom
feat/modular-kit-snap

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

What this is

New example modular-kit-snap: a tiling corridor kit where the snap is the contract — a 4 × 3 × 3 m corridor segment whose open-end boundary vertices sit exactly on the declared tile grid, so instances at 4 m multiples join with zero gap and zero overlap. Asset-first entry in the game-asset arc: built for reuse (pivot at the start-edge connection point, identity transforms, Kit.CorridorSeg.* datablocks, manifold except the two intentional open ends, 12 beveled detail parts contained strictly inside the tile).

Also on this branch, per the task's opening commit: ROADMAP candidate-pool reconciliation (docs: commit) — removed the stale "Gallery coverage follow-ups from the GPv3 review" line (everything it names shipped; its light-linking subject duplicates the light-link-studio line) and struck through the gltf-skin-roundtrip entry, which had shipped but was left unstruck. Every remaining unstruck pool entry verified genuinely unbuilt.

Contract witnessed (check-only path, all closed form or re-derived)

Check Measured (5.1.2 / 4.5.11) Exit
Snap: 16 boundary verts (8/end) on x ∈ {0, TILE} max_dev 0.000e+00, tol 1e-6 m 3
Loop coincidence (nearest (y,z)-key match) 8/8 ring, max_dev 0.000e+00 4
Tiling: linked duplicate at (4,0,0) joint positions yz_dev 0.000e+00, x_dev 0.000e+00 5
BBox == declared tile (shell and whole asset) dev 0.000e+00, tol 2e-6 6
Manifold except open ends 16 boundary edges, 0 nonmanifold, 0 off-plane 7
Detail watertight + contained in tile 12 parts, all inside 8–9
Hygiene: identity scale, kit names, pivot origins 13 parts 11

Check output byte-identical on 4.5.11 LTS and 5.1.2.

Falsification evidence (live run)

Probe (--background, same check() against the unsnapped variant built by the same code minus the snap pass):

  • 3 mm end-ring skew → exit 3, worst 3.000e-03 m off the end planes; cascades to bbox dev 3.000e-03 and 8 off-plane boundary edges.
  • 2 mm y-nudge, no skew → exit 4, ring displacement 2.000e-03 measured.
  • Authoring hazard found and fixed: sorted-zip ring matching mispairs displaced verts and reported a bogus 3.002 cascade for a 2 mm defect — the matcher now pairs by nearest key (in code comments and ROADMAP).

Render and visual passes (iteration log)

  • Pass 1 (5 iterations): draft1 too dark/no focal/dead right wall → fixtures relit; draft2 lit bulkhead door added but clipped white; draft3 door tamed (amber, no clip) + cool mouth rim; draft4 reframed symmetric into the mouth; draft5 panel/rim polish = final.
  • Pass 2 (2 iterations): falsify1 at 40 mm/15 mm was invisible behind joint ribs → falsify2 at 120 mm gap + 50 mm jogs + 40 mm floor steps: floor plates split with dark seams, trim rails visibly break. Snapped-vs-broken comparison captured.
  • Pass 3: 320px thumbnail reads as corridor-with-destination in under a second.
  • Pass 4 (in situ, Playwright): card reads instantly in compact mode (the gallery default) at 1280 and 390; detail page verified; 41-card index intact. Screenshots reviewed.
  • Pass 5 (contact sheet): docs/gallery/contact-sheets/modular-kit-snap.webp — holds the calibration lineup (armature-bend, damped-track-aim, bmesh-gear): dark base, warm focal accents, designed materials. Mean luminance 82.7 vs calibration 44.5–77.7 — the lit-interior deviation class, not the flat-bright outlier class.
  • Framing: documented deviation (interior run; the envelope surrounds the camera, joints are the proof). check_framing reports fill 1.000/1.000 with all-edge bleed, gate in report mode, reason at call site and in the README's Framing deviation section.

featured_rank: yes — takes rank 8 from color-attribute-wheel (the flattest of the previous eight); the corridor is the only interior/envelope composition in the landing set. Landing build verified locally after the swap.

Generated output read

docs/gallery/index.html card alt re-read character by character — complete sentence, no truncation, no dotted-path issues (teaches shortened after the first regen capped it mid-phrase). WITNESSES copy verified against measured check output: 16 verts, 1e-6 m, deviation 0.0, probe 3e-3 m — all exact.

Test plan (exact binaries)

  • E:\Blender-Developer-Tools\.scratch\blender-5.1.2-windows-x64\blender.exe — reports Blender 5.1.2: check exit 0, render, falsification renders, both probes.
  • E:\Blender-Developer-Tools\.scratch\blender-4.5.11-windows-x64\blender.exe — reports Blender 4.5.11 LTS: check exit 0 (byte-identical output), render parity confirmed visually.
  • CI: both blender-smoke jobs run the new step (check-only) on their floating series releases.

Live run vs inspection-only

Live run: all checks, probes, renders, framing numbers, in-situ captures, contact sheet. Inspection only: glTF/engine import behavior (not claimed — README explicitly does not claim engine compatibility), Cycles engine path (--engine cycles flag exists; renders here used EEVEE).

Two drift cases found by diffing the pool against examples/gallery.json:

- Removed the 'Gallery coverage follow-ups from the GPv3 review' line:
  every example it names (grease-pencil-rosette, armature-bend,
  text-version-stamp, image-pixels-testcard, vse-cut-list) has shipped,
  and its light-linking subject duplicates the dedicated shipped line
  for light-link-studio.
- Struck through the glTF skinned-mesh export witness entry per the
  pool's convention: it shipped as gltf-skin-roundtrip but was left
  unstruck, so it read as an active candidate.

Every remaining unstruck entry verified genuinely unbuilt (camera DOF,
volumetric scatter, freestyle, chess lathe, dice pair, bicycle wheel,
UV atlas pack, and the two snippet ideas have no matching examples/
directory).

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
A tiling corridor kit where the snap is the contract: 16 boundary verts
on x in {0, 4} within 1e-6 m, end rings coincident under the tile offset
(nearest-key match), a linked duplicate's joint positions deviating 0.0,
shell bbox equal to the declared tile, manifold except the two open ends,
and 12 detail parts contained inside the tile. Built for reuse: pivot at
the start-edge connection point, identity transforms, Kit.CorridorSeg.*
datablocks. Falsification: an unsnapped variant (3 mm skew, 2 mm nudge)
fails at exits 3/4 with measured errors; a --falsify render exaggerates
the same failure class to visible floor gaps and broken trim rails.
Byte-identical check output on 4.5.11 LTS and 5.1.2.

Also takes the featured_rank 8 slot on the landing page from
color-attribute-wheel: the corridor is the only interior/envelope
composition in the set and the stronger card.

Authoring hazard recorded in ROADMAP: sorted-zip ring matching mispairs
displaced verts and reports bogus cascade errors - match by nearest key.

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation ci labels Jul 24, 2026
@TMHSDigital
TMHSDigital merged commit 916160d into main Jul 24, 2026
9 checks passed
@TMHSDigital
TMHSDigital deleted the feat/modular-kit-snap branch July 24, 2026 03:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant