PROCITY/web/js/interiors
m3ultra eeba920d68 Lane C R39 §39.3: the op shop gets a bin — the verb table, and the margin was never six
THE TABLE (LANE_C_PUB §10, the deliverable): what a player can actually do in each of
the 12 shop types, counted in 48 rooms per type. `record` digs (4.6 bins/room) and is the
only room where anything can be sold. `stall` digs — in 27 of 48 rooms; the other 21 (44%)
have NO crate, a measured correction to the round's binding fact #5. The other ten types
offer looking. `?stock=real` is opt-in, so the default boot has zero `buyMesh` anywhere;
garments/snacks/magazines/treasures are unbuyable in any mode; `interactable:true` on
cases/fridges/returns/arcade is read by nothing.

THE MECHANISM: `rummageBin` — a castored galvanised dump tub, rim 0.76 m, heaped with
stickered bric-a-brac and a hand-lettered "EVERYTHING $2" card. 72 rooms: placed 72/72,
reachable 72/72 (0.77–1.15 m), 0 carves, pathOK 72/72, deterministic 72/72, and the rest
of the room byte-identical to pre-R39 72/72 (the spec is appended last). Armed end-to-end:
aim → dig → 16 offers → BUY → bin depletes. Default: 0 bins, dig never opens.

THE CONTENTS ARE NOT SHIPPED. `o.dig` defaults false, so the tub is furniture and the
economy is untouched; `opts.fittingOpts.rummageBin.dig` (or `?opshopdig=1`) arms it. Held
for John with the numbers: 44 record + 36 stall vs 147 op shops across 23 towns.

THE BUDGET: `C-progress.md:841`'s GLB-on 344 is R9-era and stale — today's tree measured
319 before I touched it, so the margin was 31, not six. The bin costs +5 GLB-off / +10
GLB-on at opshop/hall; every other type byte-identical. Margin now 21. Also: `slot.pool`
stops the scatter fill minting a material per item, so 12 goods cost less than 9 did.

FILED, NOT FIXED: Lane E's bookshelf GLB ships transmission:1, which triggers three.js's
transmission pre-pass and issues every draw in the room twice — opshop/hall 191→104,
book/hall 101→51. Roughly half the interior budget. E's asset, so E/F rule.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 20:59:42 +10:00
..
batch.js Lane C R6 C1: interior draw batching (<=350 draws/room law) 2026-07-14 23:01:04 +10:00
bible.js Lane C R32 (v7.0-beta wave 1): THE BIBLE — bands derived, gems seeded, the cards get the guide stamp 2026-07-20 18:26:15 +10:00
context.js Lane C: on-demand seeded shop interiors (library + test page) 2026-07-14 12:08:12 +10:00
dig.js Lane C+B R35 (v7.0 close #2): THE FIRST FIVE MINUTES — arrive hunting, three beats walk the hustle 2026-07-20 20:13:02 +10:00
fittings.js Lane C R39 §39.3: the op shop gets a bin — the verb table, and the margin was never six 2026-08-03 20:59:42 +10:00
glb.js Lane C R6 C2: map the 3 orphaned fittings (glass_case/magazine_rack/crate_stack) 2026-07-14 23:19:48 +10:00
interiors.js Lane C R39 §39.3: the op shop gets a bin — the verb table, and the margin was never six 2026-08-03 20:59:42 +10:00
layout.js Lane C R39 §39.3: the op shop gets a bin — the verb table, and the margin was never six 2026-08-03 20:59:42 +10:00
sell.js Lane C R32 (v7.0-beta wave 1): THE BIBLE — bands derived, gems seeded, the cards get the guide stamp 2026-07-20 18:26:15 +10:00
shell.js Lane C: on-demand seeded shop interiors (library + test page) 2026-07-14 12:08:12 +10:00
stock.js Lane C R39 §39.3: the op shop gets a bin — the verb table, and the margin was never six 2026-08-03 20:59:42 +10:00
stockpack.js Lane C R24: the contract fix — the runtime is the authority (ledger #1, the root cause) 2026-07-17 00:43:50 +10:00
theme.js Lane C R39 §39.3: the op shop gets a bin — the verb table, and the margin was never six 2026-08-03 20:59:42 +10:00
wallet.js Lane C R30 (v7.0-alpha ledger #2, implementation): sell.js — the sell counter lands. E at the bench → the mirrored price sticker; offer strictly below pricePaid by construction (8/8 scripted round trips lose money); type=type fail-closed (untyped item sells nowhere); wallet.sell = the credit mirror; game layer absent → no card, zero errors. Verified on :8144 no-store, stubbed game shape (F's core not landed); soak green avg 3.4ms · leak 0/0 · draws card-open ≡ closed 2026-07-18 14:14:14 +10:00