Round 4 orders, all five. The headline is a bug I authored: the v4 gating rule (any id in a TechDef.unlocks is locked until that tech completes) turned three rounds of tech authoring into a total bootstrap deadlock. Measured: melt not producible at tick 0 (first-taste impossible), 0 of 24 techs reachable — every pack chain gated behind packs you cannot make. disc-artifact-bottling cost 10 analog packs and unlocked the only machine that bottles analog packs. Fixed as a shape, not a patch, and both rules are now tests: - the M1 melt chain is starting equipment (so first-taste is possible, and RENDER's era derivation correctly reads it as starting equipment) - one pack is craftable at tick 0 — SPATIAL, made from the quantizer's own sins, so your first research is a study of your own damage 23/23 nodes now reachable; six emptied disc nodes deleted (no lane references tech ids). Also: - §10 THE COMPOSITE SEAM transcribed: alpha/hard-matte/blue-hole/fringe-lace/ green-spill/mixed-pixel/roto-chatter/ghost-feather/sodium-light (forward canon), matte bath, optical printer, chroma keyer, roto bench, neural keyer (powerDraw 240 — the codex's "appetite that dwarfs everything"). - ARCHAEOLOGY LAB canonized (kind: lab), ungated — a lab behind research is a lab you can never build. - ASIC cooler live: the round-3 spec of 0.02 would have meant "never heats, free 100/s". Retuned to 0.0018, sane under both readings of the contract. - accents where output-derivation can't work; CODEX_REF regex widened for §10. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
137 lines
12 KiB
JSON
137 lines
12 KiB
JSON
[
|
|
{ "id": "seam-extractor", "name": "SEAM EXTRACTOR", "codex": "4:seam-extractor", "kind": "extractor",
|
|
"footprint": { "x": 2, "y": 2 },
|
|
"recipes": ["extract-mdat", "extract-bayer-grit", "extract-field-splinters", "extract-silver-frames"],
|
|
"powerDraw": 2, "asset": "seam-extractor", "color": "#8a7a32",
|
|
"flavor": "The miner. Chews mdat seams and spits raw payload. The drill head is CRT-certified. Operators are not." },
|
|
|
|
{ "id": "belt", "name": "STREAM BELT", "codex": "4:belts", "kind": "belt",
|
|
"footprint": { "x": 1, "y": 1 }, "recipes": [], "powerDraw": 0, "beltSpeed": 2,
|
|
"asset": "belt", "color": "#4a4e52", "accent": "#5ad0ff",
|
|
"flavor": "Moves cargo. Back-pressure is a feature. Riding the belt is discouraged in writing and in no other way." },
|
|
{ "id": "lane-splitter", "name": "LANE SPLITTER", "codex": "4:demuxer", "kind": "splitter",
|
|
"footprint": { "x": 1, "y": 1 }, "recipes": [], "powerDraw": 1,
|
|
"asset": "lane-splitter", "color": "#55595e", "accent": "#5ad0ff",
|
|
"flavor": "One lane in, two lanes out, round-robin, no favourites. The only fair machine in the Bitstream." },
|
|
{ "id": "buffer-tank", "name": "BUFFER TANK", "codex": "2:buffer-charge", "kind": "buffer",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": [], "powerDraw": 0, "bufferCap": 300,
|
|
"asset": "buffer-tank", "color": "#5a6068", "accent": "#7fe0ff",
|
|
"flavor": "Smoothness in a tank. Drains at exactly one frame per 16.6ms. Keep it above the red line; below the red line the audio has opinions." },
|
|
|
|
{ "id": "demuxer", "name": "DEMUXER", "codex": "4:demuxer", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": ["demux-ore", "demux-container"], "powerDraw": 3,
|
|
"asset": "demuxer", "color": "#4e5a62",
|
|
"flavor": "The first splitter. Cleaves raw ore into brightness, colour, and pure directional intent." },
|
|
{ "id": "demosaicer", "name": "DEMOSAICER", "codex": "4:demosaicer", "kind": "crafter",
|
|
"footprint": { "x": 3, "y": 2 }, "recipes": ["demosaic-rggb", "demosaic-vng4", "demosaic-stripes"],
|
|
"powerDraw": 5, "asset": "demosaicer", "color": "#6a5f52",
|
|
"flavor": "Weaves checkerboard grit into full colour. Feed it stripes and it will jam and extrude MOIRÉ — as designed, as warned, as invoiced." },
|
|
{ "id": "dct-press", "name": "DCT PRESS", "codex": "4:dct-press", "kind": "crafter",
|
|
"footprint": { "x": 3, "y": 3 }, "recipes": ["press-color-plate", "press-anchor-slab"],
|
|
"powerDraw": 8, "asset": "dct-press", "color": "#3f4348",
|
|
"flavor": "Spatial into frequency. Slams pixel blocks into coefficient decks; run it backwards and an entire picture falls out of the slot." },
|
|
{ "id": "quantizer", "name": "QUANTIZER", "codex": "4:quantizer", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": ["quantize", "quantize-crime", "skim-ringing"],
|
|
"powerDraw": 4, "asset": "quantizer", "color": "#5e5148",
|
|
"flavor": "The crusher, the moneymaker, the sin. Every bit it destroys becomes room to move. The dial goes to CRIME." },
|
|
{ "id": "subsampler", "name": "SUBSAMPLER", "codex": "4:subsampler", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 3 }, "recipes": ["subsample-422", "subsample-420", "pan-speckle"],
|
|
"powerDraw": 4, "asset": "subsampler", "color": "#4a5560",
|
|
"flavor": "Spins colour down to grade and vents the difference as bandwidth. Leaks by design. Place downwind of anything you are fond of." },
|
|
{ "id": "mv-extractor", "name": "MV EXTRACTOR", "codex": "4:mv-extractor-and-p-caster", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": ["extract-motion"], "powerDraw": 5,
|
|
"asset": "mv-extractor", "color": "#454b52",
|
|
"flavor": "Watches the footage until it knows where the picture wants to go, then pipes the wanting off as fluid." },
|
|
{ "id": "p-caster", "name": "P-CASTER", "codex": "4:mv-extractor-and-p-caster", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": ["cast-delta-wafer", "cast-janus-wafer"],
|
|
"powerDraw": 4, "asset": "p-caster", "color": "#4d545c",
|
|
"flavor": "Prints instructions, not pictures. Each one is applied to whatever came before it — correct or otherwise." },
|
|
{ "id": "gop-assembler", "name": "GOP ASSEMBLER", "codex": "4:gop-assembler", "kind": "crafter",
|
|
"footprint": { "x": 3, "y": 2 },
|
|
"recipes": ["assemble-gop", "assemble-gop-ibbp", "assemble-gop-i-only", "spool-offset-ribbon",
|
|
"tally-stsz-ledger"],
|
|
"powerDraw": 6, "asset": "gop-assembler", "color": "#7a6a44",
|
|
"flavor": "One anchor, N wafers, one crate, per the cadence punch-card. Opening a sealed crate is a production verb here, not a crime." },
|
|
{ "id": "mosh-reactor", "name": "MOSH REACTOR", "codex": "4:mosh-reactor", "kind": "crafter",
|
|
"footprint": { "x": 3, "y": 3 }, "recipes": ["mosh"], "powerDraw": 8,
|
|
"asset": "mosh-reactor", "color": "#52333e",
|
|
"flavor": "A decoder sealed in a vessel and starved of anchors. The I-frame leaves through the side airlock. The hallucination leaves through the front." },
|
|
{ "id": "bloom-duplicator", "name": "P-FRAME DUPLICATOR", "codex": "4:bloom-loop", "kind": "crafter",
|
|
"footprint": { "x": 1, "y": 1 },
|
|
"recipes": ["tap-bloom", "bloom-grade-1", "bloom-grade-2", "bloom-grade-3", "bloom-grade-4", "bloom-grade-5"],
|
|
"powerDraw": 6, "asset": "bloom-duplicator", "color": "#5a5060",
|
|
"flavor": "Stamps the same displacement onto the same cargo every lap. Grade 5 is visibly trying to leave its canister in one direction." },
|
|
{ "id": "field-loom", "name": "FIELD LOOM", "codex": "4:field-loom", "kind": "crafter",
|
|
"footprint": { "x": 3, "y": 2 }, "recipes": ["weave-fields", "loom-vhold-roll"],
|
|
"powerDraw": 5, "asset": "field-loom", "color": "#3f5a44",
|
|
"flavor": "Weaves and unweaves time. The two halves of a splinter were captured a moment apart and have never agreed since." },
|
|
{ "id": "telecine-puller", "name": "TELECINE PULLER", "codex": "4:telecine-puller", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": ["mill-judder", "wind-stts-metronome"], "powerDraw": 4,
|
|
"asset": "telecine-puller", "color": "#6e5a38",
|
|
"flavor": "Cranks 24 into 30 on a deliberately lumpy cam. Runs backwards as a purifier, which we do not discuss on site." },
|
|
{ "id": "hex-splicer", "name": "HEX SPLICER", "codex": "4:hex-splicer", "kind": "crafter",
|
|
"footprint": { "x": 3, "y": 3 }, "recipes": ["splice-offsets", "chart-stco-map"], "powerDraw": 12,
|
|
"coolPerTick": 0.001,
|
|
"asset": "hex-splicer", "color": "#5a3a3a",
|
|
"flavor": "Nudges the offsets a few bytes so the decoder fetches garbage. Keep its buffer fed, or it splices itself." },
|
|
{ "id": "artifact-bottler", "name": "ARTIFACT BOTTLER", "codex": "2:science-packs", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 },
|
|
"recipes": ["can-static", "mix-rec709", "mix-dci-p3", "mix-rec2020",
|
|
"cut-sync-key", "bottle-container-pack", "forge-stss-keyring", "cut-ftyp-seal",
|
|
"bottle-analog-pack", "bottle-spatial-pack", "bottle-temporal-pack"],
|
|
"powerDraw": 4, "asset": "artifact-bottler", "color": "#566056",
|
|
"flavor": "Bottles the triptych. Contents are shelf-stable in the legal sense, i.e. no law has been written that mentions them." },
|
|
|
|
{ "id": "decode-asic", "name": "DECODE ASIC", "codex": "4:decode-asic", "kind": "power",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": [], "powerDraw": 0, "powerGen": 20,
|
|
"asset": "decode-asic", "color": "#b9bec4", "accent": "#6fe8c0",
|
|
"flavor": "Cool, efficient, inflexible. Handles standard profiles and declines to imagine anything else. It will outlive you." },
|
|
{ "id": "software-decoder", "name": "SOFTWARE DECODER", "codex": "4:software-decoder", "kind": "power",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": [], "powerDraw": 0, "powerGen": 100,
|
|
"heatPerTick": 0.0033, "coolPerTick": 0.001,
|
|
"asset": "software-decoder", "color": "#6e3a34", "accent": "#ff4a2a",
|
|
"flavor": "Decodes ANYTHING, at any temperature. Five ASICs at full song, one third of the time. Throttles at 0.7, scrams at 1.0, screams throughout. The lag is the damage model." },
|
|
{ "id": "asic-cooler", "name": "ASIC COOLER", "codex": "2:heat", "kind": "power",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": [], "powerDraw": 0, "powerGen": 5,
|
|
"coolPerTick": 0.0018, "coolRadius": 2,
|
|
"asset": "asic-cooler", "color": "#a8b4bc", "accent": "#9fe8ff",
|
|
"flavor": "Decodes a little and vents a lot. Stand beside it in summer. Do not stand beside it in the dark, when you can see what it is venting." },
|
|
|
|
{ "id": "matte-bath", "name": "MATTE BATH", "codex": "10:matte-bath", "kind": "crafter",
|
|
"footprint": { "x": 3, "y": 2 }, "recipes": ["bathe-hard-matte", "bathe-feather"], "powerDraw": 5,
|
|
"asset": "matte-bath", "color": "#5a4a4a",
|
|
"flavor": "Footage in, hard mattes out, softness destroyed. A GHOST FEATHER fed in comes out a HARD MATTE and the machine does not apologize. One mistake ruins the reel." },
|
|
{ "id": "optical-printer", "name": "OPTICAL PRINTER", "codex": "10:optical-printer", "kind": "crafter",
|
|
"footprint": { "x": 5, "y": 4 }, "recipes": ["print-composite", "print-blue-screen"], "powerDraw": 18,
|
|
"asset": "optical-printer", "color": "#6a5a3a",
|
|
"flavor": "The iron lung. A cathedral of bellows and lenses that splits footage into three colours and recombines them slightly wrong. It fringes everything it touches, and it is beautiful, and it is slow." },
|
|
{ "id": "chroma-keyer", "name": "CHROMA KEYER", "codex": "10:chroma-keyer", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 },
|
|
"recipes": ["key-chroma", "key-hair", "key-semitransparent"], "powerDraw": 6,
|
|
"asset": "chroma-keyer", "color": "#3a6a3a",
|
|
"flavor": "Cheap, fast, and thirty-year-old maths. Weeps GREEN SPILL from its seams. Chokes on hair. Do not show it anything semi-transparent; it will decide the pixel belongs to neither of you." },
|
|
{ "id": "roto-bench", "name": "ROTO BENCH", "codex": "10:roto-bench", "kind": "crafter",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": ["roto-cutout", "roto-mixed"], "powerDraw": 2,
|
|
"asset": "roto-bench", "color": "#6a5540",
|
|
"flavor": "Converts anything to a cutout. Perfectly. Eventually. Twenty-four frames of pain per second of footage. When the automation fails the bench never does — it just costs your life instead." },
|
|
{ "id": "neural-keyer", "name": "NEURAL KEYER", "codex": "10:neural-keyer", "kind": "crafter",
|
|
"footprint": { "x": 4, "y": 4 }, "recipes": ["neural-key", "neural-unmix"], "powerDraw": 240,
|
|
"asset": "neural-keyer", "color": "#2a2a32",
|
|
"flavor": "Trained on ten thousand synthetic ghosts, because reality could not teach it — you cannot film the answer. Perfect alpha through glass, chainmail and moving hair. You do not unlock this machine. You unlock the power plant it demands." },
|
|
|
|
{ "id": "archaeology-lab", "name": "ARCHAEOLOGY LAB", "codex": "6:tech-tree", "kind": "lab",
|
|
"footprint": { "x": 3, "y": 3 }, "recipes": [], "powerDraw": 6,
|
|
"asset": "archaeology-lab", "color": "#5a5548", "accent": "#ffc24a",
|
|
"flavor": "Where the factory reads its own strata. Feed it bottled artifacts and it derives the codec that made them: downward for analog secrets, upward for newer sins. The coffee predates the Reel Beds." },
|
|
|
|
{ "id": "muxer", "name": "THE MUXER", "codex": "7:the-muxer", "kind": "crafter",
|
|
"footprint": { "x": 5, "y": 5 }, "recipes": ["assemble-moov-brain", "mux-container"], "powerDraw": 40,
|
|
"asset": "muxer", "color": "#6a7078",
|
|
"flavor": "The rocket. A launch gantry embracing a container built of nested boxes, innermost a brain of index tape-reels. It ships the whole file at once, and the file is your entire shipping history, and there is no second launch." },
|
|
|
|
{ "id": "shipper", "name": "SCREEN UPLINK", "codex": "7:the-muxer", "kind": "shipper",
|
|
"footprint": { "x": 2, "y": 2 }, "recipes": [], "powerDraw": 5,
|
|
"asset": "shipper", "color": "#46525e", "accent": "#ff5ad0",
|
|
"flavor": "Composites whatever you hand it onto THE SCREEN. There is no undo. The absence of undo is the product." }
|
|
]
|