Compare commits

..
87 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.6 f94d4c7a2c chore(meta): release v0.1.30
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 00:20:23 +02:00
jpmschweitzer 68afd94a57 Merge remote-tracking branch 'origin/client'
# Conflicts:
#	CHANGELOG.md
2026-04-05 00:17:52 +02:00
jpmschweitzerandClaude Opus 4.6 c94c5d7acb fix(client): address PR #109 review — 6 warnings + 5 suggestions
Star map (W1-W3, S3):
- _process visibility guard + dirty flag (no redraw when hidden/unchanged)
- _system_hash masked to 31-bit positive range
- Extracted _find_nearest_system() shared helper

game_state.gd (W4):
- Inline load() in apply_snapshot() replaces per-tick overhead; safe at
  runtime because script is already in resource cache

Data pipeline (W5-W6):
- Script-relative path resolution via __file__
- --check mode + make check-star-map staleness target

Minor (S1-S2, S5):
- Removed redundant bone_idx assignment
- Simplified double-negative test assertion
- Documented autoload parse-order convention in CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 00:12:48 +02:00
jpmschweitzerandClaude Opus 4.6 16b7fe0bb5 fix(simulation): address PR #108 review — LEFT JOIN, JSON output, atmosphere default
Review fixes:
- corridor-status: INNER JOIN → LEFT JOIN so systems without gate
  records are included in counts instead of silently excluded
- corridor-status: output as JSON (serde_json) matching all other
  atlas commands, instead of plain-text ASCII table
- generate_body_matrix: emit atmosphere "standard" instead of
  "breathable" to match committed-system conventions
