Skip to content

Add the Venetian Salon: living canals, gondolas, palazzi and a lagoon railway - #48

Draft
nickfromlater wants to merge 32 commits into
mainfrom
codex/venetian-canal-room
Draft

nickfromlater wants to merge 32 commits into
mainfrom
codex/venetian-canal-room

Conversation

@nickfromlater

@nickfromlater nickfromlater commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

The Venetian Salon / La Serenissima

Closes #47. Draft, not merged. This continues the owner's requested visual rebuild, preserving the interrupted craft pass and adding the new piazza/material finish.

Open the updated room · Current native screenshots and browser report · Node 24 check receipts

Enter from east-7 or select The Venetian Salon. Useful close views: The lace palace, The lion of the lagoon, and Cinema → Alongside the gondolier.

A connected Venetian district

Eleven canal palazzi now have eleven smaller calle houses behind them. A new waterfront palace has nine lower colonnade bays, an open pointed-arch upper gallery, actual quatrefoil openings through thick stone, and a pink-and-ivory attic. The principal palazzi retain deep window reveals, complete inhabited storeys, open loggias, balconies, roof terraces, chimney pots and drainpipes.

The central bridge has eight stepped, roofed shops. Their open counters face the pedestrian stair aisle, while canal-facing backs have framed windows. The original arch remains clear for boats. Recessed water stairs, cut-stone quays, moorings, laundry, cafe tables and planted courtyards connect the architecture. The five-domed basilica, bell tower and coastal steam railway remain.

Campo, stonework and depth

A winged bronze lion with an open book crowns a fluted column in the square. Feather shells, mane, curled tail and forepaws are modeled geometry. Two garnet-and-gold banners frame the approach; these are static sculpted cloth, not a cloth simulation. There are now eleven named viewpoints.

Cool grey staggered paving is a room-local anti-aliased material, not an image texture. Pale quays and patterned piazzas remain distinct. Darker terracotta gallery floors and build-time masonry sky exposure make the loggias read as shaded spaces. This exposure approximates authored building masses, not ray-traced ambient occlusion. It reduces fill without changing the direct sun/shadow term and stays attached on the house map. No extra render pass or texture is used for this finish.

Broad carved roof modillions replace dense tiny cuboids. The finish adds the monument and banners with 1,254 fewer static vertices than interrupted craft head fab4ecb. No geometry ceiling was increased.

Real water reflections and articulated rowing

The canal samples an actual planar reflection of the same native room, boats, train and architectural glass. The mirrored camera clips below-water geometry and excludes water itself. Glass is sorted from the mirrored eye. Camera, matrices, framebuffer, viewport, winding and texture state are restored afterwards. This is planar reflection, not ray tracing or screen-space reflection.

The room-owned target uses 55% of the main buffer dimensions, capped at 896 pixels on the longest edge, or 512 on phones. At 1440 × 1024/DPR 1 its color/depth payload is about 2.55 MiB, excluding driver overhead. Steady-camera refresh is approximately 30 Hz desktop/20 Hz phone; moving cameras refresh immediately. Paused identical views reuse the target. The live map and failed-framebuffer path use inexpensive fallback water. Resize, scene replacement, room departure, map entry and renderer recreation release the target. The extra pass has real GPU cost; no phone-performance improvement is claimed.

Four gondoliers have articulated two-link arms whose hands follow their physical oar handles. The tapered blade immerses on its power stroke and lifts during recovery. Both boat cameras follow the route through turning basins and beneath the arches. Manual takeover remains anchored to the visible boat composition, rather than switching to the train. Existing pause, reduced motion, drag, pinch, automatic camera and exit controls remain in use. Boats are automatic, not player-steered.

Integration and credit

Base: 21bca3bbe5ea509596619053b76eb7c4bc6fe6e5. Current head and tested runtime: 5d78b0998f6bdc0d3f9618f8c876461921504cea.

Five room modules load through normal startup and portable export. The existing custom WebGL 2 renderer, Builder, registry, map, stock and lifecycle are preserved. No new browser runtime dependency, imported artwork, recording, network call or persistence format. Playwright/FFmpeg are isolated review tools, not site dependencies. The retained review workflow is read-only; temporary transport files and source-applying workflows are absent from the final diff.

Credit: nickfromlater, original scene and direction with agent assistance. Existing house/helper authorship is preserved. Original geometry uses the repository's MIT license. This is a compressed Venetian fantasy, not a geographic reconstruction or a historical railway claim.

Venice remains at east-7, leaving east-6 for parallel Orrery work in #49. Preserve both rooms' shared startup/npm hooks when integrating them. Combined certification, October 7, 2026: current main plus #48 5d78b099… and #49 ccddd87… passed full regression, contribution and full geometry checks, both existing browser/offline-export suites, and an additional cross-room/map simulation check in the served app and both real downloaded exports. Runtime tree: a46805c1630248b1319a159fdc526a1df0a1e35a. Exact source, logs and evidence. No product fix was needed; both PR source branches and main are unchanged. Physical-iPhone behavior and artistic acceptance remain unverified; neither PR is merged.

Completed verification

