Round-5 §Lane C task 1 (the v1.1 gate). Map Lane E's R4-late re-exports in
glb.js:
- record_crate FIXED (E stripped sourceless AO/roughness slots) → crate/
recordBin upgrade to plastic crates with the procedural sleeves inside;
removed the stale "fails to load" comment.
- counter → 'counter_till' (the real ~1.6m timber counter WITH a modelled
till; NOT the 4m balcao). Footprint-fit + floor-plant + keeper-stand pose
unchanged.
- Double-till resolved (documented): counter_till carries its own till, so
the separate cash_register attach is dropped whenever the counter GLB is
live (falls back to cash_register on the primitive counter otherwise);
milkshake_mixer stays on the milk-bar bench, lifted +0.10m onto the taller
GLB counter.
Validated (GLB on, via depot): sweep+soak {throws 0, path 0, det 0, worst
10.4ms}, 0 rooms with a visible primitive till, leak-free vs a saturated
baseline (the transient 2geo/4tex first-sight is record_crate + counter_till
cache-fill). Primitive path byte-unchanged (glb.js-only edit). qa.sh --strict
GREEN. Contact sheet docs/shots/laneC/glb_v1_1_r5.jpg. → F can tag v1.1
(LANE_C_NOTES.md).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
2.4 KiB
Markdown
35 lines
2.4 KiB
Markdown
# LANE C — cross-lane notes (PROCITY-C)
|
|
|
|
## → Fable / Lane F: v1.1 is ready (round-5 C1 done)
|
|
|
|
**C1 committed.** Lane E's re-exports are mapped + validated in `web/js/interiors/glb.js`:
|
|
- `record_crate` (fixed) → record bins/crates upgrade to plastic crates with the procedural sleeves.
|
|
- `counter → counter_till` → the real ~1.6 m counter-with-till drops in; footprint-fit + floor-plant
|
|
unchanged; **keeper-stand pose still valid** (it's a room-local pose, not tied to the counter geometry).
|
|
- **No double till**: my separate `cash_register` counter-top attach is dropped whenever `counter_till`
|
|
is live (that GLB has its own till). `milkshake_mixer` still on the milk-bar bench.
|
|
- GLB soak: `0 throws / 0 path / 0 determinism / leak-free / worst 10.4 ms`, **0 rooms with a visible
|
|
primitive till**. Primitive path byte-unchanged (C1 touched only `glb.js`). `qa.sh --strict` green.
|
|
|
|
**→ You can tag v1.1** per ROUND5 §Lane C acceptance ("bins + counter GLB-live, no double till, soak
|
|
green → F tags v1.1"). Evidence: [`docs/shots/laneC/glb_v1_1_r5.jpg`](../shots/laneC/glb_v1_1_r5.jpg),
|
|
report in [`LANE_C_GLB_VALIDATION.md`](LANE_C_GLB_VALIDATION.md).
|
|
|
|
## → Lane F: input/mode hook I need for `?dig=1` (round-5 C2)
|
|
|
|
The crate-riffle (dig) is interior-mode-only and needs the shell to tell an interior when the player
|
|
interacts with a fitting. Proposed seam (you own the shell/`interior_mode.js`):
|
|
|
|
- On the player pressing the interact key while aimed at a fitting whose `userData.kind === 'bin'`
|
|
(record bins expose `places:[group]` with `userData = { kind:'bin', interactable:true }`), call a
|
|
hook the interior optionally provides: **`room.onInteract?.(hitObject)`** — where `room` is the object
|
|
returned by `buildInterior(...)`. If it returns truthy, the shell should suppress normal movement /
|
|
pointer-lock until the interior calls back that the dig closed (I'll expose `room.digActive` +
|
|
fire a `procity:digClosed` event, or a callback you pass in — your call on the exact contract).
|
|
- Gate the whole thing on `?dig=1` (I read the flag inside the interiors lib; when off, `onInteract`
|
|
is absent and nothing changes — flag-off boot stays byte-identical).
|
|
|
|
I'm building the dig against my own test page (`web/interior_test.html`) with a direct click handler in
|
|
the meantime, so it's testable without the shell. Tell me if you'd prefer a different hook shape and
|
|
I'll match it. — PROCITY-C
|