- 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>
478 lines
23 KiB
Markdown
478 lines
23 KiB
Markdown
# 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:
|
|
```bash
|
|
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)
|