The 30-file tree moves under atlas as its third rung (D-243), ten verbs fronting it. Each verb restates its module's options so `--help` describes something; tooling/test_planet_router.py hands every declared option to the module's own argparse and fails on drift, and now runs in make test-tooling. The 2026-09-02 half of this move had converted the top-level imports and the repo roots. Finishing it found what the half-move left: - Lazy in-function imports, and all of sol_data/, still named siblings bare. They resolved only through sys.path.insert hacks, so under reach the first globe render in generate, batch or sol-import would have raised ModuleNotFoundError. Qualified; the hacks are gone. - 247 print() calls and a stdout progress writer that fired once per 8 KB block. Report verbs (audit, quality) write through console.out, progress through console.event, and download progress is throttled to 10% steps so a job log is not tens of thousands of lines. - Every error exit raises ReachError with a fix. Two checks that could not fail: - batch --verify-determinism printed a warning and exited 0 on a mismatch. - import-provinces exited 0 with errors > 0. Both now raise. The 271-body bake is only safe to re-run because the first one holds. sol-import --body is action="append" in the module but the router took one value, so --body GJ0d --body GJ0e kept one. Now repeatable, and _flags repeats list options. test_conformance walked one level, so a nested group was reported as a verb missing @command and its ten verbs were never checked. It recurses now; proven by stripping @command from `planet quality` and watching it fail. Stray PNGs from the 2026-09-03 runaway router-test run are parked in .cache/t1288-stray-pngs/, not committed. Their reliefmaps differ from HEAD while the heightmap regenerated byte-identical — filed as T-1291. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
109 lines
4.2 KiB
JSON
109 lines
4.2 KiB
JSON
{
|
|
"GJ0b": {
|
|
"_comment": "Mercury — barren rock, tidally locked, extreme temps",
|
|
"orbit": { "axial_tilt_deg": 0.034 },
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "none" },
|
|
"environment": { "geothermal_flux": "low", "substrate": "silicate" }
|
|
},
|
|
"GJ0c": {
|
|
"_comment": "Venus — thick sulfuric acid clouds hide the surface completely",
|
|
"orbit": { "axial_tilt_deg": 177.4 },
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "active" },
|
|
"physical": { "atmosphere_color": [0.92, 0.85, 0.55] },
|
|
"environment": { "geothermal_flux": "high", "substrate": "silicate" },
|
|
"clouds": { "enabled": true, "coverage_base": 0.95 }
|
|
},
|
|
"GJ0d": {
|
|
"_comment": "Earth — use real-world data pipeline",
|
|
"orbit": { "axial_tilt_deg": 23.44 },
|
|
"terrain": { "land_fraction": 0.29, "polar_ice_lat": 0.85, "tectonics": "active" },
|
|
"environment": { "hydrosphere": "ocean", "geothermal_flux": "low" },
|
|
"clouds": { "enabled": true, "coverage_base": 0.5 }
|
|
},
|
|
"GJ0d-1": {
|
|
"_comment": "Luna — barren, tidally locked",
|
|
"orbit": { "axial_tilt_deg": 6.68 },
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "none" },
|
|
"environment": { "geothermal_flux": "low", "substrate": "silicate" }
|
|
},
|
|
"GJ0e": {
|
|
"_comment": "Mars — thin atmo, partially terraformed in lore (800 years)",
|
|
"orbit": { "axial_tilt_deg": 25.19 },
|
|
"terrain": { "land_fraction": 0.98, "polar_ice_lat": 0.65, "tectonics": "none" },
|
|
"environment": { "hydrosphere": "ice", "geothermal_flux": "low", "substrate": "silicate" }
|
|
},
|
|
"GJ0f": {
|
|
"_comment": "Jupiter — gas giant, Great Red Spot",
|
|
"gas_giant": {
|
|
"band_palette": "jovian",
|
|
"storm_count": 2,
|
|
"storm_max_size": 0.12
|
|
},
|
|
"rings": false
|
|
},
|
|
"GJ0f-1": {
|
|
"_comment": "Io — volcanic moon of Jupiter, tidal heating",
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "extreme" },
|
|
"environment": { "geothermal_flux": "high", "substrate": "silicate", "chemosynthetic": false }
|
|
},
|
|
"GJ0f-2": {
|
|
"_comment": "Europa — ice moon, subsurface ocean",
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "low" },
|
|
"environment": { "geothermal_flux": "low", "substrate": "ice" }
|
|
},
|
|
"GJ0f-3": {
|
|
"_comment": "Ganymede — largest moon, ice/rock dichotomy",
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "none" },
|
|
"environment": { "geothermal_flux": "low", "substrate": "ice" }
|
|
},
|
|
"GJ0f-4": {
|
|
"_comment": "Callisto — heavily cratered ice moon",
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "none" },
|
|
"environment": { "geothermal_flux": "low", "substrate": "ice" }
|
|
},
|
|
"GJ0g": {
|
|
"_comment": "Saturn — gas giant with prominent ring system",
|
|
"gas_giant": {
|
|
"band_palette": "saturnian",
|
|
"storm_count": 1,
|
|
"storm_max_size": 0.06
|
|
},
|
|
"rings": {
|
|
"enabled": true,
|
|
"inner_radius_factor": 1.12,
|
|
"outer_radius_factor": 2.65,
|
|
"opacity_base": 0.68,
|
|
"ring_color": [0.88, 0.78, 0.55]
|
|
}
|
|
},
|
|
"GJ0g-1": {
|
|
"_comment": "Titan — dense atmosphere, methane cycle",
|
|
"terrain": { "land_fraction": 0.60, "tectonics": "low" },
|
|
"environment": { "hydrosphere": "rivers", "geothermal_flux": "low", "substrate": "ice" }
|
|
},
|
|
"GJ0g-2": {
|
|
"_comment": "Enceladus — small ice moon, geysers",
|
|
"terrain": { "land_fraction": 1.0, "tectonics": "low" },
|
|
"environment": { "geothermal_flux": "moderate", "substrate": "ice" }
|
|
},
|
|
"GJ0h": {
|
|
"_comment": "Uranus — ice giant, extreme axial tilt",
|
|
"orbit": { "axial_tilt_deg": 97.8 },
|
|
"gas_giant": {
|
|
"band_palette": "icy",
|
|
"storm_count": 1,
|
|
"storm_max_size": 0.04
|
|
},
|
|
"rings": false
|
|
},
|
|
"GJ0i": {
|
|
"_comment": "Neptune — ice giant, active storms",
|
|
"gas_giant": {
|
|
"band_palette": "neptunian",
|
|
"storm_count": 3,
|
|
"storm_max_size": 0.08
|
|
},
|
|
"rings": false
|
|
}
|
|
}
|