- Doc header: add corridor-status usage example
- CHANGELOG: note stale habitable_planet_count in pre-fix systems

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:50:11 +02:00
jpmschweitzerandClaude Opus 4.6 0d5323f66c fix(client): resolve GDScript autoload parse-order errors
Autoload scripts are parsed before regular scripts, so class_name
types (CharacterVisualDescriptor, TestHarness, YamlParser) are not
available at parse time. Replace type annotations with untyped vars
and use load() for in-body class references. Fixes all 14 headless
parse errors (9 pre-existing + 5 from Sprint 30 changes).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:40:28 +02:00
jpmschweitzerandClaude Opus 4.6 c758bcd5d6 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:35:12 +02:00
jpmschweitzerandClaude Opus 4.6 d876923485 test(client): add Sprint 30 acceptance tests
27 tests covering all 5 sprint tickets: descriptor persistence (#718),
overhead anchor (#712), hair highlight swatch (#719), manifest JSON
completeness (#720), and star map scene/HUD integration (#674).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:48 +02:00
jpmschweitzerandClaude Opus 4.6 aed513eb71 feat(ui): star map insert module — concentric hop-ring view (#674)
New StarMapRenderer: 301 systems in concentric hop-rings from player
location, sector-colored, click-to-select with info panel, pan/zoom.
Integrated into HUD (hidden by default), insert state propagation
wired in main.gd. Data enriched from systems.db + star-map.json via
tooling/generate-star-map-data.py regeneration script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:36 +02:00
jpmschweitzerandClaude Opus 4.6 bc168c861a feat(client): hair highlight swatch + manifest JSON for exports (#719, #720)
#719: Add display-only hair highlight swatch (Option B) — auto-derived
from primary tint, non-interactive (MOUSE_FILTER_IGNORE).

#720: Remove DirAccess.open() fallback scanning (breaks in PCK exports).
Fully populate manifest.json (11 body types, 14 hair, 4 heads, 4
eyebrows, 8 clothing). Add tooling/generate-character-manifest script
and make manifest target for regeneration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:23 +02:00
jpmschweitzerandClaude Opus 4.6 4c1e0e9c85 feat(client): wire CharacterVisualDescriptor into startup IPC (#718)
encode_startup_message() now accepts optional CharacterVisualDescriptor
as third param, serialized via to_dict(). sim_bridge passes the
descriptor from GameState on new game start. apply_snapshot() restores
descriptor from server snapshot on save/load cycle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:11 +02:00
jpmschweitzerandClaude Opus 4.6 e8a053080c feat(client): add BoneAttachment3D overhead anchor above Head bone (#712)
Infrastructure for floating UI elements (status indicators, thought
bubbles, alert markers). Marker3D at Vector3(0, 0.3, 0) offset from
Head bone, exposed via get_overhead_anchor() public API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:00 +02:00
jpmschweitzerandClaude Opus 4.6 ba059ab101 chore(rules): add ticket CLI usage rule
Documents positional argument syntax and key rules for the ticket
CLI to prevent --title flag misuse and sqlite3 crashes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:33:50 +02:00
jpmschweitzerandClaude Opus 4.6 6763c30d43 chore(skills): add git-state verification warning to pr-push skill
Sprint 30 showed that grepping source files does not distinguish
committed code from uncommitted agent work. Added mandatory
git status + git diff --stat check from repo root before accepting
"already done" claims, and a warning about CWD path resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:11:54 +02:00
jpmschweitzerandClaude Opus 4.6 ef15d0afa3 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:09:21 +02:00
jpmschweitzerandClaude Opus 4.6 8a98cfa7fc fix(simulation): Sprint 30 server — atmosphere filter fix + corridor-status cmd
#762: Update habitable_planet_count filter to accept both "breathable"
and "standard" atmosphere values via matches! macro. Previously only
matched "breathable", causing all committed systems to report 0
habitable planets.

#744: Add corridor-status subcommand to atlas CLI. Shows remaining
unfinished systems grouped by geographic_sector and hop_distance,
with plain text table output and totals.

Cargo.lock updated for v0.1.29.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:08:59 +02:00
jpmschweitzerandClaude Opus 4.6 d6b98925ed fix(wiki): address PR #107 review — catalog.md sync, math fix, schema fix
- catalog.md: sync star types for GJ 875 (K), GJ 1111 (M), GJ 541 (K),
  GJ 601A (F), GJ 19 (G), GJ 42 (K); add Dois Sóis name for GJ 707
- GJ-1111: fix calibration note total ~1.46M → ~1.67M, station display
  1M → 1.2M to match proposal
- GJ42 proposal: moon GJ42e-2 biome_summary ice → frozen (schema fix)
- GJ3943 proposal: station notes k-m → K5V+M3V
- GJ-3943 wiki: "five corridor communities" → "four" (Eerste Wacht
  joined later)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 13:13:31 +02:00
jpmschweitzerandClaude Opus 4.6 f8b0b17252 fix(wiki): Sprint 30 — wiki quality fixes, atlas regressions, Brandpunt authoring
High priority:
- #763: Rewrite GJ1111/GJ54.1 prose for population rebalance (380K/320K
  planet + 1M/860K station = mid-tier systems, not megahubs)

Medium priority:
- #772: Author Brandpunt (GJ 3943) — Afrikaans agricultural research
  station, subverts pastoral/frontier stereotype
- #753: Fix Mabuhay (GJ 1073) — GJ 482A is Dagat, not unsurveyed
- #757: Fix Pereira's Rest population 800 → 42K
- #758: Fix Langemark schema values (breathable→standard, rivers-lakes, west_reach)
- #759: Fix Solheim topology disconnect
- #764: Fix GJ1111 star_type unusual → M
- #767: Fix GJ707 star_type/spectral_class swap
- #769: Fix GJ-147 etymology passagem → Entremeio
- #770: Fix GJ-875 header G-type → K-type

Low priority:
- #754: Update stale Calibration Notes (GJ1128, GJ136, GJ625)
- #755: Fix GJ432A Punjabi-Canadian → Punjabi heritage
- #756: Fix GJ541 header G-type → K-type (K2IIIp)
- #760: Add F2III context to GJ601A notes
- #761: Fix GJ4056 spectral_class g → M3V
- #765: Add calibration notes for intentional small populations
- #768: Reconcile GJ189 wave_2 at hop 8-11
- #771: Fix GJ-7547/GJ-6711 spectral class truncation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 22:47:36 +02:00
jpmschweitzerandClaude Opus 4.6 2c86eee1b6 chore(meta): release v0.1.29
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 19:31:54 +02:00
jpmschweitzerandClaude Sonnet 4.6 4722598017 chore(meta): plan Sprint 30: Clean Slate
Sprint goal: Close Phase 1 wiki quality debt — stereotype correction,
data integrity fixes, and atlas regressions — so the wiki stands
correct before Phase 1 UI work begins.

26 tickets: copy (18), client (5), server (3).
Epics #638, #683, #738 closed. #766 deferred (own sprint).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 19:28:20 +02:00
jpmschweitzerandClaude Opus 4.6 f63d222ef3 fix(atlas): address PR #106 review — 3 execution issues
1. GJ 111: spectral_class F5V → F5/F6V to match wiki (subgiant)
2. GJ 3943: spectral_class k-m → K5V+M3V (valid MK notation for binary)
3. GJ 903: write wiki prose — was empty stub with only body tables

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 15:19:55 +02:00
jpmschweitzerandClaude Opus 4.6 317cbe10d2 data(atlas): name all remaining unsettled systems — 301/301 complete
Unsettled systems receive their GJ designation as proper_name, except
GJ 868 which is named "Encontro" per wiki lore (informal Portuguese
corridor name). 24 proposals updated, systems.db fully synced.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:14:41 +02:00
jpmschweitzerandClaude Opus 4.6 aef39d8e32 fix(db): bulk-sync 233 proposals into systems.db + fix 7 duplicate body IDs
commit-system was inserting bodies/stations but never writing proper_name
to star_systems. Bulk-updated all 276 authored system names. Fixed duplicate
body_id collisions in GJ 1156, GJ 139, GJ 34A, GJ 34B, GJ 661A, GJ 664,
GJ 780 (planet and gas giant sharing same letter suffix).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:06:57 +02:00
jpmschweitzerandClaude Opus 4.6 b525d21a6e data(db): sync systems.db — 276 authored systems
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:16:47 +02:00
jpmschweitzerandClaude Opus 4.6 e33338fb88 data(atlas): author GJ 6711 (Abzu) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:21:02 +02:00
jpmschweitzerandClaude Opus 4.6 22adfd2195 data(atlas): author GJ 7547 (Skemeraand) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:20:58 +02:00
jpmschweitzerandClaude Opus 4.6 701d2a119d data(atlas): author GJ 501B (Candeia) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:16:37 +02:00
jpmschweitzerandClaude Opus 4.6 ff7e4e835a data(atlas): author GJ 127A (Dalim) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:14:03 +02:00
jpmschweitzerandClaude Opus 4.6 7d6b1c6e48 data(atlas): author GJ 147 (Entremeio) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:10:51 +02:00
jpmschweitzerandClaude Opus 4.6 ee42c23805 data(atlas): author GJ 111 (Helderoog) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:10:48 +02:00
jpmschweitzerandClaude Opus 4.6 405dc1a890 data(atlas): author GJ 672 (Nova Estrada) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:01:11 +02:00
jpmschweitzerandClaude Opus 4.6 312e3cf211 data(atlas): author GJ 546 (Eerste Wacht) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:01:00 +02:00
jpmschweitzerandClaude Opus 4.6 54293a6d3e fix(wiki): add silence topics for GJ 111 (Helderoog) and GJ 147 (Entremeio)
Helderoog: partnership protocol genetic data — two communities' shared
future from a narrow founder population.
Entremeio: no-inspection provisioning policy after undisclosed incident.
Both headers corrected.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:58:22 +02:00
jpmschweitzerandClaude Opus 4.6 1c29d67ac2 fix(wiki): add silence topic for GJ 672 (Nova Estrada), fix M→G header
Founding agreement land allocation ambiguities — crisis waiting to happen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:54:41 +02:00
jpmschweitzerandClaude Opus 4.6 8db0e3e16b data(atlas): author GJ 421B (Pedra Seca) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:48:08 +02:00
jpmschweitzerandClaude Opus 4.6 abb30381ec data(atlas): author GJ 726 (GJ 726) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:47:07 +02:00
jpmschweitzerandClaude Opus 4.6 dad1fdffeb data(atlas): author GJ 3943 (GJ 3943) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:45:46 +02:00
jpmschweitzerandClaude Opus 4.6 fd7945ec97 data(atlas): author GJ 904 (Claraboia) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:43:19 +02:00
jpmschweitzerandClaude Opus 4.6 86e3b1e793 data(atlas): author GJ 421B (Pedra Seca) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:43:12 +02:00
jpmschweitzerandClaude Opus 4.6 cce32dc244 data(atlas): author GJ 532 (Kettenschmied) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:38:55 +02:00
jpmschweitzerandClaude Opus 4.6 578b151dc0 data(atlas): author GJ 282B (Travessia) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:38:47 +02:00
jpmschweitzerandClaude Opus 4.6 c1aaaf0dc8 fix(wiki): add silence topics for GJ 421B (Pedra Seca) and GJ 904 (Claraboia)
Pedra Seca: sealed water allocation records from fourth-generation drought.
Claraboia: founding cooperative dissolution dispute details.
Both headers corrected (M→K, M→F).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:37:51 +02:00
jpmschweitzerandClaude Opus 4.6 6b6d31ca4d fix(wiki): add silence topic for GJ 532 (Kettenschmied), fix M→K header
Founding cooperative sale circumstances undisclosed. Profitable
cooperative liquidated to fund deep frontier expedition.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:30:27 +02:00
jpmschweitzerandClaude Opus 4.6 725763ba91 data(atlas): author GJ 684A (Sonnenkap) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:28:35 +02:00
jpmschweitzerandClaude Opus 4.6 5be0701105 fix(wiki): add silence topic for GJ 282B (Travessia)
Last provisioning stop — travelers going further are not counted
coming back.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:28:03 +02:00
jpmschweitzerandClaude Opus 4.6 477f0b1d30 data(atlas): author GJ 481 (Orchard's End) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:24:18 +02:00
jpmschweitzerandClaude Opus 4.6 da59740ee7 data(atlas): author GJ 875 (The Narrows) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:22:49 +02:00
jpmschweitzerandClaude Opus 4.6 f07913ab55 fix(wiki): add silence topic for GJ 684A (Sonnenkap), fix F→G header
West_reach charter lapse circumstances undisclosed. Well-funded departure
raises questions the community does not answer.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:20:55 +02:00
jpmschweitzerandClaude Opus 4.6 eb3a2ec136 data(atlas): author GJ 903 (Errai) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:17:20 +02:00
jpmschweitzerandClaude Opus 4.6 1b34c4f2af data(atlas): author GJ 684B (Paso Largo) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:16:04 +02:00
jpmschweitzerandClaude Opus 4.6 5b775d5024 fix(wiki): add silence topic for GJ 481 (Orchard's End)
Charter preamble names specific institutions whose governance
interference caused the Orchard family's prior holdings to be lost.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:15:32 +02:00
jpmschweitzerandClaude Opus 4.6 c7fc70c742 fix(wiki): add silence topic and narrative hook for GJ 684B (Paso Largo)
Also corrects M-type → K-type header to match K3V spectral class.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:11:22 +02:00
jpmschweitzerandClaude Opus 4.6 5207ef8799 data(atlas): author GJ 61 (Fernlicht) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:06:23 +02:00
jpmschweitzerandClaude Opus 4.6 65e27aa8ca data(atlas): author GJ 407 (Einde) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:06:14 +02:00
jpmschweitzerandClaude Opus 4.6 d071a3775b data(atlas): author GJ 201 (GJ 201) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:03:53 +02:00
jpmschweitzerandClaude Opus 4.6 0cc0df6758 data(atlas): author GJ 616 (GJ 616) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 10:57:44 +02:00
jpmschweitzerandClaude Opus 4.6 9f694e2835 data(atlas): author GJ 354A (GJ 354A) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 10:53:58 +02:00
jpmschweitzerandClaude Opus 4.6 8672fe3ddd data(atlas): author GJ 428A (Fluchtburg) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:19:03 +02:00
jpmschweitzerandClaude Opus 4.6 06da24ef02 data(atlas): author GJ 528A (Ouplaas) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:16:43 +02:00
jpmschweitzerandClaude Opus 4.6 ebc2cc28f2 data(atlas): author GJ 853A (GJ 853A) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:16:04 +02:00
jpmschweitzerandClaude Opus 4.6 ad42b658e7 data(atlas): author GJ 656 (GJ 656) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:14:44 +02:00
jpmschweitzerandClaude Opus 4.6 acc5ea380c data(atlas): author GJ 524 (GJ 524) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:13:29 +02:00
jpmschweitzerandClaude Opus 4.6 e265bbaf9e data(atlas): author GJ 5 (GJ 5) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:11:07 +02:00
jpmschweitzerandClaude Opus 4.6 4c8802363a data(atlas): author GJ 394 (GJ 394) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:07:26 +02:00
jpmschweitzerandClaude Opus 4.6 92195398a7 data(atlas): author GJ 1267 (Saudade) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:05:14 +02:00
jpmschweitzerandClaude Opus 4.6 faabbfed92 data(atlas): author GJ 868 (GJ 868) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:04:35 +02:00
jpmschweitzerandClaude Opus 4.6 33cfbb7d38 data(atlas): author GJ 69 (GJ 69) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:03:08 +02:00
jpmschweitzerandClaude Opus 4.6 ffe89cf758 data(atlas): author GJ 3403 (GJ 3403) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:00:09 +02:00
jpmschweitzerandClaude Opus 4.6 a859538d05 data(atlas): author GJ 177 (GJ 177) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:58:05 +02:00
jpmschweitzerandClaude Opus 4.6 59e6700466 data(atlas): author GJ 146 (GJ 146) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:56:46 +02:00
jpmschweitzerandClaude Opus 4.6 42b55a23e1 data(atlas): author GJ 722 (Skuilplek) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:44:17 +02:00
jpmschweitzerandClaude Opus 4.6 d12257c5a9 data(atlas): author GJ 707 (Dois Sóis) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:44:17 +02:00
jpmschweitzerandClaude Opus 4.6 d2e7dd0d6e data(atlas): author GJ 675 (Neugrund) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:44:16 +02:00
jpmschweitzerandClaude Opus 4.6 6d8ae63c2f data(atlas): author GJ 556 (Recanto) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:44:16 +02:00
jpmschweitzerandClaude Opus 4.6 453f24e291 data(atlas): author GJ 349 (Randgebiet) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:43:51 +02:00
jpmschweitzerandClaude Opus 4.6 6f06f0735b data(atlas): author GJ 204 (Pedra Funda) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:43:50 +02:00
jpmschweitzerandClaude Opus 4.6 738d1d7877 data(atlas): author GJ 174 (Tiefenbach) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:43:50 +02:00
jpmschweitzerandClaude Opus 4.6 255d7ada67 data(atlas): author GJ 425A (GJ 425A) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:11:50 +02:00
jpmschweitzerandClaude Opus 4.6 42230478db data(atlas): author GJ 167 (GJ 167) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:50:37 +02:00
jpmschweitzerandClaude Opus 4.6 890c340279 data(atlas): author GJ 914A (Droëland) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:34 +02:00
jpmschweitzerandClaude Opus 4.6 e51ac28cde data(atlas): author GJ 598 (Helle Wacht) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:34 +02:00
jpmschweitzerandClaude Opus 4.6 9e7455a037 data(atlas): author GJ 482B (Travessa) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:33 +02:00
jpmschweitzerandClaude Opus 4.6 be7e42b137 data(atlas): author GJ 309 (Vorposten) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:33 +02:00
jpmschweitzerandClaude Opus 4.6 1a8dda7e94 data(atlas): author GJ 211 (Encruzilhada) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:33 +02:00
jpmschweitzerandClaude Opus 4.6 06a9e11b9e data(atlas): author GJ 189 (Altgrund) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:33 +02:00
jpmschweitzerandClaude Opus 4.6 3103486058 data(atlas): author GJ 142 (Leuchtturm) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:33 +02:00
jpmschweitzerandClaude Opus 4.6 6f327e818c data(atlas): author GJ 138 (Sertão) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:44:33 +02:00
jpmschweitzerandClaude Opus 4.6 866e9dd243 data(atlas): author GJ 324A (GJ 324A) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 10:57:29 +02:00
176 changed files with 20668 additions and 206 deletions
+39
View File
@@ -0,0 +1,39 @@
# Ticket CLI
**Use `tooling/db/ticket`** for all ticket operations. Never use `sqlite3` directly (crashes in Claude Code).
## Positional arguments — not flags
`ticket create` uses **positional** arguments for `type` and `title`. There is no `--title` flag.
```bash
# CORRECT — type and title are positional
tooling/db/ticket create story "My ticket title" --description "Details here" --team server --priority low
# WRONG — --title does not exist, gets absorbed into the title string
tooling/db/ticket create story --title "My ticket title" --description "Details here"
# Creates a ticket titled: "--title My ticket title"
```
## Full usage
```bash
# Create
tooling/db/ticket create <type> <title> [--parent N] [--priority P] [--decision D] [--team T] [--description TEXT]
# type: initiative | epic | story | task | bug
# priority: critical | high | medium | low
# Read
tooling/db/ticket show <id>
tooling/db/ticket list [--sprint N] [--team T] [--status S]
# Update
tooling/db/ticket assign <id> <agent>
```
## Key rules
- **Type and title are positional** — everything else is a flag
- **Quote the title** — always wrap in double quotes to handle spaces
- **Never use `sqlite3` CLI** — it crashes (std::bad_alloc). Use `tooling/db/sqlite-query` or `tooling/db/sqlite-exec` for raw SQL
- **Verify after create** — run `tooling/db/ticket show <id>` to confirm the title is clean
+14
View File
@@ -66,8 +66,22 @@ works on screen before invoking `/pr-push`. If they haven't, ask:
```bash
git status
git diff --stat
```
**Run both commands from the repo root** (`git rev-parse --show-toplevel`).
Running from a subdirectory can cause paths to not resolve, hiding real
changes — Sprint 30 proved this when `git diff HEAD -- server/src/bin/atlas.rs`
returned 0 lines from the wrong CWD, masking uncommitted agent work.
**CRITICAL: Do not trust "already done" claims without checking git state.**
If agents report that work was "already implemented in a prior commit," verify
by checking `git status` and `git diff --stat` first. Grepping source files
only proves the code exists on disk — it does NOT prove the code is committed.
Uncommitted working-tree changes look identical to committed code when you
read files. Only `git status` distinguishes "already shipped" from "just
written by a teammate."
If there are uncommitted changes (staged or unstaged), run the **commit skill**
first. Use the `/git-commit` skill to group changes into logical commits with
proper conventional commit messages. Wait for commit to complete before
+30
View File
@@ -6,16 +6,46 @@ Format based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased]
## [v0.1.30] — 2026-04-05
### Added
- `corridor-status` subcommand for atlas CLI — shows remaining unfinished systems grouped by geographic sector and hop distance (#744)
- Star map insert module — concentric hop-ring view of 301 systems, sector-colored, click-to-select with info panel, pan/zoom (#674)
- BoneAttachment3D overhead anchor above Head bone for future floating UI elements (#712)
- CharacterVisualDescriptor wired into startup IPC and snapshot restore for save/load persistence (#718)
- Display-only hair highlight swatch (auto-derived from primary tint) in character creation (#719)
- Asset manifest fully populated (11 body types, 14 hair, 4 heads, 4 eyebrows, 8 clothing) with regeneration script (#720)
- Sprint 30 acceptance test suite (27 tests across all 5 tickets)
### Fixed
- `habitable_planet_count` filter now accepts both "breathable" and "standard" atmosphere values — previously all committed systems reported 0 habitable planets (#762). Systems committed before this fix may have stale `habitable_planet_count = 0`; re-commit to update.
- `corridor-status` uses LEFT JOIN so systems without gate records are included in counts
- `generate_body_matrix` now emits `atmosphere: "standard"` (was "breathable") to match committed-system conventions
- DirAccess asset scanning replaced with manifest JSON — fixes character creation in exported PCK builds (#720)
- Star map set_insert_active() no longer auto-shows the modal panel (#674)
- Star map insert state propagation wired into main.gd (#674)
## [v0.1.29] — 2026-04-03
### Added
- Complete body catalogs for all 301 star systems — every system now has proper_name, bodies, and stations in systems.db
- 24 new system proposals authored across east_reach (6) and deep_frontier (18) corridors
- Bulk-synced 233 proposals into systems.db that were missing from prior sessions
- Named all remaining unsettled systems with GJ designations (301/301 complete)
- Silence topics and narrative hooks for Deep Frontier corridor systems
- Named 5 unnamed stations/bodies: Morwenna, Havelmark, Portela, Grindvik, Sturen Platforms
### Fixed
- 7 duplicate body IDs in proposals (planet and gas giant sharing same letter suffix)
- star_type/spectral_class mismatches corrected across 36 atlas proposals
- GJ1002 copy-paste planets differentiated with unique orbital parameters
- GJ880 malformed spectral_class and Leirvik station population
- GJ3325 malformed spectral_class
- 40 proposals brought to minimum planet count and given asteroid belts
- atlas-verify now allows named uninhabited bodies (lore names)
- GJ-111 spectral_class corrected to F5/F6V (matching wiki)
- GJ-3943 spectral_class corrected to K5V+M3V (valid binary notation)
- GJ-903 wiki page completed (was empty stub)
- Deleted superseded tooling/atlas-helpers.sh
## [v0.1.28] — 2026-03-23
+10
View File
@@ -84,6 +84,16 @@ The ticketing database (`settledreach.db`) lives in the **parent directory** sha
- Three test tiers: (1) Live server — highest fidelity, (2) MessagePack replay via `Protocol.decode_snapshot()` — for unreachable rooms, (3) TestHarness mock — for UI-only tests where fog data doesn't matter.
- `make fixtures-gauntlet` regenerates real server snapshot fixtures from the Gauntlet world.
### GDScript conventions
**Autoload parse-order rule:** Autoload scripts (`client/scripts/autoloads/`) compile before global `class_name` scripts are registered. Referencing a `class_name` type directly in an autoload causes a parse-time "not declared" error. Pattern:
- Declare fields untyped: `var my_field = null` (comment the intended type)
- Do **not** reference `class_name` types at the top level or in `_ready()` of autoloads
- In method bodies called at runtime (e.g. `apply_snapshot`), use `load()` inline — by then the script is cached and `load()` returns the cached resource without reloading: `var CVD := load("res://scripts/rendering/character_visual_descriptor.gd")`
- Do **not** cache the `load()` result in `_ready()` — `_ready()` fires during autoload init, before the target script is in the resource cache, causing an actual file reload that breaks self-references in scripts using their own `class_name`
`game_state.gd` (`character_visual_descriptor` field) and `sim_bridge.gd` (`harness` field) follow this pattern.
### File conventions
- Decisions: domain files in `decisions/` (see `decisions/README.md` for index)
- Decision IDs: `D-NNN` (confirmed), `Q-NNN` (open questions), `R-NNN` (rejected)
+13 -2
View File
@@ -7,11 +7,12 @@ GODOT := $(shell command -v godot4 2>/dev/null || command -v godot 2>/dev/null)
pre-pr pre-pr-lint pre-pr-build pre-pr-test pre-pr-validate pre-pr-fixtures \
pre-pr-server pre-pr-client pre-pr-content \
fixtures-client fixtures-gauntlet golden-diff golden-update \
checklist-validate checklist-generate \
checklist-validate checklist-generate check-star-map \
build-sr-voice run-sr-voice test-voice-mock test-voice-real \
perf-baseline debug-schedule \
test-ipc-fixtures test-ipc-protocol test-ipc-integration test-ipc-benchmark \
screenshot visual-movie test-visual visual-update
screenshot visual-movie test-visual visual-update \
manifest
# --- Configuration ---
@@ -62,6 +63,7 @@ help:
@echo " make test-visual Run visual golden regression tests"
@echo " make visual-update Regenerate visual goldens and stage for commit"
@echo ""
@echo " make manifest Regenerate assets/characters/manifest.json from asset dirs (#720)"
@echo " make pre-pr Run all pre-PR checks (lint, build, test, validate, fixtures)"
@echo " make pre-pr-server Server-scoped pre-PR (lint, build, test, fixtures)"
@echo " make pre-pr-client Client-scoped pre-PR (lint, build, test)"
@@ -345,6 +347,9 @@ checklist-validate:
checklist-generate:
@tooling/validate-checklist
check-star-map:
@python3 tooling/generate-star-map-data.py --check
perf-baseline:
@tooling/perf-baseline
@@ -399,6 +404,12 @@ test-voice-real:
cd server && cargo test --test voice_pipeline -- --nocapture
@echo "Results: .tmp/voice-test/results.txt"
# --- Asset manifest ---
manifest:
@tooling/generate-character-manifest
@echo "Manifest regenerated — commit client/assets/characters/manifest.json if changed."
# --- Clean ---
clean:
+70 -8
View File
@@ -1,13 +1,75 @@
{
"body_types": ["average_m", "average_f", "muscular_m", "muscular_f", "teen_m", "teen_f"],
"heads": [],
"hair": ["bob", "buns", "buzzed", "long", "ponytail", "bald"],
"facial_hair": ["beard", "moustache", "mutton_chops"],
"eyebrows": [],
"body_types": [
"average_f",
"average_m",
"child",
"heavy_f",
"heavy_m",
"muscular_f",
"muscular_m",
"teen_f",
"teen_m",
"thin_f",
"thin_m"
],
"heads": [
"head_001",
"head_002",
"head_003",
"head_004"
],
"hair": [
"bald",
"balding",
"bob",
"buns",
"buzzed",
"buzzed_female",
"dreads",
"long",
"long_dreads",
"mohawk",
"ponytail",
"ponytail_f",
"simple_parted",
"slick_back"
],
"facial_hair": [
"beard",
"moustache",
"mutton_chops"
],
"eyebrows": [
"female",
"regular",
"teen",
"thick"
],
"clothing": {
"peasant_tunic": {"slot": "torso"},
"peasant_pants": {"slot": "legs"},
"peasant_shoes": {"slot": "feet"}
"boots_work": {
"slot": "feet"
},
"coveralls_basic": {
"slot": "torso"
},
"jacket_utility": {
"slot": "torso"
},
"pants_cargo": {
"slot": "legs"
},
"peasant_pants": {
"slot": "legs"
},
"peasant_shoes": {
"slot": "feet"
},
"peasant_tunic": {
"slot": "torso"
},
"shirt_henley": {
"slot": "torso"
}
},
"accessories": []
}
File diff suppressed because it is too large Load Diff
+15 -1
View File
@@ -100,7 +100,8 @@ var character_archetype: String = "detective"
# #705: Character visual descriptor — set by character_creation.gd on confirmation.
# Passed to EntityRenderer for the player entity's CharacterVisual on game start.
# Null when no custom appearance has been selected (fallback: default descriptor).
var character_visual_descriptor: CharacterVisualDescriptor = null
# Type is CharacterVisualDescriptor — untyped to avoid autoload parse-order issue.
var character_visual_descriptor = null
# #646: AI-Enhanced Dialogue enabled state (D-138).
# Runtime toggle — true means the LLM re-voicing pipeline should run (server-side).
@@ -362,6 +363,19 @@ func apply_snapshot(snapshot: Dictionary) -> void:
else:
settings_response = null
# #718: character_visual_descriptor — restored from server snapshot on save/load.
# Server persists the descriptor and includes it in ObserverSnapshot after load.
# Only update when field is present (null means no change).
if snapshot.has("character_visual_descriptor") and snapshot.character_visual_descriptor is Dictionary:
# load() returns a cached script — safe to call per-tick once the resource is in cache.
# Cannot use CharacterVisualDescriptor directly: autoloads compile before global class_names
# are registered, causing a parse-time "not declared" error.
var CVD := load("res://scripts/rendering/character_visual_descriptor.gd")
if CVD != null:
var restored = CVD.from_dict(snapshot.character_visual_descriptor)
if restored != null:
character_visual_descriptor = restored
# v14: player_knowledge (#264, D-041) — partial KG dump for journal panel.
# Only update when field is present (null means no change, server sends when KG changes).
if snapshot.has("player_knowledge") and snapshot.player_knowledge is Dictionary:
+5 -4
View File
@@ -5,7 +5,8 @@ enum ConnectionState { DISCONNECTED, CONNECTING, HANDSHAKING, CONNECTED, ERROR }
var state: ConnectionState = ConnectionState.DISCONNECTED
var test_mode: bool = OS.get_environment("SR_LIVE") != "1" # SR_LIVE=1 connects to real server
var harness: TestHarness = null # Test simulation (D-020: game logic lives outside production client)
# Type is TestHarness — untyped to avoid autoload parse-order issue.
var harness = null # Test simulation (D-020: game logic lives outside production client)
var _last_snapshot: Variant = null # Most recent decoded snapshot (consumed by poll_snapshot)
var _outbound_buffer: Array[Dictionary] = [] # Raw inputs awaiting batch encode + transport
@@ -33,7 +34,7 @@ signal handshake_failed(reason: String)
func _ready() -> void:
if test_mode:
harness = TestHarness.new()
harness = load("res://scripts/protocol/test_harness.gd").new()
print("SimBridge: Running in test mode (dynamic snapshot)")
@@ -231,9 +232,9 @@ func _process(delta: float) -> void:
_set_state(ConnectionState.ERROR)
return
# Send startup message with world_seed (#175, D-010/D-029).
# Send startup message with world_seed and character appearance (#175, D-010/D-029, #718).
# Server blocks waiting for this before entering the tick loop.
var startup_bytes := Protocol.encode_startup_message(GameState.world_seed, GameState.character_archetype)
var startup_bytes := Protocol.encode_startup_message(GameState.world_seed, GameState.character_archetype, GameState.character_visual_descriptor)
if startup_bytes.size() > 0:
var send_err := _bridge.send_message(startup_bytes)
if send_err != OK:
+1 -1
View File
@@ -51,4 +51,4 @@ func reload() -> void:
## Returns flat Dictionary with dotted keys: { "section.sub.key": "value" }.
## Delegates to YamlParser.parse_flat() (#560).
static func _parse_yaml(text: String) -> Dictionary:
return YamlParser.parse_flat(text)
return load("res://scripts/util/yaml_parser.gd").parse_flat(text)
+3
View File
@@ -24,6 +24,7 @@ extends Node2D
@onready var loading_screen = $ModalLayer/LoadingScreen # #257: blocking overlay during load
@onready var debug_console = $ModalLayer/DebugConsole # #581: tilde debug console
@onready var news_ticker = $UILayer/NewsTicker # #592: scrolling headline bar (D-049 z-7)
@onready var star_map = $UILayer/HUD/StarMap # #674: star map insert module (hop-ring view)
var _last_dialogue_npc_id: int = -1 # D-064: NPC entity_id for WalkAway input
var _last_dialogue_npc_name: String = "" # #535: NPC name for dialogue_response attribution
@@ -254,6 +255,8 @@ func _propagate_insert_state() -> void:
interaction_prompt.set_insert_active(insert_state)
if minimap:
minimap.set_insert_active(insert_state)
if star_map:
star_map.set_insert_active(insert_state)
# D-057: Update interaction list from game state.
+5 -2
View File
@@ -494,11 +494,12 @@ static func _decode_enum_variant(raw) -> Dictionary:
# -- Encode: GDScript types → bytes to server ----------------------------------
## Encode a StartupMessage to MessagePack bytes (#175, #588).
## Encode a StartupMessage to MessagePack bytes (#175, #588, #718).
## Sent by the client immediately after handshake validation.
## Server reads this to initialize SimRng (D-010, D-029) and select monologue pool (D-032).
## character_archetype: "detective" → "Detective", "smuggler" → "Smuggler" (server enum variant).
static func encode_startup_message(world_seed: int, character_archetype: String = "detective") -> PackedByteArray:
## character_visual: optional CharacterVisualDescriptor — included as "character_visual_descriptor" dict.
static func encode_startup_message(world_seed: int, character_archetype: String = "detective", character_visual: Variant = null) -> PackedByteArray:
# Map client lowercase archetype string to server PascalCase enum variant.
# Explicit match prevents unknown strings silently reaching the server as
# garbage enum values — fail loudly and fall back to "Detective".
@@ -515,6 +516,8 @@ static func encode_startup_message(world_seed: int, character_archetype: String
"world_seed": world_seed,
"character_archetype": archetype_variant,
}
if character_visual != null and character_visual.has_method("to_dict"):
msg["character_visual_descriptor"] = character_visual.to_dict()
var result = Messagepack.encode(msg)
if result.status != null:
push_error("Protocol: startup message encode failed: %s" % result.status)
@@ -23,6 +23,7 @@ extends Node3D
## get_clothing_node_count() — number of clothing MeshInstance3D nodes
## get_accessory_node_count() — number of accessory BoneAttachment3D nodes
## get_skin_tone_texture_name(index) — skin tone texture filename key for index
## get_overhead_anchor() — Marker3D above Head bone for floating UI (#712)
##
## D-159 (11 body types), D-160 (18 segments), D-161 (head separate),
## D-162 (clothing pre-fitted), D-163 (heads via BoneAttachment3D), D-164 (skeleton fork)
@@ -101,6 +102,8 @@ var _clothing_meshes: Array[MeshInstance3D] = []
var _bone_attachments: Array[BoneAttachment3D] = []
var _outline_nodes: Array[MeshInstance3D] = []
var _accessory_attachments: Array[BoneAttachment3D] = []
var _overhead_anchor: Marker3D = null
var _overhead_attachment: BoneAttachment3D = null
# Inspectable state for tests
var _active_torso_variant: String = "full"
@@ -218,6 +221,13 @@ func get_skin_tone_texture_name(index: int) -> String:
return SKIN_TONES[clampi(index, 0, SKIN_TONES.size() - 1)]["tex"]
## Return the overhead anchor Marker3D (#712). Null if skeleton not loaded.
## Anchor point for floating UI elements: status indicators, thought bubbles,
## alert markers, speech icons. Positioned ~0.3m above the Head bone.
func get_overhead_anchor() -> Marker3D:
return _overhead_anchor
# =============================================================================
# Internal — teardown
# =============================================================================
@@ -234,6 +244,13 @@ func _clear() -> void:
node.free()
_outline_nodes.clear()
# #712: free overhead anchor before general bone attachments
if is_instance_valid(_overhead_attachment) and _overhead_attachment.get_parent():
_overhead_attachment.get_parent().remove_child(_overhead_attachment)
_overhead_attachment.free()
_overhead_attachment = null
_overhead_anchor = null
for att in _bone_attachments:
if is_instance_valid(att) and att.get_parent():
att.get_parent().remove_child(att)
@@ -291,6 +308,7 @@ func _load_skeleton() -> void:
for m in armature_meshes:
print(" armature mesh: ", m.name, " visible=", m.visible)
_validate_slot_bones()
_create_overhead_anchor()
## Warn on any SLOT_TO_BONE entry that doesn't exist in the loaded skeleton.
@@ -302,6 +320,26 @@ func _validate_slot_bones() -> void:
push_warning("CharacterVisual: SLOT_TO_BONE['%s'] = '%s' — bone not found in skeleton" % [slot, bone_name])
## #712: Create a Marker3D anchored ~0.3m above the Head bone via BoneAttachment3D.
## Anchor point for floating UI elements (status indicators, thought bubbles, etc.).
func _create_overhead_anchor() -> void:
if _skeleton == null:
return
var bone_idx := _skeleton.find_bone("Head")
if bone_idx == -1:
push_warning("CharacterVisual: Head bone not found — overhead anchor not created")
return
_overhead_attachment = BoneAttachment3D.new()
_overhead_attachment.bone_name = "Head"
_overhead_attachment.name = "OverheadAttachment"
_skeleton.add_child(_overhead_attachment)
_overhead_anchor = Marker3D.new()
_overhead_anchor.name = "OverheadAnchor"
_overhead_anchor.position = Vector3(0, 0.3, 0)
_overhead_attachment.add_child(_overhead_anchor)
# =============================================================================
# Internal — body segments (D-160)
# =============================================================================
+590
View File
@@ -0,0 +1,590 @@
## Sprint 30 — QA acceptance tests
##
## Covers all 5 Sprint 30 client tickets:
## #718 — Persist CharacterVisualDescriptor on new game start
## #719 — Hair highlight: make swatch read-only (Option B — no compositor yet)
## #720 — Replace DirAccess scanning with manifest JSON for export builds
## #712 — BoneAttachment3D marker above Head bone for floating icons
## #674 — Star map insert module (test-first: scene must exist when implemented)
##
## Test convention:
## - Tests that should PASS immediately = regression guards on existing code
## - Tests prefixed [ACCEPTANCE] = will FAIL until the ticket is implemented
##
## Ticket refs: #718, #719, #720, #712, #674
class_name TestSprint30
extends GdUnitTestSuite
func before_each() -> void:
# Reset GameState fields touched by #718 tests to avoid cross-test pollution.
GameState.character_visual_descriptor = null
func after_each() -> void:
GameState.character_visual_descriptor = null
# =============================================================================
# #718 — Persist CharacterVisualDescriptor
# =============================================================================
func test_game_state_has_character_visual_descriptor_field() -> void:
## GameState.character_visual_descriptor must exist and default to null.
## Confirms the field added in game_state.gd line 103 is present.
var gs := GameState.new()
auto_free(gs)
# The field is declared on the class — access it without error
var val: Variant = gs.get("character_visual_descriptor")
# Field should exist (not return null from missing property vs. null value)
assert_bool(gs.has_method("apply_snapshot")).override_failure_message(
"GameState must be a valid autoload class with apply_snapshot"
).is_true()
# The property itself must be gettable and null by default
assert_bool(val == null).override_failure_message(
"GameState.character_visual_descriptor must default to null"
).is_true()
func test_descriptor_to_dict_includes_all_required_fields() -> void:
## CharacterVisualDescriptor.to_dict() must include all wire-format fields.
var desc := CharacterVisualDescriptor.new()
auto_free(desc)
var d := desc.to_dict()
var required_keys := [
"body_type", "head_id", "hair_id", "hair_tint",
"facial_hair_id", "facial_hair_tint", "eyebrow_id", "eyebrow_tint",
"eye_color", "skin_tone", "clothing_slots", "clothing_tints",
"accessory_slots", "accessory_tints",
]
for key in required_keys:
assert_bool(d.has(key)).override_failure_message(
"to_dict() must include field '%s'" % key
).is_true()
func test_descriptor_to_dict_body_type_is_wire_string() -> void:
## body_type in to_dict() must be a string (rmp_serde unit enum), not an int.
var desc := CharacterVisualDescriptor.new()
auto_free(desc)
desc.body_type = CharacterVisualDescriptor.BodyType.AVERAGE_M
var d := desc.to_dict()
assert_str(d["body_type"]).override_failure_message(
"to_dict() body_type must be wire string 'AverageM'"
).is_equal("AverageM")
func test_descriptor_round_trip_preserves_fields() -> void:
## from_dict(to_dict(desc)) must preserve all scalar fields.
var original := CharacterVisualDescriptor.new()
auto_free(original)
original.body_type = CharacterVisualDescriptor.BodyType.THIN_F
original.head_id = "head_002"
original.hair_id = "bob"
original.hair_tint = Color(0.8, 0.4, 0.2)
original.skin_tone = 3
var wire := original.to_dict()
var restored := CharacterVisualDescriptor.from_dict(wire)
assert_bool(restored != null).override_failure_message(
"from_dict() must return a descriptor for valid wire data"
).is_true()
if restored == null:
return
assert_int(int(restored.body_type)).override_failure_message(
"body_type must survive round-trip"
).is_equal(int(CharacterVisualDescriptor.BodyType.THIN_F))
assert_str(restored.head_id).override_failure_message(
"head_id must survive round-trip"
).is_equal("head_002")
assert_str(restored.hair_id).override_failure_message(
"hair_id must survive round-trip"
).is_equal("bob")
assert_int(restored.skin_tone).override_failure_message(
"skin_tone must survive round-trip"
).is_equal(3)
func test_descriptor_from_dict_returns_null_when_missing_body_type() -> void:
## from_dict() must return null if body_type is absent (required field).
var d := {"head_id": "head_001"} # missing body_type
var result := CharacterVisualDescriptor.from_dict(d)
assert_bool(result == null).override_failure_message(
"from_dict() must return null when body_type is missing"
).is_true()
func test_descriptor_color_encoding_is_float_array() -> void:
## Colors must encode as [r, g, b, a] float arrays for rmp_serde compatibility.
var desc := CharacterVisualDescriptor.new()
auto_free(desc)
desc.eye_color = Color(0.1, 0.2, 0.3, 1.0)
var d := desc.to_dict()
var encoded: Variant = d["eye_color"]
assert_bool(encoded is Array).override_failure_message(
"eye_color must encode as an Array [r, g, b, a]"
).is_true()
if not (encoded is Array):
return
assert_int((encoded as Array).size()).override_failure_message(
"eye_color array must have 4 elements"
).is_equal(4)
assert_float((encoded as Array)[0]).override_failure_message(
"eye_color[0] (r) must be approx 0.1"
).is_equal_approx(0.1, 0.001)
func test_apply_snapshot_restores_character_visual_descriptor() -> void:
## #718: apply_snapshot() must restore character_visual_descriptor from
## the "character_visual_descriptor" key in ObserverSnapshot (save/load path).
var desc := CharacterVisualDescriptor.new()
desc.body_type = CharacterVisualDescriptor.BodyType.MUSCULAR_F
desc.head_id = "head_003"
desc.hair_id = "dreads"
desc.skin_tone = 5
var snapshot := {
"character_visual_descriptor": desc.to_dict(),
}
GameState.apply_snapshot(snapshot)
var restored: Variant = GameState.character_visual_descriptor
assert_bool(restored != null).override_failure_message(
"apply_snapshot() must restore character_visual_descriptor from snapshot"
).is_true()
if restored != null and restored is CharacterVisualDescriptor:
var r := restored as CharacterVisualDescriptor
assert_int(int(r.body_type)).override_failure_message(
"restored body_type must match"
).is_equal(int(CharacterVisualDescriptor.BodyType.MUSCULAR_F))
assert_str(r.head_id).override_failure_message(
"restored head_id must match"
).is_equal("head_003")
assert_int(r.skin_tone).override_failure_message(
"restored skin_tone must match"
).is_equal(5)
func test_apply_snapshot_preserves_descriptor_when_field_absent() -> void:
## #718: If snapshot lacks "character_visual_descriptor", the existing field
## must not be overwritten (server only sends when descriptor changes).
var desc := CharacterVisualDescriptor.new()
desc.hair_id = "bob"
GameState.character_visual_descriptor = desc
# Snapshot with no character_visual_descriptor key
GameState.apply_snapshot({"tick": 1})
var after: Variant = GameState.character_visual_descriptor
assert_bool(after != null).override_failure_message(
"apply_snapshot() must NOT clear descriptor when field is absent"
).is_true()
if after is CharacterVisualDescriptor:
assert_str((after as CharacterVisualDescriptor).hair_id).override_failure_message(
"descriptor must be unchanged after snapshot with no character_visual_descriptor key"
).is_equal("bob")
func test_protocol_encode_startup_includes_descriptor() -> void:
## #718: Protocol.encode_startup_message() must include "character_visual_descriptor"
## in the encoded payload when a descriptor is provided.
var desc := CharacterVisualDescriptor.new()
desc.body_type = CharacterVisualDescriptor.BodyType.THIN_M
desc.hair_id = "buzzed"
var bytes := Protocol.encode_startup_message(12345, "detective", desc)
assert_bool(bytes.size() > 0).override_failure_message(
"encode_startup_message() must produce non-empty bytes"
).is_true()
# Decode and verify the field is present (Messagepack.decode returns {status, value})
var raw = Messagepack.decode(bytes)
assert_bool(raw.status == null).override_failure_message(
"encode_startup_message() output must be valid msgpack"
).is_true()
if raw.status != null:
return
var msg: Dictionary = raw.value as Dictionary
assert_bool(msg.has("character_visual_descriptor")).override_failure_message(
"StartupMessage must include 'character_visual_descriptor' key when descriptor is provided"
).is_true()
if msg.has("character_visual_descriptor"):
assert_bool(msg["character_visual_descriptor"] is Dictionary).override_failure_message(
"character_visual_descriptor in StartupMessage must be a Dictionary"
).is_true()
func test_protocol_encode_startup_omits_descriptor_when_null() -> void:
## #718: encode_startup_message() must still produce valid bytes when descriptor is null.
var bytes := Protocol.encode_startup_message(0, "detective", null)
assert_bool(bytes.size() > 0).override_failure_message(
"encode_startup_message() must produce valid bytes even with null descriptor"
).is_true()
func test_descriptor_has_no_hair_highlight_tint_field() -> void:
## CharacterVisualDescriptor must NOT have a hair_highlight_tint field.
## The highlight is always auto-derived from hair_tint (Option B of #719).
## to_dict() must not include it in the wire format.
var desc := CharacterVisualDescriptor.new()
auto_free(desc)
var d := desc.to_dict()
assert_bool(d.has("hair_highlight_tint")).override_failure_message(
"to_dict() must NOT include hair_highlight_tint — highlight is auto-derived"
).is_false()
assert_bool("hair_highlight_tint" in desc).override_failure_message(
"CharacterVisualDescriptor must not define a hair_highlight_tint property"
).is_false()
# =============================================================================
# #719 — Hair highlight swatch (Option B: read-only, auto-derived)
# =============================================================================
func test_derive_hair_highlight_lightens_primary() -> void:
## _derive_hair_highlight() must return primary.lightened(0.3).
## Tests the derivation formula in character_creation.gd:1917.
var cc_scene_path := "res://scenes/character_creation.tscn"
if not ResourceLoader.exists(cc_scene_path):
push_warning("test_derive_hair_highlight_lightens_primary: scene not available in headless — skipping")
return
var packed := load(cc_scene_path) as PackedScene
if packed == null:
return
var cc := packed.instantiate() as CharacterCreation
if cc == null:
push_warning("test_derive_hair_highlight_lightens_primary: failed to instantiate — skipping")
return
auto_free(cc)
# CharacterCreation._derive_hair_highlight is a private method but testable via call()
var primary := Color(0.4, 0.3, 0.5)
var expected := primary.lightened(0.3)
var result: Variant = cc.call("_derive_hair_highlight", primary)
assert_bool(result is Color).override_failure_message(
"_derive_hair_highlight must return a Color"
).is_true()
if not (result is Color):
return
var r := result as Color
assert_float(r.r).override_failure_message("derived highlight.r incorrect").is_equal_approx(expected.r, 0.001)
assert_float(r.g).override_failure_message("derived highlight.g incorrect").is_equal_approx(expected.g, 0.001)
assert_float(r.b).override_failure_message("derived highlight.b incorrect").is_equal_approx(expected.b, 0.001)
func test_hair_highlight_swatch_exists_in_ui() -> void:
## [ACCEPTANCE #719] After fix, _hair_highlight_swatch must be non-null
## (a display node must be created in _build_hair_color_dock).
## WILL FAIL until #719 is implemented.
var cc_scene_path := "res://scenes/character_creation.tscn"
if not ResourceLoader.exists(cc_scene_path):
push_warning("test_hair_highlight_swatch_exists_in_ui: scene not available in headless — skipping")
return
var packed := load(cc_scene_path) as PackedScene
if packed == null:
return
var cc := packed.instantiate() as CharacterCreation
if cc == null:
return
auto_free(cc)
add_child(cc)
await get_tree().process_frame
# _hair_highlight_swatch must be set after _ready() builds the hair color dock
var swatch: Variant = cc.get("_hair_highlight_swatch")
assert_bool(swatch != null).override_failure_message(
"[#719] _hair_highlight_swatch must not be null — a display node must be created"
).is_true()
func test_hair_highlight_swatch_is_not_interactive() -> void:
## [ACCEPTANCE #719] The highlight swatch must be non-interactive.
## Either mouse_filter = IGNORE, or the node is a ColorRect (not a Button with a callback).
## WILL FAIL until #719 is implemented.
var cc_scene_path := "res://scenes/character_creation.tscn"
if not ResourceLoader.exists(cc_scene_path):
push_warning("test_hair_highlight_swatch_is_not_interactive: scene not available — skipping")
return
var packed := load(cc_scene_path) as PackedScene
if packed == null:
return
var cc := packed.instantiate() as CharacterCreation
if cc == null:
return
auto_free(cc)
add_child(cc)
await get_tree().process_frame
var swatch: Variant = cc.get("_hair_highlight_swatch")
if swatch == null:
push_warning("test_hair_highlight_swatch_is_not_interactive: swatch not found — #719 not yet implemented")
return
# If swatch is a Control node, mouse_filter must be IGNORE (2)
if swatch is Control:
var ctrl := swatch as Control
assert_int(ctrl.mouse_filter).override_failure_message(
"[#719] hair highlight swatch must have mouse_filter=IGNORE (non-interactive)"
).is_equal(Control.MOUSE_FILTER_IGNORE)
# =============================================================================
# #720 — Manifest JSON completeness (replaces DirAccess scanning)
# =============================================================================
func test_manifest_json_is_parseable() -> void:
## manifest.json must exist and parse as a Dictionary.
var path := "res://assets/characters/manifest.json"
assert_bool(ResourceLoader.exists(path) or FileAccess.file_exists(path)).override_failure_message(
"manifest.json must exist at res://assets/characters/manifest.json"
).is_true()
var file := FileAccess.open(path, FileAccess.READ)
if file == null:
push_warning("test_manifest_json_is_parseable: file not openable — skipping")
return
var parsed: Variant = JSON.parse_string(file.get_as_text())
file.close()
assert_bool(parsed is Dictionary).override_failure_message(
"manifest.json must parse as a JSON object (Dictionary)"
).is_true()
func test_manifest_hair_includes_all_asset_dirs() -> void:
## [ACCEPTANCE #720] manifest.json "hair" array must include every .glb in
## assets/characters/hair/. Currently missing: balding, buzzed_female, dreads,
## long_dreads, mohawk, ponytail_f, simple_parted, slick_back.
## WILL FAIL until #720 populates the manifest fully.
var path := "res://assets/characters/manifest.json"
var file := FileAccess.open(path, FileAccess.READ)
if file == null:
push_warning("test_manifest_hair_includes_all_asset_dirs: manifest not readable — skipping")
return
var parsed: Variant = JSON.parse_string(file.get_as_text())
file.close()
if not (parsed is Dictionary):
return
var manifest := parsed as Dictionary
var hair_list: Array = manifest.get("hair", [])
# All hair IDs confirmed from assets/characters/hair/*.glb scan (2026-04-04)
var expected_hair := [
"bald", "balding", "bob", "buns", "buzzed", "buzzed_female",
"dreads", "long", "long_dreads", "mohawk", "ponytail", "ponytail_f",
"simple_parted", "slick_back",
]
for hair_id in expected_hair:
assert_bool(hair_list.has(hair_id)).override_failure_message(
"[#720] manifest 'hair' must include '%s'" % hair_id
).is_true()
func test_manifest_heads_are_populated() -> void:
## [ACCEPTANCE #720] manifest.json "heads" must not be empty.
## heads/templates/ contains head_001..head_004 — all must be listed.
## WILL FAIL until #720 populates the manifest.
var path := "res://assets/characters/manifest.json"
var file := FileAccess.open(path, FileAccess.READ)
if file == null:
push_warning("test_manifest_heads_are_populated: manifest not readable — skipping")
return
var parsed: Variant = JSON.parse_string(file.get_as_text())
file.close()
if not (parsed is Dictionary):
return
var manifest := parsed as Dictionary
var heads_list: Array = manifest.get("heads", [])
var expected_heads := ["head_001", "head_002", "head_003", "head_004"]
assert_bool(not heads_list.is_empty()).override_failure_message(
"[#720] manifest 'heads' must not be empty — 4 head templates exist"
).is_true()
for head_id in expected_heads:
assert_bool(heads_list.has(head_id)).override_failure_message(
"[#720] manifest 'heads' must include '%s'" % head_id
).is_true()
func test_manifest_body_types_includes_all_11() -> void:
## [ACCEPTANCE #720] manifest.json "body_types" must include all 11 types.
## Currently has 6; missing: thin_m, thin_f, heavy_m, heavy_f, child.
## WILL FAIL until #720 updates the manifest.
var path := "res://assets/characters/manifest.json"
var file := FileAccess.open(path, FileAccess.READ)
if file == null:
push_warning("test_manifest_body_types_includes_all_11: manifest not readable — skipping")
return
var parsed: Variant = JSON.parse_string(file.get_as_text())
file.close()
if not (parsed is Dictionary):
return
var manifest := parsed as Dictionary
var bt_list: Array = manifest.get("body_types", [])
var expected_types := [
"thin_m", "thin_f", "average_m", "average_f",
"muscular_m", "muscular_f", "teen_m", "teen_f",
"heavy_m", "heavy_f", "child",
]
for bt in expected_types:
assert_bool(bt_list.has(bt)).override_failure_message(
"[#720] manifest 'body_types' must include '%s'" % bt
).is_true()
func test_manifest_clothing_includes_all_items() -> void:
## [ACCEPTANCE #720] manifest.json "clothing" must include all items in
## assets/characters/clothing/. Currently missing: boots_work, coveralls_basic,
## jacket_utility, pants_cargo, shirt_henley.
## WILL FAIL until #720 populates the manifest.
var path := "res://assets/characters/manifest.json"
var file := FileAccess.open(path, FileAccess.READ)
if file == null:
push_warning("test_manifest_clothing_includes_all_items: manifest not readable — skipping")
return
var parsed: Variant = JSON.parse_string(file.get_as_text())
file.close()
if not (parsed is Dictionary):
return
var manifest := parsed as Dictionary
var clothing_data: Variant = manifest.get("clothing", {})
var clothing_keys: Array = []
if clothing_data is Dictionary:
clothing_keys = (clothing_data as Dictionary).keys()
# All clothing item IDs confirmed from assets/characters/clothing/ scan (2026-04-04)
var expected_items := [
"boots_work", "coveralls_basic", "jacket_utility", "pants_cargo",
"peasant_pants", "peasant_shoes", "peasant_tunic", "shirt_henley",
]
for item_id in expected_items:
assert_bool(clothing_keys.has(item_id)).override_failure_message(
"[#720] manifest 'clothing' must include '%s'" % item_id
).is_true()
func test_manifest_eyebrows_are_populated() -> void:
## [ACCEPTANCE #720] manifest.json "eyebrows" must list all eyebrow styles.
## assets/characters/eyebrows/ has: female, regular, teen, thick.
## WILL FAIL until #720 populates the manifest.
var path := "res://assets/characters/manifest.json"
var file := FileAccess.open(path, FileAccess.READ)
if file == null:
push_warning("test_manifest_eyebrows_are_populated: manifest not readable — skipping")
return
var parsed: Variant = JSON.parse_string(file.get_as_text())
file.close()
if not (parsed is Dictionary):
return
var manifest := parsed as Dictionary
var eb_list: Array = manifest.get("eyebrows", [])
var expected_eyebrows := ["female", "regular", "teen", "thick"]
assert_bool(not eb_list.is_empty()).override_failure_message(
"[#720] manifest 'eyebrows' must not be empty"
).is_true()
for eb_id in expected_eyebrows:
assert_bool(eb_list.has(eb_id)).override_failure_message(
"[#720] manifest 'eyebrows' must include '%s'" % eb_id
).is_true()
func test_dir_access_scan_functions_removed() -> void:
## [ACCEPTANCE #720] After fix, _scan_subdirs and _scan_asset_ids must be
## removed from CharacterCreation. These functions fail in exported PCK builds.
## WILL FAIL until #720 removes the DirAccess fallbacks.
var cc_scene_path := "res://scenes/character_creation.tscn"
if not ResourceLoader.exists(cc_scene_path):
push_warning("test_dir_access_scan_functions_removed: scene not available — skipping")
return
var packed := load(cc_scene_path) as PackedScene
if packed == null:
return
var cc := packed.instantiate() as CharacterCreation
if cc == null:
return
auto_free(cc)
assert_bool(cc.has_method("_scan_subdirs")).override_failure_message(
"[#720] _scan_subdirs must be removed — use manifest JSON instead"
).is_false()
assert_bool(cc.has_method("_scan_asset_ids")).override_failure_message(
"[#720] _scan_asset_ids must be removed — use manifest JSON instead"
).is_false()
# =============================================================================
# #712 — BoneAttachment3D overhead anchor in CharacterVisual
# =============================================================================
func test_character_visual_has_get_overhead_anchor() -> void:
## CharacterVisual must expose get_overhead_anchor() as part of its public API.
## This is a static assertion — no 3D assets required.
var cv := CharacterVisual.new()
auto_free(cv)
assert_bool(cv.has_method("get_overhead_anchor")).override_failure_message(
"CharacterVisual must have get_overhead_anchor() method (#712)"
).is_true()
func test_overhead_anchor_is_null_before_load() -> void:
## get_overhead_anchor() must return null before load_descriptor() is called.
## The anchor is created during skeleton load, not at construction.
var cv := CharacterVisual.new()
auto_free(cv)
var anchor: Variant = cv.get_overhead_anchor()
assert_bool(anchor == null).override_failure_message(
"get_overhead_anchor() must be null before load_descriptor() is called"
).is_true()
func test_overhead_anchor_offset_constant() -> void:
## [ACCEPTANCE #712] If CharacterVisual exposes the overhead anchor offset
## as a constant or via get_overhead_anchor(), the offset must be Vector3(0, 0.3, 0).
## Verified via code inspection: _overhead_anchor.position = Vector3(0, 0.3, 0).
## This test loads a scene and verifies if assets are present.
var cv := CharacterVisual.new()
auto_free(cv)
add_child(cv)
# Without GLB assets available in headless, skeleton load is a no-op.
# Check that _overhead_attachment is also null before load (belt-and-suspenders).
var attachment: Variant = cv.get("_overhead_attachment")
assert_bool(attachment == null).override_failure_message(
"_overhead_attachment must be null before skeleton is loaded"
).is_true()
# =============================================================================
# #674 — Star map insert module (test-first)
# =============================================================================
func test_star_map_scene_exists() -> void:
## [ACCEPTANCE #674] The star map scene must exist at the expected path.
## WILL FAIL until #674 is implemented.
var expected_path := "res://ui/star_map.tscn"
assert_bool(ResourceLoader.exists(expected_path)).override_failure_message(
"[#674] Star map scene must exist at res://ui/star_map.tscn"
).is_true()
func test_star_map_is_accessible_from_insert_ui() -> void:
## [ACCEPTANCE #674] The star map module must be reachable from the insert UI.
## Verify via HUD or main scene that a star_map node/scene is connected.
## WILL FAIL until #674 wires the scene into the insert layer.
var hud_scene_path := "res://ui/hud.tscn"
if not ResourceLoader.exists(hud_scene_path):
push_warning("test_star_map_is_accessible_from_insert_ui: HUD scene not found — skipping")
return
var packed := load(hud_scene_path) as PackedScene
if packed == null:
return
var hud := packed.instantiate()
if hud == null:
return
auto_free(hud)
add_child(hud)
await get_tree().process_frame
# Star map must be reachable as a named node from the HUD or insert layer
var star_map := hud.get_node_or_null("StarMap")
assert_bool(star_map != null).override_failure_message(
"[#674] HUD must contain a StarMap node accessible from the insert UI"
).is_true()
+5 -39
View File
@@ -669,6 +669,11 @@ func _build_hair_color_dock() -> Control:
func(c): _on_hair_primary_changed(c))
row.add_child(_hair_primary_swatch)
# #719 (Option B): highlight is auto-derived from primary — display-only, not editable.
_hair_highlight_swatch = _make_display_swatch(
_derive_hair_highlight(_descriptor.hair_tint), "Highlight")
row.add_child(_hair_highlight_swatch)
_eyebrow_tint_swatch = _make_color_swatch(_descriptor.hair_tint, "Brows ●",
func(c): _on_eyebrow_tint_changed(c))
row.add_child(_eyebrow_tint_swatch)
@@ -1840,45 +1845,6 @@ func _apply_search_filter(grid: GridContainer, query: String) -> void:
child.visible = lower_q.is_empty() or (child as Button).text.to_lower().contains(lower_q)
# =============================================================================
# Asset scanning helpers
# =============================================================================
## Scan a directory for subdirectory names (item_id directories like clothing/coveralls_basic/).
## Returns fallback list if the directory is absent or empty.
## TODO: replace with manifest JSON for export builds (DirAccess won't list res:// in PCK).
static func _scan_subdirs(dir_path: String, fallback: Array) -> Array:
var dir := DirAccess.open(dir_path)
if dir == null:
return fallback
var ids: Array = []
dir.list_dir_begin()
var name := dir.get_next()
while name != "":
if dir.current_is_dir() and not name.begins_with("."):
ids.append(name)
name = dir.get_next()
dir.list_dir_end()
return ids if not ids.is_empty() else fallback
## Scan a directory for .glb asset IDs. Returns fallback list if directory absent.
## TODO: replace with manifest JSON for export builds (DirAccess won't list res:// in PCK).
static func _scan_asset_ids(dir_path: String, ext: String, fallback: Array) -> Array:
var dir := DirAccess.open(dir_path)
if dir == null:
return fallback
var ids: Array = []
dir.list_dir_begin()
var name := dir.get_next()
while name != "":
if not dir.current_is_dir() and name.ends_with(ext):
ids.append(name.get_basename())
name = dir.get_next()
dir.list_dir_end()
return ids if not ids.is_empty() else fallback
func _get_clothing_ids_for_slot(slot: String) -> Array:
# Clothing items from manifest — slot assignment is explicit, not prefix-based.
var clothing_data: Variant = _manifest.get("clothing", {})
+6 -1
View File
@@ -1,6 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://cq1y5w3hmxr8b"]
[gd_scene load_steps=3 format=3 uid="uid://cq1y5w3hmxr8b"]
[ext_resource type="Script" path="res://ui/hud.gd" id="1_hud"]
[ext_resource type="PackedScene" path="res://ui/star_map.tscn" id="2_starmap"]
[node name="HUD" type="Control"]
layout_mode = 3
@@ -36,3 +37,7 @@ text = "Mode: Baseline"
[node name="TimeLabel" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Time: 08:00"
; #674: Star map insert — concentric hop-ring view, hidden by default, toggled via keybind
[node name="StarMap" parent="." instance=ExtResource("2_starmap")]
visible = false
+1 -1
View File
@@ -62,7 +62,7 @@ func _show_character_creation() -> void:
_char_creation.creation_cancelled.connect(_on_creation_cancelled)
func _on_creation_confirmed(descriptor: CharacterVisualDescriptor) -> void:
func _on_creation_confirmed(descriptor) -> void:
if _char_creation != null and is_instance_valid(_char_creation):
_char_creation.queue_free()
_char_creation = null
+529
View File
@@ -0,0 +1,529 @@
class_name StarMapRenderer
extends Control
## Star map — concentric hop-ring view of the Settled Reach gate network (#674).
## Renders 301 systems as dots on concentric rings (hop distance from Gateway).
## Sector-colored: core (white-gold), north (blue), south (orange), east (green), west (tan).
##
## Data source: res://data/star_map_data.json (generated from star-map.json + systems.db).
## Regenerate with: tooling/generate-star-map-data.py
##
## D-013: Diegetic neural insert overlay. Accessible from the insert UI.
## Parent epic: #51 (Diegetic Insert/Minimap), ticket #674.
const DATA_PATH := "res://data/star_map_data.json"
# Layout
const MAP_CENTER_FRACTION := Vector2(0.5, 0.5) # center of control
const MIN_RING_RADIUS: float = 30.0 # innermost ring (hop 0 = gateway dot only)
const RING_SPACING: float = 22.0 # pixels between hop rings
const MAX_HOP_RINGS: int = 24 # max hop distance we render rings for
# Dot sizing
const DOT_RADIUS_HUB: float = 4.5
const DOT_RADIUS_JUNCTION: float = 3.5
const DOT_RADIUS_DEFAULT: float = 2.5
const DOT_RADIUS_DEAD_END: float = 2.0
const GATEWAY_RADIUS: float = 6.0
# Selection
const SELECTION_RING_RADIUS: float = 8.0
const HIT_RADIUS: float = 10.0 # click tolerance
# Edge rendering
const EDGE_WIDTH: float = 0.4
const EDGE_ALPHA: float = 0.12
const EDGE_SELECTED_ALPHA: float = 0.5
# Colors — sector palette from wireframe
const COLOR_BG: Color = Color("#0d1117")
const COLOR_RING: Color = Color("#1a2030")
const COLOR_RING_MAJOR: Color = Color("#222a3a")
const COLOR_GATEWAY: Color = Color("#f0d060")
const COLOR_SELECTION: Color = Color("#f0d060")
const COLOR_TEXT: Color = Color("#c8d0e0")
const COLOR_TEXT_DIM: Color = Color("#667788")
const COLOR_INFO_BG: Color = Color(0.05, 0.08, 0.14, 0.92)
const SECTOR_COLORS: Dictionary = {
"core": Color("#c8d0e0"),
"north_reach": Color("#4488aa"),
"south_reach": Color("#aa6644"),
"east_reach": Color("#44aa66"),
"west_reach": Color("#aa8844"),
"deep_frontier": Color("#556677"),
"unknown": Color("#445566"),
}
const SECTOR_LABELS: Dictionary = {
"north_reach": "NORTH REACH",
"south_reach": "SOUTH REACH",
"east_reach": "EAST REACH",
"west_reach": "WEST REACH",
}
# Quadrant angles for sector placement (radians, 0 = right, counterclockwise)
# North = top (-PI/2), East = right (0), South = bottom (PI/2), West = left (PI)
const SECTOR_ANGLE_CENTER: Dictionary = {
"north_reach": -PI / 2.0,
"east_reach": 0.0,
"south_reach": PI / 2.0,
"west_reach": PI,
}
const SECTOR_ANGLE_SPREAD: float = PI / 2.5 # each sector occupies ~72° of arc
const CORE_ANGLE_SPREAD: float = TAU # core systems spread full circle
const DEEP_FRONTIER_ANGLE_SPREAD: float = TAU # deep frontier wraps entire outer edge
# Pan/zoom
const ZOOM_MIN: float = 0.3
const ZOOM_MAX: float = 3.0
const ZOOM_STEP: float = 0.15
# Internal state
var _nodes: Array = []
var _edges: Array = []
var _node_positions: Dictionary = {} # system_id -> Vector2 (screen coords relative to map center)
var _node_lookup: Dictionary = {} # system_id -> node dict
var _selected_system: String = ""
var _hovered_system: String = ""
var _zoom: float = 1.0
var _pan_offset: Vector2 = Vector2.ZERO
var _is_panning: bool = false
var _pan_start: Vector2 = Vector2.ZERO
var _pan_start_offset: Vector2 = Vector2.ZERO
var _data_loaded: bool = false
var _insert_active: bool = true
var _show_edges: bool = false # toggle edge display
var _dirty: bool = true # redraw needed — set by state changes, cleared after _draw
func _ready() -> void:
mouse_filter = Control.MOUSE_FILTER_STOP
_load_data()
if _data_loaded:
_compute_layout()
func _process(_delta: float) -> void:
if not visible:
return
if _dirty and _data_loaded:
queue_redraw()
_dirty = false
## Called from main.gd when insert state changes.
## Only force-hides when insert is inactive. Does NOT auto-show — star map is
## modal (player opens via toggle_visible()), not always-on like the minimap.
func set_insert_active(active: bool) -> void:
_insert_active = active
if not active:
visible = false
## Toggle visibility (e.g., from a keybind or button).
func toggle_visible() -> void:
visible = not visible
if visible:
_dirty = true
## Return the currently selected system data, or empty dict.
func get_selected_system() -> Dictionary:
return _node_lookup.get(_selected_system, {})
## Return total system count.
func get_system_count() -> int:
return _nodes.size()
## Return total edge count.
func get_edge_count() -> int:
return _edges.size()
# =============================================================================
# Data loading
# =============================================================================
func _load_data() -> void:
if not FileAccess.file_exists(DATA_PATH):
push_warning("StarMapRenderer: data file not found at %s" % DATA_PATH)
return
var file := FileAccess.open(DATA_PATH, FileAccess.READ)
if file == null:
push_warning("StarMapRenderer: could not open %s" % DATA_PATH)
return
var parsed: Variant = JSON.parse_string(file.get_as_text())
file.close()
if not (parsed is Dictionary):
push_warning("StarMapRenderer: invalid JSON in %s" % DATA_PATH)
return
var data := parsed as Dictionary
_nodes = data.get("nodes", [])
_edges = data.get("edges", [])
for node: Dictionary in _nodes:
_node_lookup[node.get("system_id", "")] = node
_data_loaded = true
# =============================================================================
# Layout — place systems on concentric rings by hop distance
# =============================================================================
func _compute_layout() -> void:
_node_positions.clear()
# Group nodes by hop distance
var rings: Dictionary = {} # hop -> Array of nodes
for node: Dictionary in _nodes:
var hop: int = int(node.get("hop_distance", 0))
if not rings.has(hop):
rings[hop] = []
rings[hop].append(node)
# Place each ring
for hop: int in rings:
var ring_nodes: Array = rings[hop]
var radius: float = MIN_RING_RADIUS + hop * RING_SPACING
if hop == 0:
# Gateway at center
for node: Dictionary in ring_nodes:
_node_positions[node["system_id"]] = Vector2.ZERO
continue
# Sort nodes within ring by sector for angular grouping
ring_nodes.sort_custom(_sort_by_sector_angle)
# Distribute nodes within their sector's angular range
var sector_groups: Dictionary = {}
for node: Dictionary in ring_nodes:
var sector: String = node.get("geographic_sector", "unknown")
if not sector_groups.has(sector):
sector_groups[sector] = []
sector_groups[sector].append(node)
for sector: String in sector_groups:
var group: Array = sector_groups[sector]
var count: int = group.size()
var center_angle: float
var spread: float
if sector == "core":
center_angle = 0.0
spread = CORE_ANGLE_SPREAD
elif sector == "deep_frontier":
center_angle = 0.0
spread = DEEP_FRONTIER_ANGLE_SPREAD
elif SECTOR_ANGLE_CENTER.has(sector):
center_angle = SECTOR_ANGLE_CENTER[sector]
spread = SECTOR_ANGLE_SPREAD
else:
center_angle = 0.0
spread = TAU
# Distribute evenly within sector arc, with deterministic offset per system
for i: int in range(count):
var node: Dictionary = group[i]
var t: float
if count == 1:
t = 0.0
else:
t = float(i) / float(count) - 0.5 # -0.5 to +0.5
var angle: float = center_angle + t * spread
# Add small per-node jitter based on system_id hash for visual variety
var jitter: float = _system_hash(node["system_id"]) * 0.08
angle += jitter
# Slight radial variation to avoid perfect circles
var r_var: float = radius + _system_hash(node["system_id"] + "r") * RING_SPACING * 0.3
_node_positions[node["system_id"]] = Vector2(cos(angle), sin(angle)) * r_var
func _sort_by_sector_angle(a: Dictionary, b: Dictionary) -> bool:
var sa: float = _sector_sort_key(a)
var sb: float = _sector_sort_key(b)
if sa != sb:
return sa < sb
return a.get("system_id", "") < b.get("system_id", "")
func _sector_sort_key(node: Dictionary) -> float:
var sector: String = node.get("geographic_sector", "unknown")
match sector:
"core": return 0.0
"north_reach": return 1.0
"east_reach": return 2.0
"south_reach": return 3.0
"west_reach": return 4.0
"deep_frontier": return 5.0
_: return 6.0
## Deterministic float in [-1, 1] from a string key.
func _system_hash(key: String) -> float:
var h: int = key.hash() & 0x7FFFFFFF # mask to 31-bit positive range
return float(h) / 2147483647.0 * 2.0 - 1.0
# =============================================================================
# Drawing
# =============================================================================
func _draw() -> void:
if not _data_loaded:
return
var sz: Vector2 = get_rect().size
var center: Vector2 = sz * MAP_CENTER_FRACTION + _pan_offset
# Background
draw_rect(Rect2(Vector2.ZERO, sz), COLOR_BG)
# Hop rings (concentric circles)
_draw_rings(center)
# Sector labels
_draw_sector_labels(center)
# Edges (gate connections)
if _show_edges or _selected_system != "":
_draw_edges(center)
# System dots
_draw_systems(center)
# Selection highlight
if _selected_system != "":
_draw_selection(center)
# Info panel for selected system
if _selected_system != "":
_draw_info_panel(sz)
# Title
_draw_title()
func _draw_rings(center: Vector2) -> void:
for hop: int in range(MAX_HOP_RINGS + 1):
var radius: float = (MIN_RING_RADIUS + hop * RING_SPACING) * _zoom
if radius < 1.0 or radius > 2000.0:
continue
var color: Color = COLOR_RING_MAJOR if hop % 5 == 0 else COLOR_RING
draw_arc(center, radius, 0.0, TAU, 64, color, 0.5 if hop % 5 == 0 else 0.3, true)
func _draw_sector_labels(center: Vector2) -> void:
var label_radius: float = (MIN_RING_RADIUS + 12 * RING_SPACING) * _zoom
for sector: String in SECTOR_LABELS:
var angle: float = SECTOR_ANGLE_CENTER.get(sector, 0.0)
var pos: Vector2 = center + Vector2(cos(angle), sin(angle)) * label_radius
var label: String = SECTOR_LABELS[sector]
var color: Color = SECTOR_COLORS.get(sector, COLOR_TEXT_DIM)
var font := get_theme_default_font()
var font_size: int = 10
var text_size: Vector2 = font.get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, -1, font_size)
draw_string(font, pos - text_size / 2.0, label, HORIZONTAL_ALIGNMENT_LEFT, -1, font_size, color)
func _draw_systems(center: Vector2) -> void:
for node: Dictionary in _nodes:
var sid: String = node.get("system_id", "")
if not _node_positions.has(sid):
continue
var pos: Vector2 = center + _node_positions[sid] * _zoom
var sector: String = node.get("geographic_sector", "unknown")
var topology: String = node.get("gate_topology", "")
var color: Color = SECTOR_COLORS.get(sector, COLOR_TEXT_DIM)
var radius: float = _dot_radius(topology)
# Gateway gets special treatment
if node.get("is_gateway", false):
color = COLOR_GATEWAY
radius = GATEWAY_RADIUS
# Dim deep frontier slightly
if sector == "deep_frontier":
color.a = 0.7
# Hover highlight
if sid == _hovered_system and sid != _selected_system:
draw_arc(pos, radius + 3.0, 0.0, TAU, 16, Color(color.r, color.g, color.b, 0.4), 1.0, true)
draw_circle(pos, radius, color)
func _draw_edges(center: Vector2) -> void:
for edge: Array in _edges:
if edge.size() < 2:
continue
var sid_a: String = edge[0]
var sid_b: String = edge[1]
if not _node_positions.has(sid_a) or not _node_positions.has(sid_b):
continue
var pos_a: Vector2 = center + _node_positions[sid_a] * _zoom
var pos_b: Vector2 = center + _node_positions[sid_b] * _zoom
var alpha: float = EDGE_ALPHA
# Highlight edges connected to selected system
if _selected_system == sid_a or _selected_system == sid_b:
alpha = EDGE_SELECTED_ALPHA
var color := Color(COLOR_TEXT.r, COLOR_TEXT.g, COLOR_TEXT.b, alpha)
draw_line(pos_a, pos_b, color, EDGE_WIDTH, true)
func _draw_selection(center: Vector2) -> void:
if not _node_positions.has(_selected_system):
return
var pos: Vector2 = center + _node_positions[_selected_system] * _zoom
draw_arc(pos, SELECTION_RING_RADIUS, 0.0, TAU, 24, COLOR_SELECTION, 1.2, true)
# Draw label next to selection
var node: Dictionary = _node_lookup.get(_selected_system, {})
var label: String = node.get("proper_name", _selected_system)
if label.is_empty():
label = _selected_system
var font := get_theme_default_font()
draw_string(font, pos + Vector2(SELECTION_RING_RADIUS + 4, 4), label, HORIZONTAL_ALIGNMENT_LEFT, -1, 12, COLOR_SELECTION)
func _draw_info_panel(sz: Vector2) -> void:
var node: Dictionary = _node_lookup.get(_selected_system, {})
if node.is_empty():
return
var panel_w: float = 220.0
var panel_h: float = 130.0
var margin: float = 16.0
var panel_pos := Vector2(sz.x - panel_w - margin, margin)
# Background
draw_rect(Rect2(panel_pos, Vector2(panel_w, panel_h)), COLOR_INFO_BG)
draw_rect(Rect2(panel_pos, Vector2(panel_w, panel_h)), Color(COLOR_TEXT.r, COLOR_TEXT.g, COLOR_TEXT.b, 0.15), false, 1.0)
var font := get_theme_default_font()
var y: float = panel_pos.y + 20.0
var x: float = panel_pos.x + 12.0
var line_h: float = 18.0
# System name
var name: String = node.get("proper_name", "")
if name.is_empty():
name = node.get("system_id", "Unknown")
draw_string(font, Vector2(x, y), name, HORIZONTAL_ALIGNMENT_LEFT, -1, 14, COLOR_TEXT)
y += line_h
# System ID
draw_string(font, Vector2(x, y), node.get("system_id", ""), HORIZONTAL_ALIGNMENT_LEFT, -1, 10, COLOR_TEXT_DIM)
y += line_h
# Sector
var sector: String = node.get("geographic_sector", "").replace("_", " ").capitalize()
var sector_color: Color = SECTOR_COLORS.get(node.get("geographic_sector", ""), COLOR_TEXT_DIM)
draw_string(font, Vector2(x, y), "Sector: " + sector, HORIZONTAL_ALIGNMENT_LEFT, -1, 11, sector_color)
y += line_h
# Hop distance
draw_string(font, Vector2(x, y), "Hop distance: " + str(node.get("hop_distance", "?")), HORIZONTAL_ALIGNMENT_LEFT, -1, 11, COLOR_TEXT_DIM)
y += line_h
# Topology
var topo: String = node.get("gate_topology", "").replace("_", " ").capitalize()
draw_string(font, Vector2(x, y), "Topology: " + topo, HORIZONTAL_ALIGNMENT_LEFT, -1, 11, COLOR_TEXT_DIM)
y += line_h
# Gate connections
draw_string(font, Vector2(x, y), "Gates: " + str(node.get("aperture_count", 0)) + " apertures", HORIZONTAL_ALIGNMENT_LEFT, -1, 11, COLOR_TEXT_DIM)
func _draw_title() -> void:
var font := get_theme_default_font()
draw_string(font, Vector2(16, 28), "THE REACH — NAVIGATOR", HORIZONTAL_ALIGNMENT_LEFT, -1, 16, COLOR_TEXT)
draw_string(font, Vector2(16, 44), "Concord Assembly Gate Network — %d Systems" % _nodes.size(), HORIZONTAL_ALIGNMENT_LEFT, -1, 10, COLOR_TEXT_DIM)
func _dot_radius(topology: String) -> float:
match topology:
"hub": return DOT_RADIUS_HUB
"junction": return DOT_RADIUS_JUNCTION
"dead_end": return DOT_RADIUS_DEAD_END
_: return DOT_RADIUS_DEFAULT
# =============================================================================
# Input — selection, pan, zoom
# =============================================================================
func _gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton:
var mb := event as InputEventMouseButton
if mb.pressed:
match mb.button_index:
MOUSE_BUTTON_LEFT:
_handle_click(mb.position)
MOUSE_BUTTON_MIDDLE:
_is_panning = true
_pan_start = mb.position
_pan_start_offset = _pan_offset
MOUSE_BUTTON_WHEEL_UP:
var old_zoom := _zoom
_zoom = clampf(_zoom + ZOOM_STEP, ZOOM_MIN, ZOOM_MAX)
if _zoom != old_zoom:
_dirty = true
MOUSE_BUTTON_WHEEL_DOWN:
var old_zoom := _zoom
_zoom = clampf(_zoom - ZOOM_STEP, ZOOM_MIN, ZOOM_MAX)
if _zoom != old_zoom:
_dirty = true
else:
if mb.button_index == MOUSE_BUTTON_MIDDLE:
_is_panning = false
elif event is InputEventMouseMotion:
var mm := event as InputEventMouseMotion
if _is_panning:
_pan_offset = _pan_start_offset + (mm.position - _pan_start)
_dirty = true
else:
_update_hover(mm.position)
## Find the system_id of the nearest node to screen position, or "" if none within HIT_RADIUS.
func _find_nearest_system(pos: Vector2) -> String:
var sz: Vector2 = get_rect().size
var center: Vector2 = sz * MAP_CENTER_FRACTION + _pan_offset
var best_dist: float = HIT_RADIUS
var best_sid: String = ""
for node: Dictionary in _nodes:
var sid: String = node.get("system_id", "")
if not _node_positions.has(sid):
continue
var node_pos: Vector2 = center + _node_positions[sid] * _zoom
var dist: float = pos.distance_to(node_pos)
if dist < best_dist:
best_dist = dist
best_sid = sid
return best_sid
func _handle_click(pos: Vector2) -> void:
var nearest := _find_nearest_system(pos)
if nearest != "":
_selected_system = nearest
_show_edges = true
else:
_selected_system = ""
_show_edges = false
_dirty = true
func _update_hover(pos: Vector2) -> void:
var nearest := _find_nearest_system(pos)
if nearest != _hovered_system:
_hovered_system = nearest
_dirty = true
+18
View File
@@ -0,0 +1,18 @@
[gd_scene load_steps=2 format=3]
[ext_resource type="Script" path="res://ui/star_map.gd" id="1_starmap"]
; #674: Star map insert module — concentric hop-ring view of the Settled Reach gate network.
; Sector-colored, interactive selection, pan/zoom. Accessible from the insert UI.
; Data source: res://data/star_map_data.json (enriched from star-map.json + systems.db).
; Positioned as full-size overlay. Toggle visibility via set_insert_active() or toggle_visible().
[node name="StarMapRenderer" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_starmap")
+289
View File
@@ -0,0 +1,289 @@
{
"system_id": "GJ 111",
"proper_name": "Helderoog",
"star_type": "F",
"spectral_class": "F5/F6V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ111b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 76.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ111c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.78,
"orbital_period_days": 290.0,
"rotation_period_hours": 23.8,
"atmosphere": "thin",
"biome_summary": "hot_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ111d",
"proper_name": "Greyton",
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": true,
"population": 1200,
"mass_class": "terrestrial",
"surface_gravity": 0.96,
"orbital_period_days": 650.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_4 Afrikaans heritage (daughter colony of Eerste Wacht); 1-aperture dead_end; F5V brightest star on the corridor — white, requires viewport filtering; thick atmosphere, strong magnetic field, vigorous weather; lush native vegetation, active hydrology; written charter governance (codified from Eerste Wacht's customary law); agricultural surplus exported to Eerste Wacht; shared partnership protocols for genetic diversity management; largest population on the deep chain"
},
{
"body_id": "GJ111-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ111e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.64,
"orbital_period_days": 1500.0,
"rotation_period_hours": 27.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ111f",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 4800.0,
"rotation_period_hours": 10.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, two moons"
},
{
"body_id": "GJ111f-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ111f",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.14,
"orbital_period_days": 7.6,
"rotation_period_hours": 182.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ111f-m2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ111f",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 17.2,
"rotation_period_hours": 412.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "small rocky moon, tidally locked"
},
{
"body_id": "GJ111g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 12000.0,
"rotation_period_hours": 36.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ111h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 28000.0,
"rotation_period_hours": 45.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ111i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 60000.0,
"rotation_period_hours": 53.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ111j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 130000.0,
"rotation_period_hours": 31.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ111-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ111-oort-S1",
"proper_name": "Helderoog Horizon",
"orbits_body_id": "GJ111-oort",
"station_type": "horizon",
"population": 25,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 1 aperture; dead_end; connects Eerste Wacht; agricultural surplus freight to parent community; medical and genetic supply receiving; decade-rated reserves"
}
]
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"system_id": "GJ 1111",
"proper_name": "Zenzele",
"star_type": "unusual",
"star_type": "M",
"spectral_class": "M6.5",
"wiki_data": {
"habitable_count": 1,
+5 -5
View File
@@ -193,7 +193,7 @@
"notes": ""
},
{
"body_id": "GJ1156h",
"body_id": "GJ1156i",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 9,
@@ -213,11 +213,11 @@
"notes": ""
},
{
"body_id": "GJ1156h-1",
"body_id": "GJ1156i-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ1156h",
"parent_body_id": "GJ1156i",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
@@ -233,11 +233,11 @@
"notes": ""
},
{
"body_id": "GJ1156h-2",
"body_id": "GJ1156i-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ1156h",
"parent_body_id": "GJ1156i",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"system_id": "GJ 117",
"proper_name": null,
"proper_name": "GJ 117",
"star_type": "M",
"spectral_class": "M1V",
"wiki_data": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"system_id": "GJ 1221",
"proper_name": null,
"proper_name": "GJ 1221",
"star_type": "D",
"spectral_class": "DXP9",
"wiki_data": {
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 1267",
"proper_name": "Saudade",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ1267b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 10.2,
"rotation_period_hours": 244.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ1267c",
"proper_name": "Monsaraz",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 10000,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 72.0,
"rotation_period_hours": 27.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_3 Portuguese heritage; 2-aperture through_route; M0V dim star; founded in solidarity with Recanto's exiles one hop away; corridor supply function to Recanto; community governance (nominal Assembly registration, Commission compliance); three centuries continuous kinship and commerce relationship with Recanto; Guardians of Autonomy sympathy (institutional wariness from founding history)"
},
{
"body_id": "GJ1267-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ1267d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 250.0,
"rotation_period_hours": 25.6,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ1267e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 740.0,
"rotation_period_hours": 29.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ1267f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2100.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ1267g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5600.0,
"rotation_period_hours": 18.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ1267-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ1267-oort-S1",
"proper_name": "Saudade Horizon",
"orbits_body_id": "GJ1267-oort",
"station_type": "horizon",
"population": 220,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Recanto and outer corridor; corridor supply staging; kinship and commerce freight to Recanto"
}
]
}
+289
View File
@@ -0,0 +1,289 @@
{
"system_id": "GJ 127A",
"proper_name": "Dalim",
"star_type": "F",
"spectral_class": "F8V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ127Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.48,
"orbital_period_days": 42.0,
"rotation_period_hours": 17.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ127Ac",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.72,
"orbital_period_days": 180.0,
"rotation_period_hours": 22.6,
"atmosphere": "thin",
"biome_summary": "hot_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ127Ad",
"proper_name": "Harra",
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": true,
"population": 500,
"mass_class": "terrestrial",
"surface_gravity": 0.92,
"orbital_period_days": 550.0,
"rotation_period_hours": 27.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "research",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 Arabic heritage research community; 2-aperture through_route; F8V near-solar star; oxygen-nitrogen atmosphere; volcanic activity in southern hemisphere; geothermal energy from volcanic region; greenhouse agriculture independent of star light cycle; astronomical observation program; geological monitoring network; communications relay for deep corridor; collegial administrative council governance; population includes descendants of founding academics"
},
{
"body_id": "GJ127A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ127Ae",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.60,
"orbital_period_days": 1300.0,
"rotation_period_hours": 31.6,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ127Af",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 4200.0,
"rotation_period_hours": 12.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, two moons"
},
{
"body_id": "GJ127Af-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ127Af",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.10,
"orbital_period_days": 6.2,
"rotation_period_hours": 148.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ127Af-m2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ127Af",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.06,
"orbital_period_days": 14.8,
"rotation_period_hours": 355.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "small rocky moon, tidally locked"
},
{
"body_id": "GJ127Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 9600.0,
"rotation_period_hours": 34.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ127Ah",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 22000.0,
"rotation_period_hours": 43.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ127Ai",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.26,
"orbital_period_days": 48000.0,
"rotation_period_hours": 51.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ127Aj",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.09,
"orbital_period_days": 104000.0,
"rotation_period_hours": 29.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ127A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ127A-oort-S1",
"proper_name": "Dalim Horizon",
"orbits_body_id": "GJ127A-oort",
"station_type": "horizon",
"population": 30,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Entremeio and Candeia corridor; communications relay node for deep corridor"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 138",
"proper_name": "Sertão",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ138b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 9.6,
"rotation_period_hours": 230.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ138c",
"proper_name": "Portel",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 12000,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 70.0,
"rotation_period_hours": 28.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_4 Portuguese heritage ('backcountry'); 2-aperture through_route; M0V dim star; adapted M-dwarf agricultural techniques (supplemental lighting, calibrated irrigation); modest agricultural surplus toward Nascente corridor; community council governance; Commission filed registration only (no resident agents); supply lead times in months"
},
{
"body_id": "GJ138-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ138d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.5,
"orbital_period_days": 240.0,
"rotation_period_hours": 25.2,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ138e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 720.0,
"rotation_period_hours": 29.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ138f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ138g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5200.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ138-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ138-oort-S1",
"proper_name": "Sertão Horizon",
"orbits_body_id": "GJ138-oort",
"station_type": "horizon",
"population": 240,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Pollux corridor and Pedra Funda; agricultural freight staging; Commission registration (compliance on community timeline)"
}
]
}
+5 -5
View File
@@ -213,7 +213,7 @@
"notes": ""
},
{
"body_id": "GJ139h",
"body_id": "GJ139j",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 10,
@@ -233,11 +233,11 @@
"notes": ""
},
{
"body_id": "GJ139h-1",
"body_id": "GJ139j-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ139h",
"parent_body_id": "GJ139j",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
@@ -253,11 +253,11 @@
"notes": ""
},
{
"body_id": "GJ139h-2",
"body_id": "GJ139j-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ139h",
"parent_body_id": "GJ139j",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
+280
View File
@@ -0,0 +1,280 @@
{
"system_id": "GJ 142",
"proper_name": "Leuchtturm",
"star_type": "G",
"spectral_class": "G5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ142b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.5,
"orbital_period_days": 42.0,
"rotation_period_hours": 17.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ142c",
"proper_name": "Jena",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 3000,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 350.0,
"rotation_period_hours": 26.2,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "research",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_3 German heritage ('lighthouse'); 2-aperture spur_end; G5V warm yellow star (warmer than deep_frontier norm); limited arable zones, small research-sized population; three-century astronomical observation archive (deep frontier survey coordinates, spectroscopic data); Veil Institute informal relationship (collegial, professional networks, shared calibration standards); community council governance; Commission minimal presence (infrequent administrative visits); community exports data not crops"
},
{
"body_id": "GJ142d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.68,
"orbital_period_days": 700.0,
"rotation_period_hours": 23.6,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ142-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ142e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2200.0,
"rotation_period_hours": 11.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ142e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ142e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 6.4,
"rotation_period_hours": 153.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ142f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 5600.0,
"rotation_period_hours": 34.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ142g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 13000.0,
"rotation_period_hours": 43.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ142h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 28000.0,
"rotation_period_hours": 52.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ142i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 60000.0,
"rotation_period_hours": 30.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ142j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.09,
"orbital_period_days": 120000.0,
"rotation_period_hours": 25.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ142-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ142-oort-S1",
"proper_name": "Leuchtturm Horizon",
"orbits_body_id": "GJ142-oort",
"station_type": "horizon",
"population": 180,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; spur_end; connects Knotenpunkt and GJ 425A; observatory supply staging; Commission administrative visits; relay array for inner-corridor data transmission"
},
{
"station_id": "GJ142c-S1",
"proper_name": "Sternwarte",
"orbits_body_id": "GJ142c",
"station_type": "research",
"population": 420,
"economic_role": "research",
"docking_class": "standard",
"has_gate_infrastructure": false,
"notes": "deep frontier observatory; precision optical instruments, cryogenic data storage; three-century spectroscopic archive; Veil Institute affiliated researchers; equipment reserve stockpile"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 146",
"proper_name": "GJ 146",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ146b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 10.4,
"rotation_period_hours": 249.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ146c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.78,
"orbital_period_days": 68.0,
"rotation_period_hours": 26.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "marginal HZ candidate; cold, low biodiversity, 'adequate' per surveys; assessed and set aside multiple times; unsettled"
},
{
"body_id": "GJ146-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ146d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.48,
"orbital_period_days": 230.0,
"rotation_period_hours": 25.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ146e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 680.0,
"rotation_period_hours": 29.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ146f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 1900.0,
"rotation_period_hours": 22.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ146g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.07,
"orbital_period_days": 5000.0,
"rotation_period_hours": 17.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ146-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ146-oort-S1",
"proper_name": "GJ 146 Horizon",
"orbits_body_id": "GJ146-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Randgebiet and GJ 853A; corridor waypoint; automated"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 147",
"proper_name": "Entremeio",
"star_type": "F",
"spectral_class": "F9V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ147b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 58.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ147c",
"proper_name": "Almeirim",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 700,
"mass_class": "terrestrial",
"surface_gravity": 0.90,
"orbital_period_days": 480.0,
"rotation_period_hours": 26.6,
"atmosphere": "thin",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 mixed south_reach heritage (Brazilian-Portuguese, Filipino, Indonesian); 2-aperture through_route; F9V near-solar star with distant M-dwarf companion ('the follower'); thin atmosphere requiring supplemental pressure at low elevations; equatorial lakeside settlement in microclimate; elected municipal council governance (four-year terms); last conventional settlement on corridor to Abzu; corridor provisioning services; 40% caloric needs still imported"
},
{
"body_id": "GJ147-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ147d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.66,
"orbital_period_days": 1100.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ147e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 3600.0,
"rotation_period_hours": 11.6,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ147e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ147e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 6.8,
"rotation_period_hours": 163.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ147f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 8800.0,
"rotation_period_hours": 38.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ147g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.39,
"orbital_period_days": 20000.0,
"rotation_period_hours": 47.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ147h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.25,
"orbital_period_days": 44000.0,
"rotation_period_hours": 57.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ147i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.22,
"orbital_period_days": 64000.0,
"rotation_period_hours": 42.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ147j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 96000.0,
"rotation_period_hours": 28.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ147-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ147-oort-S1",
"proper_name": "Entremeio Horizon",
"orbits_body_id": "GJ147-oort",
"station_type": "horizon",
"population": 35,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Nova Estrada and Dalim corridor; last conventional provisioning stop before deep chain toward Abzu; corridor provisioning services"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 167",
"proper_name": "GJ 167",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 0,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ167b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 26.0,
"rotation_period_hours": 19.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ167c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.72,
"orbital_period_days": 190.0,
"rotation_period_hours": 25.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "near-HZ rocky, marginal conditions, unsettled"
},
{
"body_id": "GJ167-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ167d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 560.0,
"rotation_period_hours": 27.2,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ167e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1600.0,
"rotation_period_hours": 11.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ167e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ167e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.4,
"rotation_period_hours": 129.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ167f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4200.0,
"rotation_period_hours": 33.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ167g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 9800.0,
"rotation_period_hours": 42.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ167h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 22000.0,
"rotation_period_hours": 28.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ167i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 48000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ167-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ167-oort-S1",
"proper_name": "GJ 167 Horizon",
"orbits_body_id": "GJ167-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 324A and Helle Wacht; automated relay only; navigation waypoint; no settlement attempt ever made"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 174",
"proper_name": "Tiefenbach",
"star_type": "K",
"spectral_class": "K3V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ174b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 22.0,
"rotation_period_hours": 19.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ174c",
"proper_name": "Clausthal",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 20000,
"mass_class": "terrestrial",
"surface_gravity": 0.90,
"orbital_period_days": 180.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_3 German heritage ('deep creek'); 2-aperture through_route; K3V stable star; agriculturally self-sufficient (three centuries, steadier yields than M-dwarf corridor); community governance (self-reliant, Compact affiliation historical not operational); emergency reserve protocols in continuous operation since founding; Commission compliance maintained on schedule (no visit in current generation); external supply measured in years not months"
},
{
"body_id": "GJ174-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ174d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 560.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, uninhabited"
},
{
"body_id": "GJ174e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1800.0,
"rotation_period_hours": 11.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ174e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ174e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.8,
"rotation_period_hours": 139.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ174f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4600.0,
"rotation_period_hours": 33.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ174g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 10800.0,
"rotation_period_hours": 42.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ174h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 24000.0,
"rotation_period_hours": 28.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ174i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 52000.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ174-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ174-oort-S1",
"proper_name": "Tiefenbach Horizon",
"orbits_body_id": "GJ174-oort",
"station_type": "horizon",
"population": 380,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Altgrund and outer deep_frontier; agricultural freight staging; emergency reserve supply logistics"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 177",
"proper_name": "GJ 177",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ177b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 10.6,
"rotation_period_hours": 254.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ177c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.8,
"orbital_period_days": 68.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable but unremarkable; adequate atmosphere, temperature, water, geology; nothing exceeds parameters in any direction; surveys thorough and unenthusiastic; unsettled"
},
{
"body_id": "GJ177-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ177d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.5,
"orbital_period_days": 220.0,
"rotation_period_hours": 25.2,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ177e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 660.0,
"rotation_period_hours": 29.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ177f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 1800.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ177g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 4800.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ177-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ177-oort-S1",
"proper_name": "GJ 177 Horizon",
"orbits_body_id": "GJ177-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 394 and GJ 425A; automated transit processing; corridor waypoint"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 189",
"proper_name": "Altgrund",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ189b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 9.8,
"rotation_period_hours": 235.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ189c",
"proper_name": "Goslar",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 30000,
"mass_class": "terrestrial",
"surface_gravity": 0.9,
"orbital_period_days": 70.0,
"rotation_period_hours": 27.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_2 German heritage ('old ground'); 2-aperture through_route; M0V dim star; four centuries continuous M-dwarf agriculture (mature worked soil, established cultivars); community governance predating all formal Reach institutions; Compact of Westphalia elder system (warm relations, non-binding); Commission long compliance record; communication relay maintenance as critical infrastructure; absorbed four successive cohorts of crisis refugees across four centuries"
},
{
"body_id": "GJ189-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ189d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 240.0,
"rotation_period_hours": 25.4,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ189e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 720.0,
"rotation_period_hours": 29.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ189f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2000.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ189g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5400.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ189-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ189-oort-S1",
"proper_name": "Altgrund Horizon",
"orbits_body_id": "GJ189-oort",
"station_type": "horizon",
"population": 560,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects inner German frontier corridor; agricultural freight staging; communication relay infrastructure (critical for deep_frontier connectivity); Commission compliance office"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 201",
"proper_name": "GJ 201",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ201b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 28.0,
"rotation_period_hours": 20.2,
"atmosphere": "trace",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, trace atmosphere, uninhabited"
},
{
"body_id": "GJ201c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.82,
"orbital_period_days": 200.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "HZ candidate; geologically stable, hydrologically inert, atmospherically adequate; four surveys across three centuries, each confirming no compelling reason to settle; junction topology noted as potentially strategic if traffic increased by an order of magnitude; unsettled"
},
{
"body_id": "GJ201-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ201d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 580.0,
"rotation_period_hours": 27.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ201e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1900.0,
"rotation_period_hours": 12.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, two captured moons"
},
{
"body_id": "GJ201e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ201e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.1,
"orbital_period_days": 5.6,
"rotation_period_hours": 134.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "captured icy moon, tidally locked"
},
{
"body_id": "GJ201e-m2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ201e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.07,
"orbital_period_days": 13.2,
"rotation_period_hours": 316.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "captured rocky moon, tidally locked"
},
{
"body_id": "GJ201f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4800.0,
"rotation_period_hours": 34.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ201g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 11000.0,
"rotation_period_hours": 43.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ201h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 26000.0,
"rotation_period_hours": 28.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ201i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 54000.0,
"rotation_period_hours": 23.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ201-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ201-oort-S1",
"proper_name": "GJ 201 Horizon",
"orbits_body_id": "GJ201-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 3 apertures; junction; connects Fernlicht, GJ 684A (deep chain), and GJ 481 (Errai spur); last shared node before three diverging corridors; Gate Corporation maintenance rotation (~18 months); automated"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 204",
"proper_name": "Pedra Funda",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ204b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 14.0,
"rotation_period_hours": 336.0,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ204c",
"proper_name": "Mértola",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 15000,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 140.0,
"rotation_period_hours": 27.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_3 Portuguese heritage ('deep stone'); 2-aperture through_route; K5V dim star; religious founding community (synodal governance — religious council evolved into secular administration); three centuries self-sufficient M-dwarf agriculture; agricultural expertise maintained alongside theological conviction; Commission compliance filed on schedule (no visit in decades)"
},
{
"body_id": "GJ204-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ204d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 440.0,
"rotation_period_hours": 25.8,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ204e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 1200.0,
"rotation_period_hours": 29.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ204f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.30,
"orbital_period_days": 3400.0,
"rotation_period_hours": 35.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ204g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 8400.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ204h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.07,
"orbital_period_days": 20000.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ204-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ204-oort-S1",
"proper_name": "Pedra Funda Horizon",
"orbits_body_id": "GJ204-oort",
"station_type": "horizon",
"population": 180,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Sertão corridor and outer deep_frontier; medical supply imports; agricultural freight staging; Commission compliance submissions (no on-site presence)"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 211",
"proper_name": "Encruzilhada",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ211b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 9.4,
"rotation_period_hours": 225.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ211c",
"proper_name": "Almeida",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 10000,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 70.0,
"rotation_period_hours": 28.6,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_4 Portuguese heritage ('crossroads'); 2-aperture through_route (founding requirement — never one gate); M0V dim star; Portuguese M-dwarf farming; strongly autonomist community governance (founded by Gate Silence survivors); disproportionate gate maintenance and contingency investment; Commission gate inspection documentation most thorough in territory"
},
{
"body_id": "GJ211-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ211d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.5,
"orbital_period_days": 240.0,
"rotation_period_hours": 25.2,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ211e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 700.0,
"rotation_period_hours": 29.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ211f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2000.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ211g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5400.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ211-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ211-oort-S1",
"proper_name": "Encruzilhada Horizon",
"orbits_body_id": "GJ211-oort",
"station_type": "horizon",
"population": 340,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 117 and Último Farol; gate maintenance invested at premium levels; contingency supply staging; Commission gate inspection coordination"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 282B",
"proper_name": "Travessia",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ282Bb",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 16.0,
"rotation_period_hours": 20.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ282Bc",
"proper_name": "Belver",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 800,
"mass_class": "terrestrial",
"surface_gravity": 0.82,
"orbital_period_days": 140.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 Portuguese heritage ('beautiful watch'); 2-aperture through_route; K5V dim star; thin atmosphere, low surface water; twenty-year soil amendment cycles before first harvest; community assembly governance (direct democracy, all residents over fifteen); last provisioning stop before deep corridor toward Abzu; vinho de campo local fermented grain beverage; Portuguese loanwords in agricultural vocabulary"
},
{
"body_id": "GJ282B-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ282Bd",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 440.0,
"rotation_period_hours": 26.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ282Be",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 1200.0,
"rotation_period_hours": 30.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ282Bf",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.30,
"orbital_period_days": 3400.0,
"rotation_period_hours": 36.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ282Bg",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 8800.0,
"rotation_period_hours": 23.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ282Bh",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 22000.0,
"rotation_period_hours": 18.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ282B-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ282B-oort-S1",
"proper_name": "Travessia Horizon",
"orbits_body_id": "GJ282B-oort",
"station_type": "horizon",
"population": 45,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects The Narrows and deeper corridor toward GJ 421B; transit provisioning for outbound travelers; biological amendment supply staging"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 309",
"proper_name": "Vorposten",
"star_type": "K",
"spectral_class": "K0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ309b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 30.0,
"rotation_period_hours": 19.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ309c",
"proper_name": "Freystadt",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 2000,
"mass_class": "terrestrial",
"surface_gravity": 0.9,
"orbital_period_days": 280.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_5 German heritage ('outpost'); 2-aperture through_route; K0V stable star; early-generation K-type agriculture (not yet self-sufficient); Compact of Westphalia founding instincts (mutual recognition, minimal external obligations); community compact governance; Compact agricultural consultation and equipment support (time-limited); Commission registration filed but no visit"
},
{
"body_id": "GJ309-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ309d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 720.0,
"rotation_period_hours": 27.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ309e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2200.0,
"rotation_period_hours": 11.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ309e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ309e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.6,
"rotation_period_hours": 134.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ309f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 5400.0,
"rotation_period_hours": 34.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ309g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 12400.0,
"rotation_period_hours": 42.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ309h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.26,
"orbital_period_days": 26000.0,
"rotation_period_hours": 50.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ309i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 54000.0,
"rotation_period_hours": 29.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ309-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ309-oort-S1",
"proper_name": "Vorposten Horizon",
"orbits_body_id": "GJ309-oort",
"station_type": "horizon",
"population": 140,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Weitblick and Randgebiet; Compact settlement support coordination; first-generation infrastructure still building"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 324A",
"proper_name": null,
"star_type": "K",
"spectral_class": "K0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ324Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 28.0,
"rotation_period_hours": 19.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ324Ac",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.82,
"orbital_period_days": 280.0,
"rotation_period_hours": 25.6,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable zone; marginal agricultural potential per 180-year-old survey; unsettled — every cohort that assessed it moved on; no more recent survey commissioned"
},
{
"body_id": "GJ324A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ324Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 720.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ324Ae",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2200.0,
"rotation_period_hours": 11.6,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ324Ae-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ324Ae",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.8,
"rotation_period_hours": 139.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ324Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 5600.0,
"rotation_period_hours": 34.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ324Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 12800.0,
"rotation_period_hours": 42.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ324Ah",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.26,
"orbital_period_days": 28000.0,
"rotation_period_hours": 50.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ324Ai",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 58000.0,
"rotation_period_hours": 29.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ324A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ324A-oort-S1",
"proper_name": "GJ 324A Horizon",
"orbits_body_id": "GJ324A-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; spur_end; connects Knotenpunkt and GJ 167; self-maintaining alien construction; automated relay hardware (wave_3 corridor mapping era); no human servicing in living memory; open charter site (no qualifying application in three centuries)"
}
]
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"system_id": "GJ 325B",
"proper_name": null,
"proper_name": "GJ 325B",
"star_type": "K",
"spectral_class": "K6 V",
"wiki_data": {
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 3403",
"proper_name": "GJ 3403",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ3403b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 26.0,
"rotation_period_hours": 19.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ3403c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.84,
"orbital_period_days": 195.0,
"rotation_period_hours": 25.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable zone; meets minimum settlement parameters across all categories; no compelling argument for or against; surveyed multiple times, never claimed; unsettled"
},
{
"body_id": "GJ3403-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ3403d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 560.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ3403e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1800.0,
"rotation_period_hours": 11.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ3403e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ3403e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.8,
"rotation_period_hours": 139.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ3403f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4600.0,
"rotation_period_hours": 34.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ3403g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 10600.0,
"rotation_period_hours": 42.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ3403h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 24000.0,
"rotation_period_hours": 28.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ3403i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 50000.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ3403-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ3403-oort-S1",
"proper_name": "GJ 3403 Horizon",
"orbits_body_id": "GJ3403-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Neugrund and GJ 656; corridor node; automated"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 349",
"proper_name": "Randgebiet",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ349b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 9.8,
"rotation_period_hours": 235.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ349c",
"proper_name": "Herborn",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 1500,
"mass_class": "terrestrial",
"surface_gravity": 0.84,
"orbital_period_days": 70.0,
"rotation_period_hours": 28.2,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_5 German heritage ('border territory'); 2-aperture through_route; M0V dim star; second/third generation M-dwarf agriculture (viable, not yet surplus); community governance (Compact cultural inheritance, not formal membership); basic infrastructure and fabrication; limited medical capability (two practitioners); founded by second-generation Vorposten settlers"
},
{
"body_id": "GJ349-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ349d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.48,
"orbital_period_days": 240.0,
"rotation_period_hours": 25.6,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ349e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 720.0,
"rotation_period_hours": 29.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ349f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ349g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5200.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ349-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ349-oort-S1",
"proper_name": "Randgebiet Horizon",
"orbits_body_id": "GJ349-oort",
"station_type": "horizon",
"population": 65,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Vorposten and outer corridor; supply line staging; no external faction or Commission presence"
}
]
}
+5 -5
View File
@@ -213,7 +213,7 @@
"notes": ""
},
{
"body_id": "GJ34Ah",
"body_id": "GJ34Aj",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 10,
@@ -233,11 +233,11 @@
"notes": ""
},
{
"body_id": "GJ34Ah-1",
"body_id": "GJ34Aj-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ34Ah",
"parent_body_id": "GJ34Aj",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
@@ -253,11 +253,11 @@
"notes": ""
},
{
"body_id": "GJ34Ah-2",
"body_id": "GJ34Aj-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ34Ah",
"parent_body_id": "GJ34Aj",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
+5 -5
View File
@@ -193,7 +193,7 @@
"notes": ""
},
{
"body_id": "GJ34Bg",
"body_id": "GJ34Bi",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 9,
@@ -213,11 +213,11 @@
"notes": ""
},
{
"body_id": "GJ34Bg-1",
"body_id": "GJ34Bi-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ34Bg",
"parent_body_id": "GJ34Bi",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
@@ -233,11 +233,11 @@
"notes": ""
},
{
"body_id": "GJ34Bg-2",
"body_id": "GJ34Bi-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ34Bg",
"parent_body_id": "GJ34Bi",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 354A",
"proper_name": "GJ 354A",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ354Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 11.4,
"rotation_period_hours": 273.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ354Ac",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.76,
"orbital_period_days": 72.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "HZ candidate; thin atmosphere — technically habitable but pressure differential requires expensive engineering; noted, assessed as solvable at cost, determined not worth the cost at hop 12; unsettled"
},
{
"body_id": "GJ354A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ354Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.5,
"orbital_period_days": 240.0,
"rotation_period_hours": 25.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ354Ae",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 720.0,
"rotation_period_hours": 29.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ354Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ354Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5200.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ354A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ354A-oort-S1",
"proper_name": "GJ 354A Horizon",
"orbits_body_id": "GJ354A-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 656 and GJ 684B; corridor waypoint; automated"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 394",
"proper_name": "GJ 394",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ394b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 11.0,
"rotation_period_hours": 264.0,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ394c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.74,
"orbital_period_days": 66.0,
"rotation_period_hours": 26.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "marginal HZ outer edge; cold, dry, atmospherically sparse; meets minimum parameters per surveys; suitable for emergency shelter only; unsettled"
},
{
"body_id": "GJ394-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ394d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.48,
"orbital_period_days": 220.0,
"rotation_period_hours": 25.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ394e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 660.0,
"rotation_period_hours": 29.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ394f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 1800.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ394g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 4800.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ394-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ394-oort-S1",
"proper_name": "GJ 394 Horizon",
"orbits_body_id": "GJ394-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 177 and Einde; the anteroom — empty corridor node before the dead-end terminus; automated"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 3943",
"proper_name": "Brandpunt",
"star_type": "binary",
"spectral_class": "K5V+M3V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ3943b",
"proper_name": "Skuiling",
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": true,
"population": 1800,
"mass_class": "terrestrial",
"surface_gravity": 0.62,
"orbital_period_days": 130.0,
"rotation_period_hours": 26.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": "ice",
"economic_role": "research",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": "research_export",
"notes": "polar ice extraction provides water supply and habitat foundation; pressurized dome settlements anchored to ice-extraction framework; Agricultural Spectrum Research Compact facilities; primary K5V+M3V binary oscillation testing environment; 1,800 permanent residents plus rotating research cohort from member communities"
},
{
"body_id": "GJ3943-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ3943c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.48,
"orbital_period_days": 400.0,
"rotation_period_hours": 25.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ3943d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 1100.0,
"rotation_period_hours": 29.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ3943e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 3000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ3943f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 7600.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ3943g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.06,
"orbital_period_days": 18000.0,
"rotation_period_hours": 15.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far distant ice dwarf"
},
{
"body_id": "GJ3943-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ3943-oort-S1",
"proper_name": "Brandpunt Horizon",
"orbits_body_id": "GJ3943-oort",
"station_type": "horizon",
"population": 120,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Pedra Seca and Eerste Wacht; wave_5 settlement; Agricultural Spectrum Research Compact operations; Commission research contract; researcher rotation transit; K5V+M3V binary (shifting light registers as color oscillation on viewport)"
}
]
}
+4 -4
View File
@@ -1,6 +1,6 @@
{
"system_id": "GJ 3988",
"proper_name": null,
"proper_name": "GJ 3988",
"star_type": "unusual",
"spectral_class": "k-m",
"wiki_data": {
@@ -61,7 +61,7 @@
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"surface_gravity": 0.4,
"orbital_period_days": 86.0,
"rotation_period_hours": 22.4,
"atmosphere": "trace",
@@ -81,7 +81,7 @@
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.30,
"surface_gravity": 0.3,
"orbital_period_days": 260.0,
"rotation_period_hours": 26.4,
"atmosphere": "trace",
@@ -101,7 +101,7 @@
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.10,
"surface_gravity": 0.1,
"orbital_period_days": 780.0,
"rotation_period_hours": 20.2,
"atmosphere": "none",
+4 -4
View File
@@ -1,8 +1,8 @@
{
"system_id": "GJ 4056",
"proper_name": null,
"star_type": "unusual",
"spectral_class": "g",
"proper_name": "GJ 4056",
"star_type": "M",
"spectral_class": "M4V",
"wiki_data": {
"habitable_count": 0,
"inhabited_count": 0,
@@ -121,7 +121,7 @@
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.10,
"surface_gravity": 0.1,
"orbital_period_days": 2400.0,
"rotation_period_hours": 20.6,
"atmosphere": "none",
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 407",
"proper_name": "Einde",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ407b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 26.0,
"rotation_period_hours": 19.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ407c",
"proper_name": "Sutherland",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 3000,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 200.0,
"rotation_period_hours": 26.6,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_5 Afrikaans/Dutch heritage ('the end'); 1-aperture dead_end; K2V adequate star; agricultural by design and conviction (no extraction, no heavy industry, no large-scale industrial processes); community assembly governance (full resident participation, slow, considered correct); minimum Commission compliance; extended isolation stockpiles; reached only through unsettled GJ 394"
},
{
"body_id": "GJ407-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ407d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 580.0,
"rotation_period_hours": 27.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ407e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1800.0,
"rotation_period_hours": 11.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ407e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ407e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.8,
"rotation_period_hours": 139.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ407f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4600.0,
"rotation_period_hours": 34.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ407g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 10800.0,
"rotation_period_hours": 42.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ407h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 24000.0,
"rotation_period_hours": 28.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ407i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 50000.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ407-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ407-oort-S1",
"proper_name": "Einde Horizon",
"orbits_body_id": "GJ407-oort",
"station_type": "horizon",
"population": 65,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 1 aperture; dead_end; connects GJ 394 (unsettled anteroom); single supply corridor; isolation stockpile staging; minimum Commission compliance"
}
]
}
+5 -5
View File
@@ -44,12 +44,12 @@
"surface_gravity": 0.89,
"orbital_period_days": 200.0,
"rotation_period_hours": 24.8,
"atmosphere": "breathable",
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "rivers-lakes",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "distributed-rural",
"industrial_corridor": "west_reach",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; K2V habitable zone; genuine agricultural potential found by founding pastoral cooperative; temperate conditions, good soil, river-valley farmland; Wave 3 settlement ~300 years old; population peaked ~80 years ago and in slow consistent decline as young adults leave for inner-corridor systems offering more economic variety; self-governing council of landholders (reformed ~150 years ago to include non-agricultural members); no Assembly or Compact presence; Gate Corporation maintenance rotation is extent of institutional contact"
},
{
@@ -165,7 +165,7 @@
"orbital_period_days": 27.8,
"rotation_period_hours": 667.2,
"atmosphere": "none",
"biome_summary": "ice",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 421B",
"proper_name": "Pedra Seca",
"star_type": "K",
"spectral_class": "K7V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ421Bb",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 15.0,
"rotation_period_hours": 360.0,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ421Bc",
"proper_name": "Serpa",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 800,
"mass_class": "terrestrial",
"surface_gravity": 0.84,
"orbital_period_days": 115.0,
"rotation_period_hours": 27.6,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_3 Southern African heritage (Afrikaans/Xhosa, Portuguese naming); 2-aperture through_route; K7V dim star; arid — shallow aquifers, seasonal seep-springs, measurable but rare precipitation; cistern and condensation collector network (built before permanent structures); community council governance (water allocation as primary function); water sales to deeper corridor travelers (charter provisions against profiteering); drought-resistant grains and root vegetables"
},
{
"body_id": "GJ421B-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ421Bd",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 460.0,
"rotation_period_hours": 27.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ421Be",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 1300.0,
"rotation_period_hours": 30.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ421Bf",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.30,
"orbital_period_days": 3600.0,
"rotation_period_hours": 36.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ421Bg",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 9200.0,
"rotation_period_hours": 23.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ421Bh",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 22000.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ421B-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ421B-oort-S1",
"proper_name": "Pedra Seca Horizon",
"orbits_body_id": "GJ421B-oort",
"station_type": "horizon",
"population": 40,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Travessia and GJ 3943; water provisioning for deeper corridor travelers; last reliably watered stop before unsettled stretch"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 425A",
"proper_name": "GJ 425A",
"star_type": "K",
"spectral_class": "K4V",
"wiki_data": {
"habitable_count": 0,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ425Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 18.0,
"rotation_period_hours": 19.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ425Ac",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.66,
"orbital_period_days": 155.0,
"rotation_period_hours": 25.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "near-HZ rocky, marginal conditions, unsettled"
},
{
"body_id": "GJ425A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ425Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.48,
"orbital_period_days": 480.0,
"rotation_period_hours": 26.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ425Ae",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 1400.0,
"rotation_period_hours": 30.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ425Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 3800.0,
"rotation_period_hours": 36.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ425Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 9600.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ425Ah",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.07,
"orbital_period_days": 24000.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ425A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ425A-oort-S1",
"proper_name": "GJ 425A Horizon",
"orbits_body_id": "GJ425A-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Leuchtturm and GJ 177; automated relay hardware; minimal transit traffic; unmaintained gap in Leuchtturm corridor"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 428A",
"proper_name": "Fluchtburg",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ428Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 16.0,
"rotation_period_hours": 19.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ428Ac",
"proper_name": "Fritzlar",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 14000,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 145.0,
"rotation_period_hours": 27.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_4 German heritage ('refuge castle'); 2-aperture through_route; K5V stable star; unauthorized settlement (no Assembly registration, no Commission presence); Founding Refusals governance (codified principles on limits of institutional authority); agricultural surplus; transit hospitality services; quiet corridor influence in deep_frontier oral tradition; Guardians of Autonomy declined formal affiliation"
},
{
"body_id": "GJ428A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ428Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.54,
"orbital_period_days": 440.0,
"rotation_period_hours": 26.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ428Ae",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1400.0,
"rotation_period_hours": 12.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ428Ae-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ428Ae",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.10,
"orbital_period_days": 5.4,
"rotation_period_hours": 129.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ428Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 3800.0,
"rotation_period_hours": 33.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ428Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 9000.0,
"rotation_period_hours": 42.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ428Ah",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 21000.0,
"rotation_period_hours": 28.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ428Ai",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 46000.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ428A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ428A-oort-S1",
"proper_name": "Fluchtburg Horizon",
"orbits_body_id": "GJ428A-oort",
"station_type": "horizon",
"population": 280,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 69 and Fernlicht corridor; unauthorized (no Assembly registration); transit hospitality; agricultural freight staging"
}
]
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"system_id": "GJ 434",
"proper_name": null,
"proper_name": "GJ 434",
"star_type": "M",
"spectral_class": "M1Vvar",
"wiki_data": {
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 481",
"proper_name": "Orchard's End",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ481b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 28.0,
"rotation_period_hours": 20.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ481c",
"proper_name": "Pershore",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 4000,
"mass_class": "terrestrial",
"surface_gravity": 0.92,
"orbital_period_days": 200.0,
"rotation_period_hours": 26.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_4 mixed south_reach heritage (Orchard family founding expedition); 2-aperture spur_end; K2V amber-warm agricultural star; unusually favorable conditions for hop 14; adapted stone-fruit orchards visible from orbit (pale amber stripe in fruiting season, six generations selective cultivation); cooperative council governance (founding charter, expanded by amendment to include non-founding families); net food exporter; no Syndic affiliation, no corporate supply contracts by charter"
},
{
"body_id": "GJ481-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ481d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.60,
"orbital_period_days": 580.0,
"rotation_period_hours": 27.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ481e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1900.0,
"rotation_period_hours": 12.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ481e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ481e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 6.4,
"rotation_period_hours": 153.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ481f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4800.0,
"rotation_period_hours": 34.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ481g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 11000.0,
"rotation_period_hours": 43.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ481h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 26000.0,
"rotation_period_hours": 29.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ481i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 54000.0,
"rotation_period_hours": 23.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ481-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ481-oort-S1",
"proper_name": "Orchard's End Horizon",
"orbits_body_id": "GJ481-oort",
"station_type": "horizon",
"population": 80,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; spur_end; connects Errai corridor; agricultural surplus freight staging; no Commission or Syndic presence"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 482B",
"proper_name": "Travessa",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ482Bb",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 24.0,
"rotation_period_hours": 19.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ482Bc",
"proper_name": "Constância",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 8000,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 200.0,
"rotation_period_hours": 26.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "commercial",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 Portuguese heritage ('crossing'); 2-aperture through_route; K2V stable star; transit services economy (freight handling, vessel servicing, cold storage, bond warehousing); adequate local food production without surplus; Syndic commercial standing office (formal bond certification); community council governance; Commission nominal (documentation filed via Syndic, no resident personnel)"
},
{
"body_id": "GJ482B-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ482Bd",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 560.0,
"rotation_period_hours": 27.6,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ482Be",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1800.0,
"rotation_period_hours": 11.6,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ482Be-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ482Be",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.8,
"rotation_period_hours": 139.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ482Bf",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4600.0,
"rotation_period_hours": 33.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ482Bg",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 10600.0,
"rotation_period_hours": 42.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ482Bh",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 24000.0,
"rotation_period_hours": 28.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ482Bi",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 50000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ482B-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ482B-oort-S1",
"proper_name": "Travessa Horizon",
"orbits_body_id": "GJ482B-oort",
"station_type": "horizon",
"population": 620,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Posto Avançado and Dois Sóis; freight handling and cold storage infrastructure; Syndic commercial standing office (bond certification, transit documentation); vessel servicing"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 5",
"proper_name": "GJ 5",
"star_type": "K",
"spectral_class": "K0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ5b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 30.0,
"rotation_period_hours": 19.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ5c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 275.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable zone; good agricultural potential per survey; stable geology, sufficient water; part of potential GJ 524–GJ 5–Ouplaas agricultural chain; unsettled — Ouplaas residents have complex feelings about corridor development"
},
{
"body_id": "GJ5-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ5d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 720.0,
"rotation_period_hours": 27.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ5e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2200.0,
"rotation_period_hours": 11.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ5e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ5e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 6.2,
"rotation_period_hours": 148.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ5f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 5400.0,
"rotation_period_hours": 34.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ5g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 12400.0,
"rotation_period_hours": 42.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ5h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 28000.0,
"rotation_period_hours": 28.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ5i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 58000.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ5-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ5-oort-S1",
"proper_name": "GJ 5 Horizon",
"orbits_body_id": "GJ5-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 524 and Ouplaas; empty corridor between unclaimed G-type and oldest deep_frontier settlement; automated"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 501B",
"proper_name": "Candeia",
"star_type": "F",
"spectral_class": "F5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ501Bb",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 68.0,
"rotation_period_hours": 19.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ501Bc",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.74,
"orbital_period_days": 260.0,
"rotation_period_hours": 21.8,
"atmosphere": "thin",
"biome_summary": "hot_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ501Bd",
"proper_name": "Limiar",
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": true,
"population": 43,
"mass_class": "terrestrial",
"surface_gravity": 0.94,
"orbital_period_days": 650.0,
"rotation_period_hours": 25.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_5 Portuguese heritage waypoint community; 2-aperture through_route; F5V bright star; dense atmosphere, geologically stable; first-generation greenhouse agriculture; waypoint provisioning station for deep corridor transit; community consensus governance; most supply-dependent settlement on deep corridor"
},
{
"body_id": "GJ501B-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ501Be",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.68,
"orbital_period_days": 1400.0,
"rotation_period_hours": 29.6,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ501Bf",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 5200.0,
"rotation_period_hours": 13.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ501Bf-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ501Bf",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.09,
"orbital_period_days": 8.4,
"rotation_period_hours": 201.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ501Bg",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 11400.0,
"rotation_period_hours": 32.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ501Bh",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.32,
"orbital_period_days": 26000.0,
"rotation_period_hours": 41.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ501Bi",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.24,
"orbital_period_days": 56000.0,
"rotation_period_hours": 49.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ501Bj",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.10,
"orbital_period_days": 118000.0,
"rotation_period_hours": 26.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ501B-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ501B-oort-S1",
"proper_name": "Candeia Horizon",
"orbits_body_id": "GJ501B-oort",
"station_type": "horizon",
"population": 12,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Dalim and Skemeraand corridor; waypoint reprovisioning; smallest horizon crew on the deep corridor"
}
]
}
+289
View File
@@ -0,0 +1,289 @@
{
"system_id": "GJ 524",
"proper_name": "GJ 524",
"star_type": "G",
"spectral_class": "G5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ524b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 48.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ524c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.96,
"orbital_period_days": 350.0,
"rotation_period_hours": 25.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable zone; exceptional — temperate climate, rich soil, diverse biosphere, no atmospheric processing needed; five survey reports across two centuries all recommend settlement; three feasibility studies funded, no expedition materialized; the deep frontier's best unclaimed world; unsettled"
},
{
"body_id": "GJ524d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.68,
"orbital_period_days": 780.0,
"rotation_period_hours": 23.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ524-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ524e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2400.0,
"rotation_period_hours": 10.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, two moons"
},
{
"body_id": "GJ524e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ524e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.14,
"orbital_period_days": 7.2,
"rotation_period_hours": 172.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ524e-m2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ524e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 16.4,
"rotation_period_hours": 393.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "small rocky moon, tidally locked"
},
{
"body_id": "GJ524f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 6200.0,
"rotation_period_hours": 35.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ524g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 14000.0,
"rotation_period_hours": 43.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ524h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 32000.0,
"rotation_period_hours": 52.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ524i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 68000.0,
"rotation_period_hours": 30.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ524j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.09,
"orbital_period_days": 140000.0,
"rotation_period_hours": 25.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ524-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ524-oort-S1",
"proper_name": "GJ 524 Horizon",
"orbits_body_id": "GJ524-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Saudade and GJ 5; corridor transit past the deep frontier's most exceptional unclaimed world; automated; Assembly territorial survey archive registration"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 528A",
"proper_name": "Ouplaas",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ528Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 10.8,
"rotation_period_hours": 259.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ528Ac",
"proper_name": "Klaarstroom",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 22000,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 74.0,
"rotation_period_hours": 28.2,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_2 Afrikaans heritage ('old farm'); 2-aperture through_route; M0V dim star; oldest continuously worked agricultural settlement in deep_frontier (four centuries); family-representative council governance (unchanged for two hundred years); courteous indifference to Reach institutions; food surplus traded through Cairn pocket chain to Skuilplek; Guardians of Autonomy informal community; agricultural tempo — planning in decades"
},
{
"body_id": "GJ528A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ528Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 260.0,
"rotation_period_hours": 26.2,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ528Ae",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 780.0,
"rotation_period_hours": 30.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ528Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2200.0,
"rotation_period_hours": 23.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ528Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5800.0,
"rotation_period_hours": 19.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ528A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ528A-oort-S1",
"proper_name": "Ouplaas Horizon",
"orbits_body_id": "GJ528A-oort",
"station_type": "horizon",
"population": 240,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Skuilplek and outer Cairn pocket; agricultural freight staging; Commission liaison transit point (infrequent, courteous hospitality)"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 532",
"proper_name": "Kettenschmied",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ532b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 18.0,
"rotation_period_hours": 20.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ532c",
"proper_name": "Iserlohn",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 1500,
"mass_class": "terrestrial",
"surface_gravity": 0.80,
"orbital_period_days": 140.0,
"rotation_period_hours": 27.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": "mining",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": "component_fabrication",
"notes": "primary inhabited world; wave_3 German heritage ('Iserlohn needle and wire town'); 2-aperture through_route; K5V dim star; marginal surface (thin atmosphere, limited water); pressurized industrial habitation; guild-structure cooperative governance (craft qualification membership, non-guild residents vote on community matters only); metallic asteroid field mining + fabrication (chain, cable, structural hardware, fasteners); deep frontier's most reliable source of fabricated metal components; food entirely imported via corridor trade; six-month emergency food reserve mandated by charter"
},
{
"body_id": "GJ532-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": null,
"rotation_period_hours": null,
"atmosphere": null,
"biome_summary": null,
"hydrosphere": null,
"economic_role": "mining",
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "metallic asteroid field — ferrous and rare-earth concentrations; primary resource for fabrication; active extraction"
},
{
"body_id": "GJ532d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 440.0,
"rotation_period_hours": 26.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ532e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1400.0,
"rotation_period_hours": 12.8,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner gas giant; gravitational dynamics help sustain metallic asteroid field stability"
},
{
"body_id": "GJ532f",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 3800.0,
"rotation_period_hours": 11.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant"
},
{
"body_id": "GJ532g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 9600.0,
"rotation_period_hours": 34.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ532h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 22000.0,
"rotation_period_hours": 28.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ532i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.26,
"orbital_period_days": 46000.0,
"rotation_period_hours": 44.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ532j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 96000.0,
"rotation_period_hours": 23.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ532-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ532-oort-S1",
"proper_name": "Kettenschmied Horizon",
"orbits_body_id": "GJ532-oort",
"station_type": "horizon",
"population": 120,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 904 and Sonnenkap corridor; fabricated metal component freight staging; food import receiving"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 546",
"proper_name": "Eerste Wacht",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ546b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 17.0,
"rotation_period_hours": 20.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ546c",
"proper_name": "Leliefontein",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 400,
"mass_class": "terrestrial",
"surface_gravity": 0.82,
"orbital_period_days": 140.0,
"rotation_period_hours": 27.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_2 Afrikaans heritage ('lily spring'); 2-aperture through_route; K5V dim star; thin atmosphere, limited water; single reliable subsurface aquifer; settlement built into rocky terrain near aquifer; elder council governance (founding families, five centuries customary law); partnership protocols for genetic diversity management; local Afrikaans variant after 500 years linguistic drift; self-sufficient (manufactures most needs from local materials); decade-rated supply interruption stockpiles"
},
{
"body_id": "GJ546-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ546d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 440.0,
"rotation_period_hours": 27.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ546e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 1200.0,
"rotation_period_hours": 30.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ546f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.30,
"orbital_period_days": 3400.0,
"rotation_period_hours": 37.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ546g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 8800.0,
"rotation_period_hours": 23.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ546h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 22000.0,
"rotation_period_hours": 19.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ546-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ546-oort-S1",
"proper_name": "Eerste Wacht Horizon",
"orbits_body_id": "GJ546-oort",
"station_type": "horizon",
"population": 20,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 3943 gap and GJ 111; wave_2 anomaly at hop 18 — oldest settlement on the deep corridor; Commission irregular maintenance visits; community courteous and uninterested in extended interaction"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 556",
"proper_name": "Recanto",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ556b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 9.4,
"rotation_period_hours": 225.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ556c",
"proper_name": "Idanha",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 8000,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 70.0,
"rotation_period_hours": 27.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 Portuguese heritage ('retreat'); 1-aperture dead_end; M0V dim star; substantially self-sufficient by design (agricultural + fabrication); emergency council governance (founding emergency framework made permanent by precedent); zero voluntary compliance reporting; reflexive suspicion of external authority; contingency stores against gate disruption (duration not publicly stated)"
},
{
"body_id": "GJ556-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ556d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 240.0,
"rotation_period_hours": 25.4,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ556e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 720.0,
"rotation_period_hours": 29.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ556f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2000.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ556g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5400.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ556-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ556-oort-S1",
"proper_name": "Recanto Horizon",
"orbits_body_id": "GJ556-oort",
"station_type": "horizon",
"population": 80,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 1 aperture; dead_end; connects GJ 1267; single-point supply line; no external faction or institutional presence; contingency supply staging"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 598",
"proper_name": "Helle Wacht",
"star_type": "F",
"spectral_class": "F5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ598b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.54,
"orbital_period_days": 72.0,
"rotation_period_hours": 17.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ598c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.76,
"orbital_period_days": 280.0,
"rotation_period_hours": 23.4,
"atmosphere": "thin",
"biome_summary": "hot_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, desiccated, uninhabited"
},
{
"body_id": "GJ598d",
"proper_name": "Freudenberg",
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": true,
"population": 2500,
"mass_class": "terrestrial",
"surface_gravity": 0.94,
"orbital_period_days": 650.0,
"rotation_period_hours": 27.2,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_5 German heritage ('bright watch'); 2-aperture through_route; F5V bright star — genuine agricultural advantage; Compact of Westphalia dissidents (zero institutional obligations founding premise); community building institutions from scratch while debating their philosophical basis; early agricultural success from favorable F-type conditions; increasing local fabrication toward self-sufficiency; no formal affiliations by design"
},
{
"body_id": "GJ598-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ598e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.62,
"orbital_period_days": 1500.0,
"rotation_period_hours": 26.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, uninhabited"
},
{
"body_id": "GJ598f",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 4800.0,
"rotation_period_hours": 10.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ598f-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ598f",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 7.4,
"rotation_period_hours": 177.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ598g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 11000.0,
"rotation_period_hours": 35.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ598h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 26000.0,
"rotation_period_hours": 44.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ598i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 56000.0,
"rotation_period_hours": 52.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ598j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 110000.0,
"rotation_period_hours": 30.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ598-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ598-oort-S1",
"proper_name": "Helle Wacht Horizon",
"orbits_body_id": "GJ598-oort",
"station_type": "horizon",
"population": 85,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Weitblick and outer deep_frontier; minimum Commission compliance for gate access maintained; no institutional representation by design"
}
]
}
+1 -1
View File
@@ -70,7 +70,7 @@
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_1 German heritage ('edge'); 2-aperture through_route; F2III bright giant — hot equator, settlement in polar and temperate zones; open-field agriculture with substantial surplus; light manufacturing (four centuries institutional investment); Council of Rand governance (nine seats, staggered terms, founding charter continuity); Compact of Westphalia founding member and treaty drafter; five centuries continuous self-governance; oldest governing body in outer west"
"notes": "primary inhabited world; wave_1 German heritage ('edge'); 2-aperture through_route; F2III bright giant — significantly more UV-intense than a main-sequence F; equatorial zones inhospitable without shielding, settlement concentrated in polar and high-latitude temperate regions; star is post-main-sequence and progressing toward giant phase on geological timescales, but current habitability is stable for millions of years; open-field agriculture with substantial surplus; light manufacturing (four centuries institutional investment); Council of Rand governance (nine seats, staggered terms, founding charter continuity); Compact of Westphalia founding member and treaty drafter; five centuries continuous self-governance; oldest governing body in outer west"
},
{
"body_id": "GJ601A-belt",
+280
View File
@@ -0,0 +1,280 @@
{
"system_id": "GJ 61",
"proper_name": "Fernlicht",
"star_type": "G",
"spectral_class": "G5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ61b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 48.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ61c",
"proper_name": "Wolfenbüttel",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 8000,
"mass_class": "terrestrial",
"surface_gravity": 0.94,
"orbital_period_days": 350.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "research",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_3 German heritage ('far light'); 2-aperture spur_end; G5V warm yellow star — geographic anomaly at hop 12, genuine comfort; scholar-exile community (three centuries continuous research tradition); observational astronomy, native ecology biology, secession-period historiography; no formal university or degree authority; community council governance; no Assembly registration beyond minimum transit filing; neighborly relationship with Fluchtburg (scholars and deserters)"
},
{
"body_id": "GJ61d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.70,
"orbital_period_days": 780.0,
"rotation_period_hours": 24.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ61-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ61e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2600.0,
"rotation_period_hours": 11.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ61e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ61e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 6.8,
"rotation_period_hours": 163.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ61f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 6400.0,
"rotation_period_hours": 35.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ61g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 14000.0,
"rotation_period_hours": 44.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ61h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 32000.0,
"rotation_period_hours": 52.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ61i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 68000.0,
"rotation_period_hours": 30.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ61j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.09,
"orbital_period_days": 140000.0,
"rotation_period_hours": 25.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ61-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ61-oort-S1",
"proper_name": "Fernlicht Horizon",
"orbits_body_id": "GJ61-oort",
"station_type": "horizon",
"population": 280,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; spur_end; connects Fluchtburg corridor; technical supply staging; scholarly exchange logistics"
},
{
"station_id": "GJ61c-S1",
"proper_name": "Bibliothek",
"orbits_body_id": "GJ61c",
"station_type": "research",
"population": 620,
"economic_role": "research",
"docking_class": "standard",
"has_gate_infrastructure": false,
"notes": "scholarly archive and research facility; observational astronomy (250+ years continuous), native ecology biology, secession-period historiography; instrument fabrication workshop; selective archive access protocols"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 616",
"proper_name": "GJ 616",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ616b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 28.0,
"rotation_period_hours": 20.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ616c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 200.0,
"rotation_period_hours": 26.2,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable zone; meets settlement criteria fully; breathable atmosphere, stable geology, adequate water; at hop eight this would be settled — at hop twelve the distance defeats every proposal; unsettled"
},
{
"body_id": "GJ616-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ616d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 580.0,
"rotation_period_hours": 27.6,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ616e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1800.0,
"rotation_period_hours": 12.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ616e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ616e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 6.2,
"rotation_period_hours": 148.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ616f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4800.0,
"rotation_period_hours": 34.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ616g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 11000.0,
"rotation_period_hours": 42.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ616h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 26000.0,
"rotation_period_hours": 28.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ616i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 54000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ616-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ616-oort-S1",
"proper_name": "GJ 616 Horizon",
"orbits_body_id": "GJ616-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 853A and Errai corridor; habitable world below that every proposal has failed to settle; automated"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 656",
"proper_name": "GJ 656",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ656b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 10.8,
"rotation_period_hours": 259.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ656c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.82,
"orbital_period_days": 68.0,
"rotation_period_hours": 26.8,
"atmosphere": "standard",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable but perpetually overcast; persistent low cloud cover reduces already dim M-dwarf light further; breathable, adequate water, minimum biological prerequisites met; settlement proposals consistently abandoned after noting permanent grey; unsettled"
},
{
"body_id": "GJ656-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ656d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.5,
"orbital_period_days": 230.0,
"rotation_period_hours": 25.4,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ656e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 700.0,
"rotation_period_hours": 29.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ656f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 1900.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ656g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5000.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ656-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ656-oort-S1",
"proper_name": "GJ 656 Horizon",
"orbits_body_id": "GJ656-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 3403 and GJ 354A; corridor transit past the perpetually grey world; automated"
}
]
}
+5 -5
View File
@@ -193,7 +193,7 @@
"notes": ""
},
{
"body_id": "GJ661Ah",
"body_id": "GJ661Ai",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 9,
@@ -213,11 +213,11 @@
"notes": ""
},
{
"body_id": "GJ661Ah-1",
"body_id": "GJ661Ai-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ661Ah",
"parent_body_id": "GJ661Ai",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
@@ -233,11 +233,11 @@
"notes": ""
},
{
"body_id": "GJ661Ah-2",
"body_id": "GJ661Ai-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ661Ah",
"parent_body_id": "GJ661Ai",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
+5 -5
View File
@@ -193,7 +193,7 @@
"notes": ""
},
{
"body_id": "GJ664h",
"body_id": "GJ664i",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 9,
@@ -213,11 +213,11 @@
"notes": ""
},
{
"body_id": "GJ664h-1",
"body_id": "GJ664i-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ664h",
"parent_body_id": "GJ664i",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
@@ -233,11 +233,11 @@
"notes": ""
},
{
"body_id": "GJ664h-2",
"body_id": "GJ664i-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ664h",
"parent_body_id": "GJ664i",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 6711",
"proper_name": "Abzu",
"star_type": "K",
"spectral_class": "K3V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ6711b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 18.0,
"rotation_period_hours": 15.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ6711c",
"proper_name": "Dar",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 400,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 180.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_3 mixed heritage (Arabic, South Asian, East African); 1-aperture dead_end; K3V amber star; doubled light environment from gas giant atmospheric reflection; valley settlement in temperate zone between ridgelines; adapted cultivation for local consumption; no export economy; stable population maintained for 300 years; furthest settled system in the Reach"
},
{
"body_id": "GJ6711d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.62,
"orbital_period_days": 420.0,
"rotation_period_hours": 24.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ6711-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ6711e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1600.0,
"rotation_period_hours": 14.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "mid-range gas giant; highly reflective upper atmosphere returns amber starlight toward inner system; two moons"
},
{
"body_id": "GJ6711e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ6711e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 5.4,
"rotation_period_hours": 129.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ6711e-m2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ6711e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.05,
"orbital_period_days": 12.6,
"rotation_period_hours": 302.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "small rocky moon, tidally locked"
},
{
"body_id": "GJ6711f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 4200.0,
"rotation_period_hours": 35.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ6711g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 10400.0,
"rotation_period_hours": 44.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ6711h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.20,
"orbital_period_days": 26000.0,
"rotation_period_hours": 50.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ6711i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.06,
"orbital_period_days": 58000.0,
"rotation_period_hours": 19.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ6711-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ6711-oort-S1",
"proper_name": "Abzu Horizon",
"orbits_body_id": "GJ6711-oort",
"station_type": "horizon",
"population": 15,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 1 aperture; dead_end; connects Skemeraand; medical and genetic supply receiving; no Commission permanent station"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 672",
"proper_name": "Nova Estrada",
"star_type": "G",
"spectral_class": "G0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ672b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.54,
"orbital_period_days": 52.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ672c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.76,
"orbital_period_days": 200.0,
"rotation_period_hours": 23.4,
"atmosphere": "thin",
"biome_summary": "hot_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ672d",
"proper_name": "Viçosa",
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": true,
"population": 200,
"mass_class": "terrestrial",
"surface_gravity": 0.96,
"orbital_period_days": 460.0,
"rotation_period_hours": 26.2,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_5 mixed heritage (Brazilian, Mozambican, Filipino, Vietnamese, Portuguese-speaking majority); 2-aperture through_route; G0V solar-type star — warm, bright; thick atmosphere, active weather, surface water; native ecology present but not aggressively competitive; community meeting governance (all adults, majority vote, no formal charter); 30 years old, early-stage development; positioning as corridor waypoint; 47 children born on-world (first generation)"
},
{
"body_id": "GJ672-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ672e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.64,
"orbital_period_days": 1100.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ672f",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 3200.0,
"rotation_period_hours": 11.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ672f-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ672f",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 7.2,
"rotation_period_hours": 172.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ672g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 8200.0,
"rotation_period_hours": 36.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ672h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 18000.0,
"rotation_period_hours": 45.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ672i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 40000.0,
"rotation_period_hours": 53.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ672j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 86000.0,
"rotation_period_hours": 31.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ672-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ672-oort-S1",
"proper_name": "Nova Estrada Horizon",
"orbits_body_id": "GJ672-oort",
"station_type": "horizon",
"population": 15,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 726 corridor and deeper frontier; emerging waypoint; early-stage provisioning capability; supply intervals 14-18 months"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 675",
"proper_name": "Neugrund",
"star_type": "K",
"spectral_class": "K0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ675b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 30.0,
"rotation_period_hours": 19.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ675c",
"proper_name": "Laubach",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 2000,
"mass_class": "terrestrial",
"surface_gravity": 0.90,
"orbital_period_days": 280.0,
"rotation_period_hours": 26.6,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_5 mixed German-Portuguese-Dutch heritage ('new ground'); 2-aperture through_route; K0V stable star; deliberate multi-corridor cultural experiment; three distinct agricultural traditions being tested under same conditions; community governance (multi-heritage, no Compact affiliation by design); three-corridor supply relationships maintained; establishment phase (food supplement imports while agricultural base matures)"
},
{
"body_id": "GJ675-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ675d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 720.0,
"rotation_period_hours": 27.8,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, uninhabited"
},
{
"body_id": "GJ675e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2200.0,
"rotation_period_hours": 11.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ675e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ675e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.6,
"rotation_period_hours": 134.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ675f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 5600.0,
"rotation_period_hours": 34.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ675g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 12800.0,
"rotation_period_hours": 42.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ675h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.26,
"orbital_period_days": 28000.0,
"rotation_period_hours": 51.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ675i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 58000.0,
"rotation_period_hours": 29.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ675-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ675-oort-S1",
"proper_name": "Neugrund Horizon",
"orbits_body_id": "GJ675-oort",
"station_type": "horizon",
"population": 120,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Altgrund and south corridor; three-corridor supply coordination; Guardian field visits (two, case-study interest)"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 684A",
"proper_name": "Sonnenkap",
"star_type": "G",
"spectral_class": "G0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ684Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 50.0,
"rotation_period_hours": 18.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ684Ac",
"proper_name": "Freyburg",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 3000,
"mass_class": "terrestrial",
"surface_gravity": 0.96,
"orbital_period_days": 460.0,
"rotation_period_hours": 25.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_4 German heritage ('sun cape'); 2-aperture spur_end; G0V solar-type star — startlingly bright at hop 14; thick nitrogen-oxygen atmosphere, active hydrology, extensive surface water; engineering cooperative governance (elected management board, west_reach charter model); over-specified infrastructure, elegant irrigation; highest agricultural output per hectare of any non-Syndic deep_frontier operation; no Commission relay station (declined twice)"
},
{
"body_id": "GJ684Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.70,
"orbital_period_days": 780.0,
"rotation_period_hours": 24.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ684A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ684Ae",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2600.0,
"rotation_period_hours": 11.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ684Ae-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ684Ae",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 7.2,
"rotation_period_hours": 172.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ684Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 6800.0,
"rotation_period_hours": 36.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ684Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 15000.0,
"rotation_period_hours": 44.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ684Ah",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 34000.0,
"rotation_period_hours": 52.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ684Ai",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 72000.0,
"rotation_period_hours": 30.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ684Aj",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.09,
"orbital_period_days": 150000.0,
"rotation_period_hours": 25.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ684A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ684A-oort-S1",
"proper_name": "Sonnenkap Horizon",
"orbits_body_id": "GJ684A-oort",
"station_type": "horizon",
"population": 140,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; spur_end; connects GJ 201 junction and GJ 532 corridor; agricultural export freight staging; no Commission relay station (community declined); cooperative-operated"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 684B",
"proper_name": "Paso Largo",
"star_type": "K",
"spectral_class": "K3V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ684Bb",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 22.0,
"rotation_period_hours": 19.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ684Bc",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 180.0,
"rotation_period_hours": 14.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "ringed gas giant in HZ; ring-light reflects off upper atmosphere in a pale band ('the long stride'); two moons"
},
{
"body_id": "GJ684Bc-m1",
"proper_name": "Quelimane",
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ684Bc",
"inhabited": true,
"population": 2000,
"mass_class": "terrestrial",
"surface_gravity": 0.62,
"orbital_period_days": 8.4,
"rotation_period_hours": 201.6,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "inhabited moon; wave_3 Brazilian-Mozambican heritage; tidally locked to gas giant; complex tidal patterns, sky never entirely dark; agriculture under glass; cooperative governance (founding charter caps production expansion, social enforcement); subsistence-plus economy; basic transit anchorage (water, atmo cycling, food stores); three centuries continuous habitation; three-year critical component reserve"
},
{
"body_id": "GJ684Bc-m2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ684Bc",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 18.6,
"rotation_period_hours": 446.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "smaller rocky moon, tidally locked"
},
{
"body_id": "GJ684B-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ684Bd",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 560.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ684Be",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 1500.0,
"rotation_period_hours": 30.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ684Bf",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 4200.0,
"rotation_period_hours": 36.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ684Bg",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.26,
"orbital_period_days": 10000.0,
"rotation_period_hours": 44.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ684Bh",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 24000.0,
"rotation_period_hours": 28.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ684Bi",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 50000.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ684B-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ684B-oort-S1",
"proper_name": "Paso Largo Horizon",
"orbits_body_id": "GJ684B-oort",
"station_type": "horizon",
"population": 80,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 354A and GJ 875; transit anchorage with basic reprovisioning; cooperative-operated; no Commission or Syndic presence"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 69",
"proper_name": "GJ 69",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ69b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 16.0,
"rotation_period_hours": 19.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ69c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 140.0,
"rotation_period_hours": 25.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable zone; stable agricultural potential; three settlement proposals over two centuries (all abandoned); green and quiet and waiting; unsettled"
},
{
"body_id": "GJ69-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ69d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 440.0,
"rotation_period_hours": 27.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ69e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1400.0,
"rotation_period_hours": 12.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ69e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ69e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 5.4,
"rotation_period_hours": 129.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ69f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 3800.0,
"rotation_period_hours": 33.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ69g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 8800.0,
"rotation_period_hours": 42.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ69h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 20000.0,
"rotation_period_hours": 28.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ69i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 44000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ69-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ69-oort-S1",
"proper_name": "GJ 69 Horizon",
"orbits_body_id": "GJ69-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Tiefenbach and Fluchtburg; corridor gap between two settled communities; automated"
}
]
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"system_id": "GJ 695A",
"proper_name": null,
"proper_name": "GJ 695A",
"star_type": "G",
"spectral_class": "G5IV",
"wiki_data": {
@@ -21,7 +21,7 @@
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"surface_gravity": 0.5,
"orbital_period_days": 52.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 707",
"proper_name": "Dois Sóis",
"star_type": "binary",
"spectral_class": "K4V+K8V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ707b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 22.0,
"rotation_period_hours": 20.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, circumbinary orbit, uninhabited"
},
{
"body_id": "GJ707c",
"proper_name": "Faial",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 18000,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 160.0,
"rotation_period_hours": 27.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_3 Portuguese heritage ('Azorean island'); 2-aperture through_route; binary star system — two light sources, shifting shadow angles; architecture designed for binary light; agriculture timed to binary orbital period with dual-stellar calendar; community governance (three centuries institutional confidence); self-sufficient food system adapted to complex binary seasonal variations; locally fabricated binary-specific agricultural equipment"
},
{
"body_id": "GJ707-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 circumbinary asteroid belt"
},
{
"body_id": "GJ707d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 480.0,
"rotation_period_hours": 25.8,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, circumbinary orbit"
},
{
"body_id": "GJ707e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.38,
"orbital_period_days": 1300.0,
"rotation_period_hours": 29.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ707f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 3600.0,
"rotation_period_hours": 22.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ707g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 9200.0,
"rotation_period_hours": 18.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ707-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ707-oort-S1",
"proper_name": "Dois Sóis Horizon",
"orbits_body_id": "GJ707-oort",
"station_type": "horizon",
"population": 340,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Travessa and outer deep_frontier; agricultural freight staging; binary-specific equipment logistics; Commission clean compliance record (infrequent administrative visits)"
}
]
}
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 722",
"proper_name": "Skuilplek",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ722b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 9.6,
"rotation_period_hours": 230.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ722c",
"proper_name": "Rietbron",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 12000,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 70.0,
"rotation_period_hours": 27.6,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 Afrikaans heritage ('reed spring'); 2-aperture through_route; M0V dim star; substantially self-sufficient (food since first generation, minimal lattice integration by design); community governance (legacy Commission exemption status, automatic renewal, no visit in living memory); Guardians of Autonomy named affiliation (cited in Guardian minimal-lattice viability literature); seven-generation M-dwarf agriculture from Cairn pocket tradition"
},
{
"body_id": "GJ722-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ722d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 240.0,
"rotation_period_hours": 25.8,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ722e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 720.0,
"rotation_period_hours": 29.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ722f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2000.0,
"rotation_period_hours": 22.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ722g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5400.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ722-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ722-oort-S1",
"proper_name": "Skuilplek Horizon",
"orbits_body_id": "GJ722-oort",
"station_type": "horizon",
"population": 180,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Droëland and outer Cairn pocket; minimal lattice infrastructure by community design; Guardian field representative visits (occasional); legacy Commission exemption maintained automatically"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 726",
"proper_name": "GJ 726",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ726b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 18.0,
"rotation_period_hours": 20.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ726c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.74,
"orbital_period_days": 140.0,
"rotation_period_hours": 26.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "HZ candidate; minimum parameters met, nothing exceeded; native lichen-analogue, geologically quiet; unsettled"
},
{
"body_id": "GJ726-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ726d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.5,
"orbital_period_days": 440.0,
"rotation_period_hours": 27.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ726e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 1200.0,
"rotation_period_hours": 30.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ726f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.3,
"orbital_period_days": 3400.0,
"rotation_period_hours": 36.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ726g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 8800.0,
"rotation_period_hours": 23.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ726h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 22000.0,
"rotation_period_hours": 18.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ726-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ726-oort-S1",
"proper_name": "GJ 726 Horizon",
"orbits_body_id": "GJ726-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Claraboia and GJ 672; deep corridor transit increasing slowly over fifty years; automated"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 7547",
"proper_name": "Skemeraand",
"star_type": "K",
"spectral_class": "K4V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ7547b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.41,
"orbital_period_days": 22.0,
"rotation_period_hours": 16.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ7547c",
"proper_name": "Brandwacht",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 300,
"mass_class": "terrestrial",
"surface_gravity": 0.84,
"orbital_period_days": 160.0,
"rotation_period_hours": 28.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "urban_concentrated",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_2 Afrikaans heritage (520 years); 2-aperture through_route; K4V dim star; thin atmosphere, limited surface water; volcanic caldera settlement with residual thermal energy; mineral-rich caldera soils; five centuries continuous habitation; elder council governance (founding families); partnership protocols for genetic diversity management; penultimate system before Abzu"
},
{
"body_id": "GJ7547-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ7547d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.54,
"orbital_period_days": 480.0,
"rotation_period_hours": 25.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ7547e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 1400.0,
"rotation_period_hours": 32.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ7547f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.30,
"orbital_period_days": 3800.0,
"rotation_period_hours": 38.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ7547g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.14,
"orbital_period_days": 9200.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ7547h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.07,
"orbital_period_days": 24000.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ7547-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ7547-oort-S1",
"proper_name": "Skemeraand Horizon",
"orbits_body_id": "GJ7547-oort",
"station_type": "horizon",
"population": 18,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Candeia and Abzu corridor; medical and genetic supply receiving; minimal Commission contact"
}
]
}
+5 -5
View File
@@ -213,7 +213,7 @@
"notes": ""
},
{
"body_id": "GJ780i",
"body_id": "GJ780j",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 10,
@@ -233,11 +233,11 @@
"notes": ""
},
{
"body_id": "GJ780i-1",
"body_id": "GJ780j-1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ780i",
"parent_body_id": "GJ780j",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
@@ -253,11 +253,11 @@
"notes": ""
},
{
"body_id": "GJ780i-2",
"body_id": "GJ780j-2",
"proper_name": null,
"body_type": "moon",
"orbit_index": 2,
"parent_body_id": "GJ780i",
"parent_body_id": "GJ780j",
"inhabited": false,
"population": 0,
"mass_class": "dwarf",
+189
View File
@@ -0,0 +1,189 @@
{
"system_id": "GJ 853A",
"proper_name": "GJ 853A",
"star_type": "M",
"spectral_class": "M0V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ853Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 11.2,
"rotation_period_hours": 268.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner scorched rocky, tidally locked"
},
{
"body_id": "GJ853Ac",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.84,
"orbital_period_days": 74.0,
"rotation_period_hours": 27.2,
"atmosphere": "standard",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer HZ; dim, not warm, not well-lit; adequate but not comfortable without climate infrastructure; commercially significant mineral deposits in crust (processed-goods precursors); multiple exploratory interest claims filed, none advanced; unsettled"
},
{
"body_id": "GJ853A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ853Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.52,
"orbital_period_days": 250.0,
"rotation_period_hours": 25.8,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ853Ae",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 760.0,
"rotation_period_hours": 30.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ853Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 2100.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ853Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 5600.0,
"rotation_period_hours": 18.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ853A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ853A-oort-S1",
"proper_name": "GJ 853A Horizon",
"orbits_body_id": "GJ853A-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Randgebiet corridor and GJ 146; mineral-rich habitable world below; survey archive registered with Assembly territorial authority; automated"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 868",
"proper_name": "Encontro",
"star_type": "K",
"spectral_class": "K4/K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ868b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.4,
"orbital_period_days": 18.0,
"rotation_period_hours": 19.8,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ868c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.86,
"orbital_period_days": 150.0,
"rotation_period_hours": 26.2,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "habitable zone; temperate, adequate water, stable geology; meets settlement criteria; informally called 'Encontro' ('meeting') by corridor communities; joint settlement discussed for 150 years without resolution (governance model disagreement); unsettled"
},
{
"body_id": "GJ868-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ868d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 460.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ868e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 1500.0,
"rotation_period_hours": 12.4,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ868e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ868e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.1,
"orbital_period_days": 5.6,
"rotation_period_hours": 134.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ868f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 4000.0,
"rotation_period_hours": 34.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ868g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 9400.0,
"rotation_period_hours": 42.6,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ868h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 22000.0,
"rotation_period_hours": 28.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ868i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 46000.0,
"rotation_period_hours": 22.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ868-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ868-oort-S1",
"proper_name": "GJ 868 Horizon",
"orbits_body_id": "GJ868-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Pedra Funda and Dois Sóis; transit waypoint between two Portuguese corridor communities; automated"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 875",
"proper_name": "The Narrows",
"star_type": "K",
"spectral_class": "K5V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 0,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ875b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 18.0,
"rotation_period_hours": 20.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ875c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.72,
"orbital_period_days": 140.0,
"rotation_period_hours": 26.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "HZ candidate; marginal atmosphere, no surface water; minerals adequate for local use only; surveys recommend transit corridor maintenance over settlement; unsettled"
},
{
"body_id": "GJ875-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ875d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.50,
"orbital_period_days": 440.0,
"rotation_period_hours": 26.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ875e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.40,
"orbital_period_days": 1200.0,
"rotation_period_hours": 30.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ875f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.30,
"orbital_period_days": 3400.0,
"rotation_period_hours": 36.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ875g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 8800.0,
"rotation_period_hours": 23.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost ice dwarf"
},
{
"body_id": "GJ875h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.07,
"orbital_period_days": 22000.0,
"rotation_period_hours": 18.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ875-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ875-oort-S1",
"proper_name": "The Narrows Horizon",
"orbits_body_id": "GJ875-oort",
"station_type": "horizon",
"population": 0,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Paso Largo and deeper corridor; 'the squeeze' — transit path passes close to primary; automated; serviced by Paso Largo technical crews"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"system_id": "GJ 903",
"proper_name": "Errai",
"star_type": "K",
"spectral_class": "K1IV",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ903b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 34.0,
"rotation_period_hours": 19.6,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ903c",
"proper_name": "Ghadames",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 4000,
"mass_class": "terrestrial",
"surface_gravity": 0.90,
"orbital_period_days": 370.0,
"rotation_period_hours": 26.8,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 Arabic heritage ('the shepherd'); 2-aperture through_route; K1IV subgiant — wider HZ, warm amber light; pre-settlement Arabic star name retained as system designation; community governance"
},
{
"body_id": "GJ903-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ903d",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.58,
"orbital_period_days": 780.0,
"rotation_period_hours": 27.6,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ903e",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 2400.0,
"rotation_period_hours": 12.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ903e-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ903e",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.11,
"orbital_period_days": 6.2,
"rotation_period_hours": 148.8,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ903f",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.44,
"orbital_period_days": 6200.0,
"rotation_period_hours": 34.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ903g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.34,
"orbital_period_days": 14000.0,
"rotation_period_hours": 43.4,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ903h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 32000.0,
"rotation_period_hours": 29.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ903i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.08,
"orbital_period_days": 68000.0,
"rotation_period_hours": 23.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant ice dwarf"
},
{
"body_id": "GJ903-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ903-oort-S1",
"proper_name": "Errai Horizon",
"orbits_body_id": "GJ903-oort",
"station_type": "horizon",
"population": 120,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects GJ 616 and GJ 481 spur; deep_frontier corridor transit"
}
]
}
+269
View File
@@ -0,0 +1,269 @@
{
"system_id": "GJ 904",
"proper_name": "Claraboia",
"star_type": "F",
"spectral_class": "F7V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": true,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ904b",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.54,
"orbital_period_days": 72.0,
"rotation_period_hours": 18.2,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ904c",
"proper_name": null,
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.76,
"orbital_period_days": 280.0,
"rotation_period_hours": 23.6,
"atmosphere": "thin",
"biome_summary": "hot_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ904d",
"proper_name": "Soajo",
"body_type": "planet",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": true,
"population": 600,
"mass_class": "terrestrial",
"surface_gravity": 0.96,
"orbital_period_days": 620.0,
"rotation_period_hours": 26.4,
"atmosphere": "standard",
"biome_summary": "temperate",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": null,
"notes": "primary inhabited world; wave_4 Portuguese heritage ('communal granary village'); 2-aperture through_route; F7V warm bright star; thick atmosphere, active weather, surface oceans (~40%), vigorous native biosphere; cooperative charter governance (successor charter from dissolved cooperative, includes dissolution protocol); continuous ecological negotiation — adapted agriculture competing with native organisms; 150 years local cultivar development; biological monitoring as core community expertise"
},
{
"body_id": "GJ904-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ904e",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.64,
"orbital_period_days": 1400.0,
"rotation_period_hours": 27.2,
"atmosphere": "thin",
"biome_summary": "cold_arid",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, cold, uninhabited"
},
{
"body_id": "GJ904f",
"proper_name": null,
"body_type": "gas_giant",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": null,
"surface_gravity": null,
"orbital_period_days": 4200.0,
"rotation_period_hours": 11.2,
"atmosphere": "gas_giant",
"biome_summary": null,
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer gas giant, one moon"
},
{
"body_id": "GJ904f-m1",
"proper_name": null,
"body_type": "moon",
"orbit_index": 1,
"parent_body_id": "GJ904f",
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 7.4,
"rotation_period_hours": 177.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "icy moon, tidally locked"
},
{
"body_id": "GJ904g",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.46,
"orbital_period_days": 10000.0,
"rotation_period_hours": 36.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ904h",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.36,
"orbital_period_days": 24000.0,
"rotation_period_hours": 44.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ904i",
"proper_name": null,
"body_type": "planet",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.28,
"orbital_period_days": 52000.0,
"rotation_period_hours": 53.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ904j",
"proper_name": null,
"body_type": "planet",
"orbit_index": 10,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.13,
"orbital_period_days": 110000.0,
"rotation_period_hours": 31.4,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ904-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 11,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ904-oort-S1",
"proper_name": "Claraboia Horizon",
"orbits_body_id": "GJ904-oort",
"station_type": "horizon",
"population": 40,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Kettenschmied and GJ 726 corridor; biological sample and ecological data trade coordination; fabricated component receiving"
}
]
}
+209
View File
@@ -0,0 +1,209 @@
{
"system_id": "GJ 914A",
"proper_name": "Droëland",
"star_type": "K",
"spectral_class": "K2V",
"wiki_data": {
"habitable_count": 1,
"inhabited_count": 1,
"has_gas_giant": false,
"has_asteroid_belt": true,
"has_horizon_station": true,
"raw_bodies_line": null
},
"bodies": [
{
"body_id": "GJ914Ab",
"proper_name": null,
"body_type": "planet",
"orbit_index": 1,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 24.0,
"rotation_period_hours": 19.4,
"atmosphere": "none",
"biome_summary": "barren",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "inner rocky, hot, uninhabited"
},
{
"body_id": "GJ914Ac",
"proper_name": "Calvinia",
"body_type": "planet",
"orbit_index": 2,
"parent_body_id": null,
"inhabited": true,
"population": 18000,
"mass_class": "terrestrial",
"surface_gravity": 0.88,
"orbital_period_days": 200.0,
"rotation_period_hours": 26.6,
"atmosphere": "standard",
"biome_summary": "cold_arid",
"hydrosphere": "liquid_water",
"economic_role": "agricultural",
"settlement_pattern": "dispersed",
"industrial_corridor": "agricultural_export",
"notes": "primary inhabited world; wave_3 Afrikaans heritage ('dry land'); 2-aperture through_route; K2V dim star; three centuries worked soil; mature irrigated agriculture (grain, legumes); no industrial sector; community governance with Guardian-aligned autonomist reflexes; Commission filed registration only (no resident personnel); multi-year contingency reserves as founding practice; supply dependency on Stilwater corridor for fabricated components"
},
{
"body_id": "GJ914A-belt",
"proper_name": null,
"body_type": "asteroid_belt",
"orbit_index": 3,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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 asteroid belt"
},
{
"body_id": "GJ914Ad",
"proper_name": null,
"body_type": "planet",
"orbit_index": 4,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.56,
"orbital_period_days": 580.0,
"rotation_period_hours": 27.4,
"atmosphere": "thin",
"biome_summary": "frozen",
"hydrosphere": null,
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer rocky, frozen, uninhabited"
},
{
"body_id": "GJ914Ae",
"proper_name": null,
"body_type": "planet",
"orbit_index": 5,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.42,
"orbital_period_days": 1600.0,
"rotation_period_hours": 30.2,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outer icy rocky, uninhabited"
},
{
"body_id": "GJ914Af",
"proper_name": null,
"body_type": "planet",
"orbit_index": 6,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.32,
"orbital_period_days": 4200.0,
"rotation_period_hours": 36.8,
"atmosphere": "trace",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "distant icy rocky, uninhabited"
},
{
"body_id": "GJ914Ag",
"proper_name": null,
"body_type": "planet",
"orbit_index": 7,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "terrestrial",
"surface_gravity": 0.24,
"orbital_period_days": 10000.0,
"rotation_period_hours": 44.6,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "far outer icy rocky, uninhabited"
},
{
"body_id": "GJ914Ah",
"proper_name": null,
"body_type": "planet",
"orbit_index": 8,
"parent_body_id": null,
"inhabited": false,
"population": null,
"mass_class": "dwarf",
"surface_gravity": 0.12,
"orbital_period_days": 24000.0,
"rotation_period_hours": 28.2,
"atmosphere": "none",
"biome_summary": "frozen",
"hydrosphere": "ice",
"economic_role": null,
"settlement_pattern": null,
"industrial_corridor": null,
"notes": "outermost dwarf, near oort boundary"
},
{
"body_id": "GJ914A-oort",
"proper_name": null,
"body_type": "oort_cloud",
"orbit_index": 9,
"parent_body_id": null,
"inhabited": false,
"population": null,
"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": "GJ914A-oort-S1",
"proper_name": "Droëland Horizon",
"orbits_body_id": "GJ914A-oort",
"station_type": "horizon",
"population": 320,
"economic_role": "transit",
"docking_class": "major",
"has_gate_infrastructure": true,
"notes": "horizon station — 2 apertures; through_route; connects Stilwater and outer Cairn pocket; grain and legume freight staging; contingency reserve logistics"
}
]
}
Binary file not shown.
+103
View File
@@ -0,0 +1,103 @@
# Sprint 30: Clean Slate — Client Tasks
**Goal:** Close Phase 1 wiki quality debt — stereotype correction, data integrity fixes, and atlas regressions — so the wiki stands correct before Phase 1 UI work begins.
**Branch:** `client`
**Agents:** Stig (dev), Tyre (arch), Hoshe (QA)
## New Tickets
| # | Title | Priority | Blocked by |
|---|-------|----------|------------|
| #718 | Persist CharacterVisualDescriptor on new game start | high | — |
| #674 | Star map insert module — concentric hop-ring view | medium | — |
| #712 | Add BoneAttachment3D marker above Head bone for floating icons | medium | — |
| #719 | Hair highlight: add descriptor field or make swatch read-only | medium | — |
| #720 | Replace DirAccess asset scanning with manifest JSON for export builds | medium | — |
Use `tooling/db/ticket show <id>` for full details.
## Key Decisions
- `decisions/architecture.md` — D-134 (full character customisation: hair, clothing, colors at tile scale), D-146 (character preview: tile-scale sprite, no separate portrait), D-043 (art direction: functional warmth), D-044 (visual hierarchy)
- `decisions/scope.md` — D-114 (Phase 4 deliverable: player viewport with final-version assets)
## Notes
### Existing code to understand first
Before starting any ticket, read:
- `client/ui/character_creation.gd` — the character creation screen. Manages `CharacterVisualDescriptor`, layer selectors, color swatches, preview pane, and manifest loading.
- `client/assets/characters/manifest.json` — asset manifest listing available body types, heads, hair, facial hair, clothing, accessories. Partially populated (heads array is empty).
- `client/scripts/autoloads/game_state.gd` — player entity ID and session state. CharacterVisualDescriptor will be stored here on new game start.
- `client/scripts/rendering/entity_renderer.gd` — current entity sprite system. Integration point for #718 (persisted descriptor must survive into gameplay rendering).
### #718 — Persist CharacterVisualDescriptor on new game start
When the player confirms the character creation screen, the client sends a `CharacterVisualDescriptor` to the server. The server must receive it and persist it so the descriptor survives save/load cycles and is included in `ObserverSnapshot`. This ticket is the client side: wire the confirmed descriptor from `character_creation.gd` through to the new-game IPC call. Verify the descriptor reaches the server (coordinate with server team if the server-side storage is not yet implemented — server ticket is out of scope this sprint unless added separately).
**What to deliver:**
- On confirm in `character_creation.gd`, serialize descriptor and include it in the new-game start message to the server
- Store descriptor in `GameState` so it persists across scene transitions
- After load, confirm descriptor is restored from server snapshot (integration test: start game, check descriptor fields match what was entered)
**File locations:**
- `client/ui/character_creation.gd` — add serialization + send call
- `client/scripts/autoloads/game_state.gd` — add descriptor field + restore from snapshot
- `client/protocol/` — may need a new message type for descriptor transmission
### #712 — BoneAttachment3D marker above Head bone
Add an empty `Marker3D` node anchored as a `BoneAttachment3D` to the Head bone in the player character skeleton scene. Offset approximately 0.3m above the Head bone origin. This node is the anchor point for floating UI elements — status indicators, thought bubbles, alert markers, speech icons.
**What to deliver:**
- Locate the skeleton scene (likely `client/assets/characters/skeleton/` or similar based on the Sprint 28 asset pipeline)
- Add `BoneAttachment3D` with bone_name = "Head", child `Marker3D` at offset Vector3(0, 0.3, 0)
- Export a `@export` var or named node path from the character root so other systems can reference the marker node without hardcoded paths
- No functional systems need to use this marker yet — the ticket is infrastructure for future floating UI work
**Gotcha:** BoneAttachment3D must be a child of the skeleton, not the character root. If the skeleton is a `Skeleton3D` inside a scene, the attachment must be added inside that scene, not the parent.
### #719 — Hair highlight: add descriptor field or make swatch read-only
The hair highlight swatch in the character creation screen accepts user input but the override is a no-op. `CharacterVisualDescriptor` has no `hair_highlight_tint` field, and `_on_hair_highlight_changed` in `character_creation.gd` does not write to the descriptor. Two valid resolutions:
**Option A (preferred if adding the field is low-risk):** Add `hair_highlight_tint: Color` to `CharacterVisualDescriptor` and wire `_on_hair_highlight_changed` to write it. The compositor must then read and apply it. This is the fuller fix.
**Option B (if the compositor cannot accept it yet):** Make the swatch non-interactive — visually show the derived highlight color (`_derive_hair_highlight(descriptor.hair_tint)`) but remove the `ColorPickerButton` and replace with a plain `ColorRect` labeled "Auto". Add a `# TODO: ticket #719` comment noting the deferred field.
Decide which option to implement based on compositor readiness. If the compositor already supports `hair_highlight_tint` (check `client/scripts/rendering/character_compositor.gd` if it exists), go with Option A. Otherwise Option B.
### #720 — Replace DirAccess with manifest JSON
The character creation screen uses `DirAccess.open("res://...")` in two fallback functions (around lines 1849 and 1868 in `character_creation.gd`) to scan for available assets. This approach fails in exported PCK builds because `DirAccess` cannot enumerate `res://` paths inside a PCK archive.
The manifest approach is already partially implemented — `_load_manifest()`, `_manifest_array()`, and `MANIFEST_PATH` are in place. The manifest file at `client/assets/characters/manifest.json` exists and is partially populated.
**What to deliver:**
- Remove the two `DirAccess.open()` fallback scanning functions (lines ~1849-1868)
- Populate `manifest.json` fully: add all available asset IDs for heads, hair, clothing, accessories, and body_types by scanning the actual asset directories once (during development) and encoding the result into JSON
- Add a `tooling/` script or `Makefile` target that regenerates `manifest.json` from the asset directories, so it stays in sync as artists add assets — this prevents the manifest going stale
- Verify: in an exported build (or by disabling DirAccess manually), the character creation screen populates all tabs correctly from the manifest alone
**Note:** `manifest.json` currently has `"heads": []` — the heads array is empty. If head assets exist in `client/assets/characters/heads/`, add them. If none exist yet, leave empty but document in a comment that the manifest is the source of truth.
## Dependency Chain
```
#718 (persist descriptor) — standalone, no client-side blockers
#719 (hair highlight) — standalone, read compositor state first
#720 (manifest JSON) — standalone
#712 (bone marker) — standalone
#674 (star map) — standalone
```
All five tickets are parallel tracks. No cross-dependencies within this sprint.
## PR Workflow
When ready to submit, create a PR with `tea` CLI. **All flags are required** to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
```bash
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(client): Sprint 30 character and UI fixes" --description "body" --base main --head client
```
+106
View File
@@ -0,0 +1,106 @@
# Sprint 30: Clean Slate — Copy Team Tasks
**Goal:** Close Phase 1 wiki quality debt — stereotype correction, data integrity fixes, and atlas regressions — so the wiki stands correct before Phase 1 UI work begins.
**Branch:** `copy`
**Agents:** Mellanie (author), Paula (narrative review), Miri (worldbuilding/naming)
## New Tickets
| # | Title | Priority | Blocked by |
|---|-------|----------|------------|
| #763 | fix(wiki): GJ1111 and GJ54.1 prose not updated for population rebalance | high | — |
| #772 | content(wiki): Afrikaans cultural stereotype imbalance at ~15:1 ratio | medium | — |
| #753 | Fix Mabuhay wiki: GJ 482A continuity error | medium | — |
| #757 | Fix Pereira's Rest wiki: population 800 → 42K | medium | — |
| #758 | fix(wiki): Langemark (GJ42) celestial bodies table uses non-schema values | medium | — |
| #759 | fix(wiki): Solheim (GJ19) topology disconnect | medium | — |
| #764 | fix(atlas): GJ1111 star_type reverted to unusual — regression from PR #101 | medium | — |
| #767 | fix(atlas): GJ707 star_type/spectral_class fields swapped | medium | — |
| #769 | fix(wiki): GJ-147 etymology says 'passagem' but system is named Entremeio | medium | — |
| #770 | fix(wiki): GJ-875 header says G-type but System Profile shows K5 | medium | — |
| #771 | fix(wiki): GJ-7547 and GJ-6711 spectral class truncated to bare 'K' | low | — |
| #754 | fix(wiki): update stale Calibration Notes on GJ1128, GJ136, GJ625 | low | — |
| #755 | fix(wiki): GJ432A wiki prose still says Punjabi-Canadian | low | — |
| #756 | fix(wiki): GJ541 header says G-type, proposal says K (K2IIIp) | low | — |
| #760 | fix(atlas): GJ601A needs F2III stellar evolution context in notes | low | — |
| #761 | fix(atlas): GJ4056 spectral_class 'g' is malformed | low | — |
| #765 | fix(wiki): South Reach rebalanced systems need calibration notes for small populations | low | — |
| #768 | fix(atlas): GJ189 wave_2 at hop 8-11 needs reconciliation | low | — |
Use `tooling/db/ticket show <id>` for full details.
## Key Decisions
- `decisions/content.md` — D-121 (all content must be internally consistent), D-128 (culture implicit in starting location)
- `decisions/scope.md` — D-114 (wiki content phase is Phase 1 deliverable)
## Notes
### #763 — GJ1111 and GJ54.1 prose rebalance
Both systems had populations reduced from 500M/800M tiers to 380K/320K. The wiki prose still describes the institutional depth, guild curricula, and transit apparatus of large hubs. Rewrite prose to match the actual populations — these are mid-tier settlements, not megahub capitals. Check both `wiki/star-systems/GJ-1111/index.md` and `wiki/star-systems/GJ-54.1/index.md`.
### #772 — Afrikaans stereotype imbalance
Cultural audit flagged ~15:1 confirming:subverting ratio for Afrikaans-coded systems. Recent additions (Eerste Wacht, Helderoog, Skemeraand) pushed pastoral/frontier stereotype further. The next Afrikaans-adjacent system authored this sprint must subvert the dominant register — urban, technocratic, industrial, or post-pastoral framing. This is a content authoring constraint, not a correction to existing pages. Coordinate with Miri on which candidate system to author and what subverting angle fits its astrophysics. Read `docs/audits/cultural-stereotyping-audit.md` before starting.
### #753 — Mabuhay continuity error
`wiki/star-systems/GJ-1073/index.md` references GJ 482A as an unsurveyed system in the silence topic and narrative hook. GJ 482A is Dagat — a 300-year-old wave_3 settlement with 210K people. Either reframe the mystery to a genuinely unsurveyed system, or rewrite the hook to reference Dagat correctly. Do not invent a new system — use an existing unsurveyed entry from the atlas.
### #757 — Pereira's Rest population
`wiki/star-systems/GJ-208/index.md` Faction Notes says "approximately eight hundred." The body catalog sets population to 42,000. One-line change in the prose; also verify no other sections use the 800 figure.
### #758 — Langemark schema values
`wiki/star-systems/GJ-42/index.md` celestial bodies table uses: `breathable` (should be `standard`), `rivers-lakes` (not a valid biome value), `west_reach` (not a valid economy/corridor tag). Normalize all three to schema-valid values. See `db/schema.sql` for valid enum values and `tooling/db/sqlite-query "SELECT DISTINCT atmosphere FROM bodies"` to confirm live values.
### #759 — Solheim topology
`wiki/star-systems/GJ-19/index.md` references Caldwell Point for food routing and describes food exports to loop neighbors, but the adjacent-system topology links are absent or broken. Either add the topology references to the proposal JSON (if the links are real and just not encoded), or rewrite the narrative to remove the claims. Do not fabricate topology — check `tooling/db/sqlite-query "SELECT * FROM gates WHERE system_id IN (SELECT id FROM star_systems WHERE gj_id='GJ19')"` to confirm real connections.
### #764 — GJ1111 star_type regression
PR #101 specifically corrected GJ1111 from `unusual` to `M`. A later PR reverted it. M6.5 is an extreme red dwarf but classifiable as M. Fix `star_type` back to `M` in the proposal JSON. If `unusual` has been redefined to cover edge cases like M6.5, document the reasoning in a Calibration Note rather than using `unusual` as a classification workaround.
### #767 — GJ707 field swap
`GJ707` (Dois Sóis) has `star_type: unusual` and `spectral_class: binary` — these are inverted. Should be `star_type: binary` with actual spectral classification in `spectral_class`. Also check `body_ids` — a binary system likely uses two-star naming conventions (A/B suffix) that may need correcting.
### #769 — GJ-147 etymology
`wiki/star-systems/GJ-147/index.md` line 21 explains "The name passagem is Portuguese" but the system is named Entremeio (meaning "in-between"). Fix wiki text to match the actual name. Then update the proposal JSON to ensure the `name_etymology` field (if present) reflects Entremeio, not passagem.
### #770 — GJ-875 header/profile mismatch
Wiki header says G-type; System Profile table shows K5. A Calibration Note acknowledges the discrepancy but the header was never corrected. Fix the header to K-type. Remove or simplify the Calibration Note — once the header is correct the note is redundant.
### Low-priority fixes (#754, #755, #756, #760, #761, #765, #768, #771)
All are small targeted corrections from PR reviews. Handle these after the high/medium tickets. Batch-address where possible but keep each change in its own commit with the ticket number in the message.
- **#754** — Calibration Notes on GJ1128, GJ136, GJ625 describe pre-fix header mismatches that no longer exist. Remove or update the notes.
- **#755** — `wiki/star-systems/GJ-432A/index.md` line 25: change "Punjabi-Canadian research tradition" to "Punjabi heritage research tradition".
- **#756** — GJ541 (Chandra Deep) wiki header says G-type; proposal has K, K2IIIp. Update header to K-type.
- **#760** — GJ601A (Ostmark) proposal notes need acknowledgment of F2III bright giant finite habitability window, increased UV load, and polar settlement rationale.
- **#761** — GJ4056 has `spectral_class: g` (lowercase, no subtype). Correct to proper classification (G5V or similar based on star mass/luminosity).
- **#765** — GJ54.1, GJ1111, GJ905 populations diverge significantly from heuristics table. Add Calibration Notes to proposals marking these as intentional small populations (not authoring errors).
- **#768** — GJ189 (Altgrund) is `wave_2` but at hop 8-11. Either wave is wrong, hop is wrong, or there is an in-setting explanation (old route, pre-gate era colony). Reconcile: add a Calibration Note if the inconsistency is intentional and explainable, otherwise correct the field.
- **#771** — GJ-7547 and GJ-6711 System Profile tables show bare `K` instead of full spectral class (e.g. `K4V`). Update wiki tables to match proposal JSON.
## Dependency Chain
```
All tickets are independent — no blocking dependencies within this sprint.
Process high-priority tickets first, then medium, then low.
#772 (Afrikaans subversion) requires Miri involvement for system selection.
```
## PR Workflow
When ready to submit, create a PR with `tea` CLI. **All flags are required** to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
```bash
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "fix(wiki): Sprint 30 wiki quality fixes and atlas regressions" --description "body" --base main --head copy
```
+52
View File
@@ -0,0 +1,52 @@
# Sprint 30: Clean Slate — Joint Briefing
**Goal:** Close Phase 1 wiki quality debt — stereotype correction, data integrity fixes, and atlas regressions — so the wiki stands correct before Phase 1 UI work begins.
**Sprint number:** 30
**Theme:** Clean Slate
**Status:** planning
## Pre-Sprint Checklist
| Item | Owner | Status |
|------|-------|--------|
| Epics #638, #683, #738 closed (all children done) | SI | done |
| #772 assigned to copy team | SI | done |
| All 26 tickets assigned to Sprint 30 | SI | done |
## Ticket Summary by Team
| Team | Count | Priority breakdown |
|------|-------|--------------------|
| copy | 18 | 1 high, 9 medium, 8 low |
| client | 5 | 1 high, 4 medium |
| server | 3 | 3 medium |
| **total** | **26** | |
## Sprint Completion Proof
The sprint is done when:
1. **Wiki accuracy:** GJ1111 and GJ54.1 prose matches actual populations (380K/320K, not 500M/800M tier language)
2. **Atlas correctness:** GJ1111 `star_type = M` (not `unusual`), GJ707 `star_type = binary` with proper spectral_class
3. **Schema compliance:** Langemark celestial bodies table uses only schema-valid values; `tooling/db/sqlite-query "SELECT DISTINCT atmosphere FROM bodies"` returns no `breathable` entries from new commits
4. **Stereotype balance:** One new Afrikaans-adjacent system authored this sprint that subverts the pastoral/frontier register
5. **Client stability:** Character creation screen populates from manifest.json without DirAccess fallback; hair highlight swatch either wired to descriptor or marked read-only
6. **Server reliability:** `settings.db` is auto-created on first run; `habitable_planet_count` is non-zero for systems with `atmosphere = standard` planets after fix
## Cross-Team Dependencies
**Client → Server (#718):** The client sends `CharacterVisualDescriptor` on new game start. If server-side persistence is needed (storing descriptor in save file, returning in `ObserverSnapshot`), that work is not in Sprint 30's server tickets. Stig should verify what the server currently does with the descriptor on receipt before assuming it is handled. If server-side work is needed, raise with SI to create a follow-up ticket.
**Copy → Server (#762):** The `breathable` vs `standard` filter fix in atlas.rs affects all future copy team commits. Server team should ship this fix early so copy team's Sprint 30 wiki commits produce correct `habitable_planet_count` values.
## Deferred to Sprint 31
- **#766** — Cultural diversity sweep (full sweep across all 5 corridors) — too large for this sprint, scoped as its own sprint
- **#675** — Gate network travel planner — deferred
## Notes
No planning tickets in this sprint — all decisions are already made. Sprint 30 is execution-only: fix what the PR reviews flagged, apply the authoring constraint from the cultural audit, and clean up the character system.
The cultural audit file at `docs/audits/cultural-stereotyping-audit.md` and `docs/audits/pr101-review-sample.diff` are the reference sources for the copy team's correctness tickets. Copy team should read both before starting the medium/high priority fixes.
+90
View File
@@ -0,0 +1,90 @@
# Sprint 30: Clean Slate — Server Tasks
**Goal:** Close Phase 1 wiki quality debt — stereotype correction, data integrity fixes, and atlas regressions — so the wiki stands correct before Phase 1 UI work begins.
**Branch:** `server`
**Agents:** Dudley (dev), Tyre (arch), Hoshe (QA)
## New Tickets
| # | Title | Priority | Blocked by |
|---|-------|----------|------------|
| #762 | fix(atlas): habitable_planet_count filter uses 'breathable' but proposals use 'standard' | medium | — |
| #752 | Add settings.db creation-on-missing routine + gitignore | medium | — |
| #744 | Add corridor-status command to atlas CLI | medium | — |
Use `tooling/db/ticket show <id>` for full details.
## Key Decisions
- `decisions/architecture.md` — D-094 (chunk size 32, district 256×256), D-139 (composable behavior primitives)
- `decisions/scope.md` — D-114 (server simulation is Phase 1 infrastructure)
## Notes
### #762 — habitable_planet_count filter mismatch
**File:** `server/src/bin/atlas.rs`, `cmd_commit_system` function, line ~1293.
The filter reads:
```rust
b.atmosphere.as_deref() == Some("breathable")
```
But all Track B/C/D body catalog proposals use `atmosphere: "standard"`, not `"breathable"`. As a result, `habitable_planet_count` is written as 0 for every committed system regardless of actual habitability. Fix the filter value to `"standard"`. Verify by querying the committed systems table after the fix: `tooling/db/sqlite-query "SELECT gj_id, habitable_planet_count FROM star_systems WHERE habitable_planet_count > 0 LIMIT 10"` should return non-zero counts after recommitting a test system.
If both `"breathable"` and `"standard"` are valid atmosphere values that should count as habitable, update the filter to accept both: `matches!(b.atmosphere.as_deref(), Some("breathable") | Some("standard"))`.
**Do not retroactively fix existing committed systems** — the fix applies to new commits. If you want to backfill, do it in a separate migration with a clear comment.
### #752 — settings.db creation-on-missing
**File:** `server/src/main.rs` lines 158-169, `server/src/settings/` module.
`main.rs` calls `SettingsStore::open(&settings_path)` but if `settings.db` does not exist the call logs a warning and continues without settings persistence — it does not crash, but it silently degrades. Improve this:
1. In `SettingsStore::open()` (likely in `server/src/settings/store.rs`), if the file does not exist, create it with default schema. Use `rusqlite::Connection::open()` which creates the file if absent, then run the settings schema `CREATE TABLE IF NOT EXISTS` DDL on first open.
2. Add `settings.db` to `.gitignore` (it is a runtime artifact, not source).
3. Verify: delete `settings.db`, run the server binary, confirm `settings.db` is created and the server starts without warnings about missing settings.
**Schema reference:** Check `server/src/settings/types.rs` and `server/src/settings/store.rs` to understand the existing schema and what tables need to be created on first run.
### #744 — corridor-status command for atlas CLI
**File:** `server/src/bin/atlas.rs`.
The atlas binary already has a subcommand infrastructure (clap-based, see lines 32-40). Add a `corridor-status` subcommand that shows remaining unfinished systems grouped by `geographic_sector` and `hop_distance`. Currently this is done via ad-hoc raw SQL queries.
**What to deliver:**
- New `CorridorStatus` subcommand struct in atlas.rs
- Implementation queries `star_systems` for systems where body catalog is incomplete (no committed bodies, or `status != 'complete'` if such a field exists)
- Groups output by `geographic_sector`, then by `hop_distance` within each sector
- Output format: plain text table, corridor → hop → count of remaining systems, one row per corridor/hop combination
- Add to the atlas binary's help text
**Query basis:** The equivalent SQL is approximately:
```sql
SELECT geographic_sector, hop_distance, COUNT(*) as remaining
FROM star_systems
WHERE body_catalog_complete = 0 OR body_catalog_complete IS NULL
GROUP BY geographic_sector, hop_distance
ORDER BY geographic_sector, hop_distance;
```
Verify the actual column name against `db/schema.sql`.
## Dependency Chain
```
#762 (breathable filter fix) — standalone
#752 (settings.db create) — standalone
#744 (corridor-status cmd) — standalone
```
All three tickets are parallel tracks. No cross-dependencies.
## PR Workflow
When ready to submit, create a PR with `tea` CLI. **All flags are required** to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
```bash
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "fix(server): Sprint 30 atlas filter, settings.db init, corridor-status cmd" --description "body" --base main --head server
```
+1 -1
View File
@@ -1,5 +1,5 @@
name: The Settled Reach
version: 0.1.28
version: 0.1.30
repository: settled-reach
+1 -1
View File
@@ -1236,7 +1236,7 @@ dependencies = [
[[package]]
name = "settled-reach-server"
version = "0.1.28"
version = "0.1.29"
dependencies = [
"bevy_app",
"bevy_ecs",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "settled-reach-server"
version = "0.1.28"
version = "0.1.30"
edition = "2021"
[dependencies]
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More