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>
- tooling/planet-gen/earth_blocklist.txt: document GJ0d (Earth body) as
blocklist-exempt so Brussels (and other Earth-canonical city names) are
not flagged on next sol_import.py run (R2 issue 1)
- wiki/star-systems/GJ-380/bodies/GJ380c/markers.json: rename Selet Basin
→ Subin Basin (Kumasi river namesake). Brings Akan register on GJ380c
to 3/29 features distributed across river, mountain, lake — credible
multi-generational trade corridor read instead of minimum-viable patch
(R2 issue 2)
- server/data/systems.db: atlas_oceans resynced for GJ380c
- docs/atlas/hand-refine-log.md:119: corrected stale log entry — Aldren
Pass was subsequently renamed Randalfoss to eliminate the cross-system
Aldren stem collision with GJ380c (R2 nit 3)
- tooling/planet-gen/refine_log_849.md: Groombridge cross-corridor
addendum updated to reflect 3/29 Akan register distribution
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Parallel addition to the rebalance addendum already in the GJ 0 Sol
section — Paula's header-style entry at the summary level complements
the in-context detail.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Finalizes #849 core-world atlas cohesion: GJ0d (Earth/Sol) markers.json
cleaned of erroneous data, refine_log updated with Sol body gap notes,
atlas_quality_analysis.py added for ongoing metric tracking.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Names all 33 null-name auto-detected Sol features: Earth ocean + 3 rivers,
24 Luna mountain ranges (real IAU lunar mountain names), 4 Mars mountains,
1 Europa mountain. All using real-world geographic names. Cross-reference
arcs added on Mars (Hellas-, Chryse-) and Europa (Conamara-, Pwyll-).
Adds sol_name_fixes.py for reproducible Sol feature naming. Updates refine
log to mark Sol complete with full audit metrics for all 6 touched systems.
DB synced: GJ0d, GJ0d-1, GJ0e, GJ0f-2 (all Sol inhabited bodies).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds two reusable scripts for the core-world hand-refine pass:
- atlas_cohesion_audit.py: SQL analysis against atlas_* tables. Reports
empty names, lazy/generic outputs, cardinal direction density, earth-echo
concentration, same-body cross-feature stem duplicates, and cross-body
stem collisions within a system. Supports --system, --body, --db flags.
Baseline run ranked Ran and Tau Ceti as highest-priority targets.
- apply_name_fixes.py: Applies curated name replacement tables to
markers.json files (name fields only; geometry preserved). Supports
--dry-run. After running, caller syncs DB via generate_atlas.py --body.
- refine_log_849.md: Hand-refine log documenting each body touched, the
rationale per change, cross-reference arcs established, and systems
flagged as blocked or needing follow-up (Sol, Barnard's Star, Proxima).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>