fix(content): PR #133 review — 9 remaining items resolved
Closes 9 of 10 review items (blocker 1 handled inadd2507e+d78d3b59): - decisions/economics.md: reformat D-189 §5 amendment to standard Amendment (YYYY-MM-DD) block pattern (review #4) - tooling/planet-gen/sol_name_fixes.py: dedup guard + argparse --dry-run (reviews #5, #10a) - tooling/planet-gen/sol_markers/earth_features.json: trim to 11 cities with selection rationale (review #6A); user-approved rebalance Sydney → Lagos and London → Brussels (review #6B) - wiki/star-systems/GJ-380/bodies/GJ380c/markers.json: 2 secondary features renamed to Akan/Asante register — Kesset → Nkwanta Beck, Holt Spur → Bosomtwe Spur (review #7) - docs/atlas/hand-refine-log.md: Aethelred lore-migration documentation + see-also cross-link to refine_log_849.md (reviews #8, #13) - tooling/planet-gen/refine_log_849.md: rebalance addendum - wiki/star-systems/GJ-0/bodies/GJ0d/markers.json, server/data/ systems.db: re-synced after rebalance Stub depth (review blocker #2) handled via split — tracked as follow-up ticket #861 (three-layer narrative authoring). Final Earth cities (11): Beijing, Brussels, Cairo, Delhi, Istanbul, Lagos, Moscow, New York, São Paulo, Singapore, Tokyo. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -174,6 +174,19 @@ suffixes incompatible with the British-Isles naming style.
|
||||
|
||||
**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 |
|
||||
|
||||
**Corridors are tendencies, not borders** — capital and primary geography stay Anglo-British;
|
||||
peripheral features reflect Kumasi trade influence. DB re-synced.
|
||||
|
||||
---
|
||||
|
||||
### GJ 699 — Barnard's Star system
|
||||
@@ -261,6 +274,12 @@ Ankara, Karachi, Shanghai, Mumbai, Jakarta, Dhaka, Manila, Bangkok, Seoul, Osaka
|
||||
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.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"GJ0d": {
|
||||
"_city_selection_note": "11 cultural touchstones, one per major historical/cultural cluster. Criterion: would a player setting a bookmark to 'Earth' recognize this city? Full 46-city reference list is in git history (trimmed Sprint 36 #849). PR #133 review rebalance: Sydney → Lagos (African representation); London → Brussels (future EU capital fit). To adjust: edit this array and re-run sol_import.py, then generate_atlas.py --body GJ0d.",
|
||||
"oceans": [
|
||||
{"name": "Pacific Ocean", "center": [128, 440]},
|
||||
{"name": "Atlantic Ocean", "center": [128, 170]},
|
||||
@@ -33,62 +34,22 @@
|
||||
{"name": "Murray", "mouth": [170, 417]}
|
||||
],
|
||||
"cities": [
|
||||
{"name": "London", "center": [79, 260], "population": 9000000, "region": "europe"},
|
||||
{"name": "Istanbul", "center": [83, 279], "population": 15000000, "region": "europe"},
|
||||
{"name": "Moscow", "center": [72, 294], "population": 12700000, "region": "europe"},
|
||||
{"name": "Paris", "center": [80, 261], "population": 11000000, "region": "europe"},
|
||||
{"name": "Berlin", "center": [77, 269], "population": 3700000, "region": "europe"},
|
||||
{"name": "Brussels", "center": [80, 266], "population": 2100000, "region": "europe"},
|
||||
{"name": "Istanbul", "center": [83, 279], "population": 15000000, "region": "europe"},
|
||||
{"name": "Moscow", "center": [72, 294], "population": 12700000, "region": "europe"},
|
||||
|
||||
{"name": "Mexico City", "center": [107, 101], "population": 21800000, "region": "north_america"},
|
||||
{"name": "New York", "center": [87, 130], "population": 20100000, "region": "north_america"},
|
||||
{"name": "Los Angeles", "center": [93, 95], "population": 13200000, "region": "north_america"},
|
||||
{"name": "Toronto", "center": [84, 123], "population": 6200000, "region": "north_america"},
|
||||
{"name": "Chicago", "center": [85, 115], "population": 9500000, "region": "north_america"},
|
||||
{"name": "New York", "center": [87, 130], "population": 20100000, "region": "north_america"},
|
||||
|
||||
{"name": "São Paulo", "center": [143, 164], "population": 22400000, "region": "south_america"},
|
||||
{"name": "Lima", "center": [133, 131], "population": 10700000, "region": "south_america"},
|
||||
{"name": "Bogotá", "center": [121, 135], "population": 11300000, "region": "south_america"},
|
||||
{"name": "Rio de Janeiro", "center": [142, 168], "population": 13500000, "region": "south_america"},
|
||||
{"name": "Buenos Aires", "center": [151, 153], "population": 15200000, "region": "south_america"},
|
||||
{"name": "São Paulo", "center": [143, 164], "population": 22400000, "region": "south_america"},
|
||||
|
||||
{"name": "Lagos", "center": [120, 262], "population": 15400000, "region": "africa"},
|
||||
{"name": "Kinshasa", "center": [124, 270], "population": 15600000, "region": "africa"},
|
||||
{"name": "Cairo", "center": [97, 286], "population": 21300000, "region": "africa"},
|
||||
{"name": "Johannesburg", "center": [156, 279], "population": 6000000, "region": "africa"},
|
||||
{"name": "Nairobi", "center": [128, 293], "population": 5100000, "region": "africa"},
|
||||
{"name": "Cairo", "center": [97, 286], "population": 21300000, "region": "africa"},
|
||||
|
||||
{"name": "Tehran", "center": [92, 308], "population": 9000000, "region": "west_asia"},
|
||||
{"name": "Baghdad", "center": [94, 303], "population": 8100000, "region": "west_asia"},
|
||||
{"name": "Riyadh", "center": [103, 304], "population": 7700000, "region": "west_asia"},
|
||||
{"name": "Ankara", "center": [87, 284], "population": 5700000, "region": "west_asia"},
|
||||
{"name": "Karachi", "center": [103, 327], "population": 16500000, "region": "west_asia"},
|
||||
{"name": "Tokyo", "center": [92, 400], "population": 37400000, "region": "east_asia"},
|
||||
{"name": "Delhi", "center": [99, 339], "population": 32900000, "region": "east_asia"},
|
||||
{"name": "Beijing", "center": [87, 383], "population": 21500000, "region": "east_asia"},
|
||||
|
||||
{"name": "Tokyo", "center": [92, 400], "population": 37400000, "region": "east_asia"},
|
||||
{"name": "Delhi", "center": [99, 339], "population": 32900000, "region": "east_asia"},
|
||||
{"name": "Shanghai", "center": [97, 387], "population": 28500000, "region": "east_asia"},
|
||||
{"name": "Beijing", "center": [87, 383], "population": 21500000, "region": "east_asia"},
|
||||
{"name": "Mumbai", "center": [107, 333], "population": 21700000, "region": "east_asia"},
|
||||
|
||||
{"name": "Jakarta", "center": [120, 374], "population": 34500000, "region": "fill"},
|
||||
{"name": "Dhaka", "center": [103, 351], "population": 23000000, "region": "fill"},
|
||||
{"name": "Manila", "center": [109, 388], "population": 14400000, "region": "fill"},
|
||||
{"name": "Bangkok", "center": [109, 370], "population": 11000000, "region": "fill"},
|
||||
{"name": "Seoul", "center": [90, 393], "population": 9800000, "region": "fill"},
|
||||
{"name": "Osaka", "center": [93, 398], "population": 19300000, "region": "fill"},
|
||||
{"name": "Chongqing", "center": [97, 375], "population": 17000000, "region": "fill"},
|
||||
{"name": "Kolkata", "center": [103, 349], "population": 15100000, "region": "fill"},
|
||||
{"name": "Lahore", "center": [97, 336], "population": 14000000, "region": "fill"},
|
||||
{"name": "Shenzhen", "center": [104, 382], "population": 13400000, "region": "fill"},
|
||||
{"name": "Bangalore", "center": [111, 339], "population": 13200000, "region": "fill"},
|
||||
{"name": "Ho Chi Minh City", "center": [113, 374], "population": 9300000, "region": "fill"},
|
||||
{"name": "Luanda", "center": [132, 268], "population": 9000000, "region": "fill"},
|
||||
{"name": "Addis Ababa", "center": [119, 292], "population": 5500000, "region": "fill"},
|
||||
{"name": "Santiago", "center": [147, 137], "population": 7000000, "region": "fill"},
|
||||
{"name": "Taipei", "center": [103, 388], "population": 7000000, "region": "fill"},
|
||||
{"name": "Hong Kong", "center": [104, 382], "population": 7500000, "region": "fill"},
|
||||
{"name": "Singapore", "center": [119, 372], "population": 5900000, "region": "fill"},
|
||||
{"name": "Sydney", "center": [161, 421], "population": 5300000, "region": "fill"},
|
||||
{"name": "Casablanca", "center": [93, 249], "population": 3800000, "region": "fill"}
|
||||
{"name": "Singapore", "center": [119, 372], "population": 5900000, "region": "southeast_asia"},
|
||||
{"name": "Lagos", "center": [119, 263], "population": 15000000, "region": "africa"}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,12 @@ sol_name_fixes.py — Name previously-unnamed Sol body auto-detected features.
|
||||
|
||||
Targets features with null names: Earth oceans/rivers, Luna/Mars/Europa mountain ranges.
|
||||
All names are real-world geographic names for Sol bodies.
|
||||
|
||||
Usage:
|
||||
python3 sol_name_fixes.py # apply all fixes
|
||||
python3 sol_name_fixes.py --dry-run # print planned changes without writing
|
||||
"""
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
@@ -44,7 +49,6 @@ FIXES = {
|
||||
"range_579": "Haemus Montes", # 33 cells — south of Mare Serenitatis
|
||||
"range_231": "Gruithuisen Domes", # 25 cells — volcanic domes
|
||||
"range_580": "Mons La Hire", # 25 cells — volcanic dome, Mare Imbrium
|
||||
"range_606": "Montes Riphaeus", # fallback ID
|
||||
"range_570": "Montes Riphaeus", # 24 cells — Oceanus Procellarum ridge
|
||||
"range_596": "Montes Secchi", # 24 cells — east of Mare Fecunditatis
|
||||
"range_604": "Montes Spitzbergen", # 24 cells — isolated massif
|
||||
@@ -79,7 +83,22 @@ SECTION_MAP = {
|
||||
}
|
||||
|
||||
|
||||
def apply_sol_fixes():
|
||||
def _check_dedup(fixes: dict) -> None:
|
||||
"""Raise if any name is assigned to more than one feature ID within a body."""
|
||||
for body_id, sections in fixes.items():
|
||||
for section, id_map in sections.items():
|
||||
seen: dict[str, str] = {}
|
||||
for fid, name in id_map.items():
|
||||
if name in seen:
|
||||
raise ValueError(
|
||||
f"Duplicate name {name!r} in {body_id}/{section}: "
|
||||
f"{seen[name]} and {fid} both assigned"
|
||||
)
|
||||
seen[name] = fid
|
||||
|
||||
|
||||
def apply_sol_fixes(dry_run: bool = False) -> None:
|
||||
_check_dedup(FIXES)
|
||||
for body_id, body_fixes in FIXES.items():
|
||||
path = WIKI / body_id / "markers.json"
|
||||
if not path.exists():
|
||||
@@ -99,17 +118,30 @@ def apply_sol_fixes():
|
||||
new = id_map[fid]
|
||||
if old != new:
|
||||
print(f" [{body_id}/{section}] {fid}: {old!r} → {new!r}")
|
||||
feature["name"] = new
|
||||
if not dry_run:
|
||||
feature["name"] = new
|
||||
changed = True
|
||||
|
||||
if changed:
|
||||
with open(path, "w") as f:
|
||||
json.dump(markers, f, indent=2)
|
||||
print(f" Written: {path}")
|
||||
if dry_run:
|
||||
print(f" (dry-run) Would write: {path}")
|
||||
else:
|
||||
with open(path, "w") as f:
|
||||
json.dump(markers, f, indent=2)
|
||||
print(f" Written: {path}")
|
||||
else:
|
||||
print(f" No changes for {body_id}")
|
||||
print()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
apply_sol_fixes()
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Name previously-unnamed Sol body auto-detected features."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--dry-run",
|
||||
action="store_true",
|
||||
help="print planned changes without writing any files",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
apply_sol_fixes(dry_run=args.dry_run)
|
||||
|
||||
Reference in New Issue
Block a user