// world/_fixture.js (Lane A) — DEV FIXTURES, not shipping content. // Lane C owns real levels (js/levels/*.json). FIXTURE survives C's levels landing because the // spline selfcheck (a qa gate) asserts against its exact shape — headless, no three.js, no // levels registry. Do not edit FIXTURE's segments without re-reading spline.js --selfcheck. export const FIXTURE = { id: 'A_FIXTURE', name: 'Lane A fixture canal', seed: 20260716, segments: [ { biome: 'esophagus', length: 300, radius: { base: 10, wobble: 0.25 }, curviness: 0.55, flow: 14 }, { biome: 'esophagus', length: 240, radius: { base: 12, wobble: 0.35 }, curviness: 0.95, flow: 11 }, { biome: 'stomach', length: 120, radius: { base: 16, wobble: 0.30 }, curviness: 0.20, flow: 4 }, ], arenas: [{ at: 620, radius: 55, biome: 'stomach' }], events: [], }; // The swept-room prototype (?lvl=swept in the harness) — Lane A's round-2 proposal to Lane C // made flyable, so the shape argument is settled by looking instead of by reading. // // This is NOT L3 and does not touch it: C owns levels. It is the same anatomy (cardia -> // fundus -> body/acid sea -> antrum -> pylorus) authored the way the proposal says a room // should be authored — as the canal at room radii, `mode: "open"` where the disc clamp comes // off — so C can fly it, hate it, and say why. // // Two numbers C should argue with: // - **radius 70 for the sea**, not L3's arena radius 180. 180 units = a 36cm-wide stomach, // which is 2.4x life size even by L3's own "1 unit : 1 mm" note; 70 gives ~14cm, which is // a real full stomach and still a cathedral next to a ~2u ship. If the sea must be 180, // say so and I'll measure that instead — it is one number. // - **wave.amp 4.0 in the sea** (schema v2, ruling #8). The biome default 0.7 is sized for a // radius-10 pipe and is literally invisible on a radius-70 wall. A room this size needs its // churn authored, which is the per-segment override earning its keep. export const SWEPT_STOMACH = { id: 'A_SWEPT_STOMACH', name: 'Lane A swept-room prototype (stomach)', seed: 20260716, segments: [ { biome: 'esophagus', name: 'Cardia', length: 200, radius: { base: 12, wobble: 0.2 }, curviness: 0.3, flow: 8 }, // The flare. A segment join blends radius over ~±25u (round 2), so 12 -> 70 across one // join would be a 58u climb in 50u of s: a funnel, not an anatomy. Give the flare its own // short segment and it reads as the fundus opening out. { biome: 'stomach', name: 'Fundus flare', length: 220, radius: { base: 38, wobble: 0.22 }, curviness: 0.25, flow: 4, mode: 'open', wave: { amp: 2.2 } }, { biome: 'stomach', name: 'Body (the acid sea)', length: 700, radius: { base: 70, wobble: 0.3 }, curviness: 0.45, flow: 3, mode: 'open', wave: { amp: 4.0 } }, { biome: 'stomach', name: 'Antrum', length: 380, radius: { base: 26, wobble: 0.25 }, curviness: 0.35, flow: 6, mode: 'open', wave: { amp: 1.4 } }, { biome: 'stomach', name: 'Pylorus', length: 160, radius: { base: 13, wobble: 0.15 }, curviness: 0.2, flow: 10 }, ], // The fundus dome stays an authored icosphere: it is a dead-end bulge OFF the centreline, // which a sweep cannot express. Both kinds of room in one level, on purpose — that's the // proposal's actual claim, not "spheres are bad". arenas: [{ at: 300, radius: 46, biome: 'stomach' }], acid: { from: 420, to: 1120, height: -18, biome: 'stomach' }, events: [], }; // The tint contact sheet (?lvl=biomes in the harness): one straight-ish segment per registry // biome, in registry order, generous radius so the wall — not the curve — is what you judge. // Exists for the eyeball law: every biome tint gets re-checked against D's current pack in one // fly-through whenever either side changes (tints, textures, colorspace, TBN…). export const SIX_BIOMES = { id: 'A_SIX_BIOMES', name: 'Lane A biome contact sheet', seed: 20260716, segments: ['oral', 'esophagus', 'stomach', 'small_intestine', 'large_intestine', 'appendix'] .map((biome) => ({ biome, length: 200, radius: { base: 10, wobble: 0.2 }, curviness: 0.25, flow: 8 })), arenas: [], events: [], };