Build B notes (Fable 5.1, 2026-09-26)
Scene: index.html, generated by build.py from template.html + elements.json (59 elements). 1 unit = 1 ft; schedule in inches.
Placement, in order of the final image
- North wall: five 24 in arches graduated 80 / 86 / 92 / 86 / 80 in, centres x 13.5 to 132.8, warm LED halo each; a 96 x 96 in gold-vein mirror ceiling inset over the lounge, sixteen butt-jointed tiles with no brass grid, brass only in the LED perimeter channel.
- West wall from the north, per the approved concept and Greg's "piano to the right of the bar": 16 in clear for the arch trim and cove, the Yamaha NU1X (57.5 in, z 16 to 73.5) with its bench and the art above it, an 8 in gap, a 48 x 24 in bar at 42 in (z 81.5 to 129.5, black stone top, smoked-glass front over the north 33 in, 15 in fridge bay at the south end) with two 48 in backlit bottle shelves above it (60 and 78 in AFF), three stools at 18 in centres, then the corridor door D-3 at z 223 to 259 (36 in leaf hinged at the south, swinging in).
- Lounge: 120 x 108 in rug, 100 in curved sectional with 30 in clear behind it so the arches reflect it, 30 in cocktail table, two 30 in swivel chairs.
- Bay face: 72 x 32 in fixed desk, 32 in display on a low arm (top at 50 in), HS8 pair, PMC IB1 pair on stands, 12U rack, engineer chair, PA top on a pole in the north return corner, plant in the south return corner, fluted slat panels on both returns.
- Guitars: 10 vertical, 88 in AFF, in one row: 2 on the north return, 6 on the bay face, 2 on the south return. None hangs flat.
- South wall: Korg Grandstage X on its stand at x 37 to 90, with the bench between the keys and the wall so the player faces north into the room, on the 72 x 48 in band rug. The two Fender combos are on the west wall north of D-3 (AM-01 at z 174 to 198, AM-02 at z 199 to 222).
Where the model departs from the image, and why
- The image shows two full rows of vertical guitars above the desk. Under a 102 in ceiling, above a 30 in desk with a display, two rows of 40 in guitars do not fit. One row of 10 vertical hangers at 88 in AFF gives the ten Greg asked for.
- The image's floor is dark. The existing floor is light-oak LVP, so the model shows a dark walnut LVP overlay (F-01); keep-oak-plus-rugs is the cheaper alternate in the spec.
- The image implies a bar longer than 48 in. Greg's 9/13 decision was a 4 ft bar with the NU1X beside it; the model follows Greg.
Assumed dimensions (confirm on site)
Door D-1 and D-3 positions, the pier at 24 x 12 in, the ceiling being flat drywall with no plenum for recessed cans (if it is a slab, the 6 room downlights and the booth one become surface cylinders), the bay return angles 30.54 and 28.0 deg, and everything in shared/gaps-to-measure-on-site.md.
Controls
Walk (WASD, drag, Q/E, R/F, touch stick on phones) with collision, Orbit, an orthographic Plan (drag to pan, wheel to zoom), a Dimensions overlay, four lighting scenes (lounge, session, work, meditation), a searchable Schedule of every element, and a card for any clicked piece with size and position in ft-in and inches.
Passes 5 and 6 (2026-09-26)
- Arch mirrors now use a planar reflection with an oblique clip plane, tinted and veined by the cracked-mirror texture. It re-renders only when the camera moves. Booth contents are kept off the reflection layer.
- Static meshes are merged per element and material, which cut draw calls from 635 to 347.
- The booth has its own cube environment captured with only booth objects visible, so its chrome reads as chrome and the cymbals read pale bronze. The lounge cove and downlight falloff were shortened so lounge light no longer tints the booth.
- The floor is darker walnut, the sectional charcoal velvet, and the swivels black leather, which matches the photos over the tan concept render.
- The booth floor lamp was removed because it appears in no photo. The Persian rug BO-04 is 66 x 88 in, read from photos f14 and f18.
- The fiddle-leaf plant is rebuilt from 86 instanced cupped leaves with vein textures.
- Each scene now sets the booth dimmer and colour temperature and the cove colour. Session is bright and neutral, lounge is warm, and meditation is dim amber with the booth at a third.
- Guitar headstocks carry Fender and Gibson script logos. The doors use a lifted espresso lacquer so their panels read against the walls.
Pass 7 and 8 layout corrections (2026-09-26, from the team lead's spec check, spec d5febc3)
- The west-wall order was reversed. The brief's "bar, then NU1X" was a misreading, and the concept image and Greg's words win. The NU1X now starts 16 in off the north wall and the bar sits 8 in south of it.
- D-3 moved from the south wall to the west wall at z 223 to 259, hinged at the south and swinging in. The south wall now has only the booth slider. A plaster corridor face sits behind the opening.
- The bar is 24 in deep instead of 20 so the 22.4 in fridge fits, and the fridge is the spec's 15 in unit in a bay at the south end. The stools moved 4 in east to stay in front of the deeper counter.
- With the bar ending at z 129.5, the south stool would have overlapped the west swivel chair at z 132. Both swivels moved to z 144 (x 49 and 97.28, still symmetric), leaving 2.3 in clear. This is a departure from the spec's z 132 until the site survey sets the seating.
Pass 9 (2026-09-26, judge verdict FIX-THEN-SHIP)
- Collision follows build A's blocked(). The eye stays 12 in off every wall and booth wall. The listed furniture blocks by its footprint plus 6 in, with the drum kit at 6 in inside its footprint and the sectional as an annulus. A view that drops you inside a footprint lets you walk out of it. Walking north from (6.1, 5.25, 9.5) now stops at z 5.95 ft, in front of the sectional seat, because the start point is inside the cocktail table's footprint and the walker steps out of it first.
- The spawn and Reset view point moved to z 17.6 ft because the keys bench now sits where it used to be.
- Plan is an orthographic top-down camera fitted to the room, the vestibule and the booth, with the ceilings hidden and wall caps drawn. Its 22 labels are HTML at 12.5 px, covering the overall size, every wall segment, both bay returns with angles, the arch span, S-01, K-01, B-01, D-01, the slider, both door swings, the closet, both booth dimensions and the vestibule depth. Furniture labels hide below 700 px wide.
- elements.json: nine wall segments (W-NORTH, W-EAST-A, W-BAY-IN, W-BAY, W-BAY-OUT, W-EAST-B, W-SOUTH-SL, W-SOUTH, W-WEST) with run, rotation and openings, and the walls render from them. W-01 stays as the plaster finish id the spec prices. E-02 lists its 12 positions. HV-01, CAM-01, L-11 and the booth-side slider BO-12 are new elements. 82 elements.
- Six of the spec's 12 downlight positions (z 30 and 92) fell inside the 96 x 96 in M-06 inset. Resolved in pass 10.
- Keys rig change from the earlier model: K-03, K-04 and L-02 moved to the south wall at x 37 to 90, player facing north, as the team lead directed and the spec now states. The amps moved to the west wall to make room. The absorbers above the amps moved with them in pass 10.
- S-02 moved to x 53 so it clears stool S-06 by about 5 in.
- The vestibule is 29 in deep (z 259.5 to 288.5), closed by BO-02 in the room's south wall and BO-12 in the booth's north wall, with walnut LVP through the vestibule and the booth on its existing oak LVP under the Persian rug.
- The velvet base is charcoal 0x2a2a2e with a cool multiplier and low specular, so it stays charcoal under warm session light. The piano gained a music desk with sheet music, a pedal box and front leg brackets, and the L-11 brass piano lamp. The louvered grille and dome camera are element-driven. The ceiling inset lost its grid and its point light, and the lounge cube map is now 512.
Pass 10 (2026-09-26, team lead decision on the two pass 9 conflicts)
- E-02 is 6 downlights at x 36, 73 and 110 by z 154 and 216. The six cans inside the M-06 inset (rows z 30 and 92) are deleted, so the mirror has no penetrations.
- The inset's perimeter LED now lights the lounge. Two wide spots sit in the LED channel on its north and south edges, aimed down and inward, with no shadows. Each scene sets them through its own
insetlevel. Measured on the sectional against pass 9, lounge is 26.6 against 26.0, session 83.3 against 83.7 and work 64.8 against 63.8 (mean luma of the sectional crop). Meditation keeps its candle look because its downlights were already off. The arch halos are unchanged. - X-AC-01 models the two 24 x 48 x 4 in absorbers above the amps on W-WEST, between the bar (ends z 129.5) and D-3 (starts z 223). They are centred on z 186 and 210 over AM-01 and AM-02, with the bottom edge at 36 in AFF. The other four X-AC-01 panels (W-EAST-A and the desk clouds) are still not modelled. 83 elements.
Departures still open
- The mirror reflection is a single plane shared by the five coplanar arches, so the thin gold vein pattern is procedural, not traced from the real glass.
- Drum shell finish, rug pattern and guitar models follow the photos by eye. Serial models and exact colours need a site visit.
Light budget
20 point lights, 11 spot lights (4 downlight spots including the one shadow caster, the 2 inset perimeter spots, the piano lamp, and the track and booth spots), and 1 hemisphere. Pass 10 dropped three downlight spots with the inset cans and added the two perimeter spots, one fewer than pass 9. The shadow map re-renders only when a scene changes.
QA
qa/shot.mjs runs headed bundled Chromium on the Metal GPU. It captures 25 views plus an iPhone 390x844 shot and reports zero page errors. Pass 9 measured 123 fps with the camera still and 106 fps moving, at 281 draw calls and 92k triangles. qa/p9.mjs checks collision walks, plan labels, the schedule and card, and the iPhone plan and card. The iPhone pixel ratio is capped at 1.5. Screenshots are in qa/.
Live at https://rehearsalroom.gregspero.com/build/b/ on 2026-09-26: 107 to 117 fps on an M4 Max through headed Chromium with Metal, and zero console errors.
Pass 9 live on 2026-09-26: 120.5 fps on the M4 Max through headed Chromium with Metal, zero console errors, and the served page matches the built index.html (md5 44d8a557). qa/p9.mjs passed against the live URL.
Pass 10 live on 2026-09-26: 120.5 fps on the M4 Max through headed Chromium with Metal, zero console errors, served page md5 3a8c7dc5 matches the built index.html, and qa/p9.mjs passed against the live URL (83 schedule rows, 22 plan labels at 12.5 px).