Files
settled-reach/tooling/planet-gen/refine_log_849.md
T
jpmschweitzerandClaude Sonnet 4.6 dd50287af0 feat(content): atlas cohesion analysis tooling for #849
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>
2026-04-19 12:34:47 +02:00

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)