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>
23 lines
1.2 KiB
Python
23 lines
1.2 KiB
Python
"""`atlas planet` — the third rung of the spatial ladder (D-243).
|
|
|
|
Nested under `atlas` rather than standing alone because atlas coordinates
|
|
world-location generation: the ladder is one subject, and `planet` is a rung of
|
|
it, not a peer. Same reason `atlas map` holds the star-map verbs.
|
|
|
|
Formerly `tooling/planet-gen/`, 30 files reachable only by path. The move fixed
|
|
what a hyphenated directory made impossible — these modules import each other,
|
|
and until now did it by mutating `sys.path` at import time.
|
|
|
|
**Every repo-root computation here was wrong on arrival.** The originals
|
|
computed `Path(__file__).parent / ".." / ".."`, correct while the files sat two
|
|
levels deep and silently wrong at four. That is the fifth-through-ninth
|
|
instance of this trap in the port, and it fails quietly: a gate resolves its
|
|
inputs to a directory that does not exist, finds nothing to check, and exits 0.
|
|
They now call `config.repo_root()`, which asks git.
|
|
|
|
`PLANET_DIR` (was `TOOLING_DIR`) still means "beside this code" and still
|
|
resolves correctly — the data files it addresses, `biomes.toml`,
|
|
`sol_overrides.json`, `sol_markers/` and `earth_blocklist.txt`, moved with it.
|
|
The rename is so the name stops claiming to be `tooling/`.
|
|
"""
|