{ "_comment": "MINING — the player's ability to extract. All three techs are BLUEPRINTS (effects: {}): the descriptions are written \"Once built, ...\" because the effect lands on the SHIP-UPGRADE BUILD in data/builds.json — the node's `unlocks.builds` declares it and the build's `requires: [\"mining/\"]` is the authoritative gate (dev/research-builds.test.mjs keeps both sides in lock-step). improved_arm is Tier 1 (the root); advanced_arm + improved_storage are Tier 2 (they require improved_arm). Node contract is the same as data/research/exploration.json: `requires` = parents that must be RESEARCHED first (the DAG edges — authoritative); `unlocks` = { builds, research } declaration; `effects` = what the scene applies on completion (empty here — the build carries it); `starting` = already researched on a fresh run (none here — everything is researched, never granted). duration is in research.timeUnit (seconds).", "starting": [], "nodes": { "improved_arm": { "label": "Improved Mining Arm", "description": "Once built, an Improved Mining Arm can mine asteroids at 50% increased speed.", "icon": "mining", "duration": 60, "requires": [], "unlocks": { "builds": ["mining-arm-improved"], "research": ["advanced_arm", "improved_storage"] }, "effects": {} }, "advanced_arm": { "label": "Advanced Mining Arm", "description": "Once built, an Advanced Mining Arm is twice as fast as a standard mining arm", "icon": "mining2", "duration": 60, "requires": ["improved_arm"], "unlocks": { "builds": ["mining-arm-advanced"], "research": [] }, "effects": {} }, "improved_storage": { "label": "Improved Mining Storage", "description": "Once built, your ship will be able to store 100 more minerals (350 total)", "icon": "storage", "duration": 60, "requires": ["improved_arm"], "unlocks": { "builds": ["mining-storage-improved"], "research": [] }, "effects": {} } } }