feat(atlas): author GJ 71 (Gateway/Tau Ceti) body catalog

First system fully authored via atlas author/commit workflow.
7 bodies + 1 station: Threshold (primary garden, 600M), Arden
(secondary garden, 500M), Verantis (domed moon, 20M), inner rocky,
outer ice, debris disk, oort cloud, Horizon Station (80M).

Atlas CLI updated with proper_name, population, hydrosphere,
economic_role, settlement_pattern, industrial_corridor fields in
proposal format. Commit-system writes all fields to DB.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-24 18:16:09 +01:00
co-authored by Claude Opus 4.6
parent fb401e80d2
commit 080732d2ac
2 changed files with 202 additions and 3 deletions
+54 -3
View File
@@ -221,21 +221,31 @@ struct TypeCount {
#[derive(Serialize, serde::Deserialize, Clone)]
struct ProposalBody {
body_id: String,
proper_name: Option<String>,
body_type: String,
orbit_index: i32,
parent_body_id: Option<String>,
inhabited: bool,
population: Option<i64>,
mass_class: Option<String>,
atmosphere: Option<String>,
biome_summary: Option<String>,
hydrosphere: Option<String>,
economic_role: Option<String>,
settlement_pattern: Option<String>,
industrial_corridor: Option<String>,
notes: String,
}
#[derive(Serialize, serde::Deserialize, Clone)]
struct ProposalStation {
station_id: String,
proper_name: Option<String>,
orbits_body_id: String,
station_type: String,
population: Option<i64>,
economic_role: Option<String>,
docking_class: Option<String>,
has_gate_infrastructure: bool,
notes: String,
}
@@ -785,9 +795,12 @@ fn generate_body_matrix(
orbit_index: orbit,
parent_body_id: None,
inhabited: false,
proper_name: None,
population: None,
mass_class: Some("terrestrial".into()),
atmosphere: Some("none".into()),
biome_summary: Some("barren".into()),
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: "inner rocky, uninhabited".into(),
});
orbit += 1;
@@ -807,9 +820,12 @@ fn generate_body_matrix(
orbit_index: orbit,
parent_body_id: None,
inhabited: true,
proper_name: None,
population: None,
mass_class: Some("terrestrial".into()),
atmosphere: Some("breathable".into()),
biome_summary: Some("temperate".into()),
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: format!("inhabited planet {}/{}", i + 1, wiki_inh),
});
orbit += 1;
@@ -830,9 +846,12 @@ fn generate_body_matrix(
orbit_index: orbit,
parent_body_id: None,
inhabited: false,
proper_name: None,
population: None,
mass_class: Some("terrestrial".into()),
atmosphere: Some("breathable".into()),
biome_summary: Some("temperate".into()),
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: "habitable, uninhabited".into(),
});
orbit += 1;
@@ -854,9 +873,12 @@ fn generate_body_matrix(
orbit_index: orbit,
parent_body_id: None,
inhabited: false,
proper_name: None,
population: None,
mass_class: Some("terrestrial".into()),
atmosphere: Some("thin".into()),
biome_summary: Some("frozen".into()),
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: "outer rocky/ice, uninhabited".into(),
});
orbit += 1;
@@ -870,9 +892,12 @@ fn generate_body_matrix(
orbit_index: orbit,
parent_body_id: None,
inhabited: false,
proper_name: None,
population: None,
mass_class: None,
atmosphere: None,
biome_summary: None,
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: "asteroid belt".into(),
});
orbit += 1;
@@ -892,9 +917,12 @@ fn generate_body_matrix(
orbit_index: orbit,
parent_body_id: None,
inhabited: false,
proper_name: None,
population: None,
mass_class: Some("gas_giant".into()),
atmosphere: Some("dense".into()),
biome_summary: None,
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: "gas giant".into(),
});
// 2 default moons
@@ -905,9 +933,12 @@ fn generate_body_matrix(
orbit_index: m,
parent_body_id: Some(gg_id.clone()),
inhabited: false,
proper_name: None,
population: None,
mass_class: Some("dwarf".into()),
atmosphere: Some("none".into()),
biome_summary: Some("barren".into()),
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: format!("moon {} of gas giant", m),
});
}
@@ -922,9 +953,12 @@ fn generate_body_matrix(
orbit_index: orbit,
parent_body_id: None,
inhabited: false,
proper_name: None,
population: None,
mass_class: None,
atmosphere: None,
biome_summary: None,
hydrosphere: None, economic_role: None, settlement_pattern: None, industrial_corridor: None,
notes: "oort cloud".into(),
});
@@ -932,8 +966,12 @@ fn generate_body_matrix(
if has_horizon {
stations.push(ProposalStation {
station_id: format!("{}-oort-S1", sid),
proper_name: None,
orbits_body_id: oort_id,
station_type: "horizon".into(),
population: None,
economic_role: Some("transit".into()),
docking_class: Some("major".into()),
has_gate_infrastructure: true,
notes: "horizon station — gate infrastructure".into(),
});
@@ -1058,18 +1096,26 @@ fn cmd_commit_system(conn: &Connection, path: &str) {
for body in &proposal.bodies {
tx.execute(
"INSERT INTO bodies (body_id, system_id, parent_body_id, body_type, orbit_index,
inhabited, mass_class, atmosphere, biome_summary)
VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)",
proper_name, inhabited, population, mass_class, atmosphere,
biome_summary, hydrosphere, economic_role, settlement_pattern,
industrial_corridor)
VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15)",
params![
body.body_id,
proposal.system_id,
body.parent_body_id,
body.body_type,
body.orbit_index,
body.proper_name,
body.inhabited as i32,
body.population.unwrap_or(0),
body.mass_class,
body.atmosphere,
body.biome_summary,
body.hydrosphere,
body.economic_role,
body.settlement_pattern,
body.industrial_corridor,
],
)
.unwrap_or_else(|e| {
@@ -1081,13 +1127,18 @@ fn cmd_commit_system(conn: &Connection, path: &str) {
for station in &proposal.stations {
tx.execute(
"INSERT INTO stations (station_id, system_id, orbits_body_id, station_type,
proper_name, population, economic_role, docking_class,
has_gate_infrastructure)
VALUES (?1, ?2, ?3, ?4, ?5)",
VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)",
params![
station.station_id,
proposal.system_id,
station.orbits_body_id,
station.station_type,
station.proper_name,
station.population.unwrap_or(0),
station.economic_role,
station.docking_class,
station.has_gate_infrastructure as i32,
],
)