fix(atlas): address PR #100 review — star_type audit, data quality fixes

- Fix star_type/spectral_class mismatches across 36 proposals
- Differentiate GJ1002 copy-paste planets (c-g had identical params)
- Fix GJ880 malformed spectral_class (M2: → M2V) and Leirvik station pop
- Fix GJ3325 malformed spectral_class (K: → K)
- Correct white dwarf star_type (GJ1221, GJ3991 → D)
- Correct "unusual" star_type (GJ3877, GJ661A → K)
- Delete tooling/atlas-helpers.sh (superseded by clean scripts on main)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 08:16:18 +01:00
co-authored by Claude Opus 4.6
parent 841b81b443
commit 4b68cb455e
37 changed files with 5153 additions and 510 deletions
+243 -14
View File
@@ -1,7 +1,7 @@
{
"system_id": "GJ 588",
"proper_name": "Harrowfield",
"star_type": "F",
"star_type": "M",
"spectral_class": "M0",
"wiki_data": {
"habitable_count": 1,
@@ -12,20 +12,249 @@
"raw_bodies_line": null
},
"bodies": [
{"body_id": "GJ588b", "proper_name": null, "body_type": "planet", "orbit_index": 1, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": "terrestrial", "surface_gravity": 0.30, "orbital_period_days": 5, "rotation_period_hours": 120, "atmosphere": "none", "biome_summary": "barren", "hydrosphere": "none", "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "inner scorched, tidally locked"},
{"body_id": "GJ588c", "proper_name": "Kielder", "body_type": "planet", "orbit_index": 2, "parent_body_id": null, "inhabited": true, "population": 800, "mass_class": "terrestrial", "surface_gravity": 0.84, "orbital_period_days": 18, "rotation_period_hours": 432, "atmosphere": "breathable", "biome_summary": "temperate-cool", "hydrosphere": "moderate", "economic_role": "agriculture", "settlement_pattern": "dispersed", "industrial_corridor": null, "notes": "primary inhabited world, tidally locked, M0 warmest red dwarf provides natural photosynthesis, deep regolith over volcanic substrata, 40km² managed woodland (pine, larch, birch), Harrowfield Forestry Trust, Wave 3 homestead claim settlement, timber export economy"},
{"body_id": "GJ588d", "proper_name": null, "body_type": "planet", "orbit_index": 3, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": "terrestrial", "surface_gravity": 0.38, "orbital_period_days": 45, "rotation_period_hours": 1080, "atmosphere": "thin", "biome_summary": "frozen", "hydrosphere": "ice", "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "cold rocky, tidally locked"},
{"body_id": "GJ588e", "proper_name": null, "body_type": "planet", "orbit_index": 4, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": "terrestrial", "surface_gravity": 0.30, "orbital_period_days": 120, "rotation_period_hours": 16.0, "atmosphere": "none", "biome_summary": "frozen", "hydrosphere": "ice", "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "frozen rocky"},
{"body_id": "GJ588f", "proper_name": null, "body_type": "gas_giant", "orbit_index": 5, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": "gas_giant", "surface_gravity": null, "orbital_period_days": 600, "rotation_period_hours": 10.5, "atmosphere": "dense", "biome_summary": null, "hydrosphere": null, "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "moderate gas giant"},
{"body_id": "GJ588f-1", "proper_name": null, "body_type": "moon", "orbit_index": 1, "parent_body_id": "GJ588f", "inhabited": false, "population": 0, "mass_class": "dwarf", "surface_gravity": 0.05, "orbital_period_days": 5, "rotation_period_hours": 120, "atmosphere": "none", "biome_summary": "barren", "hydrosphere": "none", "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "inner gas giant moon"},
{"body_id": "GJ588f-2", "proper_name": null, "body_type": "moon", "orbit_index": 2, "parent_body_id": "GJ588f", "inhabited": false, "population": 0, "mass_class": "dwarf", "surface_gravity": 0.03, "orbital_period_days": 12, "rotation_period_hours": 288, "atmosphere": "none", "biome_summary": "frozen", "hydrosphere": "ice", "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "icy outer gas giant moon"},
{"body_id": "GJ588g", "proper_name": null, "body_type": "planet", "orbit_index": 6, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": "dwarf", "surface_gravity": 0.11, "orbital_period_days": 2200, "rotation_period_hours": 20.0, "atmosphere": "none", "biome_summary": "frozen", "hydrosphere": "ice", "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "distant ice dwarf"},
{"body_id": "GJ588h", "proper_name": null, "body_type": "planet", "orbit_index": 7, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": "dwarf", "surface_gravity": 0.09, "orbital_period_days": 4500, "rotation_period_hours": 22.0, "atmosphere": "none", "biome_summary": "frozen", "hydrosphere": "ice", "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "distant ice dwarf"},
{"body_id": "GJ588-belt", "proper_name": null, "body_type": "asteroid_belt", "orbit_index": 8, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": null, "surface_gravity": null, "orbital_period_days": null, "rotation_period_hours": null, "atmosphere": null, "biome_summary": null, "hydrosphere": null, "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "sparse belt"},
{"body_id": "GJ588-oort", "proper_name": null, "body_type": "oort_cloud", "orbit_index": 9, "parent_body_id": null, "inhabited": false, "population": 0, "mass_class": null, "surface_gravity": null, "orbital_period_days": null, "rotation_period_hours": null, "atmosphere": null, "biome_summary": null, "hydrosphere": null, "economic_role": null, "settlement_pattern": null, "industrial_corridor": null, "notes": "oort cloud"}
{
"body_id": "GJ588b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": "terrestrial",
"surface_gravity": 0.3,
"orbital_period_days": 5,
"rotation_period_hours": 120,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": "none",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched, tidally locked"
},
{
"body_id": "GJ588c",
"proper_name": "Kielder",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 800,
"mass_class": "terrestrial",
"surface_gravity": 0.84,
"orbital_period_days": 18,
"rotation_period_hours": 432,
"atmosphere": "breathable",
"biome_summary": "temperate-cool",
"hydrosphere": "moderate",
"economic_role": "agriculture",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world, tidally locked, M0 warmest red dwarf provides natural photosynthesis, deep regolith over volcanic substrata, 40km\u00b2 managed woodland (pine, larch, birch), Harrowfield Forestry Trust, Wave 3 homestead claim settlement, timber export economy"
},
{
"body_id": "GJ588d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 45,
"rotation_period_hours": 1080,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "cold rocky, tidally locked"
},
{
"body_id": "GJ588e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": "terrestrial",
"surface_gravity": 0.3,
"orbital_period_days": 120,
"rotation_period_hours": 16.0,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "frozen rocky"
},
{
"body_id": "GJ588f",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": "gas_giant",
"surface_gravity": null,
"orbital_period_days": 600,
"rotation_period_hours": 10.5,
"atmosphere": "dense",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "moderate gas giant"
},
{
"body_id": "GJ588f-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ588f",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
"surface_gravity": 0.05,
"orbital_period_days": 5,
"rotation_period_hours": 120,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": "none",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner gas giant moon"
},
{
"body_id": "GJ588f-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ588f",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
"surface_gravity": 0.03,
"orbital_period_days": 12,
"rotation_period_hours": 288,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy outer gas giant moon"
},
{
"body_id": "GJ588g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2200,
"rotation_period_hours": 20.0,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ588h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
"surface_gravity": 0.09,
"orbital_period_days": 4500,
"rotation_period_hours": 22.0,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ588-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": null,
"rotation_period_hours": null,
"atmosphere": null,
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "sparse belt"
},
{
"body_id": "GJ588-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": 0,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": null,
"rotation_period_hours": null,
"atmosphere": null,
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "oort cloud"
}
],
"stations": [
{"station_id": "GJ588c-S1", "proper_name": "Falstone", "orbits_body_id": "GJ588c", "station_type": "agricultural", "population": 0, "economic_role": "agriculture", "docking_class": "restricted", "has_gate_infrastructure": false, "notes": "Harrowfield Forestry Trust logistics, timber export staging, Timber Merchants' Circle operations"},
{"station_id": "GJ588-oort-S1", "proper_name": "Bellingham", "orbits_body_id": "GJ588-oort", "station_type": "horizon", "population": 0, "economic_role": "transit", "docking_class": "standard", "has_gate_infrastructure": true, "notes": "horizon station, 1 aperture, single-gate connection to Carrington's Post"}
{
"station_id": "GJ588c-S1",
"proper_name": "Falstone",
"orbits_body_id": "GJ588c",
"station_type": "agricultural",
"population": 0,
"economic_role": "agriculture",
"docking_class": "restricted",
"has_gate_infrastructure": false,
"notes": "Harrowfield Forestry Trust logistics, timber export staging, Timber Merchants' Circle operations"
},
{
"station_id": "GJ588-oort-S1",
"proper_name": "Bellingham",
"orbits_body_id": "GJ588-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "standard",
"has_gate_infrastructure": true,
"notes": "horizon station, 1 aperture, single-gate connection to Carrington's Post"
}
]
}