- 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>
23 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 ✓
GJ 244A — Sirius system
GJ244Ad — Edict (400M pop, hand-authored template)
Priority reason: Only inhabited body in the Sirius system. Hand-authored template is solid (Mandate, Founder's Range, Accord Peaks, Veto Spur, Concord Assembly Archive) but #833-generated features used wrong vocabulary for a political-legal world. Note: "Westwall" flagged by Gestalt does NOT appear in markers.json or DB — stale data issue; Cairnside fix by Gestalt stands, Edict required no Westwall action.
Changes:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| mountain | Keel Ridge | Charter Spur | "Keel" is nautical — wrong vocabulary; charter = founding document |
| mountain | Sanction Ridge | The Statute | More distinctive; drops lazy "Ridge" suffix |
| ocean | Upper Shelf | Veil Shelf | Cardinal → cross-refs Veil Institute Survey Station POI |
| ocean | Southern Melt | Concord Mere | Cardinal → cross-refs Concord Assembly Archive POI |
| ocean | Eastern Tarn | Charter Tarn | Cardinal → cross-refs mountain "Charter Spur" |
Cross-reference arcs post-fix:
- Charter-: Charter Spur (mountain), Charter Tarn (ocean)
- Concord-: Concord Mere (ocean), Concord Assembly Archive (POI)
- Veil-: Veil Shelf (ocean), Veil Institute Survey Station (POI)
DB sync: generate_atlas.py --body GJ244Ad ✓
GJ 380 — Groombridge system
GJ380c — Lendel (900M pop, hand-authored template)
Priority reason: Only inhabited body in Groombridge. Template is excellent — Aldren arc (capital + river + exchange) is intentional and preserved. Two #833-generated features used lazy suffixes incompatible with the British-Isles naming style.
Changes:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| river | Pale Run | Durneth Beck | Lazy → cross-refs Durneth Range; "beck" = British stream |
| mountain | Tember Ridge | Tember Spine | Lazy "Ridge" → "Spine"; keeps the Tember stem |
Note: "Aldren" stem in same-body audit (city + river + POI) is INTENTIONAL arc — preserved. "Meridian Risk HQ" POI is a corporation name (proper noun) — not geography, no change.
DB sync: generate_atlas.py --body GJ380c ✓
Addendum (PR #133 review): Initial pass left GJ380c 100% Anglo-British register with zero cross-corridor influence from the Kumasi/south_reach trade lanes. Added two secondary features in Akan/Asante register, keeping primary features (Aldren capital, Durneth Range, Rethain Sea) in their established Anglo register:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| river | The Kesset | Nkwanta Beck | Nkwanta = Akan "junction/crossroads" — trade-route name; Beck suffix localizes it |
| mountain | Holt Spur | Bosomtwe Spur | Bosomtwe = sacred Asante lake in Ghana; Spur suffix preserved from Groombridge convention |
| lake | Selet Basin | Subin Basin | Subin = river running through Kumasi itself — distributes Akan signal across a third feature type |
Corridors are tendencies, not borders — capital and primary geography stay Anglo-British; peripheral features reflect Kumasi trade influence. 3/29 features now carry Akan register (river, mountain, lake). DB re-synced.
GJ 699 — Barnard's Star system
GJ699b — Verada (1.9B pop, hop-0, dense urban world)
Priority reason: Highest-traffic hop-0 inhabited body not yet addressed. Dense civic naming (Capitol Heights, Liberty Plaza, Metropolitan Square, Meridian City) was using district/plaza vocabulary for geographic features. Rivers especially broken: "Grandview Square" and "Meridian City" are civic addresses, not river names. Cross-body dups on sibling bodies.
Changes:
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| river | Grandview Square | Verada Reach | Civic square → planet name + geographic "Reach" |
| river | Meridian City | The Meridian | Civic city name → proper river name (like "The Aldren") |
| river | Summit View | Capitol Beck | Lazy → cross-refs Capitol Heights capital |
| ocean | Prospect Terrace | Prospect Sea | "Terrace" is architecture; fix suffix |
| ocean | Metropolitan Square | Haven Sea | Cross-refs Port Haven city; drops civic |
| ocean | Central District | Meridian Sound | Exact dup of GJ699b-1 mountain; cross-refs The Meridian |
| ocean | Liberty Plaza | Capitol Mere | Civic plaza → cross-refs Capitol Heights capital |
| ocean | Sterling Heights | Sterling Pool | "Heights" wrong for water; dup on GJ699b-1 mountain |
Cross-reference arcs post-fix:
- Capitol-: Capitol Heights (city), Capitol Beck (river), Capitol Mere (ocean)
- Meridian-: The Meridian (river), Meridian Sound (ocean)
- Haven/Port-: Port Haven (city), Haven Sea (ocean)
DB sync: generate_atlas.py --body GJ699b ✓
GJ699b-1 — Verada's moon (uninhabited transit body)
Priority reason: All 8 mountains named after urban street addresses (Grandview Avenue, Harmony Boulevard, Beacon Street, Metropolitan Way, etc.) — completely inappropriate for mountain ranges. Also duplicated several Verada city/ocean names exactly ("Central District", "Capitol Heights"). Fixed with institutional cross-references: the moon's mountains carry the names of Verada's governing institutions, as if settlers named what they saw below from orbit.
Changes: All 8 mountains renamed. See apply_name_fixes.py FIXES table for full mapping.
Narrative hook: "On Verada's moon, the mountains carry the names of the institutions that govern the world below — a form of reverence. The moon has no government of its own."
DB sync: sync_markers_to_db() called directly (body is inhabited=0, generate_atlas.py skips it) ✓
Sol (GJ 0) — COMPLETE
Approach: sol_import.py generated body directories and markers.json from real-world geographic
data. Post-generation, sol_name_fixes.py named all auto-detected null-name features.
Team-lead guidance: "real-world Earth/Luna/Mars geography is by definition coherent — note it in log and move on if already above quality bar."
GJ0d — Earth (8.5B pop, core world)
sol_import.py originally placed 50 cities from earth_features.json. Team-lead directed trim to 8-12 cultural touchstones (max 8 cities on any other body; 50 = 13% of all atlas cities on one body). Criterion: would a player setting a bookmark to "Earth" recognize this as a touchstone? One per major historical/cultural cluster.
Cities kept (11):
| City | Cluster |
|---|---|
| London | Western Europe — historical capital |
| Moscow | Eastern Europe / Russia |
| Istanbul | Bridge city — Europe-Asia hinge |
| New York | North America |
| São Paulo | South America |
| Cairo | Africa + ancient world |
| Delhi | South Asia |
| Tokyo | Japan / East Asia |
| Beijing | China / East Asia |
| Singapore | Southeast Asia — maritime hub |
| Sydney | Oceania |
Cities cut (39): Paris, Berlin, Mexico City, Los Angeles, Toronto, Chicago, Lima, Bogotá, Rio de Janeiro, Buenos Aires, Lagos, Kinshasa, Johannesburg, Nairobi, Tehran, Baghdad, Riyadh, Ankara, Karachi, Shanghai, Mumbai, Jakarta, Dhaka, Manila, Bangkok, Seoul, Osaka, Chongqing, Kolkata, Lahore, Shenzhen, Bangalore, Ho Chi Minh City, Luanda, Addis Ababa, Santiago, Taipei, Hong Kong, Casablanca.
PR #133 review rebalance (user-approved Option 1 + London swap):
Sydney → Lagos— improves African representation (Cairo + Lagos = 2 African cities; Sydney was the weakest cultural-touchstone anchor).London → Brussels— Brussels chosen for future-strong-EU-capital setting fit over London's legacy cultural weight.
Final 11: Beijing, Brussels, Cairo, Delhi, Istanbul, Lagos, Moscow, New York, São Paulo, Singapore, Tokyo.
Generator note: sol_import.py has no --top-n city filter — it uses the full earth_features.json
list. If Sol is regenerated, earth_features.json should be trimmed to the 11 kept cities, or a
filter added in sol_import.py. Filed as finding in #853.
auto-detected 11 rivers and 1 ocean. Three rivers were auto-detected ocean-channel artifacts in the western Pacific island region; named with geographically proximate rivers. The large ocean (area_fraction=0.7049) represents Earth's interconnected world ocean.
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| ocean | null | The World Ocean | 70% surface = all Earth's oceans unified; scientifically accurate name |
| river | null (river_1, ~50°N/17°E) | Dnieper | Eastern Europe, flows to Black Sea |
| river | null (river_4, ~27°N/136°E) | Tone River | Japan, Kanto plain |
| river | null (river_10, ~23°N/135°E) | Cagayan | Northern Philippines, largest Philippine river |
DB sync: generate_atlas.py --body GJ0d ✓ (11 cities, trimmed from 50)
GJ0d-1 — Luna (350M pop, transit body)
3 cities (Artemis capital, Tranquility Station, Selene) + 10 POIs (maria + craters). sol_import.py auto-detected 24 mountain ranges — all unnamed. Named all 24 after real IAU-catalogued lunar mountain systems, massifs, and scarps, sorted by area_cells (largest = most prominent).
Key ranges: Montes Apenninus (11,221 cells — largest), Montes Caucasus (3,670), Montes Jura, Montes Alpes, Montes Rook, Montes Cordillera, Montes Carpatus, Montes Taurus, Montes Pyrenaeus, and 15 additional real lunar named features (Pico Mons, Haemus Montes, Gruithuisen Domes, etc.).
Narrative hook: "Luna's mountains carry the names that Earth gave them a thousand years before the first settlement — a catalog written from below, now walked from above."
DB sync: generate_atlas.py --body GJ0d-1 ✓
GJ0e — Mars (1.2B pop, core world)
4 cities + 5 named mountains (Olympus Mons, Tharsis Bulge, Elysium Mons, Ascraeus Mons, Arsia Mons) from mars_features.json. sol_import.py auto-detected 4 additional mountain ranges in the anti-Tharsis hemisphere (ancient cratered highland region), named after real Martian volcanic features.
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| mountain | null (range_2) | Tyrrhena Mons | Ancient volcanic highland, eastern hemisphere |
| mountain | null (range_3) | Hadriaca Mons | Old shield volcano, Hellas region |
| mountain | null (range_4) | Amphitrites Montes | Near south polar region |
| mountain | null (range_5) | Hellespontus Montes | Cross-refs Hellas Station city |
Cross-reference arcs: Hellas- (Hellas Basin ocean + Hellas Station city), Chryse- (Chryse Landing + Chryse Planitia POI)
DB sync: generate_atlas.py --body GJ0e ✓
GJ0f-2 — Europa (30M pop, outer body)
2 cities + 4 POIs. sol_import.py auto-detected 1 mountain range covering essentially the entire body surface (area_cells=123,557 — Europa's ridged ice terrain).
| Feature type | Old name | New name | Reason |
|---|---|---|---|
| mountain | null (range_1) | Conamara Ridges | Cross-refs Conamara Station + Conamara Chaos POI |
Cross-reference arcs: Conamara- (Conamara Station city + Conamara Ridges mountain + Conamara Chaos POI), Pwyll- (Pwyll Base city + Pwyll Crater POI)
DB sync: generate_atlas.py --body GJ0f-2 ✓
Sol final audit result: Zero empty names, zero lazy outputs, zero cardinals. Earth-echo names on Earth are intentional (real-world cities). Quality cross-reference arcs confirmed on Mars (Hellas-, Chryse-) and Europa (Conamara-, Pwyll-).
Proxima (GJ 551) — DEFERRED
Cross-body stem duplicates found (Basilica, Pantheon, Senate across Ancora sibling bodies). Team-lead confirmed: defer this sprint. Finding documented for future pass.
Audit metrics — final confirmed delta
Final audit run: 2026-04-19. All 6 systems re-run after all edits. Results below are
from atlas_cohesion_audit.py against server/data/systems.db.
Inhabited body targets (in scope for this ticket)
| System | Body | Empty names: before→after | Lazy outputs: before→after | Cardinals: before→after |
|---|---|---|---|---|
| GJ 144 | GJ144d Kallast (2B) | 0→0 | 3→0 | 0→0 |
| GJ 144 | GJ144e Vethis (1.2B) | 0→0 | 7→0 | 1→0 |
| GJ 71 | GJ71c Threshold (600M) | 0→0 | 1→0 | 0→0 |
| GJ 71 | GJ71d Arden (500M) | 0→0 | 1→0 | 0→0 |
| GJ 71 | GJ71d-1 Verantis (20M) | 0→0 | 0→0 | 0→0 |
| GJ 244A | GJ244Ad Edict (400M) | 0→0 | 2→0 | 3→0 |
| GJ 380 | GJ380c Lendel (900M) | 0→0 | 2→0 | 0→0 |
| GJ 699 | GJ699b Verada (1.9B) | 0→0 | 8→0 | 0→0 |
| GJ 699 | GJ699b-1 (uninhabited moon) | 8→0 | 8→0 | 0→0 |
| GJ 0 | GJ0d Earth (8.5B) | 4→0 | 0→0 | 0→0 |
| GJ 0 | GJ0d-1 Luna (350M) | 24→0 | 0→0 | 0→0 |
| GJ 0 | GJ0e Mars (1.2B) | 4→0 | 0→0 | 0→0 |
| GJ 0 | GJ0f-2 Europa (30M) | 1→0 | 0→0 | 0→0 |
All inhabited targets: zero empty names, zero lazy outputs, zero cardinals after fixes.
Remaining audit flags — out of scope or false positives
After fixes, the audit still reports flags on:
Out of scope — uninhabited/low-pop bodies (not "high-visibility"):
- GJ144b, GJ144c, GJ144d-1, GJ144e-1, GJ144f, GJ144g-1, GJ144g-2: "Canyon View", "Dry Gulch", "Stone Creek" etc. These are #833 batch artifacts on non-target bodies. Captured in #853.
- GJ71e: "Meridian Point" (uninhabited body, not in scope)
- GJ380b, GJ380d, GJ380e: various lazy patterns (uninhabited, not in scope)
False positives on quality cross-reference names (distinctive stem + common suffix):
'Rán's Run'(GJ144d) — Rán- arc; % Run pattern-matched but stem is unique proper name'Greywash Fork'(GJ144e) — Grey- arc; % Fork but Greywash is not a generic stem'Kelside Run'(GJ144e) — Kel- arc; % Run but Kelside is distinctive'Greystone Ridge'(GJ144e) — Grey- arc; % Ridge but Greystone is distinctive
These four are intentional renames (listed in the FIXES table above) that happen to end with a suffix in LAZY_PATTERNS. The script does not evaluate stem quality, only suffix pattern. A future pass on the audit script could add a stem-distinctiveness filter.
Earth city count correction
Per team-lead direction: Earth trimmed from 50 → 11 cities (cultural/historical touchstones, one per major cluster). 39 cities cut. DB synced. See GJ0d section above for full cut list.
Earth city rebalance (PR #133 review, user-approved)
Sydney → Lagos and London → Brussels per PR #133 review, user-approved rebalance. Brussels chosen for future EU-capital setting fit over London's legacy weight; Lagos chosen for African representation. DB re-synced. Final 11: Brussels, Istanbul, Moscow, New York, São Paulo, Cairo, Lagos, Delhi, Tokyo, Beijing, Singapore.
Total name edits across all bodies: 23 (non-Sol) + 33 (Sol) = 56 feature renames. Earth city cut: 39 removed.
Intentional same-body cross-feature stem dups (quality arcs) now visible in audit output for:
- GJ144d: Rán- (city + river), Seter- (mountain + ocean)
- GJ144e: Veth- (river + ocean), Ash- (city + river)
- GJ244Ad: Charter- (mountain + ocean), Concord- (ocean + POI), Veil- (ocean + POI)
- GJ380c: Aldren- (city + river + POI, intentional), Durneth- (river + mountain)
- GJ699b: Capitol- (city + river + ocean), Meridian- (river + ocean)
- GJ0e: Hellas- (city + ocean), Chryse- (city + POI)
- GJ0f-2: Conamara- (city + mountain + POI), Pwyll- (city + POI)
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"
SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \
"SELECT local_id, name FROM atlas_mountain_ranges WHERE body_id = 'GJ244Ad'"
# Should show "The Statute" and "Charter Spur" not "Sanction Ridge" and "Keel Ridge"
SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \
"SELECT local_id, name FROM atlas_mountain_ranges WHERE body_id = 'GJ699b-1'"
# Should show "Verada Scarp", "Barnard Heights", "Keystone Scarp", etc. — no street addresses
Files changed
tooling/planet-gen/atlas_cohesion_audit.py(new)tooling/planet-gen/apply_name_fixes.py(new — extended with all 6 systems)tooling/planet-gen/refine_log_849.md(this file)tooling/planet-gen/sol_markers/luna_features.json(added cities)tooling/planet-gen/sol_markers/mars_features.json(added cities)tooling/planet-gen/sol_markers/outer_features.json(added Europa cities)wiki/star-systems/GJ-144/bodies/GJ144d/markers.json(4 edits)wiki/star-systems/GJ-144/bodies/GJ144e/markers.json(9 edits)wiki/star-systems/GJ-71/bodies/GJ71c/markers.json(1 edit)wiki/star-systems/GJ-71/bodies/GJ71d/markers.json(2 edits)wiki/star-systems/GJ-244A/bodies/GJ244Ad/markers.json(5 edits)wiki/star-systems/GJ-380/bodies/GJ380c/markers.json(2 edits)wiki/star-systems/GJ-699/bodies/GJ699b/markers.json(8 edits)wiki/star-systems/GJ-699/bodies/GJ699b-1/markers.json(8 edits)tooling/planet-gen/sol_name_fixes.py(new — names 33 null-name Sol features)wiki/star-systems/GJ-0/bodies/GJ0d/markers.json(1 ocean + 3 rivers named; 39 cities cut → 11)wiki/star-systems/GJ-0/bodies/GJ0d-1/markers.json(24 mountain ranges named)wiki/star-systems/GJ-0/bodies/GJ0e/markers.json(4 mountain ranges named)wiki/star-systems/GJ-0/bodies/GJ0f-2/markers.json(1 mountain range named)server/data/systems.db(synced: GJ144d, GJ144e, GJ71c, GJ71d, GJ71d-1, GJ244Ad, GJ380c, GJ699b, GJ699b-1, GJ0d, GJ0d-1, GJ0e, GJ0f-2 — all complete)