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>
7.9 KiB
Hand-Refine Log — Ticket #849
Core-world atlas cohesion pass (Sprint 36)
Analyst: paula Date: 2026-04-19
Analysis infrastructure
Created tooling/planet-gen/atlas_cohesion_audit.py — reusable SQL audit script for the
atlas_* tables. Checks: empty/single-char names, generic/lazy outputs (% Fork, % Run, etc.),
cardinal direction density, earth-echo concentration, same-body cross-feature stem duplicates,
cross-body stem duplicates within a system. Accepts --system, --body, --db flags.
Created tooling/planet-gen/apply_name_fixes.py — applies curated name replacement tables to
markers.json files (name fields only; geometry preserved). --dry-run supported. After running,
caller must sync DB via generate_atlas.py --body <id>.
Bodies touched
GJ 144 — Ran system
GJ144d — Kallast (2B pop, urban_concentrated, ocean world)
Priority reason: Highest-population body in the Ran system; repeated player destination. Prior naming pass had done good Nordic groundwork (Rán's Landing, Seterfjellet, Rán's Run/Ranfall Beck cross-reference arc) but left residual generic oceans and one cross-system stem collision.
Changes:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| river | Aldren Pass | Randalfoss | "Aldren" stem collides with Lendel (GJ380c) capital + river "The Aldren" — cross-system noise |
| ocean | Boulder Bluff | Keldmere | Generic; "Boulder Bluff" is a geographic descriptor for a landform, not a sea |
| ocean | High Mesa | Seterfjord | "High Mesa" is nonsensical for an ocean; renamed to cross-ref mountain "Seterfjellet" |
| poi | Summit Point | Kallast Gate Terminal | Generic; terminal should reference the capital city name |
Cross-reference arcs post-fix:
- Rán-: Rán's Landing (city), Rán's Run (river), Randalfoss (river), Ranfall Beck (river), Rán Sea (ocean)
- Seter-: Seterfjellet (mountain), Seterfjord (ocean)
- Keld-: Keldmere (ocean), Timber Keld (river)
DB sync: generate_atlas.py --body GJ144d ✓
GJ144e — Vethis (1.2B pop, agricultural, dispersed_rural)
Priority reason: Second-most-populated Ran body; the rural agricultural contrast to Kallast. Prior naming pass was partial — extensive cardinals (West Bend), earth-echoes (Blue Ridge), overused stems (Ash-: 3 features; Iron-: 2 features), and many pure generics (Golden Valley, Broad Fork, Stone Point).
Changes:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| river | West Bend | Greywash Fork | Cardinal → cross-refs Greywash river (shared Grey- stem arc) |
| river | Blue Ridge | Ashvale Beck | Earth-echo → cross-refs Ashvale city (shared Ash- stem arc) |
| river | Stone Point | Thornrun | Generic → cross-refs Thorncrests mountain (shared Thorn- arc) |
| river | Ironside Run | Kelside Run | Iron- overuse → cross-refs Kelbridge city (shared Kel- arc) |
| ocean | Ashbluff Sea | Veth Mere | Ash- overuse (3 Ash- names) → cross-refs Veth Delta river (shared Veth- arc) |
| mountain | Golden Valley | Greymoor Range | Generic → extends Grey- arc |
| mountain | Broad Fork | Keld Spur | Generic → Nordic compound (keld = spring/source) |
| mountain | Ashstone Ridge | Greystone Ridge | Ash- overuse → extends Grey- arc |
| poi | Ridge Crossing | Vethis Gate Terminal | Generic → terminal named for the planet |
Cross-reference arcs post-fix:
- Grey-: Greywash (river), Greywash Fork (river), Greymoor Range (mountain), Greystone Ridge (mountain)
- Thorn-: Thorncrests (mountain), Thornrun (river)
- Kel-: Kelbridge (city), Kelside Run (river), Keld Spur (mountain)
- Veth-: Vethis (planet), Veth Delta (river), Veth Mere (ocean)
- Ash-: Ashvale (city), Ashvale Beck (river) ← 2 names, was 3 before fix
DB sync: generate_atlas.py --body GJ144e ✓
GJ 71 — Tau Ceti system
GJ71c — Threshold (600M pop, agricultural, urban_concentrated)
Priority reason: Tau Ceti's primary inhabited body; high player footfall. All six rivers were named after the original Commission survey team — a strong narrative hook ("Latin personal names = founding scientists"). "Aethelred" broke the pattern (Anglo-Saxon, wrong naming tradition).
Changes:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| river | Aethelred | Gaius | Anglo-Saxon name breaks all-Latin river pattern (Octavius, Septimus, Quintus, Valeria, Marcus, Gaius) |
DB sync: generate_atlas.py --body GJ71c ✓
GJ71d — Arden (500M pop, agricultural, dispersed_rural)
Priority reason: Tau Ceti's sister body; shares corridor with GJ71c, so cross-body stem duplicates matter most here. Two collisions found: exact POI name match + ocean/city stem match.
Changes:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| city | Concordia Hall | The Praxis | "Concordia" = GJ71c ocean name; cross-body stem collision within same system/corridor |
| river | Basilica Nova | Via Principia | Exact name match with GJ71c POI "Basilica Nova"; direct duplicate across bodies |
DB sync: generate_atlas.py --body GJ71d ✓
GJ71d-1 — Verantis (20M pop, transit moon)
No changes. Discovered that Verantis was already updated in a prior sprint pass — mountains renamed to unique Latin institutional names (The Lateranum, The Curia Magna, The Exedra, The Aedes Sacra, The Macellum, The Oracle, The Comitium, Moeribee), capital updated to "Praetorium". DB was stale relative to markers.json; synced only.
DB sync: generate_atlas.py --body GJ71d-1 ✓
Systems NOT yet touched
Sol (GJ 0) — BLOCKED
Body directories do not exist. wiki/star-systems/GJ-0/bodies/ has no subdirectories for Earth
(GJ0d), Luna (GJ0d-1), Mars (GJ0e), or other inhabited bodies. sol_import.py must be run first
to create body directories and initial markers.json from the real-world geographic data in
tooling/planet-gen/sol_markers/. Flagged to team-lead.
Barnard's Star (GJ 699) — FLAGGED, not yet addressed
Audit revealed significant cross-body naming issues on Verada (1.9B pop), a hop-0 system:
- "Central District" appears as BOTH a GJ699b ocean and GJ699b-1 mountain (exact duplicate)
- "Capitol Heights" appears as GJ699b city and GJ699b-1 mountain
- "Liberty" stem hits 3 separate bodies
- "Meridian" stem hits 3 separate bodies
- "Zenith" stem hits 3 separate bodies
- Predominantly civic/Earth-style naming (Liberty Plaza, Meridian City, Zenith Station) without system-internal cross-referencing
Not addressed yet — flagged to team-lead to decide if within #849 scope or a separate ticket.
Proxima (GJ 551) — FLAGGED, not yet addressed
Cross-body stem duplicates found: Basilica, Pantheon, Senate appear on multiple Ancora sibling bodies. Not addressed — flagged to team-lead.
Audit metrics (before/after comparison)
Run python3 tooling/planet-gen/atlas_cohesion_audit.py --system "GJ 144" to verify Ran
improvement. Run --system "GJ 71" for Tau Ceti. Baseline run captured issues above; post-fix
re-run showed all named changes reflected in DB correctly.
Spot-check verification queries:
SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \
"SELECT local_id, name FROM atlas_rivers WHERE body_id = 'GJ144d'"
# Should show "Randalfoss" not "Aldren Pass"
SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \
"SELECT local_id, name FROM atlas_cities WHERE body_id = 'GJ71d'"
# Should show "The Praxis" not "Concordia Hall"
Files changed
tooling/planet-gen/atlas_cohesion_audit.py(new)tooling/planet-gen/apply_name_fixes.py(new)tooling/planet-gen/refine_log_849.md(this file)wiki/star-systems/GJ-144/bodies/GJ144d/markers.json(4 name edits)wiki/star-systems/GJ-144/bodies/GJ144e/markers.json(9 name edits)wiki/star-systems/GJ-71/bodies/GJ71c/markers.json(1 name edit)wiki/star-systems/GJ-71/bodies/GJ71d/markers.json(2 name edits)server/data/systems.db(synced: GJ144d, GJ144e, GJ71c, GJ71d, GJ71d-1)