The native review run records exact runtime 5d78b099… inside its artifacts. The run's trigger commit staged the guarded patch; the review jobs check out the resulting runtime explicitly.

  • PASS, Node 24: full npm test, public build, full geometry comparison and contribution report. Downloaded logs were inspected. 536 meshes, 12,756,333 vertices and 153,075,996 Float32 attributes match the reference Builder bitwise. This compares builders on the revised scene, not equality to earlier artwork. The public build contains 135 files.
  • PASS, actual native Chromium/SwiftShader: desktop, 390px and 320px; daylight/evening/night; palace, bridge, monument and canal views; actual play/pause and reduced-motion integration; manual/automatic cinema lifecycle; map entry/return and light-state restoration. Zero recorded browser errors, warnings or final GL errors. Both portrait containment and overflow checks pass.
  • PASS, visible reflection: allocated 792 × 563 target at desktop size, cached unchanged view, restored mirrored camera and winding. Same-view reflection A/B changes 327,190 pixels. This establishes visible effect, not a performance result.
  • Visually inspected current source: arrival, lace palace, winged-lion square, nighttime canal beneath the bridge and 390px portrait. Images are actual native geometry renders, not concept art. Still capture holds the main animation RAF and settles native cameras; it is not an FPS test.
  • PASS locally, Node 22: full suite, full geometry and contribution report. The CI evidence above uses required Node 24.

Focused regressions also cover district/roof envelopes, aisle-facing open shop counters, real tracery holes, palace sightlines, monument footing, masonry/paving UVs, finite geometry, closed routes, full-circuit eye/gaze clearance, arm lengths/handle reach, blade immersion/recovery, allocation-free animation and normal/failed-build disposal. Reflection tests inject allocation/draw failures and verify state recovery.

Separate experience job still running at this update: normal room departure/return, synthetic two-finger input, playback of the actual downloaded standalone with HTTP(S) blocked, and the optional stepped rowing film. Those final-repeat results are not counted as passed here. Check that job's conclusion in the linked run. The earlier craft head passed these interaction/export checks, but that is not presented as a final-head result.

Budgets and acceptance

547,947 static + 25,500 walls + 34,188 moving = 607,635 vertices, excluding shared train stock. There are 29 separately owned moving meshes. Fixed static/moving/combined ceilings remain 550,000 / 40,000 / 620,000. Sampled minimum hull-bank clearance is 2.49 scene units and overhead arch clearance 2.04. These are model-scene measurements, not real-world engineering data.

Unverified: physical iPhone gestures, GPU/thermal behavior and long-duration low-memory stability. Synthetic browser touch is not device evidence. A deterministic rowing film is not a real-time frame-rate measurement. Passing tests does not claim the owner's final visual approval.

Detailed room notes.

Remains draft for visual review. No merge or auto-merge.

@vercel

vercel Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
endless-railroad Ready Ready Preview Sep 26, 2026 4:11pm UTC

Request Review

Copy link
Copy Markdown
Owner Author

Elevation pass in progress. I moved the PR back to draft and rebuilt the scene hierarchy rather than adding surface detail: taller/irregular palazzi, tighter water-edge placement, removal of the garden-like dead zone, and lower canal-canyon camera framing. Current head 51d4520e3fe748eee0198854d5072292dba9dc73; CI/native visual review is running. I’m treating this as a new visual bar, not final polish.

Copy link
Copy Markdown
Owner Author

Combined integration certification completed on October 7, 2026.

Exact evidence, logs, browser reports, screenshots and reproduction instructions

Temporary branch: codex/integration-48-49-20261007. Runtime commit 8ccdaaec5f8ffd3894e52bd2729e47f85166a7b1, exact tested tree a46805c1630248b1319a159fdc526a1df0a1e35a.

Inputs:

Only index.html and package.json conflicted. The resolution preserves both rooms' complete startup/export tags and npm test entries. Shared renderer, hobby and map changes remain intact. Actual derived map positions are Venice east-7 / Orrery east-6. No product integration defect was found and neither PR source branch needed a fix.

PASS on the combined tree:

  • Full npm test, Node 24.19.0, including both room suites and the 140-file production build.
  • npm run test:geometry:full: 560 meshes / 13,367,340 vertices / 160,408,080 Float32 attributes, bitwise reference-Builder equivalence.
  • Measured contribution report.
  • Both existing Chromium/SwiftShader browser suites, unchanged, plus Venice's experience suite: desktop, 390px/320px, simulation, reduced motion, cinema/ride input, live map, reflection/state cleanup and actual downloaded standalone playback.
  • Additional combined check in the served app and each of the two real offline exports: switch Venice → Orrery → Venice; both trains and gondolas advance on the map; global pause freezes all three; ride state and reflection targets clean up/recreate correctly. No uncaught or final WebGL errors.

The first regression attempt hit the existing Moonlight VM timeout while extended geometry ran concurrently; the complete sequential rerun passed on identical source without changing timeouts. The new combined harness also corrected a held-animation timing assumption before its successful run. Both initial failures are retained in the evidence.

This certifies the stated combined checks only. Physical-iPhone gestures, performance, thermal/low-memory behavior and final artistic acceptance remain unverified. #48 stays draft; neither PR was merged.

This branch was successfully deployed

1 active deployment
Preview — 5d78b099 Deployed Sep 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Venetian Salon: canal room with gondolas and a waterside railway

1 participant