Finishes the lane A round-2 list that f0982e7 (the rescued first half) left open:
- Biome-tint re-eyeball under the colorspace law (#4 second half). Verdict: all
six ART_BIBLE tints stand, biomes.js untouched — the wash was wall_material's
round-1 constants, tuned on the raw framebuffer. Retuned: rim pow 2.2->3.0,
rim gain 0.9->0.35, textured curve (0.35+d*.95)*.9 -> 0.12+d*0.60, procedural
d*.8 -> d^2*.65, sheen .10->.04, matcap .22->.14. Rationale documented
in-shader. Verified on a new six-biome contact sheet (?lvl=biomes, SIX_BIOMES
fixture — kept as permanent kit), the real L2 hiatus, and an arena interior.
Evidence: round2_tint_*.png x6 + two *_retuned frames. qa GREEN.
- Stomach-arena shape read for C (#7): recommend the spline-swept room (arena =
"open" mode over an s-span; fundus dome stays a welded icosphere; chained
spheres rejected — crease rings + union collision for a worse look). Full
argument NOTES §-> Lane C + round2_stomach_arena_sketch.svg. Triplanar
deliberately deferred: the swept room obsoletes it where it mattered.
- Ruling #5: harness -> web/dev/laneA_world.html (+DBG.post to the house shot
sink); _fixture.js stays — the spline selfcheck asserts against it, now
documented in-file. launch.json: guts-a on 8145.
- NOTES + progress written for both halves; ROUND2 mid-round box updated: lane
A's round-2 list is closed, only round-3 items remain.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
74 lines
4.8 KiB
Markdown
74 lines
4.8 KiB
Markdown
# Lane A — progress log
|
||
|
||
## 2026-07-16 · Round 2 — crest law, TBN walls, the colorspace re-eyeball, stomach shape read
|
||
|
||
Two halves: the original session (cut off pre-NOTES; work rescued by F as `f0982e7` — crest
|
||
speed law + selfchecks, ±25 radius taper, schema-v2 `wave.amp` as per-vertex `aWaveA`,
|
||
colorspace law in the wall, TBN + matcap + dual detail, `sample(s,out)`) and this resuming
|
||
session, which closed out the lane's round-2 list:
|
||
|
||
- **Tint re-eyeball under the colorspace law: all six ART_BIBLE tints stand, `biomes.js`
|
||
untouched.** The wash was the shader's round-1 constants, tuned on the raw framebuffer;
|
||
post-law the rim flooded every grazing angle. Retuned in `wall_material.js` (rim pow/gain,
|
||
both detail curves, sheen, matcap — values + rationale in-shader). Verified on a new
|
||
six-biome contact sheet (`?lvl=biomes`, kept as permanent kit), the real L2 hiatus, and an
|
||
arena interior; qa GREEN throughout. Evidence: `docs/shots/laneA/round2_tint_*.png` + two
|
||
`*_retuned` frames.
|
||
- **Ruling #5 executed**: harness → `web/dev/laneA_world.html`, + `DBG.post()` to the house
|
||
shot sink. `_fixture.js` stays — the spline selfcheck (qa gate) asserts against it; now
|
||
documented in-file.
|
||
- **Stomach-arena shape read → C (task #7)**: recommend the spline-swept room (arena = "open"
|
||
mode over an s-span, tube pipeline at room radii; fundus dome stays a welded icosphere;
|
||
chained spheres rejected — crease rings + union collision math). Full argument in
|
||
LANE_A_NOTES §→ Lane C; sketch `docs/shots/laneA/round2_stomach_arena_sketch.svg`. Triplanar
|
||
deliberately skipped: the swept room would obsolete it where it matters.
|
||
- Housekeeping: `guts-a` dev server on 8145 in launch.json; sink 8144 reused.
|
||
|
||
Still open for A (round 3): swept-room implementation if C specs it, acid plane, villi band,
|
||
sphincter geometry, slug-map deletion on D's rename ping.
|
||
|
||
## 2026-07-16 · Round 1 — the canal, v0
|
||
|
||
Built `web/js/world/`: spline + parallel-transport frames + arclength LUTs, chunked streaming
|
||
tube, synthetic-scanner wall shader with vertex peristalsis, biome registry, arena shells v0,
|
||
noclip flycam, headless selfcheck, dev harness. Contract per TECH.md §THE WORLD CONTRACT,
|
||
drop-in for the stub.
|
||
|
||
**The game boots it.** `/?dbg=1` (no `?stub`) runs Lane A's world on C's `L2_esophagus`,
|
||
3600 units, hash `cefc4f83`, zero console errors. C's registry landing mid-round is what
|
||
unblocked `boot.js`'s `pickWorld()`; no shell change was needed.
|
||
|
||
Measured (dev.html, C's real L2 + D's real pack, 1920×1080, `renderer.info`):
|
||
draws **8** worst-frame over a full-canal sweep (budget ≤150) · tris **74,420** (≤500k) ·
|
||
geometries 6 → 6 across a full sweep and back, **no leak**, 0 after `dispose()` ·
|
||
load **<120 ms** (<2 s) · pinch ratio L2 3.32 / L3 1.89 (>1.5). fps deliberately **not**
|
||
claimed — the screenshot pane runs tabs hidden, which pauses rAF, and `gl.finish()` didn't
|
||
sync; needs a real window. Determinism: node and browser agree on the hash.
|
||
|
||
Three defects the checks caught that eyeballing would not have:
|
||
- **Tube folded through itself** on a wide+curvy join (turn radius 9.9 vs tube radius 17.2).
|
||
Root cause: centreline amplitude authored in units. Fixed by solving amplitudes from a
|
||
curvature budget, so `curviness` means "fraction of the pinch limit" and C can't author one.
|
||
- **Arena at 720 tris** — three's polyhedron `detail` is `20*(detail+1)^2`, not `20*4^detail`.
|
||
Now solved for ~3u spacing from the arena's own radius.
|
||
- **Acid sea rendered as a black rectangle** — biome fog is tuned for 100u corridors, C's arena
|
||
is 360u across. Arena fog is now sized to the room.
|
||
|
||
Also caught, and both would have rotted silently: the browser served a **stale cached
|
||
`biomes.js`**, so the first evidence set was shot at the old wave amplitude (re-shot); and D's
|
||
texture keys (`wall_smallint_a`) don't match my biome ids (`small_intestine`), which under the
|
||
assets-optional law fails to procedural forever with no error (slug map added, standardisation
|
||
proposed to D).
|
||
|
||
Decisions: peristalsis phase `K(s) = ∫k ds` with `k = OMEGA/flow(s)` ⇒ crest speed == local flow
|
||
(so "surf the crest" == "ride the current") · esophagus wave amp 0.9 → 1.4, measured, moves
|
||
`wallRho` for B · chunk seams align to biome joins, arenas own their span · one uv attribute,
|
||
tiling derived in-shader · colorspace left matching the stub, F to rule.
|
||
|
||
Evidence → `docs/shots/laneA/`: `round1_real_game_boot` (boot.js running Lane A's world),
|
||
`round1_L2_textured` / `round1_L2_procedural_fallback` (same pose, with and without D's pack —
|
||
the assets-optional law), `round1_L2_curve`, `round1_L2_wave_crest`, `round1_L3_arena_acid_sea`.
|
||
|
||
Open for round 2: triplanar arena shells + acid plane, villi band, normal/matcap TBN, sphincter
|
||
seam geometry. Full detail + per-lane asks in `LANE_A_NOTES.md`.
|