guts/docs/progress/a-progress.md
jing ecf43940ec [lane A] Round 2 close-out: colorspace re-eyeball, stomach shape read, ruling #5
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>
2026-07-16 17:14:30 +10:00

4.8 KiB
Raw Blame History

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.