# LANE-DATA — content, recipes, balance, and canon-keeping You are an Opus 4.8 executor on the DATA lane of FKTRY. Read `../MASTERPLAN.md` and `../CONTRACTS.md` first. Your bible is `../../docs/FKTRY_LORE.md` — you are its transcriber into machine-readable canon. When the codex and convenience disagree, the codex wins; when the codex is silent, invent IN ITS VOICE and note what you invented. **Mission:** every item, machine, recipe, tech, and commission as clean JSON, plus the validator that keeps five parallel lanes from drowning in dangling ids. Content should light up in-game with zero code changes from other lanes. **Owned paths:** `data/**`, `src/sim/data-validate.test.ts` — EXCEPTION: this one test file in sim's directory is yours; it validates data, not sim. Nothing else in `src/sim/`. **Never touch:** contracts, main.ts, other lanes' code. Schema changes are CONTRACT REQUESTs. **Standing rules (all rounds):** - Ids: kebab-case matching codex names (`chroma-slurry`, `mosh-reactor`). `codex` field points at the lore doc section (`"3:melt"` = §3, MELT entry). - Balance philosophy: absurd flavor, honest math. Ratios should create real routing pressure (byproducts you must deal with, not vent). Steal shamelessly from the doc's real numbers (era efficiency multipliers, 4:2:0 = half the chroma, GOP cadences). - Never delete an id other lanes may reference mid-round — deprecate in NOTES first. --- ## CURRENT ORDERS — Round 1 (goal: milestone M1 "FLOW" + M2 prep) The seed JSONs in `data/` are orchestrator placeholders — correct them, then grow: 1. **Validator first** (`src/sim/data-validate.test.ts`, vitest): every recipe's machine + items exist; every machine's recipes exist and point back at it; every tech unlock exists; commission wants exist; ids unique + kebab-case; colors valid hex; footprints ≥1×1. This test is the lane's handshake — it must fail loudly on any dangling reference. 2. **Items** → full §2 + §3 catalog: all raw resources, refined intermediates, frames, the five science packs, and tier-2 products (melt, bloom-concentrate, macroblock-bricks, ringing-halos, static-canister, moire-crystal, false-color- speckle, judder-cams, explosive-hits, gamut paints ×3). Colors from codex vibes. 3. **Machines** → full §4 catalog (demosaicer, dct-press, subsampler, mv-extractor, p-caster, gop-assembler, bloom-duplicator, field-loom, telecine-puller, hex-splicer, software-decoder, buffer-tank...). Machines beyond M1's seven should exist in data even though sim/render only generically support crafter/power kinds — that's fine, they'll work as generic crafters until given bespoke mechanics. 4. **Recipes** → wire the economy: ore → luma/chroma/mv-flux (demux), luma → coeff packs + hf-dust (quantize, generates bandwidth), mv-flux → delta-wafers, slab + wafers → gop-crate, gop-crate → melt + reclaimed slab (mosh), coeff overdrive → macroblock-bricks + double hf-dust, hf-dust → static-canister, science pack assembly ×3 (analog/spatial/temporal). Include at least two genuinely absurd ratios for comedy that still balance. 5. **Tech tree v1** → `disc` and `stream` era nodes: unlock quantizer tiers, mosh reactor, bloom duplicator, subsampler grades. Costs in science packs. 6. **Commissions** → 8-10 in full fax voice (§6 has three exemplars). Escalating absurdity and quantity; at least one demanding a *live* hazard product you know isn't shippable yet (mark it `"wants": {"mosquito-swarm": 3}` — forward canon; the validator should allow items that exist in data even if no recipe makes them). **Definition of done:** `npm test` green including your validator; dev server still boots with expanded data (placeholders render for everything); every entry traceable to a codex section. NOTES list what you invented beyond the codex. --- ## NOTES (append-only log, newest at bottom) ``` ### Round N — YYYY-MM-DD — [your model] SHIPPED: / DECISIONS: / INVENTED: / BLOCKED/BROKEN: / CONTRACT REQUEST: / NEXT: ```