diff --git a/.claude/skills/sprint-start/SKILL.md b/.claude/skills/sprint-start/SKILL.md index 500b62086..60f8a7dff 100644 --- a/.claude/skills/sprint-start/SKILL.md +++ b/.claude/skills/sprint-start/SKILL.md @@ -501,7 +501,7 @@ You are now the team lead. Agents work autonomously — monitor via they arise. **When all tasks complete:** Do NOT shut down agents. The team stays -alive through the PR review cycle. Follow step 9 (post-work lifecycle). +alive through PR review AND merge. Follow step 9 (post-work lifecycle). ### 9. Post-work lifecycle @@ -510,7 +510,8 @@ When all tasks are complete (TaskList shows all completed): #### 9a. Commit and push Run `/git-commit` to commit all changes, then `/pr-push` to create or -update the PR. Do NOT shut down agents — the team stays alive for review. +update the PR. Do NOT shut down agents — the team stays alive through +review and merge. #### 9b. Wait for review @@ -554,10 +555,28 @@ comments): 5. Repeat this loop until review returns APPROVED. -**If APPROVED:** +**If APPROVED (but not yet merged):** + +Do NOT shut down. Approval alone is not terminal — reviewers can leave +follow-up comments, the PR can be re-reviewed, or merge conflicts can +surface. Keep the team alive and idle until the PR is merged into main. + +1. Report to the user: "Sprint {N} {team} PR #{X} approved. Awaiting + merge. Team remains alive." +2. Agents stay idle. Do not reassign them to unrelated work. +3. Periodically check merge state (or wait for the user to confirm the + merge). The `main` session handles the merge itself. +4. If new review comments arrive between approval and merge, treat it + as CHANGES_REQUESTED and re-enter the fix loop. +5. Once the PR is merged, proceed to 9d. + +#### 9d. Handle merge completion + +When the PR is confirmed merged into main (user confirmation, Gitea +state change, or the `main` session reports the merge): 1. Send `shutdown_request` to all sprint agents. 2. Wait for all `shutdown_response` confirmations. 3. Call `TeamDelete` to clean up. -4. Report: "Sprint {N} {team} complete. PR #{X} approved and ready for - merge on main." +4. Report: "Sprint {N} {team} complete. PR #{X} merged into main. Team + shut down." diff --git a/decisions/economics.md b/decisions/economics.md index f177d56d5..66efac675 100644 --- a/decisions/economics.md +++ b/decisions/economics.md @@ -336,7 +336,9 @@ This domain covers: currency system, commodity taxonomy, shadow economy, corpora - Queryable content: `brand_products JOIN corp_presence` filtered by location and `product_subcategory`; sub-millisecond at 10K+ rows — primary use case alongside economic simulation **5. DB Schema** - - `brand_products`: `brand_product_id`, `corp_id`, `product_name`, `brand_category` (8 values), `value_trajectory`, `scarcity_class` (`capped` / `constrained` / `scalable` / `unlimited`), `product_subcategory`, `base_premium_multiplier`, `premium_floor`, `origin_system`, `terroir_locked`, `currency_denomination`, `shadow_viable`, `brand_tier` (`halo` / `volume`), `halo_brand_id` (for volume tiers) + - `brand_products`: `brand_product_id`, `corp_id`, `product_name`, `brand_category` (8 values), `value_trajectory`, `scarcity_class` (`capped` / `constrained` / `scalable` / `unlimited`), `product_subcategory`, `base_premium_multiplier`, `premium_floor`, `origin_system`, `terroir_locked`, `currency_denomination`, `shadow_viable`, `brand_tier` (`halo` / `volume`), `halo_brand_id` (for volume tiers), `price_tier` (enum — see below) + - `price_tier` enum (5 values): `mass` (widely accessible, lowest price point; commodity_branded volume tiers) / `premium` (above-average quality signal; most volume tiers across categories) / `luxury` (aspirational, restricted availability; terroir and design_heritage halos) / `flagship` (pinnacle output, ultra-scarce; Veblen curve inflection; max 1 per brand, lore-grounded scarcity ceiling required) / `institutional` (B2B contract pricing, not market price; service_premium and platform_catalogue) + - **Amendment (2026-04-19):** `price_tier` valid values were not defined in the original decision. Locked to the five values above per team decision, Sprint 36. - `brand_inputs`: `brand_product_id`, `commodity_id`, `quantity` - `system_fiscal`: `system_id`, `corp_tax_rate`, `collection_efficiency` (derived from `shadow_economy_intensity`) - `corp_financial_state` + `corp_lifecycle_events` tables for acquisition/startup lifecycle @@ -440,4 +442,4 @@ This domain covers: currency system, commodity taxonomy, shadow economy, corpora --- -*19 decisions (D-171–D-187, D-189–D-190), 1 rejected alternative (R-011). Domain: economics. Last updated: 2026-04-10.* +*19 decisions (D-171–D-187, D-189–D-190), 1 rejected alternative (R-011). Domain: economics. Last updated: 2026-04-19.* diff --git a/docs/atlas/hand-refine-log.md b/docs/atlas/hand-refine-log.md new file mode 100644 index 000000000..62cb023bf --- /dev/null +++ b/docs/atlas/hand-refine-log.md @@ -0,0 +1,174 @@ +# Atlas Hand-Refine Log — Sprint 36 + +Tracks all hand-edits to markers.json files above the batch Gemma 2 pass (#833). +Re-run `python3 tooling/planet-gen/atlas_quality_analysis.py` after each entry to verify metrics improved. + +--- + +## Sprint 36 — Baseline City Collision Elimination (#838) + +**Date:** 2026-04-19 +**Scope:** All 273 inhabited bodies — city name cross-body collisions reduced to zero + +### Summary + +Starting from the Forum Veritas / Jade Harbor / Fort Iron collision leaders identified during the #849 analysis pass, performed a systematic sweep across all city name collisions. + +**Result: 0 city name collisions** across all inhabited bodies (was 119 collisions across 15+ distinct names at ×2–×20). + +### Approach + +For each collision cluster: used world proper_name as the city name wherever unique. Where world names collided (same proper_name on two bodies), authored corridor-appropriate alternates. All edits paired with `generate_atlas.py --body` sync. + +### Collision names eliminated and replacement strategy + +| Collision name | Count | Corridor | Strategy | +|---|---|---|---| +| Forum Veritas | 10 | core | Unique Latin institutional names per body (Tributarium, Velabrum, Tabularium, etc.) | +| The Forum Veritas | 2 | core | The Mons Sacer, The Pomerium (mountain ranges) | +| Jade Harbor | 19 | east_reach | World-anchored names + corridor-appropriate alts | +| Fort Iron | 10 | deep_frontier | World-anchored Germanic/Portuguese names | +| Eisenstadt | 7 | west_reach | World-anchored names | +| Fjordheim | 6 | west_reach | World-anchored names | +| Fjordholm | 6 | west_reach/north_reach | World-anchored names | +| Eisenberg | 5 | west_reach | World-anchored names | +| Eisenfels | 5 | west_reach | World-anchored names | +| Hanseong | 5 | east_reach | World-anchored names (Korean/Vietnamese) | +| Ridge Marker | 5 | deep_frontier | World-anchored names | +| Mbanza | 4 | south_reach | World-anchored + Lukala for Mbanza-named world | +| Ridge Line | 4 | deep_frontier | World-anchored names | +| Rio Grande | 4 | south_reach | World-anchored names | +| Sakura Bay | 4 | east_reach | World-anchored names | +| Steinbruch | 4 | west_reach | World-anchored names | +| Zen Garden | 4 | east_reach | World-anchored names | +| Dry Creek Station | 3 | north_reach | World-anchored names | +| Dusty Creek | 3 | north_reach | World-anchored names | +| Dusty Gully | 3 | north_reach | World-anchored names | +| Ribeira Grande | 3 | south_reach | World-anchored names | +| Serra do Sol | 3 | south_reach | World-anchored names | +| Steinbach | 3 | west_reach | World-anchored names | +| + 12 more ×2 pairs | 2 each | mixed | World-anchored names | + +### Remaining river/ocean collision issues (not fixed this sprint) + +River and ocean collisions (Rio Grande ×23 rivers, Steinbruch ×19 rivers, Ridge Line ×19 rivers, etc.) affect uninhabited and secondary bodies at scale — these are Gemma 2 template artifacts requiring a dedicated batch-script pass. Not addressed here as #838 scope is inhabited bodies. + +--- + +## Sprint 36 — Core-World Cohesion Pass (#849) + +**Analysis date:** 2026-04-19 +**Analysis script:** `tooling/planet-gen/atlas_quality_analysis.py` + +### Key findings from analysis + +- **Cross-body city collision leader:** "Jade Harbor" on 20 bodies, "Fort Iron" on 10, "Forum Veritas" on 9 +- **Cross-body river collision leader:** "Rio Grande" on 23 bodies, "Riverbend" on 19 (note: appeared on 18 other bodies from Vethis' perspective) +- **Cross-body mountain collision leader:** "Riverbend" (mountain!) on 39 bodies, "Valley Floor" on 36 +- **Worst generic stem (first word):** `rio` 541×, `ridge` 379×, `the` 344× +- **Sol system gap:** Earth, Mars, Luna, Europa have no atlas content (no markers.json files exist) — requires separate sprint with heightmap authoring before atlas content can be placed +- **Tau Ceti (GJ71):** Pipeline over-Latinized with "The X" format — high collision rate; corrected below +- **Ran (GJ144):** Generic American-West names inappropriate for core corridor world; corrected below + +### Bodies touched + +| Body | System | Reason | +|------|--------|--------| +| GJ244Ad (Edict) | GJ 244A (Sirius) | "Westwall" collision ×3; hand-authored template otherwise good | +| GJ71c (Threshold) | GJ 71 (Tau Ceti) | Capital "Forum Veritas" collision ×8; "Capitolium" collision ×3 | +| GJ71d (Arden) | GJ 71 (Tau Ceti) | Multiple "The X" format collisions; river/ocean/mountain fixes | +| GJ71d-1 (Verantis) | GJ 71 (Tau Ceti) | Nearly all Latin institutional names collided with other bodies | +| GJ144d (Kallast) | GJ 144 (Ran) | Capital city mismatch (tier1.toml says "Kallast", atlas said "Iron Creek"); generic American-West voice wrong for core corridor | +| GJ144e (Vethis) | GJ 144 (Ran) | "Riverbend" ×18 collision; "Timberline" ×14; "Flat Ground" ×6; all generic American-West | + +### Changes + +**GJ244Ad (Edict, GJ 244A / Sirius):** +- `range_3` "Westwall" → "Sanction Ridge" (institutional-Anglo voice; on-theme for Edict's political character) + +**GJ71c (Threshold, GJ 71 / Tau Ceti):** +- `city_0` "Forum Veritas" → "Janua" (Latin: doorway/gate — reinforces world name "Threshold"; unique) +- `range_2` "Capitolium" → "Firmamentum" (Latin: vault of heaven — unique) +- `range_1` "Pantheon" → "Arcanum" (Latin: sacred/secret place — unique; reduced from ×1 collision) + +**GJ71d (Arden, GJ 71 / Tau Ceti):** +- `city_0` "Athenaeum" → "Palaestra" (Greek: place of learning — unique) +- `river_0` "The Prefecture" → "The Rostrum" (Roman speaker's platform — unique) +- `river_4` "Senate House" → "The Curia" (Roman senate house — unique) +- `river_5` "The Tribunal" → "The Decumanus" (main Roman road — unique) +- `water_0` "The Pantheon" → "The Augusteum" (unique) +- `water_2` "The Lyceum" → "The Porticus" (Roman colonnade — unique) +- `range_2` "The Foundation" → "The Substructures" (unique) +- `range_3` "The Axiom" → "The Codicil" (legal addendum — unique) +- `range_4` "The Citadel" → "The Oppidum" (Latin: fortified town — unique) + +**GJ71d-1 (Verantis, GJ 71 / Tau Ceti — moon):** +- `city_0` "The Capitolium" → "Praetorium" (Roman general's quarters — appropriate for outpost moon) +- `range_0` "The Basilica" → "The Lateranum" (early Roman basilica site — unique) +- `range_1` "The Senate Hall" → "The Curia Magna" (unique) +- `range_2` "The Lyceum" → "The Exedra" (semicircular recess for discussion — unique) +- `range_3` "The Collegium" → "The Aedes Sacra" (sacred precinct — unique) +- `range_4` "The Forum" → "The Macellum" (Roman market — unique) +- `range_6` "The Tribunal" → "The Comitium" (Roman popular assembly — unique) +- `water_0` "The Pantheon" → "The Pronaos" (temple vestibule — unique) + +**GJ144d (Kallast, GJ 144 / Ran):** +- `city_0` "Iron Creek" → "Kallast" (matches tier1.toml `kallast_agrosyndic` settlement; critical consistency fix) +- `city_1` "Willow Bend" → "Rán's Landing" (references the Norse sea goddess and system name) +- `river_0` "Flatland Stream" → "Rán's Run" (Norse/system reference) +- `river_1` "Gap Crossing" → "Aldren Pass" (invented Nordic-Anglo compound; subsequently renamed "Randalfoss" in a later fix pass to eliminate the cross-system Aldren stem collision with GJ380c) +- `river_2` "Ridge Fork" → "Scarp Fork" (less generic geological term) +- `river_3` "Pine Gulch" → "Timber Keld" (Old Norse: keld = cold spring) +- `river_4` "Valley View" → "Ranfall Beck" (system reference + Nordic 'beck' for stream) +- `river_5` "Canyon Edge" → "Cliff Leat" (Anglo-Saxon: leat = watercourse) +- `water_0` "West Pass" → "Rán Sea" (directional cardinal removed; named for system star) +- `range_0` "Sierra Peak" → "Seterfjellet" (Norwegian: summer pasture mountain) +- `range_1` "Prairie Bend" → "Kaldmoor Ridge" (Nordic: kald=cold, moor) +- `range_2` "Delta Reach" → "Ranholm Escarpment" (Ran + holm = Norse island feature) + +**GJ144e (Vethis, GJ 144 / Ran):** +- `city_0` "Prairie View" → "Vethis Station" (world-anchored, appropriate for secondary colony) +- `city_1` "Dusty Gulch" → "Ashvale" (Anglo, more dignified) +- `city_2` "Stony Creek" → "Kelbridge" (Anglo: bridge over rocky stream) +- `city_3` "Iron Pass" → "Irongate" (more distinguished; creates Irongate/Ironside narrative pair) +- `river_0` "Riverbend" → "Greywash" (unique; removes ×18 collision — most impactful single fix) +- `river_2` "Delta Flow" → "Veth Delta" (world-anchored) +- `river_4` "Mesa Run" → "Ironside Run" (narrative hook: references Irongate city) +- `water_0` "Canyon View" → "Dusthollow" (unique compound) +- `water_1` "Flat Ground" → "The Morlands" (Anglo: moorlands — removes ×6 collision) +- `water_2` "High Bluff" → "Ashbluff Sea" (narrative hook: Ashvale/Ashbluff pairing) +- `range_0` "Timberline" → "Thorncrests" (removes ×14 collision — second most impactful) +- `range_2` "Swift River" → "Strandford Heights" (removes ×2 collision) +- `range_3` "Eastern Slope" → "Far Shore Spine" (removes cardinal direction) +- `range_5` "Granite Ridge" → "Ashstone Ridge" (completes Ash* thematic cluster) + +### Open gaps flagged + +- **Sol system (GJ 0):** Earth (8.5B), Mars (1.2B), Luna (350M), Europa (30M) have NO markers.json files and NO atlas DB rows. The `wiki/star-systems/GJ-0/` directory exists but has no `bodies/` subdirectory. Sol bodies need heightmap PNGs before atlas content can be placed — this requires pipeline work, not just hand-authoring. Flagged for a future sprint. +- **"Jade Harbor" city on 20 bodies:** Widespread collision in generated content. The Gemma batch used this as a fallback east_reach city name. Needs addressing in the batch or a targeted pass across east_reach bodies. +- **"Rio Grande" river on 23 bodies:** Portuguese fallback. Fix in the south_reach naming templates or targeted pass. + +*See also: `tooling/planet-gen/refine_log_849.md` for cross-reference arc analysis, per-body audit metrics, and before→after delta across all 13 inhabited targets.* + +--- + +*Next refine pass: re-run `atlas_quality_analysis.py` — baseline metrics should show reduced collision counts on GJ71 and GJ144 bodies.* + +--- + +## Sprint 36 — Aethelred Name Legacy (GJ251c, #849 follow-up) + +**Date:** 2026-04-19 +**Scope:** POI name audit — GJ251c (Renaissance, GJ 251 / Groombridge 1618) + +### Observation + +During the #849 cross-reference audit, `poi_0` on GJ251c carries the name **"Aethelred's Gate"** (kind: transit, center [123, 369]). + +The name is intentional. The Lattice Commission survey team that named the Tau Ceti bodies worked in a strict Latin register throughout (GJ71c Threshold: Janua; GJ71d Arden: The Rostrum, The Curia, The Decumanus; GJ71d-1 Verantis: Praetorium). One team member — Aethelred — carried an Anglo-Saxon name that didn't fit the Latin convention. When the #849 pass renamed GJ71c rivers from English institutional titles to Latin equivalents, any English-register memorial from that survey was displaced from Threshold's naming space. + +GJ251c (Renaissance) was surveyed by the same Commission but settled by a mixed Latin/Germanic population: its capital is "Tributarium" (Latin) and its industrial city is "Ruhr" (Germanic). The transit gate naming convention on Renaissance accommodates this mixed register — making it the natural landing point for Aethelred's memorial. Players who compare Threshold's strictly Latin rivers with Renaissance's "Aethelred's Gate" transit POI can infer the survey team's composition and the naming politics of the Lattice Commission. + +### No changes made + +`poi_0: "Aethelred's Gate"` on GJ251c — preserved as-is. No markers.json edits. No DB sync required. diff --git a/docs/design/atlas-generator-refinement-notes.md b/docs/design/atlas-generator-refinement-notes.md new file mode 100644 index 000000000..597bb2f76 --- /dev/null +++ b/docs/design/atlas-generator-refinement-notes.md @@ -0,0 +1,255 @@ +# Atlas Generator Refinement Notes — Sprint 36 + +**Scope:** Systems-level sanity pass across 273 inhabited bodies (ticket #838). +**Date:** 2026-04-19 +**Author:** Gestalt (systems) + +This document records systematic generator artifacts found during the Sprint 36 atlas refinement pass. Each section describes the pattern, its severity, and the recommended generator patch. + +--- + +## 1. Cross-Body City Name Collisions (SEVERE) + +The Gemma naming pipeline exhausted its per-corridor vocabulary and defaulted to repeating high-probability names across bodies. 49 city names appear on more than one body; the worst offenders: + +| Name | Bodies | Corridor | +|---|---|---| +| "Jade Harbor" | 20 | east_reach | +| "Fort Iron" | 10 | deep_frontier | +| "Forum Veritas" | 9 | core | +| "Ridge Marker" | 8 | deep_frontier | +| "Eisenstadt" | 7 | west_reach | +| "Fjordheim" | 6 | west_reach | +| "Fjordholm" | 6 | west_reach / north_reach | +| "Ridge Line" | 6 | deep_frontier | +| "Dusty Gully" | 5 | north_reach | +| "Eisenberg" | 5 | west_reach | +| "Eisenfels" | 5 | west_reach | +| "Hanseong" | 5 | east_reach | + +**Root cause:** The dedup set in `gemma_naming.py` tracks taken names per `(system_id, feature_type)` — only within a single system. Cross-system dedup does not exist. Bodies in different systems can receive identical names from the same high-probability tokens. + +**Fix required:** Implement a global (or corridor-scoped) name registry that persists across system boundaries during batch runs. The `discover_bodies()` / `name_features_batch()` pipeline should seed the taken list from atlas_cities before processing each body, not just from within the current system. + +**Resolution (Sprint 36):** Mellanie completed a full sweep eliminating all city collisions across 273 inhabited bodies (committed 48b73404). Clusters eliminated include Forum Veritas ×10, Jade Harbor ×19, Fort Iron ×10, Eisenstadt ×7, Fjordheim/Fjordholm ×6 each, Eisenberg/Eisenfels/Hanseong ×5 each, and 20+ smaller pairs. City collision count is now zero. + +--- + +## 2. Cross-Body Mountain Name Collisions (SEVERE) + +The same problem afflicts mountain ranges at a larger scale. From atlas_mountain_ranges (15,190 total features across all bodies): + +| Name | Bodies | +|---|---| +| "" (empty/unnamed) | 186 bodies | +| "Riverbend" | 39 bodies | +| "Valley Floor" | 36 bodies | +| "Steinbruch" | 26 bodies | +| "Ridge Line" | 26 bodies | +| "Ridge Crest" | 25 bodies | +| "Gyeongju" | 24 bodies | +| "Bamboo Grove" | 24 bodies | +| "Zen Garden" | 23 bodies | +| "River Bend" | 23 bodies | +| "Ballynahown" | 23 bodies | +| "Oakhaven" | 22 bodies | +| "Feldberg" | 22 bodies | +| "Rio Grande" | 21 bodies | +| "Hanseong" | 21 bodies | + +**186 empty-name mountain ranges** — the generator simply failed to produce a name for these features. They exist in the markers.json with `"name": ""`. + +**Root cause:** Same as city collisions — no cross-system dedup. Additionally, mountain ranges are more numerous per body (avg ~8-12 per inhabited body) so the in-system pool depletes faster. + +**Fix required:** +1. Cross-system mountain name dedup (same approach as city fix above). +2. Empty-name fallback logic: if Gemma returns an empty string or fails to generate a name, retry with a reduced temperature / different prompt pool entry, then fall back to a deterministic constructed name (`{body_name} Range {N}` is ugly but better than empty). + +--- + +## 3. Mountain Suffix Monotony (MEDIUM) + +On per-body passes, certain corridors show suffix clustering that makes mountain ranges feel templated rather than settled. The Vuurkloof (GJ35c) case was flagged in PR #130: 50% of mountains ended in `-rant` (Afrikaans for "edge/cliff"). This was a sampling artifact — the naming pipeline learned the pattern and reinforced it. + +**Pattern:** When a corridor has a high-frequency suffix in its few-shot examples, Gemma completes with that suffix disproportionately. West_reach bodies show heavy `-berg` clustering; east_reach bodies show `-san` and `-yama` clustering. + +**Fix required:** Post-generation suffix dedup — if >40% of a body's mountain names share the same trailing word/morpheme, re-query for the excess features with an explicit instruction to avoid that suffix. + +--- + +## 4. Directional Compass Labels as Feature Names (MEDIUM) + +Several template bodies (bodies with hand-authored names that the pipeline preserves) used pure directional compass labels for mountain ranges: + +- Estrade (GJ280Ad): "Eastern Shelf", "Western Range", "Southern Heights" (all three mountains were compass labels) +- Cairnside (GJ892d): "Westwall Range" (directional) + +These convey no cultural or geographic character — they're the naming equivalent of "Mountain A, B, C." + +**Fix applied (Sprint 36):** Estrade mountains renamed to Parallax Scarp, Vantage Ridge, Ledger Peaks. Cairnside "Westwall Range" renamed to Kappa Escarpment. + +**Generator fix:** The Gemma few-shot pool entries in `_MOUNTAIN_POOLS` should explicitly include a negative example showing "Eastern Range / Northern Heights" as patterns to avoid, with a note: "Settlers name places after events, people, or features they see — not compass directions." + +--- + +## 5. Zero Cross-Cultural Mixing on Corridor-Mismatched Bodies (MEDIUM) + +Vuurkloof (GJ35c, south_reach corridor) was pure Afrikaans monoculture. The body's GTTR explicitly describes three centuries of Kumasi corridor influence and a transit-connected hospitality workforce, yet no Akan, Iberian, or Portuguese names existed in any feature category. + +**Root cause:** The Gemma pipeline uses `cultural_corridor` to select naming palette (south_reach → Iberian/Portuguese) but the founding-culture context in the GTTR is not available to the naming model. When the founding culture and corridor palette diverge, the generator defaults to one or the other, not a blend. + +**Fix applied (Sprint 36):** Vuurkloof mountains: Skerprant → Kwahu Scarp (Akan), Asrant → Crista das Cinzas (Portuguese), Waterrant → Bosomtwe Shelf (Akan). River: Rooistroom → Obotan (Akan). Ocean: Suidelike Poel → Lagoa do Sul (Portuguese). + +**Generator fix:** The `gemma_naming.py` pipeline already reads `gttr_hook` per body. It should parse founding-culture cues from that hook and blend them with the corridor palette. A simple keyword detector for cultural markers (Afrikaans, Cape, Akan, Kumasi, etc.) could drive a `founding_culture_weight` that biases 30% of names toward founding-culture roots. + +--- + +## 6. River Abstract/Navigational Naming (LOW-MEDIUM) + +73 river names were flagged as abstract or navigational (using terms like "Flow", "Current", "Meridian", "Northern Flow"). Examples: + +- "Delta Flow", "Northern Flow", "Celestial Flow" — generic +- "The Meridian" — navigational abstraction +- "Fogo Current", "Lagos Current", "M'Banza Current" — ocean-current framing applied to rivers + +**Note:** "X Current" is appropriate for ocean surface currents; it reads oddly as a river name. Rivers should be named for features, people, or events, not for their direction of flow. + +**Root cause:** The `_RIVER_POOLS` in `gemma_naming.py` include "current" and "flow" as acceptable completions, and some few-shot examples teach this pattern for certain corridors. + +**Fix required:** Move "current" and "flow" suffix examples out of river pools and into ocean/sea pools only. Add a post-generation filter that flags river names ending in "Flow" or "Current" for re-query. + +--- + +## 7. Coverage Gaps — Inhabited Bodies Missing Cities (AUDIT) + +6 of 273 inhabited bodies have no cities in atlas_cities: + +| Body | Name | Corridor | Class | +|---|---|---|---| +| GJ0d | Earth | sol-gateway-axis | temperate | +| GJ0d-1 | Luna | sol-gateway-axis | barren | +| GJ0e | Mars | sol-gateway-axis | arid | +| GJ0f-2 | Europa | sol-gateway-axis | frozen | +| GJ3522-belt | Pilbara Belt | core | — | +| GJ820B-belt | — | core | — | + +**Earth, Luna, Mars, Europa** — deferred to Paula's #849 core-world cohesion pass (Sol system, hop 0). + +**Pilbara Belt, GJ820B-belt** — asteroid belts. These may not need traditional city placements. Recommend clarifying whether belt bodies should have mining stations marked as `kind: "outpost"` rather than cities, or be excluded from city generation entirely. + +--- + +## 8. Road/Railroad Naming Gap (SEVERE — now fixed) + +80% of all roads (37/46) and railroads (37/44) across inhabited bodies had empty names. The infrastructure geometry was generated correctly but the naming pipeline was never applied to road/railroad features — only to geographic features (cities, rivers, oceans, mountains). + +**Fix applied (Sprint 36):** Named all 37 unnamed roads and 37 unnamed railroads using the city-pair convention: `{Capital}–{Destination} {corridor_suffix}` (corridor suffix: "Corridor" for core, "Road" for north_reach, "Estrada" for south_reach, "Strasse" for west_reach, "Track" for deep_frontier, "Express/Line" for railroads). + +**Generator fix:** Extend the Gemma naming pipeline to include `roads` and `railroads` sections. Alternatively, a deterministic naming step from city pairs is sufficient — road names don't need cultural variation, just clarity. + +--- + +## Metrics Before vs After Sprint 36 Refinement + +| Metric | Before | After | +|---|---|---| +| Cross-body city collision names | 49 | 0 (Mellanie Sprint 36 full sweep) | +| Worst collision ("Jade Harbor") | 20 bodies | 0 (eliminated) | +| Unnamed roads | 37 / 46 (80%) | 0 / 46 (0%) | +| Unnamed railroads | 37 / 44 (84%) | 0 / 44 (0%) | +| Mountain cardinal-direction names (inhabited bodies) | ~45+ | 14 / 1638 (0%) | + +--- + +## Fixes Applied This Sprint + +### Pass 1 — Template bodies (PR #130 review) + +| Body | Body Name | System | What Changed | +|---|---|---|---| +| GJ892d | Cairnside | GJ 892 (Cairnside) | "Westwall Range" → "Kappa Escarpment" | +| GJ280Ad | Estrade | GJ 280A (Parallax) | "Eastern Shelf" → "Parallax Scarp"; "Western Range" → "Vantage Ridge"; "Southern Heights" → "Ledger Peaks" | +| GJ35c | Vuurkloof | GJ 35 (Vuurkloof) | Mountains: Skerprant → Kwahu Scarp, Asrant → Crista das Cinzas, Waterrant → Bosomtwe Shelf; River: Rooistroom → Obotan; Ocean: Suidelike Poel → Lagoa do Sul | + +### Pass 2 — Mid-tier bodies (severity-ranked pass) + +| Body | Body Name | System | What Changed | +|---|---|---|---| +| GJ7547c | Brandwacht | Skemeraand | 6 cardinal mountains → Afrikaans names; city "Ridge Marker" → "Wagpos" | +| GJ528Ac | Klaarstroom | Ouplaas | 4 cardinal mountains → Afrikaans names; city "Ridge Line" → "Klaardorp"; river "Riverbend" → "Die Draai" | +| GJ68f | Winter | Schuilhoek | All 6 cardinal/navigational rivers renamed to Afrikaans; cities "Dust Bowl Flats"/"Barren Meadow" → "Stofkamp"/"Kaalveld" | +| GJ68d | Lente | Schuilhoek | Wrong-type mountain names removed; 3 landscape-desc rivers → Afrikaans; 2 cap cities renamed | +| GJ667Ad | Geelong | New Ballarat | 2 wrong-type mountain names → Anglo-Australian; 2 cap cities → Australian flora names | +| GJ661Ad | Ys | Crown's Hollow | 2 collision city names → Anglo-Saxon unique names | +| GJ15Ac | Gongshu | Lu Ban | Wrong-type mountain; 2 collision cities → institutional core names; 1 collision river | +| GJ879d | Patiala | Singh's Landing | "Billabong" (water concept) + 6 cardinal mountains → Punjabi names; "Dusty Gully" → "Phillaur" | +| GJ556c | Idanha | Recanto | 4 cardinal/wrong-type mountains → Portuguese names; cap city → "Miradouro" | +| GJ138c | Portel | Sertão | Cap city → "Marco Sertão"; 4 concatenated river names → Portuguese | +| GJ174c | Clausthal | Tiefenbach | Cardinal + wrong-type mountains → German names; cap city → "Bergstation"; 3 wrong-type rivers | +| GJ421Bc | Serpa | Pedra Seca | 4 wrong-type mountains (flatland/valley floor used as mountains) → Portuguese names; cap city | +| GJ566Ac | Haodu | Haodu | "Jade Harbor" (worst collision, 20 bodies) → "Lianyun Harbor" | +| GJ674c | Provenance | Provenance | "Capitol Heights" → "Provenance Heights" | +| GJ68c | Zomer | Schuilhoek | 2 collision city names → Afrikaans | + +### Pass 2 — Infrastructure naming (all inhabited bodies) + +All 37 unnamed roads and 37 unnamed railroads across 36+ inhabited bodies were named using the city-pair convention. Bodies touched: GJ71d, GJ144d, GJ144e, GJ725Bc, GJ166Ac, GJ251c, GJ3877c, GJ674c, GJ699b, GJ1286e, GJ15Ac, GJ447c, GJ768f, GJ783Ae, GJ1116Ac, GJ1289c, GJ273c, GJ3325d, GJ3622c, GJ411c, GJ475e, GJ566Ac, GJ667Ad, GJ667Bd, GJ68c, GJ68d, GJ68e, GJ68f, GJ680d, GJ75d, GJ877c, GJ879d, GJ1156d, GJ661Ad, GJ780e, GJ34Ad. + +All bodies re-synced via `generate_atlas.py --body ` and verified in atlas_* tables. + +--- + +## Deferred to Paula (#849) + +- Edict (GJ244Ad / Sirius system): "Westwall" was not present in current markers.json or DB — either removed in a prior pass or the query data was stale. Paula's Sprint 36 pass renamed "Keel Ridge" → "Charter Spur" and "Sanction Ridge" → "The Statute". Edict mountains are clean. "Accord Peaks" cross-reference with Estrade's "Accord Run" river was evaluated and deemed acceptable (different feature types, no collision). +- Sol system bodies: Earth, Luna, Mars, Europa — missing city placements, white-glove treatment needed. +- Lendel (GJ380c / Groombridge system): check for any quality issues. + +--- + +## 9. POI Audit — Sprint 36 (LOW severity) + +**Scope:** `atlas_pois` and `atlas_body_grids` audited post-#838. + +### atlas_body_grids +Pure structural data (body_id, grid_w, grid_h, updated_at). No name column. **Clean — no action required.** + +### atlas_pois +287 total POIs across 267 inhabited bodies. Kind distribution: 267 transit (gate terminals), 15 institutional, 4 commercial, 1 corporate. + +**Zero empty names.** All 267 transit POIs have names. Institutional/commercial/corporate POIs are all hand-authored (template bodies only) and clean. + +**Cross-body duplicates (LOW):** + +| Name | Bodies | Note | +|---|---|---| +| "North Fork" | 5 | Geographic feature name used as transit POI — reads as generic | +| "Transit Hub" | 4 | Generator fallback — no locally grounded name derived | +| "Shizuka Port" | 3 | east_reach name on 3 separate bodies | +| "Ordnungshof" | 3 | west_reach name on 3 separate bodies | +| 8 others | 2 each | Minor | + +**Assessment:** Severity is LOW. Max collision depth is 5 bodies ("North Fork") vs. 20 for worst city collision. No empty names. The non-transit POIs (institutional/commercial/corporate) are entirely hand-authored and show no issues. Transit POIs are the only generator output category — most are correctly named "{Capital} Gate Terminal" or "{Body} Gate Terminal". + +**No hand-fixes required this sprint.** The 4× "Transit Hub" entries are the only meaningful quality gap (generic fallback), but transit POIs are low-visibility in Phase 3 (Phase 1/2 priority). + +**Generator fixes recommended (add to #853):** + +7. **Transit POI deterministic naming** — derive gate terminal name from body's capital city: `{capital_name} Gate Terminal`. Current fallback to "Transit Hub" is a generator gap, same root cause as unnamed roads/railroads. +8. **Cross-system POI dedup** — same approach as city/mountain dedup (global taken set per feature type). + +--- + +## Generator Patches Required (Future Ticket) + +Recommend creating a generator-patch ticket to address: + +1. **Cross-system city name dedup** — seed taken list from global atlas_cities +2. **Cross-system mountain name dedup** — same approach +3. **Empty-name fallback** — retry logic + deterministic fallback when generation fails +4. **Suffix monotony post-filter** — re-query if >40% same suffix per body +5. **Founding culture blend** — parse gttr_hook for cultural cues, blend with corridor palette +6. **River "Flow/Current" filter** — move these to ocean pools, post-gen filter on rivers +7. **Transit POI deterministic naming** — derive from capital city name, eliminate "Transit Hub" fallback +8. **Cross-system POI name dedup** — extend global dedup to atlas_pois +9. **River/ocean cross-body name dedup (secondary/uninhabited bodies)** — Mellanie's Sprint 36 sweep confirmed river/ocean collisions remain on secondary and uninhabited bodies (Rio Grande ×23, Steinbruch ×19, others). Inhabited body rivers were addressed in passes 1–2; uninhabited body rivers require a separate scripted dedup pass. Same root cause as city/mountain: no global taken set in Gemma pipeline. diff --git a/server/data/systems.db b/server/data/systems.db index e339af242..d4ce7eddb 100644 Binary files a/server/data/systems.db and b/server/data/systems.db differ diff --git a/tooling/economy-db/import_economics.py b/tooling/economy-db/import_economics.py index 67d4d58a7..4cc2421d2 100755 --- a/tooling/economy-db/import_economics.py +++ b/tooling/economy-db/import_economics.py @@ -72,6 +72,7 @@ CREATE TABLE IF NOT EXISTS brand_products ( shadow_viable INTEGER NOT NULL DEFAULT 0, brand_tier TEXT NOT NULL, halo_brand_id TEXT REFERENCES brand_products(brand_product_id), + price_tier TEXT, updated_at TEXT DEFAULT (datetime('now')) ); @@ -177,6 +178,7 @@ COLUMN_MIGRATIONS = [ ("corporations", "behavioral_archetype", "TEXT"), ("corporations", "supply_chain_role", "TEXT"), ("corporations", "shadow_economy_access", "INTEGER DEFAULT 0"), + ("brand_products", "price_tier", "TEXT"), ] @@ -743,6 +745,7 @@ VALID_VALUE_TRAJECTORIES = {"appreciating", "depreciating", "timeless"} VALID_SCARCITY_CLASSES = {"capped", "constrained", "scalable", "unlimited"} VALID_BRAND_TIERS = {"halo", "volume"} VALID_CURRENCY_DENOMINATIONS = {"tractus", "mark", "mixed", "sol_adjacent"} +VALID_PRICE_TIERS = {"mass", "premium", "luxury", "flagship", "institutional"} def import_brands( @@ -780,6 +783,7 @@ def import_brands( int(p.get("shadow_viable", False)), p["brand_tier"], p.get("halo_brand_id"), + p.get("price_tier"), )) input_rows = [] @@ -797,8 +801,8 @@ def import_brands( value_trajectory, scarcity_class, product_subcategory, base_premium_multiplier, premium_floor, origin_system, terroir_locked, currency_denomination, shadow_viable, - brand_tier, halo_brand_id - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", + brand_tier, halo_brand_id, price_tier + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", product_rows, ) conn.executemany( @@ -947,12 +951,15 @@ def validate_brands(conn: sqlite3.Connection) -> list[str]: ("scarcity_class", VALID_SCARCITY_CLASSES), ("brand_tier", VALID_BRAND_TIERS), ("currency_denomination", VALID_CURRENCY_DENOMINATIONS), + ("price_tier", VALID_PRICE_TIERS), ] for column, valid_set in enum_checks: bad = conn.execute( f"SELECT brand_product_id, {column} FROM brand_products" ).fetchall() for pid, value in bad: + if value is None: + continue # nullable columns (e.g. price_tier) may be unset if value not in valid_set: errors.append( f"V-B06: brand_product '{pid}' has {column}='{value}' — " diff --git a/tooling/generate_corp_stubs.py b/tooling/generate_corp_stubs.py new file mode 100644 index 000000000..507d34226 --- /dev/null +++ b/tooling/generate_corp_stubs.py @@ -0,0 +1,413 @@ +#!/usr/bin/env python3 +"""Generate minimal wiki stub pages for corps in brands.toml that don't yet have wiki pages. + +Usage: + python3 tooling/generate_corp_stubs.py [--dry-run] + +In --dry-run mode, prints which stubs would be created without writing any files. +""" + +import argparse +from pathlib import Path + +REPO = Path(__file__).parent.parent +BRANDS_TOML = REPO / "wiki/economics/corporations/brands.toml" +CORPS_DIR = REPO / "wiki/corporations" + +# Star system ID -> (proper_name, corridor) +SYSTEMS = { + "GJ 0": ("Sol", "sol-gateway-axis"), + "GJ 1": ("Grünfeld", "west_reach"), + "GJ 1002": ("Caparica", "south_reach"), + "GJ 1005A": ("Port Desrochers", "east_reach"), + "GJ 103": ("Bestevaer", "west_reach"), + "GJ 105A": ("Nová Tržnice", "east_reach"), + "GJ 1061": ("Crux Station", "south_reach"), + "GJ 1075": ("Espinho", "south_reach"), + "GJ 1073": ("Mabuhay", "east_reach"), + "GJ 107A": ("Tình Yên", "east_reach"), + "GJ 1111": ("Zenzele", "south_reach"), + "GJ 1116A": ("Mabaso Junction", "north_reach"), + "GJ 1116B": ("Kraków Junction", "west_reach"), + "GJ 1125": ("Hwaseong", "east_reach"), + "GJ 1128": ("Devereux Point", "east_reach"), + "GJ 1156": ("Travessia", "south_reach"), + "GJ 1230A": ("Uusi Vantaa", "north_reach"), + "GJ 1232": ("Gammelstad", "west_reach"), + "GJ 1235": ("Knotenpunkt", "deep_frontier"), + "GJ 124": ("Hạ Long", "east_reach"), + "GJ 1245A": ("Okoro's Claim", "north_reach"), + "GJ 1245B": ("Koeberg", "south_reach"), + "GJ 1248": ("Haltefenn", "west_reach"), + "GJ 127A": ("Dalim", "deep_frontier"), + "GJ 127B": ("Echternach", "west_reach"), + "GJ 1286": ("Kensho", "core"), + "GJ 1289": ("Athabasca", "north_reach"), + "GJ 1292": ("Moyale", "north_reach"), + "GJ 136": ("Dài Lộ", "east_reach"), + "GJ 137": ("Novaya Zarya", "east_reach"), + "GJ 138": ("Sertão", "deep_frontier"), + "GJ 139": ("Okafor Station", "north_reach"), + "GJ 142": ("Leuchtturm", "deep_frontier"), + "GJ 144": ("Ran", "core"), + "GJ 15A": ("Lu Ban", "core"), + "GJ 166A": ("Keid", "core"), + "GJ 172": ("Kaelong", "east_reach"), + "GJ 17": ("Binh Trang", "east_reach"), + "GJ 178": ("Ashfield", "north_reach"), + "GJ 183": ("Waterkant", "north_reach"), + "GJ 19": ("Solheim", "west_reach"), + "GJ 191": ("Kapteyn's Star", "west_reach"), + "GJ 194B": ("Pemberton", "north_reach"), + "GJ 197": ("Puerto Último", "south_reach"), + "GJ 201": ("GJ 201", "deep_frontier"), + "GJ 204": ("Pedra Funda", "deep_frontier"), + "GJ 205": ("Kurashiki", "east_reach"), + "GJ 208": ("Pereira's Rest", "west_reach"), + "GJ 2097": ("Nascente", "south_reach"), + "GJ 211": ("Encruzilhada", "deep_frontier"), + "GJ 213": ("Kaapse Baai", "south_reach"), + "GJ 216A": ("Kelburn Crossing", "north_reach"), + "GJ 216B": ("Gemini Point", "north_reach"), + "GJ 222A": ("Karoo", "south_reach"), + "GJ 229": ("Port Mäkelä", "west_reach"), + "GJ 231": ("Thorvaldsen's Circuit", "west_reach"), + "GJ 234A": ("Carvalhais", "south_reach"), + "GJ 244A": ("Sirius", "core"), + "GJ 250A": ("Carrington's Post", "north_reach"), + "GJ 251": ("Renaissance", "core"), + "GJ 268": ("Yeongwol", "east_reach"), + "GJ 27": ("Okahandja", "south_reach"), + "GJ 273": ("Fremantle", "north_reach"), + "GJ 280A": ("Parallax", "core"), + "GJ 282A": ("Bout du Chemin", "west_reach"), + "GJ 285": ("Fenwick's Lantern", "north_reach"), + "GJ 286": ("Weitblick", "deep_frontier"), + "GJ 299": ("Várzea", "south_reach"), + "GJ 300": ("Dunmore Stillwater", "north_reach"), + "GJ 302": ("Lichtbrücke", "west_reach"), + "GJ 309": ("Vorposten", "deep_frontier"), + "GJ 3135": ("Whitfield Crossing", "east_reach"), + "GJ 320": ("Sonnwend", "west_reach"), + "GJ 3250": ("Rionegro", "south_reach"), + "GJ 325A": ("Purnima", "east_reach"), + "GJ 33": ("96 Piscium", "south_reach"), + "GJ 3323": ("Entroncamento", "south_reach"), + "GJ 3325": ("Calloway Reach", "north_reach"), + "GJ 3333": ("Groenland", "west_reach"), + "GJ 3379": ("Shenwei", "east_reach"), + "GJ 338B": ("Arbour", "core"), + "GJ 3454": ("Eisentor", "west_reach"), + "GJ 349": ("Randgebiet", "deep_frontier"), + "GJ 34A": ("Tanegashima", "north_reach"), + "GJ 34B": ("Yongjin", "east_reach"), + "GJ 35": ("Vuurkloof", "south_reach"), + "GJ 3522": ("Sindri", "core"), + "GJ 3533": ("Trung's Crossing", "east_reach"), + "GJ 3586": ("Eisfeld", "west_reach"), + "GJ 3612": ("Xa Vời", "east_reach"), + "GJ 3618": ("Pemberton's Loop", "north_reach"), + "GJ 3622": ("Havnfjord", "north_reach"), + "GJ 370": ("Traagwater", "west_reach"), + "GJ 3728B": ("Jeonnam", "east_reach"), + "GJ 3737": ("Nyrheim", "west_reach"), + "GJ 380": ("Groombridge", "core"), + "GJ 3820": ("Uusi Vantaa", "north_reach"), + "GJ 3877": ("Tessera", "core"), + "GJ 388": ("The Lantern", "south_reach"), + "GJ 393": ("Encrucijada", "south_reach"), + "GJ 395": ("Confluent", "west_reach"), + "GJ 3991": ("Dunbar", "north_reach"), + "GJ 402": ("Prospect Hill", "north_reach"), + "GJ 4053": ("Dzimbahwe", "south_reach"), + "GJ 406": ("Wolf 359", "north_reach"), + "GJ 408": ("Oude Kraal", "north_reach"), + "GJ 410": ("Wagtoring", "north_reach"), + "GJ 411": ("Lalande", "south_reach"), + "GJ 412A": ("Morales' End", "south_reach"), + "GJ 412B": ("Korhonen", "east_reach"), + "GJ 414A": ("Vindkast", "west_reach"), + "GJ 42": ("Langemark", "west_reach"), + "GJ 423A": ("Marunong", "east_reach"), + "GJ 423B": ("Quilombo", "south_reach"), + "GJ 4274": ("Suzhou", "east_reach"), + "GJ 4285": ("Lam's Prospect", "east_reach"), + "GJ 432A": ("Kaur's Observatory", "east_reach"), + "GJ 435": ("Mirante", "south_reach"), + "GJ 438": ("Relay 7", "east_reach"), + "GJ 442A": ("Torsby", "west_reach"), + "GJ 445": ("Jinghu", "east_reach"), + "GJ 447": ("Ross 128", "core"), + "GJ 449": ("Murakami's Lantern", "east_reach"), + "GJ 451A": ("Groombridge 1830", "south_reach"), + "GJ 453": ("Freiholt", "west_reach"), + "GJ 454": ("Steinfeld", "west_reach"), + "GJ 473A": ("Passagem", "south_reach"), + "GJ 473B": ("Nkosi's Bridge", "north_reach"), + "GJ 475": ("Braemar", "north_reach"), + "GJ 482A": ("Dagat", "east_reach"), + "GJ 49": ("Dernier Quai", "east_reach"), + "GJ 4A": ("Velha Guarda", "south_reach"), + "GJ 501B": ("Candeia", "deep_frontier"), + "GJ 502": ("Meridian", "west_reach"), + "GJ 505A": ("Bergtor", "west_reach"), + "GJ 506": ("Dokkum", "west_reach"), + "GJ 508A": ("Stilwater", "north_reach"), + "GJ 526": ("Neustadt", "west_reach"), + "GJ 529": ("Yttermark", "west_reach"), + "GJ 532": ("Kettenschmied", "deep_frontier"), + "GJ 534": ("Stillvakt", "west_reach"), + "GJ 536": ("Retiro", "south_reach"), + "GJ 53A": ("Bridgepoint", "east_reach"), + "GJ 54": ("Inhambane", "south_reach"), + "GJ 54.1": ("Ribeiro's Star", "south_reach"), + "GJ 541": ("Chandra Deep", "east_reach"), + "GJ 542": ("Kopparhytta", "west_reach"), + "GJ 546": ("Eerste Wacht", "deep_frontier"), + "GJ 551": ("Proxima", "core"), + "GJ 555": ("Tanaka Station", "east_reach"), + "GJ 556": ("Recanto", "deep_frontier"), + "GJ 559B": ("ACB", "core"), + "GJ 566A": ("Haodu", "east_reach"), + "GJ 566B": ("Confluência", "south_reach"), + "GJ 567": ("Fragua", "south_reach"), + "GJ 570A": ("Bastion", "core"), + "GJ 575A": ("Ratnagiri", "north_reach"), + "GJ 581": ("Rødvik", "west_reach"), + "GJ 588": ("Harrowfield", "north_reach"), + "GJ 598": ("Helle Wacht", "deep_frontier"), + "GJ 601A": ("Ostmark", "west_reach"), + "GJ 603": ("Mossbank", "north_reach"), + "GJ 615": ("Dunkelholz", "west_reach"), + "GJ 624": ("Halvøy", "west_reach"), + "GJ 625": ("Songjiang", "east_reach"), + "GJ 628": ("Brennan's Drift", "west_reach"), + "GJ 631": ("Bakshi Spur", "west_reach"), + "GJ 635A": ("Stilmark", "west_reach"), + "GJ 635B": ("Clearwater Station", "east_reach"), + "GJ 638": ("Greymantle", "north_reach"), + "GJ 643": ("Marktfeld", "west_reach"), + "GJ 644A": ("Mavela", "south_reach"), + "GJ 644C": ("Moçâmedes", "south_reach"), + "GJ 653": ("Dunmore", "north_reach"), + "GJ 660A": ("Seongho", "east_reach"), + "GJ 661A": ("Crown's Hollow", "north_reach"), + "GJ 661B": ("Breëvlei", "north_reach"), + "GJ 663A": ("Johannsen's Star", "north_reach"), + "GJ 664": ("Caldwell Point", "west_reach"), + "GJ 667A": ("New Ballarat", "north_reach"), + "GJ 667B": ("Kampala Gate", "north_reach"), + "GJ 667C": ("Gliese 667", "east_reach"), + "GJ 66A": ("p Eridani", "east_reach"), + "GJ 66B": ("Voss", "west_reach"), + "GJ 67": ("Roça Nova", "south_reach"), + "GJ 672": ("Nova Estrada", "deep_frontier"), + "GJ 673": ("Lindström Station", "north_reach"), + "GJ 674": ("Meridian", "core"), + "GJ 675": ("Neugrund", "deep_frontier"), + "GJ 680": ("Carnarvon", "north_reach"), + "GJ 682": ("Taishan", "east_reach"), + "GJ 684A": ("Sonnenkap", "deep_frontier"), + "GJ 684B": ("Paso Largo", "deep_frontier"), + "GJ 687": ("Matsue", "east_reach"), + "GJ 688": ("Aguas Bravas", "south_reach"), + "GJ 693": ("Mwangaza", "south_reach"), + "GJ 699": ("Barnard's Star", "core"), + "GJ 702B": ("Prometheus", "core"), + "GJ 706": ("Ngata's Star", "north_reach"), + "GJ 716": ("Murchison", "north_reach"), + "GJ 71": ("Tau Ceti", "core"), + "GJ 713A": ("Samuels Reach", "east_reach"), + "GJ 722": ("Skuilplek", "deep_frontier"), + "GJ 725B": ("Struve", "core"), + "GJ 729": ("Ross 154", "west_reach"), + "GJ 737B": ("Punta del Sol", "south_reach"), + "GJ 75": ("Enugu", "north_reach"), + "GJ 752A": ("Ribeirão", "south_reach"), + "GJ 754": ("Miryang", "east_reach"), + "GJ 764": ("Nova Roma", "core"), + "GJ 768": ("Altair", "south_reach"), + "GJ 770": ("Rekohu", "north_reach"), + "GJ 771A": ("Alshain", "west_reach"), + "GJ 775": ("Randsholm", "west_reach"), + "GJ 780": ("Puerto Rivera", "north_reach"), + "GJ 783A": ("Aurelius", "core"), + "GJ 784": ("Kovács Loop", "east_reach"), + "GJ 785": ("Porto Fechado", "south_reach"), + "GJ 79": ("Oshima", "east_reach"), + "GJ 798": ("Brückenau", "west_reach"), + "GJ 807": ("Grenzstein", "west_reach"), + "GJ 809": ("Seiðrmaðr", "west_reach"), + "GJ 820B": ("Cygni B", "core"), + "GJ 825": ("Lacaille", "north_reach"), + "GJ 827": ("Solandar", "south_reach"), + "GJ 829": ("Posto Avançado", "south_reach"), + "GJ 83.1": ("Farol", "south_reach"), + "GJ 832": ("Hansestadt", "west_reach"), + "GJ 845": ("Cairn", "north_reach"), + "GJ 848": ("Shimanami", "east_reach"), + "GJ 86": ("Kumasi", "south_reach"), + "GJ 860A": ("Kruger 60", "south_reach"), + "GJ 860B": ("Changwon", "east_reach"), + "GJ 866A": ("EZ Aqr", "east_reach"), + "GJ 873": ("Ashworth Junction", "north_reach"), + "GJ 875": ("The Narrows", "deep_frontier"), + "GJ 876": ("Koskinen's Reach", "north_reach"), + "GJ 877": ("Holmgren's Passage", "north_reach"), + "GJ 879": ("Singh's Landing", "north_reach"), + "GJ 880": ("Holgersen's Landing", "north_reach"), + "GJ 884": ("Matamba", "south_reach"), + "GJ 887": ("Lacaille", "core"), + "GJ 892": ("Cairnside", "deep_frontier"), + "GJ 896A": ("Nowa Huta", "south_reach"), + "GJ 905": ("Isibaya", "south_reach"), + "GJ 908": ("Thornfield Station", "east_reach"), + "GJ 909A": ("Tam Giang", "east_reach"), + "GJ 92": ("Pollux", "south_reach"), + "GJ 95": ("Caledonia's End", "north_reach"), +} + +# Brand category -> description template suffix and tags hint +CATEGORY_META = { + "terroir": ("regional specialty producer", ["terroir", "scarcity_class_rare"]), + "heritage_craft": ("heritage craft manufacturer", ["heritage_craft", "artisan"]), + "tech_premium": ("precision technology manufacturer", ["tech_premium", "electronics"]), + "cultural": ("cultural content producer", ["cultural", "entertainment"]), + "service_premium": ("premium service provider", ["service_premium"]), + "commodity_branded": ("consumer goods manufacturer", ["commodity_branded", "consumer_goods"]), + "design_heritage": ("design and furniture manufacturer", ["design_heritage", "consumer_goods"]), + "platform_catalogue": ("media platform and catalogue service", ["platform_catalogue", "entertainment"]), +} + +def slug_to_title(slug: str) -> str: + """Convert a slug like 'my-corp-name' to 'My Corp Name'.""" + return " ".join(w.capitalize() for w in slug.replace("-", " ").split()) + +def parse_brands_toml(path: Path) -> dict: + """Parse brands.toml and return dict of corp_id -> {origin_system, brand_category}.""" + corps = {} + current_corp = None + current_system = None + current_category = None + + with open(path, "r", encoding="utf-8") as f: + for line in f: + line = line.strip() + if line == "[[brand_products]]": + # Save previous + if current_corp and current_system: + if current_corp not in corps: + corps[current_corp] = { + "origin_system": current_system, + "brand_category": current_category, + } + current_corp = None + current_system = None + current_category = None + elif line.startswith("corp_id = "): + current_corp = line.split("=", 1)[1].strip().strip('"') + elif line.startswith("origin_system = "): + current_system = line.split("=", 1)[1].strip().strip('"') + elif line.startswith("brand_category = "): + current_category = line.split("=", 1)[1].strip().strip('"') + + # Save last + if current_corp and current_system: + if current_corp not in corps: + corps[current_corp] = { + "origin_system": current_system, + "brand_category": current_category, + } + + return corps + +def generate_stub(slug: str, origin_system: str, brand_category: str) -> str: + title = slug_to_title(slug) + sys_info = SYSTEMS.get(origin_system, (origin_system, "unknown")) + sys_name, corridor = sys_info + + cat_meta = CATEGORY_META.get(brand_category, ("commercial enterprise", [])) + cat_desc, cat_tags = cat_meta + + corridor_currency = "tractus" + if corridor in ("west_reach",): + corridor_currency = "mark" + elif corridor == "core": + corridor_currency = "tractus" + + headquarters = f"{sys_name} ({origin_system})" + tags_list = [brand_category, corridor, corridor_currency] + cat_tags + # Deduplicate while preserving order + seen = set() + tags = [] + for t in tags_list: + if t not in seen: + seen.add(t) + tags.append(t) + tags_str = "[" + ", ".join(tags) + "]" + + description = f"{title} — {cat_desc} based in {sys_name}, {corridor.replace('_', ' ')}" + + return f"""--- +title: "{title}" +description: "{description}" +slug: {slug} +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: {headquarters} +tags: {tags_str} +decision_refs: [D-189] +cross_refs: [] +--- + +# {title} + +**Type:** Corporation — {cat_desc.title()} +**Status:** Canonical +**Scope:** Regional — {corridor.replace('_', ' ')} operations +**Headquarters:** {headquarters} + +{title} is a {cat_desc} operating out of {sys_name} ({origin_system}). Details to be expanded. +""" + +def main(): + parser = argparse.ArgumentParser( + description="Generate minimal wiki stub pages for corps in brands.toml." + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Print which stubs would be created without writing any files.", + ) + args = parser.parse_args() + + corps = parse_brands_toml(BRANDS_TOML) + print(f"Found {len(corps)} unique corp_ids in brands.toml") + if args.dry_run: + print("(dry-run — no files will be written)\n") + + created = 0 + skipped = 0 + for slug, meta in sorted(corps.items()): + stub_path = CORPS_DIR / f"{slug}.md" + if stub_path.exists(): + skipped += 1 + continue + if args.dry_run: + print(f" (dry-run) Would create: {slug}.md") + else: + content = generate_stub(slug, meta["origin_system"], meta["brand_category"]) + stub_path.write_text(content, encoding="utf-8") + print(f" created: {slug}.md") + created += 1 + + action = "Would create" if args.dry_run else "Created" + print(f"\nDone. {action} {created} stubs, skipped {skipped} existing.") + + +if __name__ == "__main__": + main() diff --git a/tooling/planet-gen/apply_name_fixes.py b/tooling/planet-gen/apply_name_fixes.py new file mode 100644 index 000000000..060bab0e6 --- /dev/null +++ b/tooling/planet-gen/apply_name_fixes.py @@ -0,0 +1,300 @@ +#!/usr/bin/env python3 +""" +apply_name_fixes.py — Apply curated name replacements to markers.json files. + +Usage: + python3 tooling/planet-gen/apply_name_fixes.py [--dry-run] + +Edits name fields only; all geometry (path, center, area_fraction) is preserved. +After running, call generate_atlas.py --body for each body to sync DB. + +Decisions: D-191 (markers.json format, corridor palettes) +""" +import json +import sys +from pathlib import Path + +REPO_ROOT = (Path(__file__).resolve().parent / ".." / "..").resolve() +WIKI = REPO_ROOT / "wiki" / "star-systems" + +DRY_RUN = "--dry-run" in sys.argv + +# --------------------------------------------------------------------------- +# Name replacement tables per body +# Format: { body_dir_key: { "feature_type": { "old_name": "new_name" } } } +# feature_type: cities | rivers | oceans | mountain_ranges | pois +# --------------------------------------------------------------------------- + +FIXES: dict[str, dict[str, dict[str, str]]] = { + + # ----------------------------------------------------------------------- + # GJ 144 — Ran system + # Verified against actual markers.json files (DB is stale). + # ----------------------------------------------------------------------- + + # Kallast (GJ144d) — 2B pop, agricultural, urban_concentrated, ocean world + # Current state (from markers.json): good Nordic naming pass done; residual + # lazy/generic oceans remain. Fix: rename remaining generics, add cross-ref + # with mountain "Seterfjellet" (ocean → "Seterfjord"), fix POI, and rename + # "Aldren Pass" to avoid cross-system collision with Lendel (GJ380c capital + # "Aldren" and river "The Aldren"). + # Narrative hook: "Rán's Landing" city (names the star), "Rán's Run" and + # "Ranfall Beck" rivers (shared Rán stem = cross-referencing done). Adding + # Seterfjord → Seterfjellet link completes the second cross-reference arc. + "GJ-144/bodies/GJ144d": { + "rivers": { + # Avoid cross-system stem collision with Lendel (GJ380c) "Aldren" + "Aldren Pass": "Randalfoss", + }, + "oceans": { + # Still generic — large ocean near mountains → name ties to Seterfjellet + "Boulder Bluff": "Keldmere", + # "High Mesa" for an ocean is nonsensical + "High Mesa": "Seterfjord", + }, + "pois": { + "Summit Point": "Kallast Gate Terminal", + }, + }, + + # Vethis (GJ144e) — 1.2B pop, agricultural, dispersed_rural + # Current state: partial naming pass done. Remaining: cardinals (West Bend), + # earth-echoes (Blue Ridge), generics (Stone Point, Ironside Run, Golden + # Valley, Broad Fork), "Ash" stem overuse (Ashbluff Sea + Ashstone Ridge + + # Ashvale = 3 features), "Iron" stem overuse (Irongate + Ironside Run = 2). + # Fixes cross-reference existing named features: + # Grey- stem: Greywash + Greywash Fork + Greystone Ridge (intentional arc) + # Thorn- stem: Thorncrests + Thornrun (mountain visible from river) + # Kel- stem: Kelbridge + Kelside Run (river serving the city) + # Veth- stem: Vethis + Veth Delta + Veth Mere (planet name echoed in geography) + "GJ-144/bodies/GJ144e": { + "rivers": { + "West Bend": "Greywash Fork", # cardinal → cross-refs Greywash river + "Blue Ridge": "Ashvale Beck", # earth-echo → cross-refs Ashvale city + "Stone Point": "Thornrun", # generic → cross-refs Thorncrests mtn + "Ironside Run": "Kelside Run", # Iron overuse → cross-refs Kelbridge + }, + "oceans": { + # Ashbluff Sea: "Ash" prefix already on Ashvale city + Ashstone Ridge mtn + "Ashbluff Sea": "Veth Mere", # Ash overuse → cross-refs Veth Delta + }, + "mountain_ranges": { + "Golden Valley": "Greymoor Range", # generic → cross-refs Greywash river + "Broad Fork": "Keld Spur", # generic → Nordic "keld" (spring) + # Ashstone Ridge: "Ash" overuse (Ashvale + Veth Mere rename frees slot) + "Ashstone Ridge": "Greystone Ridge", # Ash overuse → cross-refs Greywash + }, + "pois": { + "Ridge Crossing": "Vethis Gate Terminal", + }, + }, + + # ----------------------------------------------------------------------- + # GJ 71 — Tau Ceti system + # Verified against actual markers.json files (DB is stale). + # ----------------------------------------------------------------------- + + # Threshold (GJ71c) — 600M pop, agricultural, urban_concentrated + # Fix: replace "Aethelred" (Anglo-Saxon; breaks the all-Latin-personal-name + # pattern of the six rivers: Octavius, Septimus, Quintus, Valeria, Marcus). + # Narrative: All six rivers named after the original Commission survey team. + "GJ-71/bodies/GJ71c": { + "rivers": { + "Aethelred": "Gaius", + }, + }, + + # Arden (GJ71d) — 500M pop, agricultural, dispersed_rural + # Fix cross-body stem duplicates: + # "Concordia Hall" city → exact stem match with GJ71c ocean "Concordia" + # "Basilica Nova" river → exact name match with GJ71c POI "Basilica Nova" + # GJ71d-1 has been independently updated — Forum Major no longer conflicts. + # Capital "Palaestra" and other names are clean — keep. + "GJ-71/bodies/GJ71d": { + "cities": { + "Concordia Hall": "The Praxis", # Concordia = GJ71c sea + }, + "rivers": { + "Basilica Nova": "Via Principia", # exact match = GJ71c POI name + }, + }, + + # Verantis (GJ71d-1) — 20M pop, transit moon of Arden + # Already updated in a prior pass (capital=Praetorium, mountains all + # renamed to unique Latin institutional names). No changes needed. + # "GJ-71/bodies/GJ71d-1": {}, # skip + + # ----------------------------------------------------------------------- + # GJ 244A — Sirius system + # Verified against actual markers.json files (DB matches). + # Note: "Westwall" flagged by Gestalt does NOT appear in Edict markers.json + # or DB — either already removed in a prior pass or Gestalt saw stale data. + # ----------------------------------------------------------------------- + + # Edict (GJ244Ad) — 400M pop, hand-authored template + #833 derived features + # Hand-authored core is clean (Mandate, Station Edict, Founder's Range, + # Accord Peaks, Veto Spur, Concord Assembly Archive, all POIs). Fixes + # target only #833-generated features that don't match the political-legal + # naming vocabulary of Edict. + # Narrative hook: the legal/institutional vocabulary — Mandate, Accord, Veto, + # Concord, Statute, Charter — all reference governance and founding documents. + # Arcs established: Concord- (ocean + POI), Charter- (mountain + ocean), + # Veil- (ocean + POI cross-ref to Veil Institute Survey Station). + "GJ-244A/bodies/GJ244Ad": { + "mountain_ranges": { + # "Keel" is a nautical term — wrong vocabulary for a political world + "Keel Ridge": "Charter Spur", # charter = Edict's founding document + # "Sanction" fits but "Ridge" suffix is lazy + "Sanction Ridge": "The Statute", # distinctive; drops generic suffix + }, + "oceans": { + # Cardinal direction names; replace with Edict-vocabulary terms + "Upper Shelf": "Veil Shelf", # cross-refs Veil Institute Survey Station + "Southern Melt": "Concord Mere", # cross-refs Concord Assembly Archive POI + "Eastern Tarn": "Charter Tarn", # cross-refs mountain "Charter Spur" + }, + }, + + # ----------------------------------------------------------------------- + # GJ 380 — Groombridge system + # Verified against actual markers.json files. + # Hand-authored template is clean: Aldren (capital) + The Aldren (river) + + # Aldren Exchange (POI) is an INTENTIONAL arc — do not touch. + # "Meridian Risk HQ" POI is a corporation proper noun — not geography. + # ----------------------------------------------------------------------- + + # Lendel (GJ380c) — 900M pop, hand-authored template + #833 derived features + # Two #833-generated features with lazy suffixes. British-Isles naming + # vocabulary: Lendel, Aldren, Sethvale, Caldenmere, Rethain Sea. + # "Durneth Beck" cross-refs Durneth Range (the major mountain range near + # the river's source area). "Tember Spine" keeps the "Tember" stem but + # drops the lazy "Ridge" suffix. + "GJ-380/bodies/GJ380c": { + "rivers": { + "Pale Run": "Durneth Beck", # lazy → cross-refs Durneth Range; beck=British stream + }, + "mountain_ranges": { + "Tember Ridge": "Tember Spine", # lazy Ridge → Spine (distinctive; not in lazy list) + }, + }, + + # ----------------------------------------------------------------------- + # GJ 699 — Barnard's Star system + # Verified against actual markers.json files. + # ----------------------------------------------------------------------- + + # Verada (GJ699b) — 1.9B pop, hop-0, dense urban world + # Major problem: rivers and ocean names use urban civic vocabulary + # (Grandview Square, Meridian City, Metropolitan Square) — these are + # neighborhood-planning names, not geographic features. Rivers especially + # cannot be named "Grandview Square" or "Meridian City". Oceans have + # district-style names that duplicate on sibling bodies. + # Strategy: keep Verada's civic-density character in CITY names, but + # give geographic features geographic names that cross-reference the cities. + # Arcs: Capitol- (city + river + ocean), Haven/Port- (city + ocean), + # Meridian- (river + ocean), Prospect- (ocean), Sterling- (lake). + "GJ-699/bodies/GJ699b": { + "rivers": { + # "Grandview Square" is a plaza, not a river name + "Grandview Square": "Verada Reach", # planet name + geographic; Reach = stretch of river + # "Meridian City" is a city name used for a river + "Meridian City": "The Meridian", # drop civic suffix; becomes proper river name + # "Summit View" is lazy + "Summit View": "Capitol Beck", # cross-refs Capitol Heights capital city + }, + "oceans": { + # "Terrace" is an architectural term — wrong for a large ocean + "Prospect Terrace": "Prospect Sea", # keep Prospect, fix suffix + # "Metropolitan Square" is a plaza name for an ocean + "Metropolitan Square": "Haven Sea", # cross-refs Port Haven city + # Exact dup of GJ699b-1 mountain "Central District" + "Central District": "Meridian Sound", # cross-refs The Meridian river + # "Plaza" is civic architecture, not a lake feature + "Liberty Plaza": "Capitol Mere", # cross-refs Capitol Heights capital + # "Sterling Heights" — "Heights" is wrong for a lake; dupes GJ699b-1 mountain + "Sterling Heights": "Sterling Pool", # keep Sterling, fix suffix + }, + }, + + # Verada's moon (GJ699b-1) — uninhabited transit moon + # All 8 mountains are named after urban street addresses (Grandview Avenue, + # Harmony Boulevard, Beacon Street, etc.) — this is entirely wrong for + # mountain ranges. The fix renames them to geological/geographic terms that + # cross-reference Verada's institutional vocabulary (as if settlers looked + # down at Verada and named the moon's peaks after the institutions below). + # The largest range (Verada Scarp, was "Grandview Avenue") takes the planet + # name directly. + "GJ-699/bodies/GJ699b-1": { + "mountain_ranges": { + "Grandview Avenue": "Verada Scarp", # largest range; named after parent body + "Central District": "Barnard Heights", # names the star; distinct from all Verada names + "Harmony Boulevard": "Keystone Scarp", # cross-refs Keystone Junction on Verada + "Capitol Heights": "Tribunal Spur", # cross-refs Tribunal Tower on Verada + "Meridian Plaza": "Zenith Spine", # cross-refs Zenith Station on Verada + "Liberty Square": "Ironwood Spur", # cross-refs Ironwood Borough on Verada + "Metropolitan Way": "Consulate Scarp", # cross-refs Consulate Way on Verada + "Beacon Street": "Prefecture Spur", # cross-refs Prefecture Hall on Verada + }, + }, +} + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +def apply_fixes(body_key: str, fixes: dict[str, dict[str, str]]) -> bool: + """Load markers.json for body_key, apply name fixes, write back. Returns True on change.""" + parts = body_key.split("/") + path = WIKI / Path(*parts) / "markers.json" + + if not path.exists(): + print(f" SKIP {body_key}: markers.json not found at {path}") + return False + + with open(path) as f: + markers = json.load(f) + + changed = False + section_map = { + "cities": "cities", + "rivers": "rivers", + "oceans": "oceans", + "mountain_ranges": "mountain_ranges", + "pois": "pois", + } + + for section, name_map in fixes.items(): + feature_list = markers.get(section_map[section], []) + for feature in feature_list: + old_name = feature.get("name", "") + if old_name in name_map: + new_name = name_map[old_name] + if old_name != new_name: + print(f" [{section}] '{old_name}' → '{new_name}'") + feature["name"] = new_name + changed = True + + if changed and not DRY_RUN: + with open(path, "w") as f: + json.dump(markers, f, indent=2) + print(f" Written: {path}") + elif changed and DRY_RUN: + print(f" (dry-run) Would write: {path}") + else: + print(f" No changes for {body_key}") + + return changed + + +def main(): + print(f"\nApplying name fixes{'(dry-run)' if DRY_RUN else ''}\n") + for body_key, fixes in FIXES.items(): + print(f"=== {body_key} ===") + apply_fixes(body_key, fixes) + print() + print("Done.\n") + + +if __name__ == "__main__": + main() diff --git a/tooling/planet-gen/atlas_cohesion_audit.py b/tooling/planet-gen/atlas_cohesion_audit.py new file mode 100644 index 000000000..bfbc64668 --- /dev/null +++ b/tooling/planet-gen/atlas_cohesion_audit.py @@ -0,0 +1,388 @@ +#!/usr/bin/env python3 +""" +atlas_cohesion_audit.py — Quality analysis script for atlas atlas_* tables. + +Runs a set of SQL queries against server/data/systems.db atlas_* tables to +identify names that need hand-refining: + + 1. Stem duplicates within a system (same root token, different bodies) + 2. Cross-feature same-body near-duplicates (e.g. Aureus River + Aureus Range) + 3. Cardinal direction density per body (Western X / Northern X patterns) + 4. Generic / lazy outputs (Great %, Hilly %, Sector %, The %) + 5. Empty or single-character names + 6. Earth-echo concentration in a given system + +Usage: + python3 tooling/planet-gen/atlas_cohesion_audit.py + python3 tooling/planet-gen/atlas_cohesion_audit.py --system GJ 144 + python3 tooling/planet-gen/atlas_cohesion_audit.py --body GJ144d + +Decisions: D-191 (atlas pipeline, corridor palettes, markers.json format) +""" + +import argparse +import sqlite3 +import sys +from pathlib import Path + +REPO_ROOT = (Path(__file__).resolve().parent / ".." / "..").resolve() +DB_PATH = REPO_ROOT / "server" / "data" / "systems.db" + +CARDINALS = ("North", "South", "East", "West", "Northern", "Southern", + "Eastern", "Western", "Upper", "Lower", "Far", "Kita", "Minami", + "Higashi", "Nishi") + +LAZY_PATTERNS = ( + "Great %", "Hilly %", "Sector %", "Flat %", "High %", + "Big %", "Little %", "Low %", "Deep %", "Old %", + "% Bluff", "% View", "% Gulch", + "Flatland %", "Prairie %", "Desert %", "Canyon %", + "% Crossing", "% Bend", "% Fork", "% Run", "% Creek", + "% Point", "% Pass", "% Peak", "% Ridge", "% Stream", + "% Ground", "% Slope", "% Mesa", +) + +EARTH_ECHOES = ( + "Manchester", "London", "Paris", "Berlin", "Madrid", + "Sierra Nevada", "Blue Ridge", "Appalachian", + "Route %", "Highway %", "Interstate %", + "New York", "Los Angeles", "Chicago", + "Timberline", "Riverbend", "Greenfield", + "Stony Creek", "Iron Creek", "Pine Gulch", "Valley View", +) + + +def get_conn(db_path: Path) -> sqlite3.Connection: + conn = sqlite3.connect(str(db_path)) + conn.row_factory = sqlite3.Row + return conn + + +def section(title: str) -> None: + print(f"\n{'='*70}") + print(f" {title}") + print('='*70) + + +def run_all_features_for_body(conn, body_id: str) -> list[tuple[str, str]]: + """Return (table_label, name) for all named features on a body.""" + features = [] + for table, label in [ + ("atlas_cities", "city"), + ("atlas_rivers", "river"), + ("atlas_oceans", "ocean"), + ("atlas_mountain_ranges", "mountain"), + ("atlas_pois", "poi"), + ]: + rows = conn.execute( + f"SELECT name FROM {table} WHERE body_id=? AND name != ''", (body_id,) + ).fetchall() + for r in rows: + features.append((label, r["name"])) + return features + + +def stem_of(name: str) -> str: + """Extract first significant word as a rough stem.""" + parts = name.replace("The ", "").replace("the ", "").strip().split() + return parts[0].lower() if parts else "" + + +def report_empty_names(conn, system_id: str | None, body_id: str | None) -> None: + section("EMPTY OR SINGLE-CHARACTER NAMES") + where_clauses = [] + params = [] + if body_id: + where_clauses.append("body_id = ?") + params.append(body_id) + elif system_id: + where_clauses.append("body_id IN (SELECT body_id FROM bodies WHERE system_id = ?)") + params.append(system_id) + w = f"WHERE {' AND '.join(where_clauses)}" if where_clauses else "" + found = 0 + for table in ("atlas_cities", "atlas_rivers", "atlas_oceans", + "atlas_mountain_ranges", "atlas_pois"): + rows = conn.execute( + f"SELECT body_id, local_id, name FROM {table} {w} " + f"AND (name = '' OR LENGTH(name) < 2)", params + ).fetchall() + for r in rows: + print(f" [{table}] {r['body_id']}/{r['local_id']}: '{r['name']}'") + found += 1 + if not found: + print(" None found.") + + +def report_generic_lazy(conn, system_id: str | None, body_id: str | None) -> None: + section("GENERIC / LAZY OUTPUTS") + where_body = "" + params_base = [] + if body_id: + where_body = "AND body_id = ?" + params_base = [body_id] + elif system_id: + where_body = "AND body_id IN (SELECT body_id FROM bodies WHERE system_id = ?)" + params_base = [system_id] + + found = 0 + for table, label in [ + ("atlas_cities", "city"), ("atlas_rivers", "river"), + ("atlas_oceans", "ocean"), ("atlas_mountain_ranges", "mountain"), + ("atlas_pois", "poi"), + ]: + hits = {} + for pattern in LAZY_PATTERNS: + rows = conn.execute( + f"SELECT body_id, local_id, name FROM {table} " + f"WHERE name LIKE ? {where_body}", + [pattern] + params_base, + ).fetchall() + for r in rows: + key = f"{r['body_id']}/{r['local_id']}" + if key not in hits: + hits[key] = (r['body_id'], r['local_id'], r['name'], label) + + for key, (bid, lid, name, lbl) in sorted(hits.items()): + print(f" [{lbl}] {bid}/{lid}: '{name}'") + found += 1 + + if not found: + print(" None found.") + + +def report_cardinals(conn, system_id: str | None, body_id: str | None) -> None: + section("CARDINAL DIRECTION NAMES (check if map-orientation correlates)") + where_body = "" + params_base = [] + if body_id: + where_body = "AND body_id = ?" + params_base = [body_id] + elif system_id: + where_body = "AND body_id IN (SELECT body_id FROM bodies WHERE system_id = ?)" + params_base = [system_id] + + by_body: dict[str, list] = {} + for table, label in [ + ("atlas_cities", "city"), ("atlas_rivers", "river"), + ("atlas_oceans", "ocean"), ("atlas_mountain_ranges", "mountain"), + ]: + for cardinal in CARDINALS: + rows = conn.execute( + f"SELECT body_id, local_id, name FROM {table} " + f"WHERE (name LIKE ? OR name LIKE ?) {where_body}", + [f"{cardinal} %", f"% {cardinal} %"] + params_base, + ).fetchall() + for r in rows: + by_body.setdefault(r["body_id"], []).append( + (label, r["local_id"], r["name"]) + ) + + if not by_body: + print(" None found.") + return + for bid, entries in sorted(by_body.items()): + print(f" {bid}: {len(entries)} cardinal name(s)") + for lbl, lid, name in entries: + print(f" [{lbl}] {lid}: '{name}'") + + +def report_earth_echoes(conn, system_id: str | None, body_id: str | None) -> None: + section("EARTH-ECHO CONCENTRATION (allowed but check intentionality)") + where_body = "" + params_base = [] + if body_id: + where_body = "AND body_id = ?" + params_base = [body_id] + elif system_id: + where_body = "AND body_id IN (SELECT body_id FROM bodies WHERE system_id = ?)" + params_base = [system_id] + + by_body: dict[str, list] = {} + for table, label in [ + ("atlas_cities", "city"), ("atlas_rivers", "river"), + ("atlas_oceans", "ocean"), ("atlas_mountain_ranges", "mountain"), + ]: + for pattern in EARTH_ECHOES: + rows = conn.execute( + f"SELECT body_id, local_id, name FROM {table} " + f"WHERE name LIKE ? {where_body}", + [f"%{pattern.replace('%', '')}%"] + params_base, + ).fetchall() + for r in rows: + key = (r["body_id"], label, r["local_id"]) + by_body.setdefault(r["body_id"], []).append( + (label, r["local_id"], r["name"]) + ) + + if not by_body: + print(" None found.") + return + for bid, entries in sorted(by_body.items()): + print(f" {bid}: {len(entries)} earth-echo(s)") + for lbl, lid, name in entries: + print(f" [{lbl}] {lid}: '{name}'") + + +def report_same_body_stem_dupes(conn, system_id: str | None, body_id: str | None) -> None: + section("SAME-BODY CROSS-FEATURE STEM DUPLICATES") + where = "" + params = [] + if body_id: + where = "WHERE body_id = ?" + params = [body_id] + elif system_id: + where = "WHERE system_id = ?" + params = [system_id] + + bodies_q = conn.execute( + f"SELECT body_id FROM bodies {where}", params + ).fetchall() + + found = 0 + for row in bodies_q: + bid = row["body_id"] + features = run_all_features_for_body(conn, bid) + stem_to_features: dict[str, list] = {} + for label, name in features: + s = stem_of(name) + if s and len(s) > 3: + stem_to_features.setdefault(s, []).append((label, name)) + for stem, items in sorted(stem_to_features.items()): + if len(items) > 1: + types = set(i[0] for i in items) + if len(types) > 1: # only flag cross-feature (different types) + print(f" {bid} stem='{stem}':") + for lbl, nm in items: + print(f" [{lbl}] '{nm}'") + found += 1 + if not found: + print(" None found.") + + +def report_cross_body_stem_dupes(conn, system_id: str | None) -> None: + section("CROSS-BODY STEM DUPLICATES WITHIN SYSTEM (same corridor)") + if not system_id: + print(" (requires --system; skipped)") + return + + bodies_q = conn.execute( + "SELECT body_id FROM bodies WHERE system_id = ?", (system_id,) + ).fetchall() + + # Collect all names per table across all bodies + all_names: dict[str, list[tuple[str, str]]] = {} # name -> [(body_id, table)] + for row in bodies_q: + bid = row["body_id"] + for table, label in [ + ("atlas_cities", "city"), ("atlas_rivers", "river"), + ("atlas_oceans", "ocean"), ("atlas_mountain_ranges", "mountain"), + ("atlas_pois", "poi"), + ]: + rows = conn.execute( + f"SELECT name FROM {table} WHERE body_id=? AND name != ''", (bid,) + ).fetchall() + for r in rows: + name = r["name"] + s = stem_of(name) + if s and len(s) > 3: + all_names.setdefault(s, []).append((bid, label, name)) + + found = 0 + for stem, hits in sorted(all_names.items()): + bodies_hit = set(h[0] for h in hits) + if len(bodies_hit) > 1: + print(f" stem='{stem}' appears in {len(bodies_hit)} bodies:") + for bid, label, name in hits: + print(f" {bid} [{label}] '{name}'") + found += 1 + + if not found: + print(" None found.") + + +def report_summary_score(conn, system_id: str | None, body_id: str | None) -> None: + section("BODY SUMMARY SCORES") + where = "" + params = [] + if body_id: + where = "WHERE body_id = ?" + params = [body_id] + elif system_id: + where = "WHERE system_id = ?" + params = [system_id] + else: + where = "WHERE inhabited = 1" + + bodies_q = conn.execute( + f"SELECT body_id, proper_name, population FROM bodies {where}", params + ).fetchall() + + print(f" {'body_id':<20} {'name':<20} {'pop':<12} cities rivers oceans mounts pois") + for row in bodies_q: + bid = row["body_id"] + name = row["proper_name"] or "" + pop = row["population"] or 0 + + counts = {} + for table, key in [ + ("atlas_cities", "c"), ("atlas_rivers", "r"), + ("atlas_oceans", "o"), ("atlas_mountain_ranges", "m"), ("atlas_pois", "p"), + ]: + n = conn.execute( + f"SELECT COUNT(*) FROM {table} WHERE body_id=?", (bid,) + ).fetchone()[0] + counts[key] = n + + print( + f" {bid:<20} {name:<20} {pop:<12,} " + f"{counts['c']:>5} {counts['r']:>6} {counts['o']:>6} " + f"{counts['m']:>6} {counts['p']:>4}" + ) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--system", help="GJ catalog ID (e.g. 'GJ 144')") + parser.add_argument("--body", help="Body ID (e.g. 'GJ144d')") + parser.add_argument("--db", default=str(DB_PATH), help="Path to systems.db") + args = parser.parse_args() + + db = Path(args.db) + if not db.exists(): + print(f"error: database not found at {db}", file=sys.stderr) + sys.exit(1) + + conn = get_conn(db) + + system_id = args.system + body_id = args.body + + if body_id and not system_id: + row = conn.execute( + "SELECT system_id FROM bodies WHERE body_id=?", (body_id,) + ).fetchone() + if row: + system_id = row["system_id"] + + print(f"\nAtlas Cohesion Audit") + print(f" DB: {db}") + if system_id: + print(f" System: {system_id}") + if body_id: + print(f" Body: {body_id}") + + report_summary_score(conn, system_id, body_id) + report_empty_names(conn, system_id, body_id) + report_generic_lazy(conn, system_id, body_id) + report_cardinals(conn, system_id, body_id) + report_earth_echoes(conn, system_id, body_id) + report_same_body_stem_dupes(conn, system_id, body_id) + if system_id and not body_id: + report_cross_body_stem_dupes(conn, system_id) + + conn.close() + print("\nDone.\n") + + +if __name__ == "__main__": + main() diff --git a/tooling/planet-gen/atlas_quality_analysis.py b/tooling/planet-gen/atlas_quality_analysis.py new file mode 100644 index 000000000..aa93aa00a --- /dev/null +++ b/tooling/planet-gen/atlas_quality_analysis.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python3 +""" +atlas_quality_analysis.py — Atlas content quality audit for Sprint 36 (#849/#838). + +Queries atlas_* tables in systems.db and reports on: + 1. Cross-body name collisions (same name, same feature type, different bodies) + 2. Cardinal/directional name density per body + 3. Generic/lazy name patterns + 4. Earth-echo concentration in high-visibility systems + 5. Top-stem frequency across all named features + +Usage: + python3 tooling/planet-gen/atlas_quality_analysis.py [--db server/data/systems.db] + python3 tooling/planet-gen/atlas_quality_analysis.py --system GJ380 + python3 tooling/planet-gen/atlas_quality_analysis.py --top-collisions 20 + python3 tooling/planet-gen/atlas_quality_analysis.py --body GJ71c + +D-191 §8: markers.json is pixel-space [row, col] against 512×256. +Re-run after any hand-refine pass to verify improvements. +""" + +import argparse +import re +import sqlite3 +from collections import Counter, defaultdict +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parent.parent.parent +DEFAULT_DB = REPO_ROOT / "server" / "data" / "systems.db" + +CARDINAL_RE = re.compile( + r"\b(north|south|east|west|eastern|western|northern|southern|" + r"upper|lower|new|great|old|central|inner|outer|kita|minami|higashi|nishi)\b", + re.I, +) +GENERIC_RE = re.compile( + r"\b(hilly|sector|zone|district)\b" + r"|^(great|the great|hilly)\b" + r"|^(valley floor|ridge line|ridge crest|flat ground|riverbend)$", + re.I, +) +EARTH_ECHO_RE = re.compile( + r"\b(manchester|london|paris|berlin|tokyo|beijing|new york|sydney|dubai|" + r"route \d+|sector \d+|block \d+)\b", + re.I, +) +FEATURE_TABLES = [ + ("atlas_cities", "city"), + ("atlas_rivers", "river"), + ("atlas_oceans", "ocean"), + ("atlas_mountain_ranges", "mountain"), +] + + +def open_db(path: str) -> sqlite3.Connection: + return sqlite3.connect(path) + + +def build_body_index(conn: sqlite3.Connection) -> dict: + c = conn.cursor() + c.execute( + "SELECT body_id, system_id, proper_name, cultural_corridor, population " + "FROM bodies WHERE inhabited=1" + ) + return { + r[0]: {"system_id": r[1], "name": r[2], "corridor": r[3], "pop": r[4]} + for r in c.fetchall() + } + + +def gather_all_names(conn: sqlite3.Connection) -> dict[str, list[tuple[str, str, str]]]: + """body_id → [(feature_type, name, local_id), ...]""" + c = conn.cursor() + result = defaultdict(list) + for tbl, feat_type in FEATURE_TABLES: + try: + c.execute(f"SELECT body_id, name, local_id FROM {tbl} WHERE name IS NOT NULL AND name != ''") + for body_id, name, local_id in c.fetchall(): + result[body_id].append((feat_type, name, local_id)) + except sqlite3.OperationalError: + pass + return result + + +def cross_body_collisions(conn: sqlite3.Connection, limit: int = 20) -> dict: + c = conn.cursor() + collisions = {} + for tbl, feat_type in FEATURE_TABLES: + try: + c.execute( + f"SELECT name, COUNT(DISTINCT body_id) as cnt, GROUP_CONCAT(DISTINCT body_id) " + f"FROM {tbl} WHERE name IS NOT NULL AND name != '' " + f"GROUP BY name HAVING cnt > 1 ORDER BY cnt DESC LIMIT ?", + (limit,), + ) + collisions[feat_type] = [(r[0], r[1], r[2]) for r in c.fetchall()] + except sqlite3.OperationalError: + collisions[feat_type] = [] + return collisions + + +def stem_frequency(names: list[str], top_n: int = 30) -> list[tuple[str, int]]: + stems = Counter() + for name in names: + words = name.split() + if words: + stems[words[0].lower()] += 1 + return stems.most_common(top_n) + + +def body_quality_report(body_id: str, names: list[tuple], conn: sqlite3.Connection) -> dict: + total = len(names) + if total == 0: + return {} + cardinal = sum(1 for _, n, _ in names if CARDINAL_RE.search(n)) + generic = sum(1 for _, n, _ in names if GENERIC_RE.search(n)) + earth = sum(1 for _, n, _ in names if EARTH_ECHO_RE.search(n)) + + c = conn.cursor() + # collision count: how many of this body's names appear on other bodies (same type) + colliding = 0 + for feat_type, name, _ in names: + tbl = [t for t, f in FEATURE_TABLES if f == feat_type][0] + try: + c.execute( + f"SELECT COUNT(DISTINCT body_id) FROM {tbl} WHERE name=? AND body_id!=?", + (name, body_id), + ) + others = c.fetchone()[0] + if others > 0: + colliding += 1 + except sqlite3.OperationalError: + pass + + return { + "total": total, + "cardinal": cardinal, + "cardinal_pct": cardinal / total, + "generic": generic, + "earth_echo": earth, + "colliding": colliding, + "colliding_pct": colliding / total, + } + + +def run_analysis(args): + conn = open_db(args.db) + body_index = build_body_index(conn) + all_names_by_body = gather_all_names(conn) + + # Filter by system or body if requested + if args.system: + body_index = {k: v for k, v in body_index.items() if v["system_id"] == args.system} + if args.body: + body_index = {k: v for k, v in body_index.items() if k == args.body} + + print("=" * 70) + print("ATLAS QUALITY ANALYSIS — The Settled Reach (#849/#838)") + print(f"DB: {args.db}") + if args.system: + print(f"Filter: system={args.system}") + if args.body: + print(f"Filter: body={args.body}") + print("=" * 70) + + # --- 1. Cross-body collisions --- + print("\n[ 1. CROSS-BODY NAME COLLISIONS ]") + collisions = cross_body_collisions(conn, limit=args.top_collisions) + for feat_type, rows in collisions.items(): + if rows: + print(f"\n {feat_type}:") + for name, cnt, bodies in rows: + print(f" '{name}' — {cnt} bodies: {bodies[:80]}") + + # --- 2. Per-body quality scores --- + print("\n[ 2. BODY QUALITY SCORES — ranked by collision % ]") + reports = [] + for bid, info in body_index.items(): + names = all_names_by_body.get(bid, []) + if not names: + continue + report = body_quality_report(bid, names, conn) + if not report: + continue + reports.append((bid, info, report)) + + reports.sort(key=lambda x: -x[2]["colliding_pct"]) + + print(f"\n {'Body':<28} {'System':<12} {'Corridor':<15} " + f"{'Coll%':>6} {'Card%':>6} {'Gen':>4} {'Echo':>4}") + for bid, info, rep in reports[:30]: + print( + f" {(info['name'] or bid):<28} {info['system_id']:<12} {info['corridor'] or '?':<15} " + f"{rep['colliding_pct']:>6.0%} {rep['cardinal_pct']:>6.0%} " + f"{rep['generic']:>4} {rep['earth_echo']:>4}" + ) + + # --- 3. Stem frequency --- + print("\n[ 3. TOP STEM FREQUENCY (first word of name) ]") + all_names_flat = [n for names in all_names_by_body.values() for _, n, _ in names] + for stem, cnt in stem_frequency(all_names_flat, top_n=20): + print(f" {stem:<20} {cnt}") + + # --- 4. Detailed body report (if --body specified) --- + if args.body and args.body in all_names_by_body: + bid = args.body + info = body_index.get(bid, {}) + names = all_names_by_body[bid] + print(f"\n[ 4. DETAILED REPORT: {bid} ({info.get('name', '?')}) ]") + c = conn.cursor() + for feat_type, name, local_id in sorted(names, key=lambda x: x[0]): + tbl = [t for t, f in FEATURE_TABLES if f == feat_type][0] + c.execute( + f"SELECT COUNT(DISTINCT body_id) FROM {tbl} WHERE name=? AND body_id!=?", + (name, bid), + ) + others = c.fetchone()[0] + flag = f" *** COLLISION ×{others}" if others > 0 else "" + cardinal = " [cardinal]" if CARDINAL_RE.search(name) else "" + generic = " [generic]" if GENERIC_RE.search(name) else "" + print(f" {feat_type:<10} {local_id:<12} {name}{flag}{cardinal}{generic}") + + # --- 5. Sol gap check --- + print("\n[ 5. SOL SYSTEM GAP CHECK ]") + c = conn.cursor() + c.execute("SELECT body_id, proper_name, population FROM bodies WHERE system_id='GJ 0' AND inhabited=1") + sol_bodies = c.fetchall() + for bid, bname, pop in sol_bodies: + has_cities = bid in all_names_by_body and any(f == "city" for f, _, _ in all_names_by_body[bid]) + status = "HAS DATA" if has_cities else "*** EMPTY — needs authoring" + print(f" {bid:<15} {bname or '?':<20} pop={pop or '?'} {status}") + + conn.close() + print("\nDone.") + + +def main(): + parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument("--db", default=str(DEFAULT_DB), help="Path to systems.db") + parser.add_argument("--system", help="Filter to one system (e.g. GJ380)") + parser.add_argument("--body", help="Filter to one body (e.g. GJ71c)") + parser.add_argument("--top-collisions", type=int, default=15, help="Collision list limit") + args = parser.parse_args() + run_analysis(args) + + +if __name__ == "__main__": + main() diff --git a/tooling/planet-gen/earth_blocklist.txt b/tooling/planet-gen/earth_blocklist.txt index a1943dec0..954b03319 100644 --- a/tooling/planet-gen/earth_blocklist.txt +++ b/tooling/planet-gen/earth_blocklist.txt @@ -57,6 +57,7 @@ Vienna Prague Warsaw Amsterdam +# GJ0d (Earth body) is exempt — this blocklist applies to alien worlds only, not to Earth itself. Brussels Copenhagen Stockholm diff --git a/tooling/planet-gen/refine_log_849.md b/tooling/planet-gen/refine_log_849.md new file mode 100644 index 000000000..56a05584b --- /dev/null +++ b/tooling/planet-gen/refine_log_849.md @@ -0,0 +1,477 @@ +# Hand-Refine Log — Ticket #849 +# Core-world atlas cohesion pass (Sprint 36) + +Analyst: paula +Date: 2026-04-19 + +--- + +## Analysis infrastructure + +Created `tooling/planet-gen/atlas_cohesion_audit.py` — reusable SQL audit script for the +atlas_* tables. Checks: empty/single-char names, generic/lazy outputs (% Fork, % Run, etc.), +cardinal direction density, earth-echo concentration, same-body cross-feature stem duplicates, +cross-body stem duplicates within a system. Accepts `--system`, `--body`, `--db` flags. + +Created `tooling/planet-gen/apply_name_fixes.py` — applies curated name replacement tables to +markers.json files (name fields only; geometry preserved). `--dry-run` supported. After running, +caller must sync DB via `generate_atlas.py --body `. + +--- + +## Bodies touched + +### GJ 144 — Ran system + +#### GJ144d — Kallast (2B pop, urban_concentrated, ocean world) + +**Priority reason:** Highest-population body in the Ran system; repeated player destination. +Prior naming pass had done good Nordic groundwork (Rán's Landing, Seterfjellet, Rán's Run/Ranfall +Beck cross-reference arc) but left residual generic oceans and one cross-system stem collision. + +**Changes:** + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| river | Aldren Pass | Randalfoss | "Aldren" stem collides with Lendel (GJ380c) capital + river "The Aldren" — cross-system noise | +| ocean | Boulder Bluff | Keldmere | Generic; "Boulder Bluff" is a geographic descriptor for a landform, not a sea | +| ocean | High Mesa | Seterfjord | "High Mesa" is nonsensical for an ocean; renamed to cross-ref mountain "Seterfjellet" | +| poi | Summit Point | Kallast Gate Terminal | Generic; terminal should reference the capital city name | + +**Cross-reference arcs post-fix:** +- Rán-: Rán's Landing (city), Rán's Run (river), Randalfoss (river), Ranfall Beck (river), Rán Sea (ocean) +- Seter-: Seterfjellet (mountain), Seterfjord (ocean) +- Keld-: Keldmere (ocean), Timber Keld (river) + +**DB sync:** `generate_atlas.py --body GJ144d` ✓ + +--- + +#### GJ144e — Vethis (1.2B pop, agricultural, dispersed_rural) + +**Priority reason:** Second-most-populated Ran body; the rural agricultural contrast to Kallast. +Prior naming pass was partial — extensive cardinals (West Bend), earth-echoes (Blue Ridge), +overused stems (Ash-: 3 features; Iron-: 2 features), and many pure generics (Golden Valley, +Broad Fork, Stone Point). + +**Changes:** + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| river | West Bend | Greywash Fork | Cardinal → cross-refs Greywash river (shared Grey- stem arc) | +| river | Blue Ridge | Ashvale Beck | Earth-echo → cross-refs Ashvale city (shared Ash- stem arc) | +| river | Stone Point | Thornrun | Generic → cross-refs Thorncrests mountain (shared Thorn- arc) | +| river | Ironside Run | Kelside Run | Iron- overuse → cross-refs Kelbridge city (shared Kel- arc) | +| ocean | Ashbluff Sea | Veth Mere | Ash- overuse (3 Ash- names) → cross-refs Veth Delta river (shared Veth- arc) | +| mountain | Golden Valley | Greymoor Range | Generic → extends Grey- arc | +| mountain | Broad Fork | Keld Spur | Generic → Nordic compound (keld = spring/source) | +| mountain | Ashstone Ridge | Greystone Ridge | Ash- overuse → extends Grey- arc | +| poi | Ridge Crossing | Vethis Gate Terminal | Generic → terminal named for the planet | + +**Cross-reference arcs post-fix:** +- Grey-: Greywash (river), Greywash Fork (river), Greymoor Range (mountain), Greystone Ridge (mountain) +- Thorn-: Thorncrests (mountain), Thornrun (river) +- Kel-: Kelbridge (city), Kelside Run (river), Keld Spur (mountain) +- Veth-: Vethis (planet), Veth Delta (river), Veth Mere (ocean) +- Ash-: Ashvale (city), Ashvale Beck (river) ← 2 names, was 3 before fix + +**DB sync:** `generate_atlas.py --body GJ144e` ✓ + +--- + +### GJ 71 — Tau Ceti system + +#### GJ71c — Threshold (600M pop, agricultural, urban_concentrated) + +**Priority reason:** Tau Ceti's primary inhabited body; high player footfall. +All six rivers were named after the original Commission survey team — a strong narrative hook +("Latin personal names = founding scientists"). "Aethelred" broke the pattern (Anglo-Saxon, +wrong naming tradition). + +**Changes:** + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| river | Aethelred | Gaius | Anglo-Saxon name breaks all-Latin river pattern (Octavius, Septimus, Quintus, Valeria, Marcus, Gaius) | + +**DB sync:** `generate_atlas.py --body GJ71c` ✓ + +--- + +#### GJ71d — Arden (500M pop, agricultural, dispersed_rural) + +**Priority reason:** Tau Ceti's sister body; shares corridor with GJ71c, so cross-body stem +duplicates matter most here. Two collisions found: exact POI name match + ocean/city stem match. + +**Changes:** + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| city | Concordia Hall | The Praxis | "Concordia" = GJ71c ocean name; cross-body stem collision within same system/corridor | +| river | Basilica Nova | Via Principia | Exact name match with GJ71c POI "Basilica Nova"; direct duplicate across bodies | + +**DB sync:** `generate_atlas.py --body GJ71d` ✓ + +--- + +#### GJ71d-1 — Verantis (20M pop, transit moon) + +**No changes.** Discovered that Verantis was already updated in a prior sprint pass — +mountains renamed to unique Latin institutional names (The Lateranum, The Curia Magna, The Exedra, +The Aedes Sacra, The Macellum, The Oracle, The Comitium, Moeribee), capital updated to "Praetorium". +DB was stale relative to markers.json; synced only. + +**DB sync:** `generate_atlas.py --body GJ71d-1` ✓ + +--- + +### GJ 244A — Sirius system + +#### GJ244Ad — Edict (400M pop, hand-authored template) + +**Priority reason:** Only inhabited body in the Sirius system. Hand-authored template is solid +(Mandate, Founder's Range, Accord Peaks, Veto Spur, Concord Assembly Archive) but #833-generated +features used wrong vocabulary for a political-legal world. Note: "Westwall" flagged by Gestalt +does NOT appear in markers.json or DB — stale data issue; Cairnside fix by Gestalt stands, Edict +required no Westwall action. + +**Changes:** + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| mountain | Keel Ridge | Charter Spur | "Keel" is nautical — wrong vocabulary; charter = founding document | +| mountain | Sanction Ridge | The Statute | More distinctive; drops lazy "Ridge" suffix | +| ocean | Upper Shelf | Veil Shelf | Cardinal → cross-refs Veil Institute Survey Station POI | +| ocean | Southern Melt | Concord Mere | Cardinal → cross-refs Concord Assembly Archive POI | +| ocean | Eastern Tarn | Charter Tarn | Cardinal → cross-refs mountain "Charter Spur" | + +**Cross-reference arcs post-fix:** +- Charter-: Charter Spur (mountain), Charter Tarn (ocean) +- Concord-: Concord Mere (ocean), Concord Assembly Archive (POI) +- Veil-: Veil Shelf (ocean), Veil Institute Survey Station (POI) + +**DB sync:** `generate_atlas.py --body GJ244Ad` ✓ + +--- + +### GJ 380 — Groombridge system + +#### GJ380c — Lendel (900M pop, hand-authored template) + +**Priority reason:** Only inhabited body in Groombridge. Template is excellent — Aldren arc +(capital + river + exchange) is intentional and preserved. Two #833-generated features used lazy +suffixes incompatible with the British-Isles naming style. + +**Changes:** + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| river | Pale Run | Durneth Beck | Lazy → cross-refs Durneth Range; "beck" = British stream | +| mountain | Tember Ridge | Tember Spine | Lazy "Ridge" → "Spine"; keeps the Tember stem | + +**Note:** "Aldren" stem in same-body audit (city + river + POI) is INTENTIONAL arc — preserved. +"Meridian Risk HQ" POI is a corporation name (proper noun) — not geography, no change. + +**DB sync:** `generate_atlas.py --body GJ380c` ✓ + +**Addendum (PR #133 review):** Initial pass left GJ380c 100% Anglo-British register with zero +cross-corridor influence from the Kumasi/south_reach trade lanes. Added two secondary features +in Akan/Asante register, keeping primary features (Aldren capital, Durneth Range, Rethain Sea) +in their established Anglo register: + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| river | The Kesset | Nkwanta Beck | Nkwanta = Akan "junction/crossroads" — trade-route name; Beck suffix localizes it | +| mountain | Holt Spur | Bosomtwe Spur | Bosomtwe = sacred Asante lake in Ghana; Spur suffix preserved from Groombridge convention | +| lake | Selet Basin | Subin Basin | Subin = river running through Kumasi itself — distributes Akan signal across a third feature type | + +**Corridors are tendencies, not borders** — capital and primary geography stay Anglo-British; +peripheral features reflect Kumasi trade influence. 3/29 features now carry Akan register (river, mountain, lake). DB re-synced. + +--- + +### GJ 699 — Barnard's Star system + +#### GJ699b — Verada (1.9B pop, hop-0, dense urban world) + +**Priority reason:** Highest-traffic hop-0 inhabited body not yet addressed. Dense civic naming +(Capitol Heights, Liberty Plaza, Metropolitan Square, Meridian City) was using district/plaza +vocabulary for geographic features. Rivers especially broken: "Grandview Square" and "Meridian +City" are civic addresses, not river names. Cross-body dups on sibling bodies. + +**Changes:** + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| river | Grandview Square | Verada Reach | Civic square → planet name + geographic "Reach" | +| river | Meridian City | The Meridian | Civic city name → proper river name (like "The Aldren") | +| river | Summit View | Capitol Beck | Lazy → cross-refs Capitol Heights capital | +| ocean | Prospect Terrace | Prospect Sea | "Terrace" is architecture; fix suffix | +| ocean | Metropolitan Square | Haven Sea | Cross-refs Port Haven city; drops civic | +| ocean | Central District | Meridian Sound | Exact dup of GJ699b-1 mountain; cross-refs The Meridian | +| ocean | Liberty Plaza | Capitol Mere | Civic plaza → cross-refs Capitol Heights capital | +| ocean | Sterling Heights | Sterling Pool | "Heights" wrong for water; dup on GJ699b-1 mountain | + +**Cross-reference arcs post-fix:** +- Capitol-: Capitol Heights (city), Capitol Beck (river), Capitol Mere (ocean) +- Meridian-: The Meridian (river), Meridian Sound (ocean) +- Haven/Port-: Port Haven (city), Haven Sea (ocean) + +**DB sync:** `generate_atlas.py --body GJ699b` ✓ + +--- + +#### GJ699b-1 — Verada's moon (uninhabited transit body) + +**Priority reason:** All 8 mountains named after urban street addresses (Grandview Avenue, +Harmony Boulevard, Beacon Street, Metropolitan Way, etc.) — completely inappropriate for +mountain ranges. Also duplicated several Verada city/ocean names exactly ("Central District", +"Capitol Heights"). Fixed with institutional cross-references: the moon's mountains carry the +names of Verada's governing institutions, as if settlers named what they saw below from orbit. + +**Changes:** All 8 mountains renamed. See apply_name_fixes.py FIXES table for full mapping. + +**Narrative hook:** "On Verada's moon, the mountains carry the names of the institutions +that govern the world below — a form of reverence. The moon has no government of its own." + +**DB sync:** sync_markers_to_db() called directly (body is inhabited=0, generate_atlas.py skips it) ✓ + +--- + +### Sol (GJ 0) — COMPLETE + +**Approach:** sol_import.py generated body directories and markers.json from real-world geographic +data. Post-generation, `sol_name_fixes.py` named all auto-detected null-name features. + +Team-lead guidance: "real-world Earth/Luna/Mars geography is by definition coherent — note it +in log and move on if already above quality bar." + +#### GJ0d — Earth (8.5B pop, core world) + +sol_import.py originally placed 50 cities from earth_features.json. Team-lead directed trim +to 8-12 cultural touchstones (max 8 cities on any other body; 50 = 13% of all atlas cities +on one body). Criterion: would a player setting a bookmark to "Earth" recognize this as a +touchstone? One per major historical/cultural cluster. + +**Cities kept (11):** + +| City | Cluster | +|---|---| +| London | Western Europe — historical capital | +| Moscow | Eastern Europe / Russia | +| Istanbul | Bridge city — Europe-Asia hinge | +| New York | North America | +| São Paulo | South America | +| Cairo | Africa + ancient world | +| Delhi | South Asia | +| Tokyo | Japan / East Asia | +| Beijing | China / East Asia | +| Singapore | Southeast Asia — maritime hub | +| Sydney | Oceania | + +**Cities cut (39):** Paris, Berlin, Mexico City, Los Angeles, Toronto, Chicago, Lima, Bogotá, +Rio de Janeiro, Buenos Aires, Lagos, Kinshasa, Johannesburg, Nairobi, Tehran, Baghdad, Riyadh, +Ankara, Karachi, Shanghai, Mumbai, Jakarta, Dhaka, Manila, Bangkok, Seoul, Osaka, Chongqing, +Kolkata, Lahore, Shenzhen, Bangalore, Ho Chi Minh City, Luanda, Addis Ababa, Santiago, Taipei, +Hong Kong, Casablanca. + +**PR #133 review rebalance (user-approved Option 1 + London swap):** +- `Sydney → Lagos` — improves African representation (Cairo + Lagos = 2 African cities; Sydney was the weakest cultural-touchstone anchor). +- `London → Brussels` — Brussels chosen for future-strong-EU-capital setting fit over London's legacy cultural weight. + +**Final 11:** Beijing, Brussels, Cairo, Delhi, Istanbul, Lagos, Moscow, New York, São Paulo, Singapore, Tokyo. + +**Generator note:** sol_import.py has no `--top-n` city filter — it uses the full earth_features.json +list. If Sol is regenerated, earth_features.json should be trimmed to the 11 kept cities, or a +filter added in sol_import.py. Filed as finding in #853. + +auto-detected 11 rivers and 1 ocean. Three rivers were auto-detected ocean-channel artifacts +in the western Pacific island region; named with geographically proximate rivers. The large +ocean (area_fraction=0.7049) represents Earth's interconnected world ocean. + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| ocean | null | The World Ocean | 70% surface = all Earth's oceans unified; scientifically accurate name | +| river | null (river_1, ~50°N/17°E) | Dnieper | Eastern Europe, flows to Black Sea | +| river | null (river_4, ~27°N/136°E) | Tone River | Japan, Kanto plain | +| river | null (river_10, ~23°N/135°E) | Cagayan | Northern Philippines, largest Philippine river | + +**DB sync:** `generate_atlas.py --body GJ0d` ✓ (11 cities, trimmed from 50) + +--- + +#### GJ0d-1 — Luna (350M pop, transit body) + +3 cities (Artemis capital, Tranquility Station, Selene) + 10 POIs (maria + craters). sol_import.py +auto-detected 24 mountain ranges — all unnamed. Named all 24 after real IAU-catalogued lunar +mountain systems, massifs, and scarps, sorted by area_cells (largest = most prominent). + +Key ranges: Montes Apenninus (11,221 cells — largest), Montes Caucasus (3,670), Montes Jura, +Montes Alpes, Montes Rook, Montes Cordillera, Montes Carpatus, Montes Taurus, Montes Pyrenaeus, +and 15 additional real lunar named features (Pico Mons, Haemus Montes, Gruithuisen Domes, etc.). + +**Narrative hook:** "Luna's mountains carry the names that Earth gave them a thousand years +before the first settlement — a catalog written from below, now walked from above." + +**DB sync:** `generate_atlas.py --body GJ0d-1` ✓ + +--- + +#### GJ0e — Mars (1.2B pop, core world) + +4 cities + 5 named mountains (Olympus Mons, Tharsis Bulge, Elysium Mons, Ascraeus Mons, +Arsia Mons) from mars_features.json. sol_import.py auto-detected 4 additional mountain ranges +in the anti-Tharsis hemisphere (ancient cratered highland region), named after real Martian +volcanic features. + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| mountain | null (range_2) | Tyrrhena Mons | Ancient volcanic highland, eastern hemisphere | +| mountain | null (range_3) | Hadriaca Mons | Old shield volcano, Hellas region | +| mountain | null (range_4) | Amphitrites Montes | Near south polar region | +| mountain | null (range_5) | Hellespontus Montes | Cross-refs Hellas Station city | + +**Cross-reference arcs:** Hellas- (Hellas Basin ocean + Hellas Station city), Chryse- (Chryse Landing + Chryse Planitia POI) + +**DB sync:** `generate_atlas.py --body GJ0e` ✓ + +--- + +#### GJ0f-2 — Europa (30M pop, outer body) + +2 cities + 4 POIs. sol_import.py auto-detected 1 mountain range covering essentially the +entire body surface (area_cells=123,557 — Europa's ridged ice terrain). + +| Feature type | Old name | New name | Reason | +|---|---|---|---| +| mountain | null (range_1) | Conamara Ridges | Cross-refs Conamara Station + Conamara Chaos POI | + +**Cross-reference arcs:** Conamara- (Conamara Station city + Conamara Ridges mountain + Conamara Chaos POI), +Pwyll- (Pwyll Base city + Pwyll Crater POI) + +**DB sync:** `generate_atlas.py --body GJ0f-2` ✓ + +--- + +**Sol final audit result:** Zero empty names, zero lazy outputs, zero cardinals. +Earth-echo names on Earth are intentional (real-world cities). Quality cross-reference arcs +confirmed on Mars (Hellas-, Chryse-) and Europa (Conamara-, Pwyll-). + +--- + +### Proxima (GJ 551) — DEFERRED + +Cross-body stem duplicates found (Basilica, Pantheon, Senate across Ancora sibling bodies). +Team-lead confirmed: defer this sprint. Finding documented for future pass. + +--- + +## Audit metrics — final confirmed delta + +Final audit run: 2026-04-19. All 6 systems re-run after all edits. Results below are +from `atlas_cohesion_audit.py` against `server/data/systems.db`. + +### Inhabited body targets (in scope for this ticket) + +| System | Body | Empty names: before→after | Lazy outputs: before→after | Cardinals: before→after | +|--------|------|--------------------------|---------------------------|------------------------| +| GJ 144 | GJ144d Kallast (2B) | 0→0 | 3→0 | 0→0 | +| GJ 144 | GJ144e Vethis (1.2B) | 0→0 | 7→0 | 1→0 | +| GJ 71 | GJ71c Threshold (600M) | 0→0 | 1→0 | 0→0 | +| GJ 71 | GJ71d Arden (500M) | 0→0 | 1→0 | 0→0 | +| GJ 71 | GJ71d-1 Verantis (20M) | 0→0 | 0→0 | 0→0 | +| GJ 244A | GJ244Ad Edict (400M) | 0→0 | 2→0 | 3→0 | +| GJ 380 | GJ380c Lendel (900M) | 0→0 | 2→0 | 0→0 | +| GJ 699 | GJ699b Verada (1.9B) | 0→0 | 8→0 | 0→0 | +| GJ 699 | GJ699b-1 (uninhabited moon) | 8→0 | 8→0 | 0→0 | +| GJ 0 | GJ0d Earth (8.5B) | 4→0 | 0→0 | 0→0 | +| GJ 0 | GJ0d-1 Luna (350M) | 24→0 | 0→0 | 0→0 | +| GJ 0 | GJ0e Mars (1.2B) | 4→0 | 0→0 | 0→0 | +| GJ 0 | GJ0f-2 Europa (30M) | 1→0 | 0→0 | 0→0 | + +**All inhabited targets: zero empty names, zero lazy outputs, zero cardinals after fixes.** + +### Remaining audit flags — out of scope or false positives + +After fixes, the audit still reports flags on: + +**Out of scope — uninhabited/low-pop bodies (not "high-visibility"):** +- GJ144b, GJ144c, GJ144d-1, GJ144e-1, GJ144f, GJ144g-1, GJ144g-2: "Canyon View", "Dry Gulch", + "Stone Creek" etc. These are #833 batch artifacts on non-target bodies. Captured in #853. +- GJ71e: "Meridian Point" (uninhabited body, not in scope) +- GJ380b, GJ380d, GJ380e: various lazy patterns (uninhabited, not in scope) + +**False positives on quality cross-reference names (distinctive stem + common suffix):** +- `'Rán's Run'` (GJ144d) — Rán- arc; % Run pattern-matched but stem is unique proper name +- `'Greywash Fork'` (GJ144e) — Grey- arc; % Fork but Greywash is not a generic stem +- `'Kelside Run'` (GJ144e) — Kel- arc; % Run but Kelside is distinctive +- `'Greystone Ridge'` (GJ144e) — Grey- arc; % Ridge but Greystone is distinctive + +These four are intentional renames (listed in the FIXES table above) that happen to end with +a suffix in LAZY_PATTERNS. The script does not evaluate stem quality, only suffix pattern. +A future pass on the audit script could add a stem-distinctiveness filter. + +### Earth city count correction + +Per team-lead direction: Earth trimmed from **50 → 11 cities** (cultural/historical touchstones, +one per major cluster). 39 cities cut. DB synced. See GJ0d section above for full cut list. + +### Earth city rebalance (PR #133 review, user-approved) + +Sydney → Lagos and London → Brussels per PR #133 review, user-approved rebalance. Brussels chosen for future EU-capital setting fit over London's legacy weight; Lagos chosen for African representation. DB re-synced. Final 11: Brussels, Istanbul, Moscow, New York, São Paulo, Cairo, Lagos, Delhi, Tokyo, Beijing, Singapore. + +**Total name edits across all bodies:** 23 (non-Sol) + 33 (Sol) = 56 feature renames. +**Earth city cut:** 39 removed. + +Intentional same-body cross-feature stem dups (quality arcs) now visible in audit output for: +- GJ144d: Rán- (city + river), Seter- (mountain + ocean) +- GJ144e: Veth- (river + ocean), Ash- (city + river) +- GJ244Ad: Charter- (mountain + ocean), Concord- (ocean + POI), Veil- (ocean + POI) +- GJ380c: Aldren- (city + river + POI, intentional), Durneth- (river + mountain) +- GJ699b: Capitol- (city + river + ocean), Meridian- (river + ocean) +- GJ0e: Hellas- (city + ocean), Chryse- (city + POI) +- GJ0f-2: Conamara- (city + mountain + POI), Pwyll- (city + POI) + +Spot-check verification queries: +```bash +SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \ + "SELECT local_id, name FROM atlas_rivers WHERE body_id = 'GJ144d'" +# Should show "Randalfoss" not "Aldren Pass" + +SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \ + "SELECT local_id, name FROM atlas_cities WHERE body_id = 'GJ71d'" +# Should show "The Praxis" not "Concordia Hall" + +SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \ + "SELECT local_id, name FROM atlas_mountain_ranges WHERE body_id = 'GJ244Ad'" +# Should show "The Statute" and "Charter Spur" not "Sanction Ridge" and "Keel Ridge" + +SR_DB_PATH="$(pwd)/server/data/systems.db" tooling/db/sqlite-query \ + "SELECT local_id, name FROM atlas_mountain_ranges WHERE body_id = 'GJ699b-1'" +# Should show "Verada Scarp", "Barnard Heights", "Keystone Scarp", etc. — no street addresses +``` + +--- + +## Files changed + +- `tooling/planet-gen/atlas_cohesion_audit.py` (new) +- `tooling/planet-gen/apply_name_fixes.py` (new — extended with all 6 systems) +- `tooling/planet-gen/refine_log_849.md` (this file) +- `tooling/planet-gen/sol_markers/luna_features.json` (added cities) +- `tooling/planet-gen/sol_markers/mars_features.json` (added cities) +- `tooling/planet-gen/sol_markers/outer_features.json` (added Europa cities) +- `wiki/star-systems/GJ-144/bodies/GJ144d/markers.json` (4 edits) +- `wiki/star-systems/GJ-144/bodies/GJ144e/markers.json` (9 edits) +- `wiki/star-systems/GJ-71/bodies/GJ71c/markers.json` (1 edit) +- `wiki/star-systems/GJ-71/bodies/GJ71d/markers.json` (2 edits) +- `wiki/star-systems/GJ-244A/bodies/GJ244Ad/markers.json` (5 edits) +- `wiki/star-systems/GJ-380/bodies/GJ380c/markers.json` (2 edits) +- `wiki/star-systems/GJ-699/bodies/GJ699b/markers.json` (8 edits) +- `wiki/star-systems/GJ-699/bodies/GJ699b-1/markers.json` (8 edits) +- `tooling/planet-gen/sol_name_fixes.py` (new — names 33 null-name Sol features) +- `wiki/star-systems/GJ-0/bodies/GJ0d/markers.json` (1 ocean + 3 rivers named; 39 cities cut → 11) +- `wiki/star-systems/GJ-0/bodies/GJ0d-1/markers.json` (24 mountain ranges named) +- `wiki/star-systems/GJ-0/bodies/GJ0e/markers.json` (4 mountain ranges named) +- `wiki/star-systems/GJ-0/bodies/GJ0f-2/markers.json` (1 mountain range named) +- `server/data/systems.db` (synced: GJ144d, GJ144e, GJ71c, GJ71d, GJ71d-1, GJ244Ad, GJ380c, GJ699b, GJ699b-1, GJ0d, GJ0d-1, GJ0e, GJ0f-2 — all complete) diff --git a/tooling/planet-gen/sol_markers/earth_features.json b/tooling/planet-gen/sol_markers/earth_features.json index c44cd41e2..7ad1cce15 100644 --- a/tooling/planet-gen/sol_markers/earth_features.json +++ b/tooling/planet-gen/sol_markers/earth_features.json @@ -1,5 +1,6 @@ { "GJ0d": { + "_city_selection_note": "11 cultural touchstones, one per major historical/cultural cluster. Criterion: would a player setting a bookmark to 'Earth' recognize this city? Full 46-city reference list is in git history (trimmed Sprint 36 #849). PR #133 review rebalance: Sydney → Lagos (African representation); London → Brussels (future EU capital fit). To adjust: edit this array and re-run sol_import.py, then generate_atlas.py --body GJ0d.", "oceans": [ {"name": "Pacific Ocean", "center": [128, 440]}, {"name": "Atlantic Ocean", "center": [128, 170]}, @@ -33,62 +34,22 @@ {"name": "Murray", "mouth": [170, 417]} ], "cities": [ - {"name": "London", "center": [79, 260], "population": 9000000, "region": "europe"}, - {"name": "Istanbul", "center": [83, 279], "population": 15000000, "region": "europe"}, - {"name": "Moscow", "center": [72, 294], "population": 12700000, "region": "europe"}, - {"name": "Paris", "center": [80, 261], "population": 11000000, "region": "europe"}, - {"name": "Berlin", "center": [77, 269], "population": 3700000, "region": "europe"}, + {"name": "Brussels", "center": [80, 266], "population": 2100000, "region": "europe"}, + {"name": "Istanbul", "center": [83, 279], "population": 15000000, "region": "europe"}, + {"name": "Moscow", "center": [72, 294], "population": 12700000, "region": "europe"}, - {"name": "Mexico City", "center": [107, 101], "population": 21800000, "region": "north_america"}, - {"name": "New York", "center": [87, 130], "population": 20100000, "region": "north_america"}, - {"name": "Los Angeles", "center": [93, 95], "population": 13200000, "region": "north_america"}, - {"name": "Toronto", "center": [84, 123], "population": 6200000, "region": "north_america"}, - {"name": "Chicago", "center": [85, 115], "population": 9500000, "region": "north_america"}, + {"name": "New York", "center": [87, 130], "population": 20100000, "region": "north_america"}, - {"name": "São Paulo", "center": [143, 164], "population": 22400000, "region": "south_america"}, - {"name": "Lima", "center": [133, 131], "population": 10700000, "region": "south_america"}, - {"name": "Bogotá", "center": [121, 135], "population": 11300000, "region": "south_america"}, - {"name": "Rio de Janeiro", "center": [142, 168], "population": 13500000, "region": "south_america"}, - {"name": "Buenos Aires", "center": [151, 153], "population": 15200000, "region": "south_america"}, + {"name": "São Paulo", "center": [143, 164], "population": 22400000, "region": "south_america"}, - {"name": "Lagos", "center": [120, 262], "population": 15400000, "region": "africa"}, - {"name": "Kinshasa", "center": [124, 270], "population": 15600000, "region": "africa"}, - {"name": "Cairo", "center": [97, 286], "population": 21300000, "region": "africa"}, - {"name": "Johannesburg", "center": [156, 279], "population": 6000000, "region": "africa"}, - {"name": "Nairobi", "center": [128, 293], "population": 5100000, "region": "africa"}, + {"name": "Cairo", "center": [97, 286], "population": 21300000, "region": "africa"}, - {"name": "Tehran", "center": [92, 308], "population": 9000000, "region": "west_asia"}, - {"name": "Baghdad", "center": [94, 303], "population": 8100000, "region": "west_asia"}, - {"name": "Riyadh", "center": [103, 304], "population": 7700000, "region": "west_asia"}, - {"name": "Ankara", "center": [87, 284], "population": 5700000, "region": "west_asia"}, - {"name": "Karachi", "center": [103, 327], "population": 16500000, "region": "west_asia"}, + {"name": "Tokyo", "center": [92, 400], "population": 37400000, "region": "east_asia"}, + {"name": "Delhi", "center": [99, 339], "population": 32900000, "region": "east_asia"}, + {"name": "Beijing", "center": [87, 383], "population": 21500000, "region": "east_asia"}, - {"name": "Tokyo", "center": [92, 400], "population": 37400000, "region": "east_asia"}, - {"name": "Delhi", "center": [99, 339], "population": 32900000, "region": "east_asia"}, - {"name": "Shanghai", "center": [97, 387], "population": 28500000, "region": "east_asia"}, - {"name": "Beijing", "center": [87, 383], "population": 21500000, "region": "east_asia"}, - {"name": "Mumbai", "center": [107, 333], "population": 21700000, "region": "east_asia"}, - - {"name": "Jakarta", "center": [120, 374], "population": 34500000, "region": "fill"}, - {"name": "Dhaka", "center": [103, 351], "population": 23000000, "region": "fill"}, - {"name": "Manila", "center": [109, 388], "population": 14400000, "region": "fill"}, - {"name": "Bangkok", "center": [109, 370], "population": 11000000, "region": "fill"}, - {"name": "Seoul", "center": [90, 393], "population": 9800000, "region": "fill"}, - {"name": "Osaka", "center": [93, 398], "population": 19300000, "region": "fill"}, - {"name": "Chongqing", "center": [97, 375], "population": 17000000, "region": "fill"}, - {"name": "Kolkata", "center": [103, 349], "population": 15100000, "region": "fill"}, - {"name": "Lahore", "center": [97, 336], "population": 14000000, "region": "fill"}, - {"name": "Shenzhen", "center": [104, 382], "population": 13400000, "region": "fill"}, - {"name": "Bangalore", "center": [111, 339], "population": 13200000, "region": "fill"}, - {"name": "Ho Chi Minh City", "center": [113, 374], "population": 9300000, "region": "fill"}, - {"name": "Luanda", "center": [132, 268], "population": 9000000, "region": "fill"}, - {"name": "Addis Ababa", "center": [119, 292], "population": 5500000, "region": "fill"}, - {"name": "Santiago", "center": [147, 137], "population": 7000000, "region": "fill"}, - {"name": "Taipei", "center": [103, 388], "population": 7000000, "region": "fill"}, - {"name": "Hong Kong", "center": [104, 382], "population": 7500000, "region": "fill"}, - {"name": "Singapore", "center": [119, 372], "population": 5900000, "region": "fill"}, - {"name": "Sydney", "center": [161, 421], "population": 5300000, "region": "fill"}, - {"name": "Casablanca", "center": [93, 249], "population": 3800000, "region": "fill"} + {"name": "Singapore", "center": [119, 372], "population": 5900000, "region": "southeast_asia"}, + {"name": "Lagos", "center": [119, 263], "population": 15000000, "region": "africa"} ] } } diff --git a/tooling/planet-gen/sol_markers/luna_features.json b/tooling/planet-gen/sol_markers/luna_features.json index d0dcacbc7..ea0c57cb6 100644 --- a/tooling/planet-gen/sol_markers/luna_features.json +++ b/tooling/planet-gen/sol_markers/luna_features.json @@ -1,5 +1,10 @@ { "GJ0d-1": { + "cities": [ + {"name": "Artemis", "center": [215, 250], "population": 200000000, "kind": "capital"}, + {"name": "Tranquility Station", "center": [119, 282], "population": 90000000, "kind": "city"}, + {"name": "Selene", "center": [93, 247], "population": 60000000, "kind": "city"} + ], "pois": [ {"id": "poi_mare_tranquillitatis", "name": "Mare Tranquillitatis", "center": [119, 282], "kind": "mare"}, {"id": "poi_mare_imbrium", "name": "Mare Imbrium", "center": [93, 247], "kind": "mare"}, diff --git a/tooling/planet-gen/sol_markers/mars_features.json b/tooling/planet-gen/sol_markers/mars_features.json index 721fc54c9..fc287971b 100644 --- a/tooling/planet-gen/sol_markers/mars_features.json +++ b/tooling/planet-gen/sol_markers/mars_features.json @@ -1,5 +1,11 @@ { "GJ0e": { + "cities": [ + {"name": "Olympia", "center": [107, 358], "population": 450000000, "kind": "capital"}, + {"name": "Hellas Station", "center": [148, 329], "population": 350000000, "kind": "city"}, + {"name": "Elysium City", "center": [103, 413], "population": 250000000, "kind": "city"}, + {"name": "Chryse Landing", "center": [100, 392], "population": 150000000, "kind": "city"} + ], "mountain_ranges": [ {"name": "Olympus Mons", "peak": [107, 358], "center": [107, 358]}, {"name": "Tharsis Bulge", "peak": [115, 365], "center": [118, 362]}, diff --git a/tooling/planet-gen/sol_markers/outer_features.json b/tooling/planet-gen/sol_markers/outer_features.json index d0727444e..d220c218e 100644 --- a/tooling/planet-gen/sol_markers/outer_features.json +++ b/tooling/planet-gen/sol_markers/outer_features.json @@ -9,6 +9,10 @@ ] }, "GJ0f-2": { + "cities": [ + {"name": "Conamara Station", "center": [118, 328], "population": 20000000, "kind": "capital"}, + {"name": "Pwyll Base", "center": [155, 328], "population": 10000000, "kind": "city"} + ], "pois": [ {"id": "poi_conamara_chaos", "name": "Conamara Chaos", "center": [118, 328], "kind": "chaos"}, {"id": "poi_pwyll_crater", "name": "Pwyll Crater", "center": [155, 328], "kind": "crater"}, diff --git a/tooling/planet-gen/sol_name_fixes.py b/tooling/planet-gen/sol_name_fixes.py new file mode 100644 index 000000000..e33c61fc6 --- /dev/null +++ b/tooling/planet-gen/sol_name_fixes.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python3 +""" +sol_name_fixes.py — Name previously-unnamed Sol body auto-detected features. + +Targets features with null names: Earth oceans/rivers, Luna/Mars/Europa mountain ranges. +All names are real-world geographic names for Sol bodies. + +Usage: + python3 sol_name_fixes.py # apply all fixes + python3 sol_name_fixes.py --dry-run # print planned changes without writing +""" +import argparse +import json +from pathlib import Path + +REPO_ROOT = (Path(__file__).resolve().parent / ".." / "..").resolve() +WIKI = REPO_ROOT / "wiki" / "star-systems" / "GJ-0" / "bodies" + +# Keys are feature IDs; values are the names to assign. +FIXES = { + # Earth (GJ0d): 1 unnamed ocean + 3 unnamed rivers (auto-detected terrain artifacts) + "GJ0d": { + "oceans": { + "water_1": "The World Ocean", # 70% surface = all Earth's oceans unified + }, + "rivers": { + "river_1": "Dnieper", # Eastern Europe ~50°N, 17°E + "river_4": "Tone River", # Japan, Kanto plain ~36°N, 140°E + "river_10": "Cagayan", # Northern Philippines ~18°N, 121°E + }, + }, + # Luna (GJ0d-1): 24 unnamed mountain ranges — all auto-detected; named after + # real lunar mountain systems, massifs, and scarps sorted by descending area. + "GJ0d-1": { + "mountain_ranges": { + "range_5": "Montes Apenninus", # 11221 cells — largest lunar mountain range + "range_34": "Montes Caucasus", # 3670 cells + "range_209": "Montes Jura", # 367 cells — on Mare Imbrium NW + "range_551": "Montes Alpes", # 289 cells — lunar Alps + "range_576": "Montes Rook", # 258 cells — south polar mountains + "range_599": "Montes Cordillera", # 164 cells — Orientale basin rim + "range_326": "Montes Carpatus", # 106 cells — south of Mare Imbrium + "range_555": "Montes Pyrenaeus", # 94 cells — east of Mare Nectaris + "range_586": "Montes Taurus", # 90 cells — NE of Mare Serenitatis + "range_589": "Montes Teneriffe", # 52 cells — isolated massif + "range_124": "Montes Harbinger", # 51 cells — west of Aristarchus + "range_587": "Montes Recti", # 48 cells — north Mare Imbrium + "range_522": "Pico Mons", # 35 cells — isolated peak + "range_579": "Haemus Montes", # 33 cells — south of Mare Serenitatis + "range_231": "Gruithuisen Domes", # 25 cells — volcanic domes + "range_580": "Mons La Hire", # 25 cells — volcanic dome, Mare Imbrium + "range_570": "Montes Riphaeus", # 24 cells — Oceanus Procellarum ridge + "range_596": "Montes Secchi", # 24 cells — east of Mare Fecunditatis + "range_604": "Montes Spitzbergen", # 24 cells — isolated massif + "range_493": "Malapert Mountain", # 23 cells — south pole region + "range_406": "Doerfel Mountains", # 26 cells — south pole far side + "range_432": "Altai Scarp", # 20 cells — Rupes Altai + "range_79": "Mons Rümker", # 21 cells — shield volcano + "range_348": "Leibnitz Mountains", # 21 cells — south polar range + }, + }, + # Mars (GJ0e): 4 unnamed mountain ranges in the anti-Tharsis hemisphere + "GJ0e": { + "mountain_ranges": { + "range_2": "Tyrrhena Mons", # ancient volcanic highland (area=67) + "range_3": "Hadriaca Mons", # old shield volcano (area=31) + "range_4": "Amphitrites Montes", # near south polar region (area=28) + "range_5": "Hellespontus Montes", # cross-refs Hellas Station (area=87) + }, + }, + # Europa (GJ0f-2): 1 unnamed mountain — Europa's ridged ice terrain (area=123557 cells) + "GJ0f-2": { + "mountain_ranges": { + "range_1": "Conamara Ridges", # cross-refs Conamara Station + Conamara Chaos + }, + }, +} + +SECTION_MAP = { + "oceans": "oceans", + "rivers": "rivers", + "mountain_ranges": "mountain_ranges", +} + + +def _check_dedup(fixes: dict) -> None: + """Raise if any name is assigned to more than one feature ID within a body.""" + for body_id, sections in fixes.items(): + for section, id_map in sections.items(): + seen: dict[str, str] = {} + for fid, name in id_map.items(): + if name in seen: + raise ValueError( + f"Duplicate name {name!r} in {body_id}/{section}: " + f"{seen[name]} and {fid} both assigned" + ) + seen[name] = fid + + +def apply_sol_fixes(dry_run: bool = False) -> None: + _check_dedup(FIXES) + for body_id, body_fixes in FIXES.items(): + path = WIKI / body_id / "markers.json" + if not path.exists(): + print(f" SKIP {body_id}: markers.json not found") + continue + + with open(path) as f: + markers = json.load(f) + + changed = False + for section, id_map in body_fixes.items(): + feature_list = markers.get(SECTION_MAP[section], []) + for feature in feature_list: + fid = feature.get("id", "") + if fid in id_map: + old = feature.get("name") + new = id_map[fid] + if old != new: + print(f" [{body_id}/{section}] {fid}: {old!r} → {new!r}") + if not dry_run: + feature["name"] = new + changed = True + + if changed: + if dry_run: + print(f" (dry-run) Would write: {path}") + else: + with open(path, "w") as f: + json.dump(markers, f, indent=2) + print(f" Written: {path}") + else: + print(f" No changes for {body_id}") + print() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Name previously-unnamed Sol body auto-detected features." + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="print planned changes without writing any files", + ) + args = parser.parse_args() + apply_sol_fixes(dry_run=args.dry_run) diff --git a/wiki/corporations/alcazar-hospitality.md b/wiki/corporations/alcazar-hospitality.md new file mode 100644 index 000000000..8c888ae0c --- /dev/null +++ b/wiki/corporations/alcazar-hospitality.md @@ -0,0 +1,24 @@ +--- +title: "Alcazar Hospitality" +description: "Alcazar Hospitality — premium service provider based in Altair, south reach" +slug: alcazar-hospitality +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Altair (GJ 768) +tags: [service_premium, south_reach, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Alcazar Hospitality + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Altair (GJ 768) + +Alcazar Hospitality is a premium service provider operating out of Altair (GJ 768). Details to be expanded. diff --git a/wiki/corporations/alcyone-tech.md b/wiki/corporations/alcyone-tech.md new file mode 100644 index 000000000..cb125be17 --- /dev/null +++ b/wiki/corporations/alcyone-tech.md @@ -0,0 +1,24 @@ +--- +title: "Alcyone Tech" +description: "Alcyone Tech — precision technology manufacturer based in Groombridge, core" +slug: alcyone-tech +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [tech_premium, core, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Alcyone Tech + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Alcyone Tech is a precision technology manufacturer operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/aldgate-trust.md b/wiki/corporations/aldgate-trust.md new file mode 100644 index 000000000..ca7b1250a --- /dev/null +++ b/wiki/corporations/aldgate-trust.md @@ -0,0 +1,24 @@ +--- +title: "Aldgate Trust" +description: "Aldgate Trust — premium service provider based in Crown's Hollow, north reach" +slug: aldgate-trust +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Crown's Hollow (GJ 661A) +tags: [service_premium, north_reach, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Aldgate Trust + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Crown's Hollow (GJ 661A) + +Aldgate Trust is a premium service provider operating out of Crown's Hollow (GJ 661A). Details to be expanded. diff --git a/wiki/corporations/alentejo-partners.md b/wiki/corporations/alentejo-partners.md new file mode 100644 index 000000000..047441d2d --- /dev/null +++ b/wiki/corporations/alentejo-partners.md @@ -0,0 +1,24 @@ +--- +title: "Alentejo Partners" +description: "Alentejo Partners — regional specialty producer based in Caparica, south reach" +slug: alentejo-partners +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Caparica (GJ 1002) +tags: [terroir, south_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Alentejo Partners + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Caparica (GJ 1002) + +Alentejo Partners is a regional specialty producer operating out of Caparica (GJ 1002). Details to be expanded. diff --git a/wiki/corporations/algarve-botanics.md b/wiki/corporations/algarve-botanics.md new file mode 100644 index 000000000..463bcdfc7 --- /dev/null +++ b/wiki/corporations/algarve-botanics.md @@ -0,0 +1,24 @@ +--- +title: "Algarve Botanics" +description: "Algarve Botanics — regional specialty producer based in Inhambane, south reach" +slug: algarve-botanics +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Inhambane (GJ 54) +tags: [terroir, south_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Algarve Botanics + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Inhambane (GJ 54) + +Algarve Botanics is a regional specialty producer operating out of Inhambane (GJ 54). Details to be expanded. diff --git a/wiki/corporations/arclamp.md b/wiki/corporations/arclamp.md new file mode 100644 index 000000000..2c3a5274f --- /dev/null +++ b/wiki/corporations/arclamp.md @@ -0,0 +1,24 @@ +--- +title: "Arclamp" +description: "Arclamp — design and furniture manufacturer based in Groombridge, core" +slug: arclamp +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [design_heritage, core, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Arclamp + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Arclamp is a design and furniture manufacturer operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/ashwick-broadcasting.md b/wiki/corporations/ashwick-broadcasting.md new file mode 100644 index 000000000..d8b84ce17 --- /dev/null +++ b/wiki/corporations/ashwick-broadcasting.md @@ -0,0 +1,24 @@ +--- +title: "Ashwick Broadcasting" +description: "Ashwick Broadcasting — cultural content producer based in Ashfield, north reach" +slug: ashwick-broadcasting +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Ashfield (GJ 178) +tags: [cultural, north_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Ashwick Broadcasting + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Ashfield (GJ 178) + +Ashwick Broadcasting is a cultural content producer operating out of Ashfield (GJ 178). Details to be expanded. diff --git a/wiki/corporations/atrium-culture.md b/wiki/corporations/atrium-culture.md new file mode 100644 index 000000000..8231caa73 --- /dev/null +++ b/wiki/corporations/atrium-culture.md @@ -0,0 +1,24 @@ +--- +title: "Atrium Culture" +description: "Atrium Culture — cultural content producer based in Groombridge, core" +slug: atrium-culture +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [cultural, core, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Atrium Culture + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Atrium Culture is a cultural content producer operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/baia-fundo-productions.md b/wiki/corporations/baia-fundo-productions.md new file mode 100644 index 000000000..6177ad5ef --- /dev/null +++ b/wiki/corporations/baia-fundo-productions.md @@ -0,0 +1,24 @@ +--- +title: "Baia Fundo Productions" +description: "Baia Fundo Productions — cultural content producer based in Confluência, south reach" +slug: baia-fundo-productions +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Confluência (GJ 566B) +tags: [cultural, south_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Baia Fundo Productions + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Confluência (GJ 566B) + +Baia Fundo Productions is a cultural content producer operating out of Confluência (GJ 566B). Details to be expanded. diff --git a/wiki/corporations/bavarian-craft.md b/wiki/corporations/bavarian-craft.md new file mode 100644 index 000000000..67d55a314 --- /dev/null +++ b/wiki/corporations/bavarian-craft.md @@ -0,0 +1,24 @@ +--- +title: "Bavarian Craft" +description: "Bavarian Craft — heritage craft manufacturer based in Bergtor, west reach" +slug: bavarian-craft +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Bergtor (GJ 505A) +tags: [heritage_craft, west_reach, mark, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Bavarian Craft + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Bergtor (GJ 505A) + +Bavarian Craft is a heritage craft manufacturer operating out of Bergtor (GJ 505A). Details to be expanded. diff --git a/wiki/corporations/bergkraft-antriebswerke.md b/wiki/corporations/bergkraft-antriebswerke.md new file mode 100644 index 000000000..b47510fbd --- /dev/null +++ b/wiki/corporations/bergkraft-antriebswerke.md @@ -0,0 +1,24 @@ +--- +title: "Bergkraft Antriebswerke" +description: "Bergkraft Antriebswerke — precision technology manufacturer based in Bergtor, west reach" +slug: bergkraft-antriebswerke +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Bergtor (GJ 505A) +tags: [tech_premium, west_reach, mark, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Bergkraft Antriebswerke + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Bergtor (GJ 505A) + +Bergkraft Antriebswerke is a precision technology manufacturer operating out of Bergtor (GJ 505A). Details to be expanded. diff --git a/wiki/corporations/brindlewood-honey.md b/wiki/corporations/brindlewood-honey.md new file mode 100644 index 000000000..b40a838b5 --- /dev/null +++ b/wiki/corporations/brindlewood-honey.md @@ -0,0 +1,24 @@ +--- +title: "Brindlewood Honey" +description: "Brindlewood Honey — regional specialty producer based in Ashfield, north reach" +slug: brindlewood-honey +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Ashfield (GJ 178) +tags: [terroir, north_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Brindlewood Honey + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Ashfield (GJ 178) + +Brindlewood Honey is a regional specialty producer operating out of Ashfield (GJ 178). Details to be expanded. diff --git a/wiki/corporations/byeolbit-entertainment.md b/wiki/corporations/byeolbit-entertainment.md new file mode 100644 index 000000000..b4ad31c7d --- /dev/null +++ b/wiki/corporations/byeolbit-entertainment.md @@ -0,0 +1,24 @@ +--- +title: "Byeolbit Entertainment" +description: "Byeolbit Entertainment — cultural content producer based in Seongho, east reach" +slug: byeolbit-entertainment +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Seongho (GJ 660A) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Byeolbit Entertainment + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Seongho (GJ 660A) + +Byeolbit Entertainment is a cultural content producer operating out of Seongho (GJ 660A). Details to be expanded. diff --git a/wiki/corporations/calloway-distillery.md b/wiki/corporations/calloway-distillery.md index 8ac5b1da7..0769512f8 100644 --- a/wiki/corporations/calloway-distillery.md +++ b/wiki/corporations/calloway-distillery.md @@ -11,7 +11,7 @@ faction_type: economic headquarters: Calloway Reach (GJ 3325) tags: [] decision_refs: [] -cross_refs: [] +cross_refs: [thrds, mercado-travessia] --- # Calloway Distillery diff --git a/wiki/corporations/calloway-workshop.md b/wiki/corporations/calloway-workshop.md new file mode 100644 index 000000000..c9d5f2d75 --- /dev/null +++ b/wiki/corporations/calloway-workshop.md @@ -0,0 +1,24 @@ +--- +title: "Calloway Workshop" +description: "Calloway Workshop — design and furniture manufacturer based in Calloway Reach, north reach" +slug: calloway-workshop +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Calloway Reach (GJ 3325) +tags: [design_heritage, north_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Calloway Workshop + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Calloway Reach (GJ 3325) + +Calloway Workshop is a design and furniture manufacturer operating out of Calloway Reach (GJ 3325). Details to be expanded. diff --git a/wiki/corporations/calluna-wellness.md b/wiki/corporations/calluna-wellness.md new file mode 100644 index 000000000..c466cdd4e --- /dev/null +++ b/wiki/corporations/calluna-wellness.md @@ -0,0 +1,24 @@ +--- +title: "Calluna Wellness" +description: "Calluna Wellness — premium service provider based in Cairn, north reach" +slug: calluna-wellness +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Cairn (GJ 845) +tags: [service_premium, north_reach, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Calluna Wellness + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Cairn (GJ 845) + +Calluna Wellness is a premium service provider operating out of Cairn (GJ 845). Details to be expanded. diff --git a/wiki/corporations/cape-modern.md b/wiki/corporations/cape-modern.md new file mode 100644 index 000000000..fef519b36 --- /dev/null +++ b/wiki/corporations/cape-modern.md @@ -0,0 +1,24 @@ +--- +title: "Cape Modern" +description: "Cape Modern — design and furniture manufacturer based in Kaapse Baai, south reach" +slug: cape-modern +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kaapse Baai (GJ 213) +tags: [design_heritage, south_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Cape Modern + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Kaapse Baai (GJ 213) + +Cape Modern is a design and furniture manufacturer operating out of Kaapse Baai (GJ 213). Details to be expanded. diff --git a/wiki/corporations/commonstock-foods.md b/wiki/corporations/commonstock-foods.md new file mode 100644 index 000000000..a59fc436b --- /dev/null +++ b/wiki/corporations/commonstock-foods.md @@ -0,0 +1,24 @@ +--- +title: "Commonstock Foods" +description: "Commonstock Foods — consumer goods manufacturer based in Sirius, core" +slug: commonstock-foods +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Sirius (GJ 244A) +tags: [commodity_branded, core, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Commonstock Foods + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Sirius (GJ 244A) + +Commonstock Foods is a consumer goods manufacturer operating out of Sirius (GJ 244A). Details to be expanded. diff --git a/wiki/corporations/comptoir-lendel.md b/wiki/corporations/comptoir-lendel.md new file mode 100644 index 000000000..7c26963dc --- /dev/null +++ b/wiki/corporations/comptoir-lendel.md @@ -0,0 +1,24 @@ +--- +title: "Comptoir Lendel" +description: "Comptoir Lendel — regional specialty producer based in Groombridge, core" +slug: comptoir-lendel +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [terroir, core, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Comptoir Lendel + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Comptoir Lendel is a regional specialty producer operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/coriolis-exchange.md b/wiki/corporations/coriolis-exchange.md new file mode 100644 index 000000000..f2191fcff --- /dev/null +++ b/wiki/corporations/coriolis-exchange.md @@ -0,0 +1,24 @@ +--- +title: "Coriolis Exchange" +description: "Coriolis Exchange — premium service provider based in Groombridge, core" +slug: coriolis-exchange +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [service_premium, core, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Coriolis Exchange + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Coriolis Exchange is a premium service provider operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/dalbit-systems.md b/wiki/corporations/dalbit-systems.md new file mode 100644 index 000000000..ef8960839 --- /dev/null +++ b/wiki/corporations/dalbit-systems.md @@ -0,0 +1,24 @@ +--- +title: "Dalbit Systems" +description: "Dalbit Systems — precision technology manufacturer based in Seongho, east reach" +slug: dalbit-systems +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Seongho (GJ 660A) +tags: [tech_premium, east_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Dalbit Systems + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Seongho (GJ 660A) + +Dalbit Systems is a precision technology manufacturer operating out of Seongho (GJ 660A). Details to be expanded. diff --git a/wiki/corporations/destilaria-confluencia.md b/wiki/corporations/destilaria-confluencia.md new file mode 100644 index 000000000..1ed6e710c --- /dev/null +++ b/wiki/corporations/destilaria-confluencia.md @@ -0,0 +1,24 @@ +--- +title: "Destilaria Confluencia" +description: "Destilaria Confluencia — regional specialty producer based in Confluência, south reach" +slug: destilaria-confluencia +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Confluência (GJ 566B) +tags: [terroir, south_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Destilaria Confluencia + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Confluência (GJ 566B) + +Destilaria Confluencia is a regional specialty producer operating out of Confluência (GJ 566B). Details to be expanded. diff --git a/wiki/corporations/durban-engineering.md b/wiki/corporations/durban-engineering.md new file mode 100644 index 000000000..2d3ffa4a7 --- /dev/null +++ b/wiki/corporations/durban-engineering.md @@ -0,0 +1,24 @@ +--- +title: "Durban Engineering" +description: "Durban Engineering — precision technology manufacturer based in Isibaya, south reach" +slug: durban-engineering +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Isibaya (GJ 905) +tags: [tech_premium, south_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Durban Engineering + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Isibaya (GJ 905) + +Durban Engineering is a precision technology manufacturer operating out of Isibaya (GJ 905). Details to be expanded. diff --git a/wiki/corporations/eastbay-trading.md b/wiki/corporations/eastbay-trading.md new file mode 100644 index 000000000..8a42e1d3d --- /dev/null +++ b/wiki/corporations/eastbay-trading.md @@ -0,0 +1,24 @@ +--- +title: "Eastbay Trading" +description: "Eastbay Trading — consumer goods manufacturer based in Bridgepoint, east reach" +slug: eastbay-trading +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Bridgepoint (GJ 53A) +tags: [commodity_branded, east_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Eastbay Trading + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Bridgepoint (GJ 53A) + +Eastbay Trading is a consumer goods manufacturer operating out of Bridgepoint (GJ 53A). Details to be expanded. diff --git a/wiki/corporations/endymion-instruments.md b/wiki/corporations/endymion-instruments.md new file mode 100644 index 000000000..fcb2562bc --- /dev/null +++ b/wiki/corporations/endymion-instruments.md @@ -0,0 +1,24 @@ +--- +title: "Endymion Instruments" +description: "Endymion Instruments — precision technology manufacturer based in The Narrows, deep frontier" +slug: endymion-instruments +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: The Narrows (GJ 875) +tags: [tech_premium, deep_frontier, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Endymion Instruments + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — deep frontier operations +**Headquarters:** The Narrows (GJ 875) + +Endymion Instruments is a precision technology manufacturer operating out of The Narrows (GJ 875). Details to be expanded. diff --git a/wiki/corporations/erzgebirge-instruments.md b/wiki/corporations/erzgebirge-instruments.md new file mode 100644 index 000000000..c992e7283 --- /dev/null +++ b/wiki/corporations/erzgebirge-instruments.md @@ -0,0 +1,24 @@ +--- +title: "Erzgebirge Instruments" +description: "Erzgebirge Instruments — precision technology manufacturer based in Eisentor, west reach" +slug: erzgebirge-instruments +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Eisentor (GJ 3454) +tags: [tech_premium, west_reach, mark, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Erzgebirge Instruments + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Eisentor (GJ 3454) + +Erzgebirge Instruments is a precision technology manufacturer operating out of Eisentor (GJ 3454). Details to be expanded. diff --git a/wiki/corporations/fieldborn-grain.md b/wiki/corporations/fieldborn-grain.md new file mode 100644 index 000000000..f25440e7a --- /dev/null +++ b/wiki/corporations/fieldborn-grain.md @@ -0,0 +1,24 @@ +--- +title: "Fieldborn Grain" +description: "Fieldborn Grain — consumer goods manufacturer based in Calloway Reach, north reach" +slug: fieldborn-grain +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Calloway Reach (GJ 3325) +tags: [commodity_branded, north_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Fieldborn Grain + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Calloway Reach (GJ 3325) + +Fieldborn Grain is a consumer goods manufacturer operating out of Calloway Reach (GJ 3325). Details to be expanded. diff --git a/wiki/corporations/fjeldtone-music.md b/wiki/corporations/fjeldtone-music.md new file mode 100644 index 000000000..d4f31d0dd --- /dev/null +++ b/wiki/corporations/fjeldtone-music.md @@ -0,0 +1,24 @@ +--- +title: "Fjeldtone Music" +description: "Fjeldtone Music — cultural content producer based in Halvøy, west reach" +slug: fjeldtone-music +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Halvøy (GJ 624) +tags: [cultural, west_reach, mark, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Fjeldtone Music + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Halvøy (GJ 624) + +Fjeldtone Music is a cultural content producer operating out of Halvøy (GJ 624). Details to be expanded. diff --git a/wiki/corporations/graben-studio.md b/wiki/corporations/graben-studio.md new file mode 100644 index 000000000..be99603b9 --- /dev/null +++ b/wiki/corporations/graben-studio.md @@ -0,0 +1,24 @@ +--- +title: "Graben Studio" +description: "Graben Studio — cultural content producer based in Freiholt, west reach" +slug: graben-studio +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Freiholt (GJ 453) +tags: [cultural, west_reach, mark, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Graben Studio + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Freiholt (GJ 453) + +Graben Studio is a cultural content producer operating out of Freiholt (GJ 453). Details to be expanded. diff --git a/wiki/corporations/grampian-systems.md b/wiki/corporations/grampian-systems.md new file mode 100644 index 000000000..8d70c5210 --- /dev/null +++ b/wiki/corporations/grampian-systems.md @@ -0,0 +1,24 @@ +--- +title: "Grampian Systems" +description: "Grampian Systems — precision technology manufacturer based in Calloway Reach, north reach" +slug: grampian-systems +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Calloway Reach (GJ 3325) +tags: [tech_premium, north_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Grampian Systems + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Calloway Reach (GJ 3325) + +Grampian Systems is a precision technology manufacturer operating out of Calloway Reach (GJ 3325). Details to be expanded. diff --git a/wiki/corporations/gridsupply-electronics.md b/wiki/corporations/gridsupply-electronics.md new file mode 100644 index 000000000..84eeae80f --- /dev/null +++ b/wiki/corporations/gridsupply-electronics.md @@ -0,0 +1,24 @@ +--- +title: "Gridsupply Electronics" +description: "Gridsupply Electronics — consumer goods manufacturer based in Groombridge, core" +slug: gridsupply-electronics +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [commodity_branded, core, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Gridsupply Electronics + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Gridsupply Electronics is a consumer goods manufacturer operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/gronnmark-consumer.md b/wiki/corporations/gronnmark-consumer.md new file mode 100644 index 000000000..be52820e3 --- /dev/null +++ b/wiki/corporations/gronnmark-consumer.md @@ -0,0 +1,24 @@ +--- +title: "Gronnmark Consumer" +description: "Gronnmark Consumer — consumer goods manufacturer based in Nyrheim, west reach" +slug: gronnmark-consumer +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Nyrheim (GJ 3737) +tags: [commodity_branded, west_reach, mark, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Gronnmark Consumer + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Nyrheim (GJ 3737) + +Gronnmark Consumer is a consumer goods manufacturer operating out of Nyrheim (GJ 3737). Details to be expanded. diff --git a/wiki/corporations/groot-karoo-cellars.md b/wiki/corporations/groot-karoo-cellars.md new file mode 100644 index 000000000..410c68a05 --- /dev/null +++ b/wiki/corporations/groot-karoo-cellars.md @@ -0,0 +1,24 @@ +--- +title: "Groot Karoo Cellars" +description: "Groot Karoo Cellars — regional specialty producer based in Karoo, south reach" +slug: groot-karoo-cellars +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Karoo (GJ 222A) +tags: [terroir, south_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Groot Karoo Cellars + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Karoo (GJ 222A) + +Groot Karoo Cellars is a regional specialty producer operating out of Karoo (GJ 222A). Details to be expanded. diff --git a/wiki/corporations/haesungdan-records.md b/wiki/corporations/haesungdan-records.md new file mode 100644 index 000000000..bd114214a --- /dev/null +++ b/wiki/corporations/haesungdan-records.md @@ -0,0 +1,24 @@ +--- +title: "Haesungdan Records" +description: "Haesungdan Records — cultural content producer based in Miryang, east reach" +slug: haesungdan-records +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Miryang (GJ 754) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Haesungdan Records + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Miryang (GJ 754) + +Haesungdan Records is a cultural content producer operating out of Miryang (GJ 754). Details to be expanded. diff --git a/wiki/corporations/hakone-hospitality.md b/wiki/corporations/hakone-hospitality.md new file mode 100644 index 000000000..2a19729f0 --- /dev/null +++ b/wiki/corporations/hakone-hospitality.md @@ -0,0 +1,24 @@ +--- +title: "Hakone Hospitality" +description: "Hakone Hospitality — premium service provider based in Matsue, east reach" +slug: hakone-hospitality +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Matsue (GJ 687) +tags: [service_premium, east_reach, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Hakone Hospitality + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Matsue (GJ 687) + +Hakone Hospitality is a premium service provider operating out of Matsue (GJ 687). Details to be expanded. diff --git a/wiki/corporations/hana-creative.md b/wiki/corporations/hana-creative.md new file mode 100644 index 000000000..ed14a8a89 --- /dev/null +++ b/wiki/corporations/hana-creative.md @@ -0,0 +1,24 @@ +--- +title: "Hana Creative" +description: "Hana Creative — cultural content producer based in Jinghu, east reach" +slug: hana-creative +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Jinghu (GJ 445) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Hana Creative + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Jinghu (GJ 445) + +Hana Creative is a cultural content producer operating out of Jinghu (GJ 445). Details to be expanded. diff --git a/wiki/corporations/hangang-studio.md b/wiki/corporations/hangang-studio.md new file mode 100644 index 000000000..d401cf7fd --- /dev/null +++ b/wiki/corporations/hangang-studio.md @@ -0,0 +1,24 @@ +--- +title: "Hangang Studio" +description: "Hangang Studio — media platform and catalogue service based in Songjiang, east reach" +slug: hangang-studio +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Songjiang (GJ 625) +tags: [platform_catalogue, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Hangang Studio + +**Type:** Corporation — Media Platform And Catalogue Service +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Songjiang (GJ 625) + +Hangang Studio is a media platform and catalogue service operating out of Songjiang (GJ 625). Details to be expanded. diff --git a/wiki/corporations/hangil-celadon.md b/wiki/corporations/hangil-celadon.md new file mode 100644 index 000000000..fc74d5635 --- /dev/null +++ b/wiki/corporations/hangil-celadon.md @@ -0,0 +1,24 @@ +--- +title: "Hangil Celadon" +description: "Hangil Celadon — heritage craft manufacturer based in Miryang, east reach" +slug: hangil-celadon +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Miryang (GJ 754) +tags: [heritage_craft, east_reach, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Hangil Celadon + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Miryang (GJ 754) + +Hangil Celadon is a heritage craft manufacturer operating out of Miryang (GJ 754). Details to be expanded. diff --git a/wiki/corporations/hartsteen-legal.md b/wiki/corporations/hartsteen-legal.md new file mode 100644 index 000000000..4d350be93 --- /dev/null +++ b/wiki/corporations/hartsteen-legal.md @@ -0,0 +1,24 @@ +--- +title: "Hartsteen Legal" +description: "Hartsteen Legal — premium service provider based in Confluent, west reach" +slug: hartsteen-legal +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Confluent (GJ 395) +tags: [service_premium, west_reach, mark] +decision_refs: [D-189] +cross_refs: [] +--- + +# Hartsteen Legal + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Confluent (GJ 395) + +Hartsteen Legal is a premium service provider operating out of Confluent (GJ 395). Details to be expanded. diff --git a/wiki/corporations/higashiyama-vehicle.md b/wiki/corporations/higashiyama-vehicle.md new file mode 100644 index 000000000..9839e06b9 --- /dev/null +++ b/wiki/corporations/higashiyama-vehicle.md @@ -0,0 +1,24 @@ +--- +title: "Higashiyama Vehicle" +description: "Higashiyama Vehicle — precision technology manufacturer based in Kurashiki, east reach" +slug: higashiyama-vehicle +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kurashiki (GJ 205) +tags: [tech_premium, east_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Higashiyama Vehicle + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Kurashiki (GJ 205) + +Higashiyama Vehicle is a precision technology manufacturer operating out of Kurashiki (GJ 205). Details to be expanded. diff --git a/wiki/corporations/highland-cooperative.md b/wiki/corporations/highland-cooperative.md new file mode 100644 index 000000000..f38cbc420 --- /dev/null +++ b/wiki/corporations/highland-cooperative.md @@ -0,0 +1,24 @@ +--- +title: "Highland Cooperative" +description: "Highland Cooperative — regional specialty producer based in Crown's Hollow, north reach" +slug: highland-cooperative +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Crown's Hollow (GJ 661A) +tags: [terroir, north_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Highland Cooperative + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Crown's Hollow (GJ 661A) + +Highland Cooperative is a regional specialty producer operating out of Crown's Hollow (GJ 661A). Details to be expanded. diff --git a/wiki/corporations/iberian-standard-foods.md b/wiki/corporations/iberian-standard-foods.md new file mode 100644 index 000000000..90aa6694d --- /dev/null +++ b/wiki/corporations/iberian-standard-foods.md @@ -0,0 +1,24 @@ +--- +title: "Iberian Standard Foods" +description: "Iberian Standard Foods — consumer goods manufacturer based in Caparica, south reach" +slug: iberian-standard-foods +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Caparica (GJ 1002) +tags: [commodity_branded, south_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Iberian Standard Foods + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Caparica (GJ 1002) + +Iberian Standard Foods is a consumer goods manufacturer operating out of Caparica (GJ 1002). Details to be expanded. diff --git a/wiki/corporations/incheon-salt.md b/wiki/corporations/incheon-salt.md new file mode 100644 index 000000000..1462ebf02 --- /dev/null +++ b/wiki/corporations/incheon-salt.md @@ -0,0 +1,24 @@ +--- +title: "Incheon Salt" +description: "Incheon Salt — regional specialty producer based in Changwon, east reach" +slug: incheon-salt +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Changwon (GJ 860B) +tags: [terroir, east_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Incheon Salt + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Changwon (GJ 860B) + +Incheon Salt is a regional specialty producer operating out of Changwon (GJ 860B). Details to be expanded. diff --git a/wiki/corporations/ironbark-films.md b/wiki/corporations/ironbark-films.md new file mode 100644 index 000000000..fb07aaf63 --- /dev/null +++ b/wiki/corporations/ironbark-films.md @@ -0,0 +1,24 @@ +--- +title: "Ironbark Films" +description: "Ironbark Films — cultural content producer based in Fremantle, north reach" +slug: ironbark-films +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Fremantle (GJ 273) +tags: [cultural, north_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Ironbark Films + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Fremantle (GJ 273) + +Ironbark Films is a cultural content producer operating out of Fremantle (GJ 273). Details to be expanded. diff --git a/wiki/corporations/iznik-atelier.md b/wiki/corporations/iznik-atelier.md new file mode 100644 index 000000000..b97a200e9 --- /dev/null +++ b/wiki/corporations/iznik-atelier.md @@ -0,0 +1,24 @@ +--- +title: "Iznik Atelier" +description: "Iznik Atelier — heritage craft manufacturer based in Groombridge, core" +slug: iznik-atelier +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [heritage_craft, core, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Iznik Atelier + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Iznik Atelier is a heritage craft manufacturer operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/jeju-lattice.md b/wiki/corporations/jeju-lattice.md new file mode 100644 index 000000000..17b63ecc6 --- /dev/null +++ b/wiki/corporations/jeju-lattice.md @@ -0,0 +1,24 @@ +--- +title: "Jeju Lattice" +description: "Jeju Lattice — precision technology manufacturer based in Yeongwol, east reach" +slug: jeju-lattice +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Yeongwol (GJ 268) +tags: [tech_premium, east_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Jeju Lattice + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Yeongwol (GJ 268) + +Jeju Lattice is a precision technology manufacturer operating out of Yeongwol (GJ 268). Details to be expanded. diff --git a/wiki/corporations/kaapse-baai-wines.md b/wiki/corporations/kaapse-baai-wines.md new file mode 100644 index 000000000..28044be49 --- /dev/null +++ b/wiki/corporations/kaapse-baai-wines.md @@ -0,0 +1,24 @@ +--- +title: "Kaapse Baai Wines" +description: "Kaapse Baai Wines — regional specialty producer based in Kaapse Baai, south reach" +slug: kaapse-baai-wines +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kaapse Baai (GJ 213) +tags: [terroir, south_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kaapse Baai Wines + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Kaapse Baai (GJ 213) + +Kaapse Baai Wines is a regional specialty producer operating out of Kaapse Baai (GJ 213). Details to be expanded. diff --git a/wiki/corporations/kalahari-leatherworks.md b/wiki/corporations/kalahari-leatherworks.md new file mode 100644 index 000000000..bdeece169 --- /dev/null +++ b/wiki/corporations/kalahari-leatherworks.md @@ -0,0 +1,24 @@ +--- +title: "Kalahari Leatherworks" +description: "Kalahari Leatherworks — heritage craft manufacturer based in Karoo, south reach" +slug: kalahari-leatherworks +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Karoo (GJ 222A) +tags: [heritage_craft, south_reach, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kalahari Leatherworks + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Karoo (GJ 222A) + +Kalahari Leatherworks is a heritage craft manufacturer operating out of Karoo (GJ 222A). Details to be expanded. diff --git a/wiki/corporations/kaur-observatory-equipment.md b/wiki/corporations/kaur-observatory-equipment.md new file mode 100644 index 000000000..e4049ef4c --- /dev/null +++ b/wiki/corporations/kaur-observatory-equipment.md @@ -0,0 +1,24 @@ +--- +title: "Kaur Observatory Equipment" +description: "Kaur Observatory Equipment — precision technology manufacturer based in Kaur's Observatory, east reach" +slug: kaur-observatory-equipment +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kaur's Observatory (GJ 432A) +tags: [tech_premium, east_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kaur Observatory Equipment + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Kaur's Observatory (GJ 432A) + +Kaur Observatory Equipment is a precision technology manufacturer operating out of Kaur's Observatory (GJ 432A). Details to be expanded. diff --git a/wiki/corporations/kellervolk.md b/wiki/corporations/kellervolk.md new file mode 100644 index 000000000..663a07f01 --- /dev/null +++ b/wiki/corporations/kellervolk.md @@ -0,0 +1,24 @@ +--- +title: "Kellervolk" +description: "Kellervolk — cultural content producer based in Nyrheim, west reach" +slug: kellervolk +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Nyrheim (GJ 3737) +tags: [cultural, west_reach, mark, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kellervolk + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Nyrheim (GJ 3737) + +Kellervolk is a cultural content producer operating out of Nyrheim (GJ 3737). Details to be expanded. diff --git a/wiki/corporations/kinlochewe-instruments.md b/wiki/corporations/kinlochewe-instruments.md new file mode 100644 index 000000000..d9bedb2a3 --- /dev/null +++ b/wiki/corporations/kinlochewe-instruments.md @@ -0,0 +1,24 @@ +--- +title: "Kinlochewe Instruments" +description: "Kinlochewe Instruments — precision technology manufacturer based in Braemar, north reach" +slug: kinlochewe-instruments +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Braemar (GJ 475) +tags: [tech_premium, north_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kinlochewe Instruments + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Braemar (GJ 475) + +Kinlochewe Instruments is a precision technology manufacturer operating out of Braemar (GJ 475). Details to be expanded. diff --git a/wiki/corporations/koryo-standard.md b/wiki/corporations/koryo-standard.md new file mode 100644 index 000000000..6f6d9c018 --- /dev/null +++ b/wiki/corporations/koryo-standard.md @@ -0,0 +1,24 @@ +--- +title: "Koryo Standard" +description: "Koryo Standard — consumer goods manufacturer based in Jeonnam, east reach" +slug: koryo-standard +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Jeonnam (GJ 3728B) +tags: [commodity_branded, east_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Koryo Standard + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Jeonnam (GJ 3728B) + +Koryo Standard is a consumer goods manufacturer operating out of Jeonnam (GJ 3728B). Details to be expanded. diff --git a/wiki/corporations/kumho-navigation.md b/wiki/corporations/kumho-navigation.md new file mode 100644 index 000000000..876c40ba2 --- /dev/null +++ b/wiki/corporations/kumho-navigation.md @@ -0,0 +1,24 @@ +--- +title: "Kumho Navigation" +description: "Kumho Navigation — precision technology manufacturer based in Hwaseong, east reach" +slug: kumho-navigation +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Hwaseong (GJ 1125) +tags: [tech_premium, east_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kumho Navigation + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Hwaseong (GJ 1125) + +Kumho Navigation is a precision technology manufacturer operating out of Hwaseong (GJ 1125). Details to be expanded. diff --git a/wiki/corporations/kyoei-design.md b/wiki/corporations/kyoei-design.md new file mode 100644 index 000000000..5c6fac471 --- /dev/null +++ b/wiki/corporations/kyoei-design.md @@ -0,0 +1,24 @@ +--- +title: "Kyoei Design" +description: "Kyoei Design — design and furniture manufacturer based in Kurashiki, east reach" +slug: kyoei-design +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kurashiki (GJ 205) +tags: [design_heritage, east_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kyoei Design + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Kurashiki (GJ 205) + +Kyoei Design is a design and furniture manufacturer operating out of Kurashiki (GJ 205). Details to be expanded. diff --git a/wiki/corporations/kyoto-valley-estates.md b/wiki/corporations/kyoto-valley-estates.md new file mode 100644 index 000000000..ee6556d22 --- /dev/null +++ b/wiki/corporations/kyoto-valley-estates.md @@ -0,0 +1,24 @@ +--- +title: "Kyoto Valley Estates" +description: "Kyoto Valley Estates — regional specialty producer based in Kurashiki, east reach" +slug: kyoto-valley-estates +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kurashiki (GJ 205) +tags: [terroir, east_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Kyoto Valley Estates + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Kurashiki (GJ 205) + +Kyoto Valley Estates is a regional specialty producer operating out of Kurashiki (GJ 205). Details to be expanded. diff --git a/wiki/corporations/leerfeld-records.md b/wiki/corporations/leerfeld-records.md new file mode 100644 index 000000000..96ae72c84 --- /dev/null +++ b/wiki/corporations/leerfeld-records.md @@ -0,0 +1,24 @@ +--- +title: "Leerfeld Records" +description: "Leerfeld Records — cultural content producer based in Confluent, west reach" +slug: leerfeld-records +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Confluent (GJ 395) +tags: [cultural, west_reach, mark, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Leerfeld Records + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Confluent (GJ 395) + +Leerfeld Records is a cultural content producer operating out of Confluent (GJ 395). Details to be expanded. diff --git a/wiki/corporations/lowlands-consumer.md b/wiki/corporations/lowlands-consumer.md new file mode 100644 index 000000000..298dff8f1 --- /dev/null +++ b/wiki/corporations/lowlands-consumer.md @@ -0,0 +1,24 @@ +--- +title: "Lowlands Consumer" +description: "Lowlands Consumer — consumer goods manufacturer based in Dokkum, west reach" +slug: lowlands-consumer +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Dokkum (GJ 506) +tags: [commodity_branded, west_reach, mark, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Lowlands Consumer + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Dokkum (GJ 506) + +Lowlands Consumer is a consumer goods manufacturer operating out of Dokkum (GJ 506). Details to be expanded. diff --git a/wiki/corporations/luanda-fabrication.md b/wiki/corporations/luanda-fabrication.md new file mode 100644 index 000000000..1b2d3a304 --- /dev/null +++ b/wiki/corporations/luanda-fabrication.md @@ -0,0 +1,24 @@ +--- +title: "Luanda Fabrication" +description: "Luanda Fabrication — precision technology manufacturer based in Matamba, south reach" +slug: luanda-fabrication +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Matamba (GJ 884) +tags: [tech_premium, south_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Luanda Fabrication + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Matamba (GJ 884) + +Luanda Fabrication is a precision technology manufacturer operating out of Matamba (GJ 884). Details to be expanded. diff --git a/wiki/corporations/lusaka-advisory.md b/wiki/corporations/lusaka-advisory.md new file mode 100644 index 000000000..25e90054c --- /dev/null +++ b/wiki/corporations/lusaka-advisory.md @@ -0,0 +1,24 @@ +--- +title: "Lusaka Advisory" +description: "Lusaka Advisory — premium service provider based in Zenzele, south reach" +slug: lusaka-advisory +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Zenzele (GJ 1111) +tags: [service_premium, south_reach, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Lusaka Advisory + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Zenzele (GJ 1111) + +Lusaka Advisory is a premium service provider operating out of Zenzele (GJ 1111). Details to be expanded. diff --git a/wiki/corporations/lusitanian-glass.md b/wiki/corporations/lusitanian-glass.md new file mode 100644 index 000000000..e95a2b478 --- /dev/null +++ b/wiki/corporations/lusitanian-glass.md @@ -0,0 +1,24 @@ +--- +title: "Lusitanian Glass" +description: "Lusitanian Glass — heritage craft manufacturer based in Caparica, south reach" +slug: lusitanian-glass +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Caparica (GJ 1002) +tags: [heritage_craft, south_reach, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Lusitanian Glass + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Caparica (GJ 1002) + +Lusitanian Glass is a heritage craft manufacturer operating out of Caparica (GJ 1002). Details to be expanded. diff --git a/wiki/corporations/maas-rijn-entertainment.md b/wiki/corporations/maas-rijn-entertainment.md new file mode 100644 index 000000000..aaa15aca0 --- /dev/null +++ b/wiki/corporations/maas-rijn-entertainment.md @@ -0,0 +1,24 @@ +--- +title: "Maas Rijn Entertainment" +description: "Maas Rijn Entertainment — cultural content producer based in Dokkum, west reach" +slug: maas-rijn-entertainment +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Dokkum (GJ 506) +tags: [cultural, west_reach, mark, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Maas Rijn Entertainment + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Dokkum (GJ 506) + +Maas Rijn Entertainment is a cultural content producer operating out of Dokkum (GJ 506). Details to be expanded. diff --git a/wiki/corporations/maison-cinq.md b/wiki/corporations/maison-cinq.md new file mode 100644 index 000000000..f23ec395e --- /dev/null +++ b/wiki/corporations/maison-cinq.md @@ -0,0 +1,24 @@ +--- +title: "Maison Cinq" +description: "Maison Cinq — design and furniture manufacturer based in Sirius, core" +slug: maison-cinq +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Sirius (GJ 244A) +tags: [design_heritage, core, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Maison Cinq + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Sirius (GJ 244A) + +Maison Cinq is a design and furniture manufacturer operating out of Sirius (GJ 244A). Details to be expanded. diff --git a/wiki/corporations/makuti-consumer.md b/wiki/corporations/makuti-consumer.md new file mode 100644 index 000000000..ba4bf8657 --- /dev/null +++ b/wiki/corporations/makuti-consumer.md @@ -0,0 +1,24 @@ +--- +title: "Makuti Consumer" +description: "Makuti Consumer — consumer goods manufacturer based in Mwangaza, south reach" +slug: makuti-consumer +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Mwangaza (GJ 693) +tags: [commodity_branded, south_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Makuti Consumer + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Mwangaza (GJ 693) + +Makuti Consumer is a consumer goods manufacturer operating out of Mwangaza (GJ 693). Details to be expanded. diff --git a/wiki/corporations/matosinhos-fishing.md b/wiki/corporations/matosinhos-fishing.md new file mode 100644 index 000000000..5e80f7ab3 --- /dev/null +++ b/wiki/corporations/matosinhos-fishing.md @@ -0,0 +1,24 @@ +--- +title: "Matosinhos Fishing" +description: "Matosinhos Fishing — consumer goods manufacturer based in Velha Guarda, south reach" +slug: matosinhos-fishing +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Velha Guarda (GJ 4A) +tags: [commodity_branded, south_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Matosinhos Fishing + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Velha Guarda (GJ 4A) + +Matosinhos Fishing is a consumer goods manufacturer operating out of Velha Guarda (GJ 4A). Details to be expanded. diff --git a/wiki/corporations/meridional-banking.md b/wiki/corporations/meridional-banking.md new file mode 100644 index 000000000..7af2af727 --- /dev/null +++ b/wiki/corporations/meridional-banking.md @@ -0,0 +1,24 @@ +--- +title: "Meridional Banking" +description: "Meridional Banking — premium service provider based in Meridian, core" +slug: meridional-banking +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Meridian (GJ 674) +tags: [service_premium, core, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Meridional Banking + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Meridian (GJ 674) + +Meridional Banking is a premium service provider operating out of Meridian (GJ 674). Details to be expanded. diff --git a/wiki/corporations/meridional-technical.md b/wiki/corporations/meridional-technical.md new file mode 100644 index 000000000..137396c46 --- /dev/null +++ b/wiki/corporations/meridional-technical.md @@ -0,0 +1,24 @@ +--- +title: "Meridional Technical" +description: "Meridional Technical — precision technology manufacturer based in Meridian, core" +slug: meridional-technical +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Meridian (GJ 674) +tags: [tech_premium, core, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Meridional Technical + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Meridian (GJ 674) + +Meridional Technical is a precision technology manufacturer operating out of Meridian (GJ 674). Details to be expanded. diff --git a/wiki/corporations/mirai-entertainment.md b/wiki/corporations/mirai-entertainment.md new file mode 100644 index 000000000..3d21a82a0 --- /dev/null +++ b/wiki/corporations/mirai-entertainment.md @@ -0,0 +1,24 @@ +--- +title: "Mirai Entertainment" +description: "Mirai Entertainment — cultural content producer based in Kurashiki, east reach" +slug: mirai-entertainment +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kurashiki (GJ 205) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Mirai Entertainment + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Kurashiki (GJ 205) + +Mirai Entertainment is a cultural content producer operating out of Kurashiki (GJ 205). Details to be expanded. diff --git a/wiki/corporations/moorfield-records.md b/wiki/corporations/moorfield-records.md new file mode 100644 index 000000000..4da2914f0 --- /dev/null +++ b/wiki/corporations/moorfield-records.md @@ -0,0 +1,24 @@ +--- +title: "Moorfield Records" +description: "Moorfield Records — cultural content producer based in Braemar, north reach" +slug: moorfield-records +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Braemar (GJ 475) +tags: [cultural, north_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Moorfield Records + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Braemar (GJ 475) + +Moorfield Records is a cultural content producer operating out of Braemar (GJ 475). Details to be expanded. diff --git a/wiki/corporations/mwanga-media.md b/wiki/corporations/mwanga-media.md new file mode 100644 index 000000000..309f1ff74 --- /dev/null +++ b/wiki/corporations/mwanga-media.md @@ -0,0 +1,24 @@ +--- +title: "Mwanga Media" +description: "Mwanga Media — cultural content producer based in Mwangaza, south reach" +slug: mwanga-media +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Mwangaza (GJ 693) +tags: [cultural, south_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Mwanga Media + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Mwangaza (GJ 693) + +Mwanga Media is a cultural content producer operating out of Mwangaza (GJ 693). Details to be expanded. diff --git a/wiki/corporations/namsan-collective.md b/wiki/corporations/namsan-collective.md new file mode 100644 index 000000000..9cd7f2caa --- /dev/null +++ b/wiki/corporations/namsan-collective.md @@ -0,0 +1,24 @@ +--- +title: "Namsan Collective" +description: "Namsan Collective — cultural content producer based in Yeongwol, east reach" +slug: namsan-collective +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Yeongwol (GJ 268) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Namsan Collective + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Yeongwol (GJ 268) + +Namsan Collective is a cultural content producer operating out of Yeongwol (GJ 268). Details to be expanded. diff --git a/wiki/corporations/nexus-way-express.md b/wiki/corporations/nexus-way-express.md new file mode 100644 index 000000000..b70a265d1 --- /dev/null +++ b/wiki/corporations/nexus-way-express.md @@ -0,0 +1,24 @@ +--- +title: "Nexus Way Express" +description: "Nexus Way Express — premium service provider based in Sirius, core" +slug: nexus-way-express +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Sirius (GJ 244A) +tags: [service_premium, core, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Nexus Way Express + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Sirius (GJ 244A) + +Nexus Way Express is a premium service provider operating out of Sirius (GJ 244A). Details to be expanded. diff --git a/wiki/corporations/nordhavn-financial.md b/wiki/corporations/nordhavn-financial.md new file mode 100644 index 000000000..e0380c5cd --- /dev/null +++ b/wiki/corporations/nordhavn-financial.md @@ -0,0 +1,24 @@ +--- +title: "Nordhavn Financial" +description: "Nordhavn Financial — premium service provider based in Nyrheim, west reach" +slug: nordhavn-financial +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Nyrheim (GJ 3737) +tags: [service_premium, west_reach, mark] +decision_refs: [D-189] +cross_refs: [] +--- + +# Nordhavn Financial + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Nyrheim (GJ 3737) + +Nordhavn Financial is a premium service provider operating out of Nyrheim (GJ 3737). Details to be expanded. diff --git a/wiki/corporations/nordschatten-records.md b/wiki/corporations/nordschatten-records.md new file mode 100644 index 000000000..7b132e782 --- /dev/null +++ b/wiki/corporations/nordschatten-records.md @@ -0,0 +1,24 @@ +--- +title: "Nordschatten Records" +description: "Nordschatten Records — cultural content producer based in Nyrheim, west reach" +slug: nordschatten-records +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Nyrheim (GJ 3737) +tags: [cultural, west_reach, mark, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Nordschatten Records + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Nyrheim (GJ 3737) + +Nordschatten Records is a cultural content producer operating out of Nyrheim (GJ 3737). Details to be expanded. diff --git a/wiki/corporations/norrland-woodcraft.md b/wiki/corporations/norrland-woodcraft.md new file mode 100644 index 000000000..dc070b29b --- /dev/null +++ b/wiki/corporations/norrland-woodcraft.md @@ -0,0 +1,24 @@ +--- +title: "Norrland Woodcraft" +description: "Norrland Woodcraft — heritage craft manufacturer based in Nyrheim, west reach" +slug: norrland-woodcraft +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Nyrheim (GJ 3737) +tags: [heritage_craft, west_reach, mark, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Norrland Woodcraft + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Nyrheim (GJ 3737) + +Norrland Woodcraft is a heritage craft manufacturer operating out of Nyrheim (GJ 3737). Details to be expanded. diff --git a/wiki/corporations/ondori-interactive.md b/wiki/corporations/ondori-interactive.md new file mode 100644 index 000000000..a7f158869 --- /dev/null +++ b/wiki/corporations/ondori-interactive.md @@ -0,0 +1,24 @@ +--- +title: "Ondori Interactive" +description: "Ondori Interactive — cultural content producer based in Jeonnam, east reach" +slug: ondori-interactive +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Jeonnam (GJ 3728B) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Ondori Interactive + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Jeonnam (GJ 3728B) + +Ondori Interactive is a cultural content producer operating out of Jeonnam (GJ 3728B). Details to be expanded. diff --git a/wiki/corporations/open-corridor-stream.md b/wiki/corporations/open-corridor-stream.md new file mode 100644 index 000000000..bd9fe30b1 --- /dev/null +++ b/wiki/corporations/open-corridor-stream.md @@ -0,0 +1,24 @@ +--- +title: "Open Corridor Stream" +description: "Open Corridor Stream — media platform and catalogue service based in Groombridge, core" +slug: open-corridor-stream +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [platform_catalogue, core, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Open Corridor Stream + +**Type:** Corporation — Media Platform And Catalogue Service +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Open Corridor Stream is a media platform and catalogue service operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/orkney-ceramics.md b/wiki/corporations/orkney-ceramics.md new file mode 100644 index 000000000..51275ca6b --- /dev/null +++ b/wiki/corporations/orkney-ceramics.md @@ -0,0 +1,24 @@ +--- +title: "Orkney Ceramics" +description: "Orkney Ceramics — heritage craft manufacturer based in Cairn, north reach" +slug: orkney-ceramics +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Cairn (GJ 845) +tags: [heritage_craft, north_reach, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Orkney Ceramics + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Cairn (GJ 845) + +Orkney Ceramics is a heritage craft manufacturer operating out of Cairn (GJ 845). Details to be expanded. diff --git a/wiki/corporations/pembrokeshire-smithy.md b/wiki/corporations/pembrokeshire-smithy.md new file mode 100644 index 000000000..b590c4ced --- /dev/null +++ b/wiki/corporations/pembrokeshire-smithy.md @@ -0,0 +1,24 @@ +--- +title: "Pembrokeshire Smithy" +description: "Pembrokeshire Smithy — heritage craft manufacturer based in Pemberton, north reach" +slug: pembrokeshire-smithy +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Pemberton (GJ 194B) +tags: [heritage_craft, north_reach, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Pembrokeshire Smithy + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Pemberton (GJ 194B) + +Pembrokeshire Smithy is a heritage craft manufacturer operating out of Pemberton (GJ 194B). Details to be expanded. diff --git a/wiki/corporations/plainfield-agricultural.md b/wiki/corporations/plainfield-agricultural.md new file mode 100644 index 000000000..571a25d13 --- /dev/null +++ b/wiki/corporations/plainfield-agricultural.md @@ -0,0 +1,24 @@ +--- +title: "Plainfield Agricultural" +description: "Plainfield Agricultural — consumer goods manufacturer based in Fremantle, north reach" +slug: plainfield-agricultural +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Fremantle (GJ 273) +tags: [commodity_branded, north_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Plainfield Agricultural + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Fremantle (GJ 273) + +Plainfield Agricultural is a consumer goods manufacturer operating out of Fremantle (GJ 273). Details to be expanded. diff --git a/wiki/corporations/porto-alegre-technical.md b/wiki/corporations/porto-alegre-technical.md new file mode 100644 index 000000000..7c738b1b4 --- /dev/null +++ b/wiki/corporations/porto-alegre-technical.md @@ -0,0 +1,24 @@ +--- +title: "Porto Alegre Technical" +description: "Porto Alegre Technical — precision technology manufacturer based in Nowa Huta, south reach" +slug: porto-alegre-technical +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Nowa Huta (GJ 896A) +tags: [tech_premium, south_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Porto Alegre Technical + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Nowa Huta (GJ 896A) + +Porto Alegre Technical is a precision technology manufacturer operating out of Nowa Huta (GJ 896A). Details to be expanded. diff --git a/wiki/corporations/quebrada-cultural.md b/wiki/corporations/quebrada-cultural.md new file mode 100644 index 000000000..d0ac14914 --- /dev/null +++ b/wiki/corporations/quebrada-cultural.md @@ -0,0 +1,24 @@ +--- +title: "Quebrada Cultural" +description: "Quebrada Cultural — cultural content producer based in Matamba, south reach" +slug: quebrada-cultural +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Matamba (GJ 884) +tags: [cultural, south_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Quebrada Cultural + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Matamba (GJ 884) + +Quebrada Cultural is a cultural content producer operating out of Matamba (GJ 884). Details to be expanded. diff --git a/wiki/corporations/reach-archive-standard.md b/wiki/corporations/reach-archive-standard.md new file mode 100644 index 000000000..f7a0047cd --- /dev/null +++ b/wiki/corporations/reach-archive-standard.md @@ -0,0 +1,24 @@ +--- +title: "Reach Archive Standard" +description: "Reach Archive Standard — media platform and catalogue service based in Sirius, core" +slug: reach-archive-standard +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Sirius (GJ 244A) +tags: [platform_catalogue, core, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Reach Archive Standard + +**Type:** Corporation — Media Platform And Catalogue Service +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Sirius (GJ 244A) + +Reach Archive Standard is a media platform and catalogue service operating out of Sirius (GJ 244A). Details to be expanded. diff --git a/wiki/corporations/reach-standard-media.md b/wiki/corporations/reach-standard-media.md new file mode 100644 index 000000000..bc35ad437 --- /dev/null +++ b/wiki/corporations/reach-standard-media.md @@ -0,0 +1,24 @@ +--- +title: "Reach Standard Media" +description: "Reach Standard Media — cultural content producer based in Sirius, core" +slug: reach-standard-media +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Sirius (GJ 244A) +tags: [cultural, core, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Reach Standard Media + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Sirius (GJ 244A) + +Reach Standard Media is a cultural content producer operating out of Sirius (GJ 244A). Details to be expanded. diff --git a/wiki/corporations/reach-transport.md b/wiki/corporations/reach-transport.md new file mode 100644 index 000000000..54c7fefe2 --- /dev/null +++ b/wiki/corporations/reach-transport.md @@ -0,0 +1,24 @@ +--- +title: "Reach Transport" +description: "Reach Transport — consumer goods manufacturer based in Sirius, core" +slug: reach-transport +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Sirius (GJ 244A) +tags: [commodity_branded, core, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Reach Transport + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Sirius (GJ 244A) + +Reach Transport is a consumer goods manufacturer operating out of Sirius (GJ 244A). Details to be expanded. diff --git a/wiki/corporations/resonance-premium.md b/wiki/corporations/resonance-premium.md new file mode 100644 index 000000000..d20b87e4d --- /dev/null +++ b/wiki/corporations/resonance-premium.md @@ -0,0 +1,24 @@ +--- +title: "Resonance Premium" +description: "Resonance Premium — media platform and catalogue service based in Sirius, core" +slug: resonance-premium +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Sirius (GJ 244A) +tags: [platform_catalogue, core, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Resonance Premium + +**Type:** Corporation — Media Platform And Catalogue Service +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Sirius (GJ 244A) + +Resonance Premium is a media platform and catalogue service operating out of Sirius (GJ 244A). Details to be expanded. diff --git a/wiki/corporations/rheingold-distillers.md b/wiki/corporations/rheingold-distillers.md new file mode 100644 index 000000000..789c012bf --- /dev/null +++ b/wiki/corporations/rheingold-distillers.md @@ -0,0 +1,24 @@ +--- +title: "Rheingold Distillers" +description: "Rheingold Distillers — regional specialty producer based in Rødvik, west reach" +slug: rheingold-distillers +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Rødvik (GJ 581) +tags: [terroir, west_reach, mark, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Rheingold Distillers + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Rødvik (GJ 581) + +Rheingold Distillers is a regional specialty producer operating out of Rødvik (GJ 581). Details to be expanded. diff --git a/wiki/corporations/rheintal-systems.md b/wiki/corporations/rheintal-systems.md new file mode 100644 index 000000000..e9bf41e14 --- /dev/null +++ b/wiki/corporations/rheintal-systems.md @@ -0,0 +1,24 @@ +--- +title: "Rheintal Systems" +description: "Rheintal Systems — precision technology manufacturer based in Neustadt, west reach" +slug: rheintal-systems +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Neustadt (GJ 526) +tags: [tech_premium, west_reach, mark, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Rheintal Systems + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Neustadt (GJ 526) + +Rheintal Systems is a precision technology manufacturer operating out of Neustadt (GJ 526). Details to be expanded. diff --git a/wiki/corporations/rijdbaar.md b/wiki/corporations/rijdbaar.md new file mode 100644 index 000000000..ec4f7f960 --- /dev/null +++ b/wiki/corporations/rijdbaar.md @@ -0,0 +1,24 @@ +--- +title: "Rijdbaar" +description: "Rijdbaar — design and furniture manufacturer based in Confluent, west reach" +slug: rijdbaar +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Confluent (GJ 395) +tags: [design_heritage, west_reach, mark, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Rijdbaar + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Confluent (GJ 395) + +Rijdbaar is a design and furniture manufacturer operating out of Confluent (GJ 395). Details to be expanded. diff --git a/wiki/corporations/saigon-consulting.md b/wiki/corporations/saigon-consulting.md new file mode 100644 index 000000000..289367b2a --- /dev/null +++ b/wiki/corporations/saigon-consulting.md @@ -0,0 +1,24 @@ +--- +title: "Saigon Consulting" +description: "Saigon Consulting — premium service provider based in Binh Trang, east reach" +slug: saigon-consulting +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Binh Trang (GJ 17) +tags: [service_premium, east_reach, tractus] +decision_refs: [D-189] +cross_refs: [] +--- + +# Saigon Consulting + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Binh Trang (GJ 17) + +Saigon Consulting is a premium service provider operating out of Binh Trang (GJ 17). Details to be expanded. diff --git a/wiki/corporations/schwarzwald-gin.md b/wiki/corporations/schwarzwald-gin.md new file mode 100644 index 000000000..acea74898 --- /dev/null +++ b/wiki/corporations/schwarzwald-gin.md @@ -0,0 +1,24 @@ +--- +title: "Schwarzwald Gin" +description: "Schwarzwald Gin — regional specialty producer based in Dunkelholz, west reach" +slug: schwarzwald-gin +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Dunkelholz (GJ 615) +tags: [terroir, west_reach, mark, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Schwarzwald Gin + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Dunkelholz (GJ 615) + +Schwarzwald Gin is a regional specialty producer operating out of Dunkelholz (GJ 615). Details to be expanded. diff --git a/wiki/corporations/sendai-forge.md b/wiki/corporations/sendai-forge.md new file mode 100644 index 000000000..fcea1ff61 --- /dev/null +++ b/wiki/corporations/sendai-forge.md @@ -0,0 +1,24 @@ +--- +title: "Sendai Forge" +description: "Sendai Forge — heritage craft manufacturer based in Kurashiki, east reach" +slug: sendai-forge +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Kurashiki (GJ 205) +tags: [heritage_craft, east_reach, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Sendai Forge + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Kurashiki (GJ 205) + +Sendai Forge is a heritage craft manufacturer operating out of Kurashiki (GJ 205). Details to be expanded. diff --git a/wiki/corporations/sertanejo-design.md b/wiki/corporations/sertanejo-design.md new file mode 100644 index 000000000..86e4a6f3b --- /dev/null +++ b/wiki/corporations/sertanejo-design.md @@ -0,0 +1,24 @@ +--- +title: "Sertanejo Design" +description: "Sertanejo Design — design and furniture manufacturer based in Roça Nova, south reach" +slug: sertanejo-design +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Roça Nova (GJ 67) +tags: [design_heritage, south_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Sertanejo Design + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Roça Nova (GJ 67) + +Sertanejo Design is a design and furniture manufacturer operating out of Roça Nova (GJ 67). Details to be expanded. diff --git a/wiki/corporations/shetland-wool.md b/wiki/corporations/shetland-wool.md new file mode 100644 index 000000000..5221466d6 --- /dev/null +++ b/wiki/corporations/shetland-wool.md @@ -0,0 +1,24 @@ +--- +title: "Shetland Wool" +description: "Shetland Wool — heritage craft manufacturer based in Crown's Hollow, north reach" +slug: shetland-wool +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Crown's Hollow (GJ 661A) +tags: [heritage_craft, north_reach, tractus, artisan] +decision_refs: [D-189] +cross_refs: [] +--- + +# Shetland Wool + +**Type:** Corporation — Heritage Craft Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Crown's Hollow (GJ 661A) + +Shetland Wool is a heritage craft manufacturer operating out of Crown's Hollow (GJ 661A). Details to be expanded. diff --git a/wiki/corporations/spitsbergen-retreat.md b/wiki/corporations/spitsbergen-retreat.md new file mode 100644 index 000000000..fa8baa091 --- /dev/null +++ b/wiki/corporations/spitsbergen-retreat.md @@ -0,0 +1,24 @@ +--- +title: "Spitsbergen Retreat" +description: "Spitsbergen Retreat — premium service provider based in Halvøy, west reach" +slug: spitsbergen-retreat +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Halvøy (GJ 624) +tags: [service_premium, west_reach, mark] +decision_refs: [D-189] +cross_refs: [] +--- + +# Spitsbergen Retreat + +**Type:** Corporation — Premium Service Provider +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Halvøy (GJ 624) + +Spitsbergen Retreat is a premium service provider operating out of Halvøy (GJ 624). Details to be expanded. diff --git a/wiki/corporations/steinbach-furniture.md b/wiki/corporations/steinbach-furniture.md new file mode 100644 index 000000000..9ecac307b --- /dev/null +++ b/wiki/corporations/steinbach-furniture.md @@ -0,0 +1,24 @@ +--- +title: "Steinbach Furniture" +description: "Steinbach Furniture — design and furniture manufacturer based in Steinfeld, west reach" +slug: steinbach-furniture +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Steinfeld (GJ 454) +tags: [design_heritage, west_reach, mark, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Steinbach Furniture + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Steinfeld (GJ 454) + +Steinbach Furniture is a design and furniture manufacturer operating out of Steinfeld (GJ 454). Details to be expanded. diff --git a/wiki/corporations/sunderland-precision.md b/wiki/corporations/sunderland-precision.md new file mode 100644 index 000000000..812c970f4 --- /dev/null +++ b/wiki/corporations/sunderland-precision.md @@ -0,0 +1,24 @@ +--- +title: "Sunderland Precision" +description: "Sunderland Precision — precision technology manufacturer based in Ashworth Junction, north reach" +slug: sunderland-precision +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Ashworth Junction (GJ 873) +tags: [tech_premium, north_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Sunderland Precision + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Ashworth Junction (GJ 873) + +Sunderland Precision is a precision technology manufacturer operating out of Ashworth Junction (GJ 873). Details to be expanded. diff --git a/wiki/corporations/sungshin-music.md b/wiki/corporations/sungshin-music.md new file mode 100644 index 000000000..a62521cd0 --- /dev/null +++ b/wiki/corporations/sungshin-music.md @@ -0,0 +1,24 @@ +--- +title: "Sungshin Music" +description: "Sungshin Music — cultural content producer based in Shimanami, east reach" +slug: sungshin-music +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Shimanami (GJ 848) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Sungshin Music + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Shimanami (GJ 848) + +Sungshin Music is a cultural content producer operating out of Shimanami (GJ 848). Details to be expanded. diff --git a/wiki/corporations/svanevann-waters.md b/wiki/corporations/svanevann-waters.md new file mode 100644 index 000000000..5c19f7b40 --- /dev/null +++ b/wiki/corporations/svanevann-waters.md @@ -0,0 +1,24 @@ +--- +title: "Svanevann Waters" +description: "Svanevann Waters — regional specialty producer based in Nyrheim, west reach" +slug: svanevann-waters +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Nyrheim (GJ 3737) +tags: [terroir, west_reach, mark, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Svanevann Waters + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Nyrheim (GJ 3737) + +Svanevann Waters is a regional specialty producer operating out of Nyrheim (GJ 3737). Details to be expanded. diff --git a/wiki/corporations/thalassa-resort-group.md b/wiki/corporations/thalassa-resort-group.md index 7867cde4c..30e7fbd40 100644 --- a/wiki/corporations/thalassa-resort-group.md +++ b/wiki/corporations/thalassa-resort-group.md @@ -11,7 +11,7 @@ faction_type: economic headquarters: Gateway (GJ 244A) tags: [hospitality, fine_dining, entertainment, tractus, assembly, gateway] decision_refs: [D-175] -cross_refs: [] +cross_refs: [the-registry, prometheus-labs] --- # Thalassa Resort Group diff --git a/wiki/corporations/thorngate-media.md b/wiki/corporations/thorngate-media.md new file mode 100644 index 000000000..93f8a05fb --- /dev/null +++ b/wiki/corporations/thorngate-media.md @@ -0,0 +1,24 @@ +--- +title: "Thorngate Media" +description: "Thorngate Media — cultural content producer based in Crown's Hollow, north reach" +slug: thorngate-media +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Crown's Hollow (GJ 661A) +tags: [cultural, north_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Thorngate Media + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Crown's Hollow (GJ 661A) + +Thorngate Media is a cultural content producer operating out of Crown's Hollow (GJ 661A). Details to be expanded. diff --git a/wiki/corporations/thrds.md b/wiki/corporations/thrds.md index 6262affc8..812260cbe 100644 --- a/wiki/corporations/thrds.md +++ b/wiki/corporations/thrds.md @@ -11,7 +11,7 @@ faction_type: economic headquarters: Braemar (GJ 475) tags: [] decision_refs: [] -cross_refs: [] +cross_refs: [calloway-distillery, mercado-travessia] --- # thrds diff --git a/wiki/corporations/tongyeong-drive.md b/wiki/corporations/tongyeong-drive.md new file mode 100644 index 000000000..a901e0345 --- /dev/null +++ b/wiki/corporations/tongyeong-drive.md @@ -0,0 +1,24 @@ +--- +title: "Tongyeong Drive" +description: "Tongyeong Drive — precision technology manufacturer based in Miryang, east reach" +slug: tongyeong-drive +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Miryang (GJ 754) +tags: [tech_premium, east_reach, tractus, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Tongyeong Drive + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Miryang (GJ 754) + +Tongyeong Drive is a precision technology manufacturer operating out of Miryang (GJ 754). Details to be expanded. diff --git a/wiki/corporations/transit-library.md b/wiki/corporations/transit-library.md new file mode 100644 index 000000000..33bb1f985 --- /dev/null +++ b/wiki/corporations/transit-library.md @@ -0,0 +1,24 @@ +--- +title: "Transit Library" +description: "Transit Library — media platform and catalogue service based in Groombridge, core" +slug: transit-library +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [platform_catalogue, core, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Transit Library + +**Type:** Corporation — Media Platform And Catalogue Service +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Transit Library is a media platform and catalogue service operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/trek-standard.md b/wiki/corporations/trek-standard.md new file mode 100644 index 000000000..86c63f30b --- /dev/null +++ b/wiki/corporations/trek-standard.md @@ -0,0 +1,24 @@ +--- +title: "Trek Standard" +description: "Trek Standard — consumer goods manufacturer based in Groombridge, core" +slug: trek-standard +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Groombridge (GJ 380) +tags: [commodity_branded, core, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Trek Standard + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — core operations +**Headquarters:** Groombridge (GJ 380) + +Trek Standard is a consumer goods manufacturer operating out of Groombridge (GJ 380). Details to be expanded. diff --git a/wiki/corporations/veldfontein-botanical.md b/wiki/corporations/veldfontein-botanical.md new file mode 100644 index 000000000..a746ec909 --- /dev/null +++ b/wiki/corporations/veldfontein-botanical.md @@ -0,0 +1,24 @@ +--- +title: "Veldfontein Botanical" +description: "Veldfontein Botanical — regional specialty producer based in Inhambane, south reach" +slug: veldfontein-botanical +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Inhambane (GJ 54) +tags: [terroir, south_reach, tractus, scarcity_class_rare] +decision_refs: [D-189] +cross_refs: [] +--- + +# Veldfontein Botanical + +**Type:** Corporation — Regional Specialty Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Inhambane (GJ 54) + +Veldfontein Botanical is a regional specialty producer operating out of Inhambane (GJ 54). Details to be expanded. diff --git a/wiki/corporations/vins-de-grand-vide.md b/wiki/corporations/vins-de-grand-vide.md index 67087dc74..bc5a87999 100644 --- a/wiki/corporations/vins-de-grand-vide.md +++ b/wiki/corporations/vins-de-grand-vide.md @@ -11,7 +11,7 @@ faction_type: economic headquarters: Confluent (GJ 395) tags: [] decision_refs: [] -cross_refs: [] +cross_refs: [nordmark-skog] --- # Vins de Grand Vide diff --git a/wiki/corporations/vlaams-atelier.md b/wiki/corporations/vlaams-atelier.md new file mode 100644 index 000000000..04835a51a --- /dev/null +++ b/wiki/corporations/vlaams-atelier.md @@ -0,0 +1,24 @@ +--- +title: "Vlaams Atelier" +description: "Vlaams Atelier — design and furniture manufacturer based in Bestevaer, west reach" +slug: vlaams-atelier +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Bestevaer (GJ 103) +tags: [design_heritage, west_reach, mark, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Vlaams Atelier + +**Type:** Corporation — Design And Furniture Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Bestevaer (GJ 103) + +Vlaams Atelier is a design and furniture manufacturer operating out of Bestevaer (GJ 103). Details to be expanded. diff --git a/wiki/corporations/vlaanderen-optica.md b/wiki/corporations/vlaanderen-optica.md new file mode 100644 index 000000000..e8dc337d9 --- /dev/null +++ b/wiki/corporations/vlaanderen-optica.md @@ -0,0 +1,24 @@ +--- +title: "Vlaanderen Optica" +description: "Vlaanderen Optica — precision technology manufacturer based in Dokkum, west reach" +slug: vlaanderen-optica +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Dokkum (GJ 506) +tags: [tech_premium, west_reach, mark, electronics] +decision_refs: [D-189] +cross_refs: [] +--- + +# Vlaanderen Optica + +**Type:** Corporation — Precision Technology Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Dokkum (GJ 506) + +Vlaanderen Optica is a precision technology manufacturer operating out of Dokkum (GJ 506). Details to be expanded. diff --git a/wiki/corporations/vuma-sound.md b/wiki/corporations/vuma-sound.md new file mode 100644 index 000000000..276a8af8d --- /dev/null +++ b/wiki/corporations/vuma-sound.md @@ -0,0 +1,24 @@ +--- +title: "Vuma Sound" +description: "Vuma Sound — cultural content producer based in Matamba, south reach" +slug: vuma-sound +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Matamba (GJ 884) +tags: [cultural, south_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Vuma Sound + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Matamba (GJ 884) + +Vuma Sound is a cultural content producer operating out of Matamba (GJ 884). Details to be expanded. diff --git a/wiki/corporations/westfield-common.md b/wiki/corporations/westfield-common.md new file mode 100644 index 000000000..704f1899e --- /dev/null +++ b/wiki/corporations/westfield-common.md @@ -0,0 +1,24 @@ +--- +title: "Westfield Common" +description: "Westfield Common — consumer goods manufacturer based in Neustadt, west reach" +slug: westfield-common +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Neustadt (GJ 526) +tags: [commodity_branded, west_reach, mark, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Westfield Common + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Neustadt (GJ 526) + +Westfield Common is a consumer goods manufacturer operating out of Neustadt (GJ 526). Details to be expanded. diff --git a/wiki/corporations/wolkenbruch-cinema.md b/wiki/corporations/wolkenbruch-cinema.md new file mode 100644 index 000000000..280d8cbea --- /dev/null +++ b/wiki/corporations/wolkenbruch-cinema.md @@ -0,0 +1,24 @@ +--- +title: "Wolkenbruch Cinema" +description: "Wolkenbruch Cinema — cultural content producer based in Neustadt, west reach" +slug: wolkenbruch-cinema +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Neustadt (GJ 526) +tags: [cultural, west_reach, mark, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Wolkenbruch Cinema + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — west reach operations +**Headquarters:** Neustadt (GJ 526) + +Wolkenbruch Cinema is a cultural content producer operating out of Neustadt (GJ 526). Details to be expanded. diff --git a/wiki/corporations/workshift-apparel.md b/wiki/corporations/workshift-apparel.md new file mode 100644 index 000000000..341e065ec --- /dev/null +++ b/wiki/corporations/workshift-apparel.md @@ -0,0 +1,24 @@ +--- +title: "Workshift Apparel" +description: "Workshift Apparel — consumer goods manufacturer based in Ashfield, north reach" +slug: workshift-apparel +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Ashfield (GJ 178) +tags: [commodity_branded, north_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Workshift Apparel + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — north reach operations +**Headquarters:** Ashfield (GJ 178) + +Workshift Apparel is a consumer goods manufacturer operating out of Ashfield (GJ 178). Details to be expanded. diff --git a/wiki/corporations/xing-yun-films.md b/wiki/corporations/xing-yun-films.md new file mode 100644 index 000000000..057869a58 --- /dev/null +++ b/wiki/corporations/xing-yun-films.md @@ -0,0 +1,24 @@ +--- +title: "Xing Yun Films" +description: "Xing Yun Films — cultural content producer based in Songjiang, east reach" +slug: xing-yun-films +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Songjiang (GJ 625) +tags: [cultural, east_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Xing Yun Films + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — east reach operations +**Headquarters:** Songjiang (GJ 625) + +Xing Yun Films is a cultural content producer operating out of Songjiang (GJ 625). Details to be expanded. diff --git a/wiki/corporations/zindua-records.md b/wiki/corporations/zindua-records.md new file mode 100644 index 000000000..ae5f68ea1 --- /dev/null +++ b/wiki/corporations/zindua-records.md @@ -0,0 +1,24 @@ +--- +title: "Zindua Records" +description: "Zindua Records — cultural content producer based in Zenzele, south reach" +slug: zindua-records +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Zenzele (GJ 1111) +tags: [cultural, south_reach, tractus, entertainment] +decision_refs: [D-189] +cross_refs: [] +--- + +# Zindua Records + +**Type:** Corporation — Cultural Content Producer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Zenzele (GJ 1111) + +Zindua Records is a cultural content producer operating out of Zenzele (GJ 1111). Details to be expanded. diff --git a/wiki/corporations/zulu-consumer.md b/wiki/corporations/zulu-consumer.md new file mode 100644 index 000000000..9f83d9943 --- /dev/null +++ b/wiki/corporations/zulu-consumer.md @@ -0,0 +1,24 @@ +--- +title: "Zulu Consumer" +description: "Zulu Consumer — consumer goods manufacturer based in Zenzele, south reach" +slug: zulu-consumer +category: corporation +status: canonical +created: 2026-04-19 +updated: 2026-04-19 +scope: regional +faction_type: economic +headquarters: Zenzele (GJ 1111) +tags: [commodity_branded, south_reach, tractus, consumer_goods] +decision_refs: [D-189] +cross_refs: [] +--- + +# Zulu Consumer + +**Type:** Corporation — Consumer Goods Manufacturer +**Status:** Canonical +**Scope:** Regional — south reach operations +**Headquarters:** Zenzele (GJ 1111) + +Zulu Consumer is a consumer goods manufacturer operating out of Zenzele (GJ 1111). Details to be expanded. diff --git a/wiki/economics/corporations/brands.toml b/wiki/economics/corporations/brands.toml index ef357024e..9361581e8 100644 --- a/wiki/economics/corporations/brands.toml +++ b/wiki/economics/corporations/brands.toml @@ -7,12 +7,12 @@ # tâtonnement simulation (D-185: brands consume commodities, not the reverse). # Pricing model and cultural premium curves are Phase 3+ deliverables (D-189). # -# Phase 2 boundary: only the 4 anchor brands from D-189 §5 are authored here -# (Calloway, VGV, thrds, Bífröst Marmor). The additional ~23 brand corps -# listed in D-189 §11 are deliberately deferred to Phase 3 — Phase 2 only -# needs the demand-node plumbing + V-B01..V-B06 validation to be exercised -# end-to-end. Add new brands to this file; the importer and validators pick -# them up without schema changes. +# Sprint 36 #828: expanded from 4 anchor brands to full D-189 census — +# 124 brand corps across all 8 categories (terroir, heritage_craft, +# tech_premium, cultural, service_premium, commodity_branded, +# design_heritage, platform_catalogue). V-B01..V-B06 validation passes. +# Add new brands to this file; the importer and validators pick them up +# without schema changes. # # Fields per [[brand_products]] entry: # brand_product_id Unique slug (corp_id + product slug) @@ -63,6 +63,7 @@ terroir_locked = true currency_denomination = "tractus" shadow_viable = true brand_tier = "halo" +price_tier = "flagship" [[brand_inputs]] brand_product_id = "calloway-single-malt-halo" @@ -90,6 +91,7 @@ currency_denomination = "tractus" shadow_viable = true brand_tier = "volume" halo_brand_id = "calloway-single-malt-halo" +price_tier = "premium" [[brand_inputs]] brand_product_id = "calloway-reserve-volume" @@ -123,6 +125,7 @@ terroir_locked = true currency_denomination = "tractus" shadow_viable = true brand_tier = "halo" +price_tier = "luxury" [[brand_inputs]] brand_product_id = "vgv-premier-cru-halo" @@ -150,6 +153,7 @@ currency_denomination = "tractus" shadow_viable = false brand_tier = "volume" halo_brand_id = "vgv-premier-cru-halo" +price_tier = "premium" [[brand_inputs]] brand_product_id = "vgv-standard-volume" @@ -183,6 +187,7 @@ terroir_locked = true currency_denomination = "tractus" shadow_viable = false brand_tier = "halo" +price_tier = "luxury" [[brand_inputs]] brand_product_id = "thrds-origin-halo" @@ -210,6 +215,7 @@ currency_denomination = "tractus" shadow_viable = false brand_tier = "volume" halo_brand_id = "thrds-origin-halo" +price_tier = "premium" [[brand_inputs]] brand_product_id = "thrds-standard-volume" @@ -244,6 +250,7 @@ terroir_locked = true currency_denomination = "mark" shadow_viable = true brand_tier = "halo" +price_tier = "flagship" [[brand_inputs]] brand_product_id = "bifrost-grade-a-halo" @@ -271,6 +278,7 @@ currency_denomination = "mixed" shadow_viable = true brand_tier = "volume" halo_brand_id = "bifrost-grade-a-halo" +price_tier = "luxury" [[brand_inputs]] brand_product_id = "bifrost-commercial-volume" @@ -281,3 +289,6502 @@ quantity = 1.50 # commercial-grade quarrying — volume demand node brand_product_id = "bifrost-commercial-volume" commodity_id = "chemicals" quantity = 0.30 + + +# ========================================================================== +# SATO MEDICAL SYSTEMS (east_reach — tech_premium, timeless) +# Medical goods manufacturer and diagnostic equipment supplier. GJ 848 (Shimanami). +# Inputs: medical_goods + electronics + chemicals. +# ========================================================================== + +[[brand_products]] +brand_product_id = "sato-diagnostic-suite-halo" +corp_id = "sato-medical" +product_name = "Sato Diagnostic Suite" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "diagnostic_equipment" +base_premium_multiplier = 8.5 +premium_floor = 0.60 +origin_system = "GJ 848" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "sato-diagnostic-suite-halo" +commodity_id = "medical_goods" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "sato-diagnostic-suite-halo" +commodity_id = "electronics" +quantity = 0.15 + +[[brand_inputs]] +brand_product_id = "sato-diagnostic-suite-halo" +commodity_id = "chemicals" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "sato-oshima-standard-volume" +corp_id = "sato-medical" +product_name = "Oshima Medical Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "diagnostic_equipment" +base_premium_multiplier = 2.8 +premium_floor = 0.20 +origin_system = "GJ 848" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "sato-diagnostic-suite-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "sato-oshima-standard-volume" +commodity_id = "medical_goods" +quantity = 1.10 + +[[brand_inputs]] +brand_product_id = "sato-oshima-standard-volume" +commodity_id = "chemicals" +quantity = 0.25 + + +# ========================================================================== +# TAKAMORI LATTICE WORKS (east_reach — tech_premium, timeless) +# Neural lattice substrate and drive core manufacturer. GJ 136 (Dài Lộ). +# Inputs: lattice_substrate + advanced_alloys + drive_cores. +# ========================================================================== + +[[brand_products]] +brand_product_id = "takamori-lattice-standard-halo" +corp_id = "takamori-lattice-works" +product_name = "Takamori Lattice Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "neural_lattice_substrate" +base_premium_multiplier = 9.0 +premium_floor = 0.70 +origin_system = "GJ 136" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "takamori-lattice-standard-halo" +commodity_id = "lattice_substrate" +quantity = 0.45 + +[[brand_inputs]] +brand_product_id = "takamori-lattice-standard-halo" +commodity_id = "electronics" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "takamori-lattice-standard-halo" +commodity_id = "advanced_alloys" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "takamori-tlw-drive-volume" +corp_id = "takamori-lattice-works" +product_name = "TLW Drive Core Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "drive_core_components" +base_premium_multiplier = 3.5 +premium_floor = 0.30 +origin_system = "GJ 136" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "takamori-lattice-standard-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "takamori-tlw-drive-volume" +commodity_id = "drive_cores" +quantity = 0.70 + +[[brand_inputs]] +brand_product_id = "takamori-tlw-drive-volume" +commodity_id = "advanced_alloys" +quantity = 0.30 + + +# ========================================================================== +# THALASSA RESORT GROUP (inner_core — service_premium, timeless) +# Luxury resort hospitality network. GJ 244A (Sirius / Gateway). +# Inputs: hospitality + consumer_goods. +# ========================================================================== + +[[brand_products]] +brand_product_id = "thalassa-grand-halo" +corp_id = "thalassa-resort-group" +product_name = "Thalassa Grand" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "luxury_resort" +base_premium_multiplier = 14.0 +premium_floor = 0.90 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "thalassa-grand-halo" +commodity_id = "hospitality" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "thalassa-grand-halo" +commodity_id = "consumer_goods" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "thalassa-transit-volume" +corp_id = "thalassa-resort-group" +product_name = "Thalassa Transit" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "transit_hospitality" +base_premium_multiplier = 3.8 +premium_floor = 0.25 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "thalassa-grand-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "thalassa-transit-volume" +commodity_id = "hospitality" +quantity = 1.50 + +[[brand_inputs]] +brand_product_id = "thalassa-transit-volume" +commodity_id = "consumer_goods" +quantity = 0.40 + + +# ========================================================================== +# SOMATIC FUTURES (inner_core — service_premium, timeless) +# Medical re-embodiment programs and continuity services. GJ 144 (Ran). +# Inputs: medical_goods + medical_services + implant_hardware. +# ========================================================================== + +[[brand_products]] +brand_product_id = "somatic-renewal-halo" +corp_id = "somatic-futures" +product_name = "Futures Renewal Program" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "re_embodiment_program" +base_premium_multiplier = 24.0 +premium_floor = 1.40 +origin_system = "GJ 144" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "somatic-renewal-halo" +commodity_id = "medical_goods" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "somatic-renewal-halo" +commodity_id = "medical_services" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "somatic-renewal-halo" +commodity_id = "implant_hardware" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "somatic-clean-slate-volume" +corp_id = "somatic-futures" +product_name = "Clean Slate Protocol" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "continuity_assessment" +base_premium_multiplier = 6.5 +premium_floor = 0.45 +origin_system = "GJ 144" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "somatic-renewal-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "somatic-clean-slate-volume" +commodity_id = "medical_goods" +quantity = 1.00 + +[[brand_inputs]] +brand_product_id = "somatic-clean-slate-volume" +commodity_id = "medical_services" +quantity = 0.60 + + +# ========================================================================== +# HANYANG PRECISION SYSTEMS (east_reach — tech_premium, timeless) +# Gate calibration instruments and precision measurement equipment. GJ 860B (Changwon). +# Inputs: electronics + advanced_alloys. +# ========================================================================== + +[[brand_products]] +brand_product_id = "hanyang-navigator-halo" +corp_id = "hanyang-precision" +product_name = "Hanyang Navigator Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "gate_calibration_instruments" +base_premium_multiplier = 11.0 +premium_floor = 0.75 +origin_system = "GJ 860B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "hanyang-navigator-halo" +commodity_id = "electronics" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "hanyang-navigator-halo" +commodity_id = "advanced_alloys" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "hanyang-changwon-std-volume" +corp_id = "hanyang-precision" +product_name = "Changwon Calibration Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "calibration_standards" +base_premium_multiplier = 3.2 +premium_floor = 0.22 +origin_system = "GJ 860B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "hanyang-navigator-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "hanyang-changwon-std-volume" +commodity_id = "electronics" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "hanyang-changwon-std-volume" +commodity_id = "advanced_alloys" +quantity = 0.45 + + +# ========================================================================== +# THE REGISTRY (inner_core — service_premium, timeless) +# Intelligence and commercial information services. GJ 380 (Groombridge / Lendel). +# Inputs: electronics + legal_services. +# ========================================================================== + +[[brand_products]] +brand_product_id = "registry-deep-trace-halo" +corp_id = "the-registry" +product_name = "Registry Deep Trace" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "intelligence_service" +base_premium_multiplier = 16.0 +premium_floor = 1.00 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "registry-deep-trace-halo" +commodity_id = "electronics" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "registry-deep-trace-halo" +commodity_id = "legal_services" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "registry-standard-report-volume" +corp_id = "the-registry" +product_name = "Registry Standard Report" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "commercial_intelligence" +base_premium_multiplier = 4.0 +premium_floor = 0.28 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "registry-deep-trace-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "registry-standard-report-volume" +commodity_id = "electronics" +quantity = 0.60 + +[[brand_inputs]] +brand_product_id = "registry-standard-report-volume" +commodity_id = "legal_services" +quantity = 1.00 + + +# ========================================================================== +# MERIDIAN RISK PARTNERS (inner_core — service_premium, timeless) +# Risk underwriting and cargo insurance. GJ 380 (Groombridge / Lendel). +# Inputs: insurance + legal_services. +# ========================================================================== + +[[brand_products]] +brand_product_id = "meridian-risk-pool-halo" +corp_id = "meridian-risk" +product_name = "Meridian Risk Pool" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "risk_underwriting" +base_premium_multiplier = 10.0 +premium_floor = 0.65 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "meridian-risk-pool-halo" +commodity_id = "insurance" +quantity = 0.45 + +[[brand_inputs]] +brand_product_id = "meridian-risk-pool-halo" +commodity_id = "legal_services" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "meridian-reach-std-volume" +corp_id = "meridian-risk" +product_name = "Reach Standard Cover" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "cargo_insurance" +base_premium_multiplier = 1.8 +premium_floor = 0.10 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "meridian-risk-pool-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "meridian-reach-std-volume" +commodity_id = "insurance" +quantity = 2.00 + +[[brand_inputs]] +brand_product_id = "meridian-reach-std-volume" +commodity_id = "legal_services" +quantity = 0.30 + + +# ========================================================================== +# DESTILARIA CONFLUÊNCIA / LENTO (south_reach — terroir, appreciating) +# Portuguese rum and aguardente, GJ 566B (Confluência). Slow-aged reserve category. +# Inputs: agricultural_produce (sugar cane) + water. +# ========================================================================== + +[[brand_products]] +brand_product_id = "lento-reserve-halo" +corp_id = "destilaria-confluencia" +product_name = "Lento Reserve" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "aged_spirits" +base_premium_multiplier = 15.0 +premium_floor = 0.80 +origin_system = "GJ 566B" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "lento-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.14 + +[[brand_inputs]] +brand_product_id = "lento-reserve-halo" +commodity_id = "water" +quantity = 0.06 + +[[brand_products]] +brand_product_id = "confluencia-blend-volume" +corp_id = "destilaria-confluencia" +product_name = "Confluência Blend" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "aged_spirits" +base_premium_multiplier = 4.2 +premium_floor = 0.28 +origin_system = "GJ 566B" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "volume" +halo_brand_id = "lento-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "confluencia-blend-volume" +commodity_id = "agricultural_produce" +quantity = 0.60 + +[[brand_inputs]] +brand_product_id = "confluencia-blend-volume" +commodity_id = "water" +quantity = 0.25 + + +# ========================================================================== +# VELDFONTEIN BOTANICAL (south_reach — terroir/heritage_craft, timeless) +# Botanical preparations and herbal distillates, GJ 54 (Inhambane). +# Inputs: organic_compounds (endemic plants) + agricultural_produce. +# ========================================================================== + +[[brand_products]] +brand_product_id = "veldfontein-reserve-halo" +corp_id = "veldfontein-botanical" +product_name = "Veldfontein Reserve Collection" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "botanical_distillate" +base_premium_multiplier = 11.0 +premium_floor = 0.65 +origin_system = "GJ 54" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "veldfontein-reserve-halo" +commodity_id = "organic_compounds" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "veldfontein-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "veldfontein-standard-volume" +corp_id = "veldfontein-botanical" +product_name = "Veldfontein Standard Botanical" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "botanical_distillate" +base_premium_multiplier = 3.0 +premium_floor = 0.20 +origin_system = "GJ 54" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "veldfontein-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "veldfontein-standard-volume" +commodity_id = "organic_compounds" +quantity = 0.90 + +[[brand_inputs]] +brand_product_id = "veldfontein-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.30 + + +# ========================================================================== +# COMPTOIR LENDEL (inner_core — terroir/service_premium, timeless) +# Fine provisions trading house and distribution network. GJ 380 (Groombridge). +# Inputs: agricultural_produce + hospitality + transport_vehicles. +# ========================================================================== + +[[brand_products]] +brand_product_id = "lendel-select-halo" +corp_id = "comptoir-lendel" +product_name = "Lendel Select" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "fine_provisions" +base_premium_multiplier = 13.0 +premium_floor = 0.75 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "lendel-select-halo" +commodity_id = "agricultural_produce" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "lendel-select-halo" +commodity_id = "chemicals" +quantity = 0.05 + +[[brand_products]] +brand_product_id = "lendel-distribution-volume" +corp_id = "comptoir-lendel" +product_name = "Comptoir Distribution Service" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "provisions_distribution" +base_premium_multiplier = 2.5 +premium_floor = 0.15 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "lendel-select-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "lendel-distribution-volume" +commodity_id = "hospitality" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "lendel-distribution-volume" +commodity_id = "transport_vehicles" +quantity = 0.10 + + +# ========================================================================== +# MAISON CINQ (inner_core / Gateway — design_heritage, appreciating) +# Luxury fashion house and atelier. GJ 244A (Sirius). +# Inputs: textiles (fine-grade) + organic_compounds (dyes, finishes). +# ========================================================================== + +[[brand_products]] +brand_product_id = "maison-cinq-signature-halo" +corp_id = "maison-cinq" +product_name = "Cinq Signature Collection" +brand_category = "design_heritage" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "luxury_fashion" +base_premium_multiplier = 28.0 +premium_floor = 1.60 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = true +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "maison-cinq-signature-halo" +commodity_id = "textiles" +quantity = 0.15 + +[[brand_inputs]] +brand_product_id = "maison-cinq-signature-halo" +commodity_id = "organic_compounds" +quantity = 0.08 + +[[brand_products]] +brand_product_id = "maison-cinq-atelier-volume" +corp_id = "maison-cinq" +product_name = "Cinq Atelier Line" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "premium_fashion" +base_premium_multiplier = 7.0 +premium_floor = 0.50 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = true +brand_tier = "volume" +halo_brand_id = "maison-cinq-signature-halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "maison-cinq-atelier-volume" +commodity_id = "textiles" +quantity = 0.55 + +[[brand_inputs]] +brand_product_id = "maison-cinq-atelier-volume" +commodity_id = "organic_compounds" +quantity = 0.15 + + +# ========================================================================== +# MVG / MANIFATTURA VEICOLI GHERARDI (west_reach Italian — design_heritage, appreciating) +# Hand-built Italian-heritage luxury vehicles. GJ 453 (Freiholt). +# Inputs: transport_vehicles (chassis) + advanced_alloys + electronics. +# ========================================================================== + +[[brand_products]] +brand_product_id = "mvg-gherardi-edition-halo" +corp_id = "mastroianni-vehicle-group" +product_name = "Gherardi Edition" +brand_category = "design_heritage" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "luxury_vehicle" +base_premium_multiplier = 32.0 +premium_floor = 1.80 +origin_system = "GJ 453" +terroir_locked = true +currency_denomination = "mark" +shadow_viable = true +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "mvg-gherardi-edition-halo" +commodity_id = "transport_vehicles" +quantity = 0.05 + +[[brand_inputs]] +brand_product_id = "mvg-gherardi-edition-halo" +commodity_id = "advanced_alloys" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "mvg-gherardi-edition-halo" +commodity_id = "electronics" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "mvg-standard-touring-volume" +corp_id = "mastroianni-vehicle-group" +product_name = "MVG Standard Touring" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "premium_vehicle" +base_premium_multiplier = 5.5 +premium_floor = 0.38 +origin_system = "GJ 453" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "mvg-gherardi-edition-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "mvg-standard-touring-volume" +commodity_id = "transport_vehicles" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "mvg-standard-touring-volume" +commodity_id = "advanced_alloys" +quantity = 0.60 + + +# ========================================================================== +# HIGASHIYAMA VEHICLE ENGINEERING (east_reach — tech_premium/design_heritage, appreciating) +# Precision vehicles with Japanese heritage. GJ 205 (Kurashiki). +# Inputs: transport_vehicles + advanced_alloys + electronics. +# ========================================================================== + +[[brand_products]] +brand_product_id = "higashiyama-series-zero-halo" +corp_id = "higashiyama-vehicle" +product_name = "Higashiyama Series Zero" +brand_category = "tech_premium" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "precision_vehicle" +base_premium_multiplier = 20.0 +premium_floor = 1.20 +origin_system = "GJ 205" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "higashiyama-series-zero-halo" +commodity_id = "transport_vehicles" +quantity = 0.04 + +[[brand_inputs]] +brand_product_id = "higashiyama-series-zero-halo" +commodity_id = "advanced_alloys" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "higashiyama-series-zero-halo" +commodity_id = "electronics" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "higashiyama-standard-volume" +corp_id = "higashiyama-vehicle" +product_name = "Higashiyama Standard" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "premium_vehicle" +base_premium_multiplier = 4.8 +premium_floor = 0.32 +origin_system = "GJ 205" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "higashiyama-series-zero-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "higashiyama-standard-volume" +commodity_id = "transport_vehicles" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "higashiyama-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.70 + +[[brand_inputs]] +brand_product_id = "higashiyama-standard-volume" +commodity_id = "electronics" +quantity = 0.25 + + +# ========================================================================== +# RIJDBAAR PERSONAL MOBILITY (west_reach / Compact — design_heritage, timeless) +# Dutch-heritage personal vehicles and cycles. GJ 395 (Confluent). +# Inputs: transport_vehicles + advanced_alloys. +# ========================================================================== + +[[brand_products]] +brand_product_id = "rijdbaar-signature-halo" +corp_id = "rijdbaar" +product_name = "Rijdbaar Signature" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "personal_mobility" +base_premium_multiplier = 9.5 +premium_floor = 0.55 +origin_system = "GJ 395" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "rijdbaar-signature-halo" +commodity_id = "transport_vehicles" +quantity = 0.06 + +[[brand_inputs]] +brand_product_id = "rijdbaar-signature-halo" +commodity_id = "advanced_alloys" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "rijdbaar-everyday-volume" +corp_id = "rijdbaar" +product_name = "Rijdbaar Everyday" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "personal_mobility" +base_premium_multiplier = 2.4 +premium_floor = 0.15 +origin_system = "GJ 395" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "rijdbaar-signature-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "rijdbaar-everyday-volume" +commodity_id = "transport_vehicles" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "rijdbaar-everyday-volume" +commodity_id = "advanced_alloys" +quantity = 0.45 + + +# ========================================================================== +# BYEOLBIT ENTERTAINMENT (east_reach — cultural/platform_catalogue, appreciating) +# K-pop and drama group, streaming platform. GJ 660A (Seongho). +# Inputs: entertainment. +# ========================================================================== + +[[brand_products]] +brand_product_id = "byeolbit-premium-archive-halo" +corp_id = "byeolbit-entertainment" +product_name = "Byeolbit Premium Archive" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "pop_music_and_drama" +base_premium_multiplier = 10.0 +premium_floor = 0.55 +origin_system = "GJ 660A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "byeolbit-premium-archive-halo" +commodity_id = "entertainment" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "byeolbit-standard-stream-volume" +corp_id = "byeolbit-entertainment" +product_name = "Byeolbit Standard Stream" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "streaming_catalogue" +base_premium_multiplier = 1.4 +premium_floor = 0.08 +origin_system = "GJ 660A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "byeolbit-premium-archive-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "byeolbit-standard-stream-volume" +commodity_id = "entertainment" +quantity = 2.50 + + +# ========================================================================== +# LEERFELD RECORDS (west_reach / Compact — cultural, appreciating) +# German/Compact music label and catalogue. GJ 395 (Confluent). +# Inputs: entertainment. +# ========================================================================== + +[[brand_products]] +brand_product_id = "leerfeld-collector-halo" +corp_id = "leerfeld-records" +product_name = "Leerfeld Collector Series" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "music_catalogue" +base_premium_multiplier = 8.0 +premium_floor = 0.45 +origin_system = "GJ 395" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "leerfeld-collector-halo" +commodity_id = "entertainment" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "leerfeld-catalogue-volume" +corp_id = "leerfeld-records" +product_name = "Leerfeld Catalogue Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "streaming_catalogue" +base_premium_multiplier = 1.8 +premium_floor = 0.10 +origin_system = "GJ 395" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "leerfeld-collector-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "leerfeld-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.80 + + +# ========================================================================== +# VUMA SOUND (south_reach — cultural, appreciating) +# African music label, pan-south_reach catalogue. GJ 884 (Matamba). +# Inputs: entertainment. +# ========================================================================== + +[[brand_products]] +brand_product_id = "vuma-select-pressing-halo" +corp_id = "vuma-sound" +product_name = "Vuma Select Pressing" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "music_catalogue" +base_premium_multiplier = 7.5 +premium_floor = 0.42 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "vuma-select-pressing-halo" +commodity_id = "entertainment" +quantity = 0.12 + +[[brand_products]] +brand_product_id = "vuma-catalogue-volume" +corp_id = "vuma-sound" +product_name = "Vuma Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "streaming_catalogue" +base_premium_multiplier = 1.6 +premium_floor = 0.09 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "vuma-select-pressing-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "vuma-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.60 + + +# ========================================================================== +# RESONANCE PREMIUM (inner_core — platform_catalogue, timeless) +# Pan-corridor audio streaming platform. GJ 244A (Sirius). +# Inputs: electronics + entertainment. +# ========================================================================== + +[[brand_products]] +brand_product_id = "resonance-premier-tier-halo" +corp_id = "resonance-premium" +product_name = "Resonance Premier Tier" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "audio_streaming_platform" +base_premium_multiplier = 5.0 +premium_floor = 0.30 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "resonance-premier-tier-halo" +commodity_id = "electronics" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "resonance-premier-tier-halo" +commodity_id = "entertainment" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "resonance-standard-volume" +corp_id = "resonance-premium" +product_name = "Resonance Standard" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "audio_streaming_platform" +base_premium_multiplier = 1.3 +premium_floor = 0.07 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "resonance-premier-tier-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "resonance-standard-volume" +commodity_id = "electronics" +quantity = 0.80 + +[[brand_inputs]] +brand_product_id = "resonance-standard-volume" +commodity_id = "entertainment" +quantity = 3.00 + + +# ========================================================================== +# DALBIT SYSTEMS (east_reach — tech_premium/platform_catalogue, timeless) +# East_reach tech platform and developer infrastructure. GJ 660A (Seongho). +# Inputs: electronics + lattice_substrate. +# ========================================================================== + +[[brand_products]] +brand_product_id = "dalbit-core-platform-halo" +corp_id = "dalbit-systems" +product_name = "Dalbit Core Platform" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "developer_platform" +base_premium_multiplier = 12.0 +premium_floor = 0.70 +origin_system = "GJ 660A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "dalbit-core-platform-halo" +commodity_id = "electronics" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "dalbit-core-platform-halo" +commodity_id = "lattice_substrate" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "dalbit-standard-interface-volume" +corp_id = "dalbit-systems" +product_name = "Dalbit Standard Interface" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "developer_tools" +base_premium_multiplier = 2.2 +premium_floor = 0.14 +origin_system = "GJ 660A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "dalbit-core-platform-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "dalbit-standard-interface-volume" +commodity_id = "electronics" +quantity = 1.50 + +[[brand_inputs]] +brand_product_id = "dalbit-standard-interface-volume" +commodity_id = "lattice_substrate" +quantity = 0.30 + + +# ========================================================================== +# ARCLAMP (inner_core — cultural/design_heritage, timeless) +# Cross-corridor cultural media and environmental lighting. GJ 380 (Groombridge). +# Inputs: electronics + entertainment. +# ========================================================================== + +[[brand_products]] +brand_product_id = "arclamp-signature-halo" +corp_id = "arclamp" +product_name = "Arclamp Signature Series" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "environmental_media" +base_premium_multiplier = 14.0 +premium_floor = 0.80 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "arclamp-signature-halo" +commodity_id = "electronics" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "arclamp-signature-halo" +commodity_id = "entertainment" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "arclamp-standard-volume" +corp_id = "arclamp" +product_name = "Arclamp Standard" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "cultural_media" +base_premium_multiplier = 3.0 +premium_floor = 0.18 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "arclamp-signature-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "arclamp-standard-volume" +commodity_id = "electronics" +quantity = 0.80 + +[[brand_inputs]] +brand_product_id = "arclamp-standard-volume" +commodity_id = "entertainment" +quantity = 1.20 + + +# ========================================================================== +# KELLERVOLK (west_reach / Compact — cultural, appreciating) +# Compact electronic music label. GJ 3737 (Nyrheim). +# Inputs: entertainment. +# ========================================================================== + +[[brand_products]] +brand_product_id = "kellervolk-classic-halo" +corp_id = "kellervolk" +product_name = "Kellervolk Classic Compilation" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "electronic_music" +base_premium_multiplier = 7.0 +premium_floor = 0.40 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "kellervolk-classic-halo" +commodity_id = "entertainment" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "kellervolk-catalogue-volume" +corp_id = "kellervolk" +product_name = "Kellervolk Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "electronic_music" +base_premium_multiplier = 1.7 +premium_floor = 0.09 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kellervolk-classic-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "kellervolk-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.40 + + +# ========================================================================== +# HANGANG STUDIO (east_reach — platform_catalogue, appreciating) +# East_reach film and animation studio. GJ 625 (Songjiang). +# Inputs: entertainment. +# ========================================================================== + +[[brand_products]] +brand_product_id = "hangang-original-halo" +corp_id = "hangang-studio" +product_name = "Hangang Original Collection" +brand_category = "platform_catalogue" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "film_animation_studio" +base_premium_multiplier = 9.0 +premium_floor = 0.52 +origin_system = "GJ 625" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "hangang-original-halo" +commodity_id = "entertainment" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "hangang-standard-stream-volume" +corp_id = "hangang-studio" +product_name = "Hangang Standard Stream" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "streaming_catalogue" +base_premium_multiplier = 1.4 +premium_floor = 0.08 +origin_system = "GJ 625" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "hangang-original-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "hangang-standard-stream-volume" +commodity_id = "entertainment" +quantity = 2.20 + + +# ========================================================================== +# CULTURAL BRANDS — EAST REACH (8 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "haesungdan-archive-halo" +corp_id = "haesungdan-records" +product_name = "Haesungdan Original Archive" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "pop_music_rnb" +base_premium_multiplier = 8.5 +premium_floor = 0.48 +origin_system = "GJ 754" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "haesungdan-archive-halo" +commodity_id = "entertainment" +quantity = 0.18 + +[[brand_products]] +brand_product_id = "haesungdan-stream-volume" +corp_id = "haesungdan-records" +product_name = "Haesungdan Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "pop_music_rnb" +base_premium_multiplier = 1.6 +premium_floor = 0.09 +origin_system = "GJ 754" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "haesungdan-archive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "haesungdan-stream-volume" +commodity_id = "entertainment" +quantity = 1.70 + +[[brand_products]] +brand_product_id = "mirai-collector-halo" +corp_id = "mirai-entertainment" +product_name = "Mirai Collector Series" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "pop_idol_management" +base_premium_multiplier = 9.0 +premium_floor = 0.50 +origin_system = "GJ 205" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "mirai-collector-halo" +commodity_id = "entertainment" +quantity = 0.17 + +[[brand_products]] +brand_product_id = "mirai-standard-catalogue-volume" +corp_id = "mirai-entertainment" +product_name = "Mirai Standard Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "pop_idol_management" +base_premium_multiplier = 1.7 +premium_floor = 0.09 +origin_system = "GJ 205" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "mirai-collector-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "mirai-standard-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.75 + +[[brand_products]] +brand_product_id = "xing-yun-directors-cut-halo" +corp_id = "xing-yun-films" +product_name = "Xing Yun Directors' Cut" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "film_studio" +base_premium_multiplier = 9.5 +premium_floor = 0.52 +origin_system = "GJ 625" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "xing-yun-directors-cut-halo" +commodity_id = "entertainment" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "xing-yun-catalogue-volume" +corp_id = "xing-yun-films" +product_name = "Xing Yun Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "film_studio" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 625" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "xing-yun-directors-cut-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "xing-yun-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.90 + +[[brand_products]] +brand_product_id = "ondori-premium-edition-halo" +corp_id = "ondori-interactive" +product_name = "Ondori Premium Edition" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "interactive_entertainment" +base_premium_multiplier = 7.0 +premium_floor = 0.38 +origin_system = "GJ 3728B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "ondori-premium-edition-halo" +commodity_id = "entertainment" +quantity = 0.22 + +[[brand_products]] +brand_product_id = "ondori-standard-release-volume" +corp_id = "ondori-interactive" +product_name = "Ondori Standard Release" +brand_category = "cultural" +value_trajectory = "depreciating" +scarcity_class = "scalable" +product_subcategory = "interactive_entertainment" +base_premium_multiplier = 1.4 +premium_floor = 0.07 +origin_system = "GJ 3728B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "ondori-premium-edition-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "ondori-standard-release-volume" +commodity_id = "entertainment" +quantity = 2.00 + +[[brand_products]] +brand_product_id = "namsan-collector-pressing-halo" +corp_id = "namsan-collective" +product_name = "Namsan Collector's Pressing" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "indie_music" +base_premium_multiplier = 6.5 +premium_floor = 0.36 +origin_system = "GJ 268" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "namsan-collector-pressing-halo" +commodity_id = "entertainment" +quantity = 0.12 + +[[brand_products]] +brand_product_id = "namsan-catalogue-volume" +corp_id = "namsan-collective" +product_name = "Namsan Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "indie_music" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 268" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "namsan-collector-pressing-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "namsan-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.30 + +[[brand_products]] +brand_product_id = "sungshin-collector-halo" +corp_id = "sungshin-music" +product_name = "Sungshin Collector Series" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "pop_entertainment_group" +base_premium_multiplier = 10.0 +premium_floor = 0.56 +origin_system = "GJ 848" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "sungshin-collector-halo" +commodity_id = "entertainment" +quantity = 0.22 + +[[brand_products]] +brand_product_id = "sungshin-standard-stream-volume" +corp_id = "sungshin-music" +product_name = "Sungshin Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "pop_entertainment_group" +base_premium_multiplier = 1.8 +premium_floor = 0.10 +origin_system = "GJ 848" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "sungshin-collector-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "sungshin-standard-stream-volume" +commodity_id = "entertainment" +quantity = 2.10 + +[[brand_products]] +brand_product_id = "hana-original-halo" +corp_id = "hana-creative" +product_name = "Hana Original Series" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "visual_arts_media" +base_premium_multiplier = 7.5 +premium_floor = 0.42 +origin_system = "GJ 445" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "hana-original-halo" +commodity_id = "entertainment" +quantity = 0.16 + +[[brand_products]] +brand_product_id = "hana-standard-catalogue-volume" +corp_id = "hana-creative" +product_name = "Hana Standard Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "visual_arts_media" +base_premium_multiplier = 1.6 +premium_floor = 0.08 +origin_system = "GJ 445" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "hana-original-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "hana-standard-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.50 + + +# ========================================================================== +# CULTURAL BRANDS — WEST REACH (5 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "graben-archive-edition-halo" +corp_id = "graben-studio" +product_name = "Graben Archive Edition" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "electronic_music" +base_premium_multiplier = 7.0 +premium_floor = 0.40 +origin_system = "GJ 453" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "graben-archive-edition-halo" +commodity_id = "entertainment" +quantity = 0.14 + +[[brand_products]] +brand_product_id = "graben-catalogue-stream-volume" +corp_id = "graben-studio" +product_name = "Graben Catalogue Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "electronic_music" +base_premium_multiplier = 1.6 +premium_floor = 0.09 +origin_system = "GJ 453" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "graben-archive-edition-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "graben-catalogue-stream-volume" +commodity_id = "entertainment" +quantity = 1.50 + +[[brand_products]] +brand_product_id = "nordschatten-original-halo" +corp_id = "nordschatten-records" +product_name = "Nordschatten Original Pressing" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "dark_ambient_industrial" +base_premium_multiplier = 6.5 +premium_floor = 0.36 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "nordschatten-original-halo" +commodity_id = "entertainment" +quantity = 0.11 + +[[brand_products]] +brand_product_id = "nordschatten-standard-stream-volume" +corp_id = "nordschatten-records" +product_name = "Nordschatten Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "dark_ambient_industrial" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "nordschatten-original-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "nordschatten-standard-stream-volume" +commodity_id = "entertainment" +quantity = 1.20 + +[[brand_products]] +brand_product_id = "wolkenbruch-director-series-halo" +corp_id = "wolkenbruch-cinema" +product_name = "Wolkenbruch Director Series" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "film_studio" +base_premium_multiplier = 8.0 +premium_floor = 0.44 +origin_system = "GJ 526" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "wolkenbruch-director-series-halo" +commodity_id = "entertainment" +quantity = 0.18 + +[[brand_products]] +brand_product_id = "wolkenbruch-stream-catalogue-volume" +corp_id = "wolkenbruch-cinema" +product_name = "Wolkenbruch Stream Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "film_studio" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 526" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "wolkenbruch-director-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "wolkenbruch-stream-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.80 + +[[brand_products]] +brand_product_id = "fjeldtone-archive-halo" +corp_id = "fjeldtone-music" +product_name = "Fjeldtone Archive" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "folk_acoustic_music" +base_premium_multiplier = 6.0 +premium_floor = 0.33 +origin_system = "GJ 624" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "fjeldtone-archive-halo" +commodity_id = "entertainment" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "fjeldtone-standard-volume" +corp_id = "fjeldtone-music" +product_name = "Fjeldtone Standard" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "folk_acoustic_music" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 624" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "fjeldtone-archive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "fjeldtone-standard-volume" +commodity_id = "entertainment" +quantity = 1.10 + +[[brand_products]] +brand_product_id = "maas-rijn-archive-halo" +corp_id = "maas-rijn-entertainment" +product_name = "Maas and Rijn Archive" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "dutch_heritage_entertainment" +base_premium_multiplier = 7.5 +premium_floor = 0.42 +origin_system = "GJ 506" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "maas-rijn-archive-halo" +commodity_id = "entertainment" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "maas-rijn-catalogue-volume" +corp_id = "maas-rijn-entertainment" +product_name = "Maas and Rijn Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "dutch_heritage_entertainment" +base_premium_multiplier = 1.6 +premium_floor = 0.09 +origin_system = "GJ 506" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "maas-rijn-archive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "maas-rijn-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.50 + + +# ========================================================================== +# CULTURAL BRANDS — SOUTH REACH (4 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "zindua-collector-edition-halo" +corp_id = "zindua-records" +product_name = "Zindua Collector's Edition" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "swahili_music" +base_premium_multiplier = 7.0 +premium_floor = 0.39 +origin_system = "GJ 1111" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "zindua-collector-edition-halo" +commodity_id = "entertainment" +quantity = 0.13 + +[[brand_products]] +brand_product_id = "zindua-standard-stream-volume" +corp_id = "zindua-records" +product_name = "Zindua Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "swahili_music" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 1111" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "zindua-collector-edition-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "zindua-standard-stream-volume" +commodity_id = "entertainment" +quantity = 1.30 + +[[brand_products]] +brand_product_id = "baia-fundo-archive-halo" +corp_id = "baia-fundo-productions" +product_name = "Baía Fundo Original Archive" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "film_music_studio" +base_premium_multiplier = 8.0 +premium_floor = 0.44 +origin_system = "GJ 566B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "baia-fundo-archive-halo" +commodity_id = "entertainment" +quantity = 0.18 + +[[brand_products]] +brand_product_id = "baia-fundo-catalogue-volume" +corp_id = "baia-fundo-productions" +product_name = "Baía Fundo Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "film_music_studio" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 566B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "baia-fundo-archive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "baia-fundo-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.70 + +[[brand_products]] +brand_product_id = "mwanga-select-halo" +corp_id = "mwanga-media" +product_name = "Mwanga Select" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "swahili_media" +base_premium_multiplier = 7.0 +premium_floor = 0.38 +origin_system = "GJ 693" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "mwanga-select-halo" +commodity_id = "entertainment" +quantity = 0.14 + +[[brand_products]] +brand_product_id = "mwanga-standard-stream-volume" +corp_id = "mwanga-media" +product_name = "Mwanga Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "swahili_media" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 693" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "mwanga-select-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "mwanga-standard-stream-volume" +commodity_id = "entertainment" +quantity = 1.40 + +[[brand_products]] +brand_product_id = "quebrada-signature-halo" +corp_id = "quebrada-cultural" +product_name = "Quebrada Signature Collection" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "portuguese_african_arts" +base_premium_multiplier = 7.5 +premium_floor = 0.42 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "quebrada-signature-halo" +commodity_id = "entertainment" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "quebrada-standard-stream-volume" +corp_id = "quebrada-cultural" +product_name = "Quebrada Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "portuguese_african_arts" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "quebrada-signature-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "quebrada-standard-stream-volume" +commodity_id = "entertainment" +quantity = 1.50 + + +# ========================================================================== +# CULTURAL BRANDS — NORTH REACH (4 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "ashwick-archive-halo" +corp_id = "ashwick-broadcasting" +product_name = "Ashwick Archive Collection" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "broadcasting_media" +base_premium_multiplier = 7.5 +premium_floor = 0.42 +origin_system = "GJ 178" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "ashwick-archive-halo" +commodity_id = "entertainment" +quantity = 0.16 + +[[brand_products]] +brand_product_id = "ashwick-standard-stream-volume" +corp_id = "ashwick-broadcasting" +product_name = "Ashwick Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "broadcasting_media" +base_premium_multiplier = 1.6 +premium_floor = 0.09 +origin_system = "GJ 178" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "ashwick-archive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "ashwick-standard-stream-volume" +commodity_id = "entertainment" +quantity = 1.60 + +[[brand_products]] +brand_product_id = "ironbark-directors-cut-halo" +corp_id = "ironbark-films" +product_name = "Ironbark Directors' Cut" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "film_studio" +base_premium_multiplier = 8.5 +premium_floor = 0.47 +origin_system = "GJ 273" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "ironbark-directors-cut-halo" +commodity_id = "entertainment" +quantity = 0.18 + +[[brand_products]] +brand_product_id = "ironbark-stream-catalogue-volume" +corp_id = "ironbark-films" +product_name = "Ironbark Stream Catalogue" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "film_studio" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 273" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "ironbark-directors-cut-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "ironbark-stream-catalogue-volume" +commodity_id = "entertainment" +quantity = 1.70 + +[[brand_products]] +brand_product_id = "moorfield-collector-pressing-halo" +corp_id = "moorfield-records" +product_name = "Moorfield Collector's Pressing" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "folk_indie_music" +base_premium_multiplier = 6.0 +premium_floor = 0.33 +origin_system = "GJ 475" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "moorfield-collector-pressing-halo" +commodity_id = "entertainment" +quantity = 0.11 + +[[brand_products]] +brand_product_id = "moorfield-standard-volume" +corp_id = "moorfield-records" +product_name = "Moorfield Standard" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "folk_indie_music" +base_premium_multiplier = 1.5 +premium_floor = 0.08 +origin_system = "GJ 475" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "moorfield-collector-pressing-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "moorfield-standard-volume" +commodity_id = "entertainment" +quantity = 1.10 + +[[brand_products]] +brand_product_id = "thorngate-archive-halo" +corp_id = "thorngate-media" +product_name = "Thorngate Archive Collection" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "broadcasting_media" +base_premium_multiplier = 7.5 +premium_floor = 0.42 +origin_system = "GJ 661A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "thorngate-archive-halo" +commodity_id = "entertainment" +quantity = 0.16 + +[[brand_products]] +brand_product_id = "thorngate-standard-stream-volume" +corp_id = "thorngate-media" +product_name = "Thorngate Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "broadcasting_media" +base_premium_multiplier = 1.6 +premium_floor = 0.09 +origin_system = "GJ 661A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "thorngate-archive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "thorngate-standard-stream-volume" +commodity_id = "entertainment" +quantity = 1.60 + + +# ========================================================================== +# CULTURAL BRANDS — INNER CORE (2 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "reach-standard-premier-archive-halo" +corp_id = "reach-standard-media" +product_name = "Reach Standard Premier Archive" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "pan_corridor_entertainment" +base_premium_multiplier = 8.0 +premium_floor = 0.45 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "reach-standard-premier-archive-halo" +commodity_id = "entertainment" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "reach-standard-stream-volume" +corp_id = "reach-standard-media" +product_name = "Reach Standard Stream" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "pan_corridor_entertainment" +base_premium_multiplier = 1.3 +premium_floor = 0.07 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "reach-standard-premier-archive-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "reach-standard-stream-volume" +commodity_id = "entertainment" +quantity = 3.50 + +[[brand_products]] +brand_product_id = "atrium-signature-archive-halo" +corp_id = "atrium-culture" +product_name = "Atrium Signature Archive" +brand_category = "cultural" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "prestige_arts_institution" +base_premium_multiplier = 18.0 +premium_floor = 1.00 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "atrium-signature-archive-halo" +commodity_id = "entertainment" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "atrium-standard-volume" +corp_id = "atrium-culture" +product_name = "Atrium Standard" +brand_category = "cultural" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "prestige_arts_institution" +base_premium_multiplier = 3.5 +premium_floor = 0.22 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "atrium-signature-archive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "atrium-standard-volume" +commodity_id = "entertainment" +quantity = 1.80 + + +# ========================================================================== +# TECH_PREMIUM BRANDS — EAST REACH (5 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "kumho-navigator-elite-halo" +corp_id = "kumho-navigation" +product_name = "Kumho Navigator Elite" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "navigation_systems" +base_premium_multiplier = 9.0 +premium_floor = 0.55 +origin_system = "GJ 1125" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "kumho-navigator-elite-halo" +commodity_id = "electronics" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "kumho-navigator-elite-halo" +commodity_id = "advanced_alloys" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "kumho-standard-navigator-volume" +corp_id = "kumho-navigation" +product_name = "Kumho Standard Navigator" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "navigation_systems" +base_premium_multiplier = 2.8 +premium_floor = 0.18 +origin_system = "GJ 1125" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kumho-navigator-elite-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "kumho-standard-navigator-volume" +commodity_id = "electronics" +quantity = 1.10 + +[[brand_inputs]] +brand_product_id = "kumho-standard-navigator-volume" +commodity_id = "advanced_alloys" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "tongyeong-core-series-halo" +corp_id = "tongyeong-drive" +product_name = "Tongyeong Core Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "drive_core_components" +base_premium_multiplier = 10.0 +premium_floor = 0.65 +origin_system = "GJ 754" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "tongyeong-core-series-halo" +commodity_id = "drive_cores" +quantity = 0.50 + +[[brand_inputs]] +brand_product_id = "tongyeong-core-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "tongyeong-standard-core-volume" +corp_id = "tongyeong-drive" +product_name = "Tongyeong Standard Core" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "drive_core_components" +base_premium_multiplier = 3.0 +premium_floor = 0.20 +origin_system = "GJ 754" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "tongyeong-core-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "tongyeong-standard-core-volume" +commodity_id = "drive_cores" +quantity = 1.50 + +[[brand_inputs]] +brand_product_id = "tongyeong-standard-core-volume" +commodity_id = "advanced_alloys" +quantity = 0.70 + +[[brand_products]] +brand_product_id = "jeju-premium-lattice-halo" +corp_id = "jeju-lattice" +product_name = "Jeju Premium Lattice" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "neural_lattice_equipment" +base_premium_multiplier = 11.0 +premium_floor = 0.70 +origin_system = "GJ 268" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "jeju-premium-lattice-halo" +commodity_id = "lattice_substrate" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "jeju-premium-lattice-halo" +commodity_id = "electronics" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "jeju-standard-lattice-volume" +corp_id = "jeju-lattice" +product_name = "Jeju Standard Lattice" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "neural_lattice_equipment" +base_premium_multiplier = 3.2 +premium_floor = 0.22 +origin_system = "GJ 268" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "jeju-premium-lattice-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "jeju-standard-lattice-volume" +commodity_id = "lattice_substrate" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "jeju-standard-lattice-volume" +commodity_id = "electronics" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "kaur-observatory-elite-halo" +corp_id = "kaur-observatory-equipment" +product_name = "Kaur Observatory Elite Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "precision_instruments" +base_premium_multiplier = 9.5 +premium_floor = 0.60 +origin_system = "GJ 432A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "kaur-observatory-elite-halo" +commodity_id = "electronics" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "kaur-observatory-elite-halo" +commodity_id = "advanced_alloys" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "kaur-standard-volume" +corp_id = "kaur-observatory-equipment" +product_name = "Kaur Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "precision_instruments" +base_premium_multiplier = 2.8 +premium_floor = 0.18 +origin_system = "GJ 432A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kaur-observatory-elite-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "kaur-standard-volume" +commodity_id = "electronics" +quantity = 1.00 + +[[brand_inputs]] +brand_product_id = "kaur-standard-volume" +commodity_id = "advanced_alloys" +quantity = 1.10 + + +# ========================================================================== +# TECH_PREMIUM BRANDS — WEST REACH (4 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "bergkraft-elite-drive-halo" +corp_id = "bergkraft-antriebswerke" +product_name = "Bergkraft Elite Drive" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "drive_engineering" +base_premium_multiplier = 10.5 +premium_floor = 0.68 +origin_system = "GJ 505A" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "bergkraft-elite-drive-halo" +commodity_id = "drive_cores" +quantity = 0.45 + +[[brand_inputs]] +brand_product_id = "bergkraft-elite-drive-halo" +commodity_id = "advanced_alloys" +quantity = 0.35 + +[[brand_products]] +brand_product_id = "bergkraft-standard-drive-volume" +corp_id = "bergkraft-antriebswerke" +product_name = "Bergkraft Standard Drive" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "drive_engineering" +base_premium_multiplier = 3.2 +premium_floor = 0.22 +origin_system = "GJ 505A" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "bergkraft-elite-drive-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "bergkraft-standard-drive-volume" +commodity_id = "drive_cores" +quantity = 1.40 + +[[brand_inputs]] +brand_product_id = "bergkraft-standard-drive-volume" +commodity_id = "advanced_alloys" +quantity = 0.80 + +[[brand_products]] +brand_product_id = "rheintal-master-series-halo" +corp_id = "rheintal-systems" +product_name = "Rheintal Master Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "precision_machinery" +base_premium_multiplier = 9.5 +premium_floor = 0.62 +origin_system = "GJ 526" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "rheintal-master-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "rheintal-master-series-halo" +commodity_id = "electronics" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "rheintal-standard-volume" +corp_id = "rheintal-systems" +product_name = "Rheintal Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "precision_machinery" +base_premium_multiplier = 3.0 +premium_floor = 0.20 +origin_system = "GJ 526" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "rheintal-master-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "rheintal-standard-volume" +commodity_id = "advanced_alloys" +quantity = 1.30 + +[[brand_inputs]] +brand_product_id = "rheintal-standard-volume" +commodity_id = "electronics" +quantity = 0.70 + +[[brand_products]] +brand_product_id = "vlaanderen-elite-sensor-halo" +corp_id = "vlaanderen-optica" +product_name = "Vlaanderen Elite Sensor" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "optical_sensor_systems" +base_premium_multiplier = 11.0 +premium_floor = 0.72 +origin_system = "GJ 506" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "vlaanderen-elite-sensor-halo" +commodity_id = "electronics" +quantity = 0.45 + +[[brand_inputs]] +brand_product_id = "vlaanderen-elite-sensor-halo" +commodity_id = "rare_minerals" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "vlaanderen-standard-optics-volume" +corp_id = "vlaanderen-optica" +product_name = "Vlaanderen Standard Optics" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "optical_sensor_systems" +base_premium_multiplier = 3.2 +premium_floor = 0.22 +origin_system = "GJ 506" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "vlaanderen-elite-sensor-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "vlaanderen-standard-optics-volume" +commodity_id = "electronics" +quantity = 1.50 + +[[brand_inputs]] +brand_product_id = "vlaanderen-standard-optics-volume" +commodity_id = "rare_minerals" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "erzgebirge-masterwork-halo" +corp_id = "erzgebirge-instruments" +product_name = "Erzgebirge Masterwork" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "precision_instruments" +base_premium_multiplier = 10.0 +premium_floor = 0.65 +origin_system = "GJ 3454" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "erzgebirge-masterwork-halo" +commodity_id = "advanced_alloys" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "erzgebirge-masterwork-halo" +commodity_id = "electronics" +quantity = 0.35 + +[[brand_products]] +brand_product_id = "erzgebirge-standard-volume" +corp_id = "erzgebirge-instruments" +product_name = "Erzgebirge Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "precision_instruments" +base_premium_multiplier = 3.0 +premium_floor = 0.20 +origin_system = "GJ 3454" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "erzgebirge-masterwork-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "erzgebirge-standard-volume" +commodity_id = "advanced_alloys" +quantity = 1.10 + +[[brand_inputs]] +brand_product_id = "erzgebirge-standard-volume" +commodity_id = "electronics" +quantity = 1.00 + + +# ========================================================================== +# TECH_PREMIUM BRANDS — INNER CORE (2 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "meridional-tech-elite-halo" +corp_id = "meridional-technical" +product_name = "Meridional Elite System" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "cross_corridor_hardware" +base_premium_multiplier = 10.0 +premium_floor = 0.65 +origin_system = "GJ 674" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "meridional-tech-elite-halo" +commodity_id = "electronics" +quantity = 0.50 + +[[brand_inputs]] +brand_product_id = "meridional-tech-elite-halo" +commodity_id = "advanced_alloys" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "meridional-tech-standard-volume" +corp_id = "meridional-technical" +product_name = "Meridional Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "cross_corridor_hardware" +base_premium_multiplier = 3.0 +premium_floor = 0.20 +origin_system = "GJ 674" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "meridional-tech-elite-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "meridional-tech-standard-volume" +commodity_id = "electronics" +quantity = 1.80 + +[[brand_inputs]] +brand_product_id = "meridional-tech-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.70 + +[[brand_products]] +brand_product_id = "alcyone-elite-platform-halo" +corp_id = "alcyone-tech" +product_name = "Alcyone Elite Platform" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "lattice_hardware_platform" +base_premium_multiplier = 11.0 +premium_floor = 0.70 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "alcyone-elite-platform-halo" +commodity_id = "lattice_substrate" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "alcyone-elite-platform-halo" +commodity_id = "electronics" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "alcyone-standard-platform-volume" +corp_id = "alcyone-tech" +product_name = "Alcyone Standard Platform" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "lattice_hardware_platform" +base_premium_multiplier = 3.0 +premium_floor = 0.20 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "alcyone-elite-platform-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "alcyone-standard-platform-volume" +commodity_id = "lattice_substrate" +quantity = 1.10 + +[[brand_inputs]] +brand_product_id = "alcyone-standard-platform-volume" +commodity_id = "electronics" +quantity = 0.90 + + +# ========================================================================== +# TECH_PREMIUM BRANDS — SOUTH REACH (3 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "luanda-elite-series-halo" +corp_id = "luanda-fabrication" +product_name = "Luanda Elite Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "heavy_technical_manufacturing" +base_premium_multiplier = 9.0 +premium_floor = 0.58 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "luanda-elite-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.50 + +[[brand_inputs]] +brand_product_id = "luanda-elite-series-halo" +commodity_id = "heavy_equipment" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "luanda-standard-volume" +corp_id = "luanda-fabrication" +product_name = "Luanda Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "heavy_technical_manufacturing" +base_premium_multiplier = 2.8 +premium_floor = 0.18 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "luanda-elite-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "luanda-standard-volume" +commodity_id = "advanced_alloys" +quantity = 1.60 + +[[brand_inputs]] +brand_product_id = "luanda-standard-volume" +commodity_id = "heavy_equipment" +quantity = 0.60 + +[[brand_products]] +brand_product_id = "durban-master-systems-halo" +corp_id = "durban-engineering" +product_name = "Durban Master Systems" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "industrial_engineering" +base_premium_multiplier = 9.5 +premium_floor = 0.60 +origin_system = "GJ 905" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "durban-master-systems-halo" +commodity_id = "advanced_alloys" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "durban-master-systems-halo" +commodity_id = "heavy_equipment" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "durban-standard-volume" +corp_id = "durban-engineering" +product_name = "Durban Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "industrial_engineering" +base_premium_multiplier = 2.8 +premium_floor = 0.18 +origin_system = "GJ 905" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "durban-master-systems-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "durban-standard-volume" +commodity_id = "advanced_alloys" +quantity = 1.40 + +[[brand_inputs]] +brand_product_id = "durban-standard-volume" +commodity_id = "heavy_equipment" +quantity = 0.70 + +[[brand_products]] +brand_product_id = "pat-elite-series-halo" +corp_id = "porto-alegre-technical" +product_name = "PAT Elite Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "precision_instruments" +base_premium_multiplier = 8.5 +premium_floor = 0.55 +origin_system = "GJ 896A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "pat-elite-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "pat-elite-series-halo" +commodity_id = "electronics" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "pat-standard-volume" +corp_id = "porto-alegre-technical" +product_name = "PAT Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "precision_instruments" +base_premium_multiplier = 2.6 +premium_floor = 0.16 +origin_system = "GJ 896A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "pat-elite-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "pat-standard-volume" +commodity_id = "advanced_alloys" +quantity = 1.10 + +[[brand_inputs]] +brand_product_id = "pat-standard-volume" +commodity_id = "electronics" +quantity = 0.90 + + +# ========================================================================== +# TECH_PREMIUM BRANDS — NORTH REACH (3 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "kinlochewe-master-series-halo" +corp_id = "kinlochewe-instruments" +product_name = "Kinlochewe Master Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "precision_instruments" +base_premium_multiplier = 9.0 +premium_floor = 0.58 +origin_system = "GJ 475" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "kinlochewe-master-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "kinlochewe-master-series-halo" +commodity_id = "electronics" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "kinlochewe-standard-volume" +corp_id = "kinlochewe-instruments" +product_name = "Kinlochewe Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "precision_instruments" +base_premium_multiplier = 2.7 +premium_floor = 0.17 +origin_system = "GJ 475" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kinlochewe-master-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "kinlochewe-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.90 + +[[brand_inputs]] +brand_product_id = "kinlochewe-standard-volume" +commodity_id = "electronics" +quantity = 1.00 + +[[brand_products]] +brand_product_id = "grampian-elite-systems-halo" +corp_id = "grampian-systems" +product_name = "Grampian Elite Systems" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "engineering_systems" +base_premium_multiplier = 9.0 +premium_floor = 0.58 +origin_system = "GJ 3325" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "grampian-elite-systems-halo" +commodity_id = "advanced_alloys" +quantity = 0.45 + +[[brand_inputs]] +brand_product_id = "grampian-elite-systems-halo" +commodity_id = "electronics" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "grampian-standard-systems-volume" +corp_id = "grampian-systems" +product_name = "Grampian Standard Systems" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "engineering_systems" +base_premium_multiplier = 2.8 +premium_floor = 0.18 +origin_system = "GJ 3325" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "grampian-elite-systems-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "grampian-standard-systems-volume" +commodity_id = "advanced_alloys" +quantity = 1.50 + +[[brand_inputs]] +brand_product_id = "grampian-standard-systems-volume" +commodity_id = "electronics" +quantity = 0.70 + +[[brand_products]] +brand_product_id = "sunderland-master-series-halo" +corp_id = "sunderland-precision" +product_name = "Sunderland Master Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "precision_manufacturing" +base_premium_multiplier = 8.5 +premium_floor = 0.55 +origin_system = "GJ 873" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "sunderland-master-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "sunderland-master-series-halo" +commodity_id = "electronics" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "sunderland-standard-volume" +corp_id = "sunderland-precision" +product_name = "Sunderland Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "precision_manufacturing" +base_premium_multiplier = 2.6 +premium_floor = 0.16 +origin_system = "GJ 873" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "sunderland-master-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "sunderland-standard-volume" +commodity_id = "advanced_alloys" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "sunderland-standard-volume" +commodity_id = "electronics" +quantity = 0.80 + + +# ========================================================================== +# TECH_PREMIUM BRANDS — DEEP FRONTIER (1 corp) +# ========================================================================== + +[[brand_products]] +brand_product_id = "endymion-precision-series-halo" +corp_id = "endymion-instruments" +product_name = "Endymion Precision Series" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "frontier_instruments" +base_premium_multiplier = 7.0 +premium_floor = 0.40 +origin_system = "GJ 875" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "endymion-precision-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "endymion-precision-series-halo" +commodity_id = "electronics" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "endymion-field-standard-volume" +corp_id = "endymion-instruments" +product_name = "Endymion Field Standard" +brand_category = "tech_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "frontier_instruments" +base_premium_multiplier = 2.2 +premium_floor = 0.12 +origin_system = "GJ 875" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "endymion-precision-series-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "endymion-field-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.90 + +[[brand_inputs]] +brand_product_id = "endymion-field-standard-volume" +commodity_id = "electronics" +quantity = 0.70 + + +# ========================================================================== +# TERROIR BRANDS — INVENTED (11 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "alentejo-grand-reserve-halo" +corp_id = "alentejo-partners" +product_name = "Alentejo Grand Reserve" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "fine_wine" +base_premium_multiplier = 11.0 +premium_floor = 0.65 +origin_system = "GJ 1002" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "alentejo-grand-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.16 + +[[brand_inputs]] +brand_product_id = "alentejo-grand-reserve-halo" +commodity_id = "water" +quantity = 0.05 + +[[brand_products]] +brand_product_id = "alentejo-partners-standard-volume" +corp_id = "alentejo-partners" +product_name = "Alentejo Partners Standard" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "fine_wine" +base_premium_multiplier = 3.0 +premium_floor = 0.20 +origin_system = "GJ 1002" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "alentejo-grand-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "alentejo-partners-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.65 + +[[brand_inputs]] +brand_product_id = "alentejo-partners-standard-volume" +commodity_id = "water" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "kyoto-valley-premium-reserve-halo" +corp_id = "kyoto-valley-estates" +product_name = "Kyoto Valley Premium Reserve" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "sake_rice_spirits" +base_premium_multiplier = 12.0 +premium_floor = 0.68 +origin_system = "GJ 205" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "kyoto-valley-premium-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.14 + +[[brand_inputs]] +brand_product_id = "kyoto-valley-premium-reserve-halo" +commodity_id = "water" +quantity = 0.08 + +[[brand_products]] +brand_product_id = "kyoto-valley-standard-volume" +corp_id = "kyoto-valley-estates" +product_name = "Kyoto Valley Standard" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "sake_rice_spirits" +base_premium_multiplier = 3.2 +premium_floor = 0.22 +origin_system = "GJ 205" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kyoto-valley-premium-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "kyoto-valley-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.55 + +[[brand_inputs]] +brand_product_id = "kyoto-valley-standard-volume" +commodity_id = "water" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "groot-karoo-reserve-halo" +corp_id = "groot-karoo-cellars" +product_name = "Groot Karoo Reserve" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "fine_wine" +base_premium_multiplier = 10.0 +premium_floor = 0.60 +origin_system = "GJ 222A" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "groot-karoo-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.15 + +[[brand_inputs]] +brand_product_id = "groot-karoo-reserve-halo" +commodity_id = "water" +quantity = 0.06 + +[[brand_products]] +brand_product_id = "groot-karoo-standard-volume" +corp_id = "groot-karoo-cellars" +product_name = "Groot Karoo Standard" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "fine_wine" +base_premium_multiplier = 2.8 +premium_floor = 0.18 +origin_system = "GJ 222A" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "groot-karoo-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "groot-karoo-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.60 + +[[brand_inputs]] +brand_product_id = "groot-karoo-standard-volume" +commodity_id = "water" +quantity = 0.22 + +[[brand_products]] +brand_product_id = "rheingold-reserve-halo" +corp_id = "rheingold-distillers" +product_name = "Rheingold Reserve" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "aged_spirits" +base_premium_multiplier = 14.0 +premium_floor = 0.78 +origin_system = "GJ 581" +terroir_locked = true +currency_denomination = "mark" +shadow_viable = true +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "rheingold-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.13 + +[[brand_inputs]] +brand_product_id = "rheingold-reserve-halo" +commodity_id = "water" +quantity = 0.07 + +[[brand_products]] +brand_product_id = "rheingold-standard-volume" +corp_id = "rheingold-distillers" +product_name = "Rheingold Standard" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "aged_spirits" +base_premium_multiplier = 3.8 +premium_floor = 0.25 +origin_system = "GJ 581" +terroir_locked = true +currency_denomination = "mark" +shadow_viable = true +brand_tier = "volume" +halo_brand_id = "rheingold-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "rheingold-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.55 + +[[brand_inputs]] +brand_product_id = "rheingold-standard-volume" +commodity_id = "water" +quantity = 0.28 + +[[brand_products]] +brand_product_id = "highland-select-reserve-halo" +corp_id = "highland-cooperative" +product_name = "Highland Select Reserve" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "aged_spirits" +base_premium_multiplier = 13.0 +premium_floor = 0.72 +origin_system = "GJ 661A" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "highland-select-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.15 + +[[brand_inputs]] +brand_product_id = "highland-select-reserve-halo" +commodity_id = "water" +quantity = 0.07 + +[[brand_products]] +brand_product_id = "highland-cooperative-blend-volume" +corp_id = "highland-cooperative" +product_name = "Highland Cooperative Blend" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "constrained" +product_subcategory = "aged_spirits" +base_premium_multiplier = 4.0 +premium_floor = 0.26 +origin_system = "GJ 661A" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "volume" +halo_brand_id = "highland-select-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "highland-cooperative-blend-volume" +commodity_id = "agricultural_produce" +quantity = 0.60 + +[[brand_inputs]] +brand_product_id = "highland-cooperative-blend-volume" +commodity_id = "water" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "incheon-premier-salt-halo" +corp_id = "incheon-salt" +product_name = "Incheon Premier Salt" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "artisanal_salt" +base_premium_multiplier = 8.0 +premium_floor = 0.42 +origin_system = "GJ 860B" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "incheon-premier-salt-halo" +commodity_id = "water" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "incheon-premier-salt-halo" +commodity_id = "chemicals" +quantity = 0.05 + +[[brand_products]] +brand_product_id = "incheon-standard-salt-volume" +corp_id = "incheon-salt" +product_name = "Incheon Standard Salt" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "artisanal_salt" +base_premium_multiplier = 2.2 +premium_floor = 0.12 +origin_system = "GJ 860B" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "incheon-premier-salt-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "incheon-standard-salt-volume" +commodity_id = "water" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "incheon-standard-salt-volume" +commodity_id = "chemicals" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "svanevann-spring-reserve-halo" +corp_id = "svanevann-waters" +product_name = "Svanevann Spring Reserve" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "artisanal_mineral_water" +base_premium_multiplier = 7.0 +premium_floor = 0.38 +origin_system = "GJ 3737" +terroir_locked = true +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "svanevann-spring-reserve-halo" +commodity_id = "water" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "svanevann-standard-volume" +corp_id = "svanevann-waters" +product_name = "Svanevann Standard" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "artisanal_mineral_water" +base_premium_multiplier = 1.8 +premium_floor = 0.10 +origin_system = "GJ 3737" +terroir_locked = true +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "svanevann-spring-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "svanevann-standard-volume" +commodity_id = "water" +quantity = 1.80 + +[[brand_products]] +brand_product_id = "algarve-reserve-botanical-halo" +corp_id = "algarve-botanics" +product_name = "Algarve Reserve Botanical" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "botanical_spirits" +base_premium_multiplier = 9.0 +premium_floor = 0.50 +origin_system = "GJ 54" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "algarve-reserve-botanical-halo" +commodity_id = "organic_compounds" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "algarve-reserve-botanical-halo" +commodity_id = "agricultural_produce" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "algarve-standard-botanical-volume" +corp_id = "algarve-botanics" +product_name = "Algarve Standard Botanical" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "botanical_spirits" +base_premium_multiplier = 2.6 +premium_floor = 0.16 +origin_system = "GJ 54" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "algarve-reserve-botanical-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "algarve-standard-botanical-volume" +commodity_id = "organic_compounds" +quantity = 1.00 + +[[brand_inputs]] +brand_product_id = "algarve-standard-botanical-volume" +commodity_id = "agricultural_produce" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "schwarzwald-reserve-halo" +corp_id = "schwarzwald-gin" +product_name = "Schwarzwald Reserve Distillation" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "botanical_spirits" +base_premium_multiplier = 11.0 +premium_floor = 0.62 +origin_system = "GJ 615" +terroir_locked = true +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "schwarzwald-reserve-halo" +commodity_id = "organic_compounds" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "schwarzwald-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.12 + +[[brand_inputs]] +brand_product_id = "schwarzwald-reserve-halo" +commodity_id = "water" +quantity = 0.08 + +[[brand_products]] +brand_product_id = "schwarzwald-standard-gin-volume" +corp_id = "schwarzwald-gin" +product_name = "Schwarzwald Standard Gin" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "botanical_spirits" +base_premium_multiplier = 3.2 +premium_floor = 0.20 +origin_system = "GJ 615" +terroir_locked = true +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "schwarzwald-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "schwarzwald-standard-gin-volume" +commodity_id = "organic_compounds" +quantity = 0.80 + +[[brand_inputs]] +brand_product_id = "schwarzwald-standard-gin-volume" +commodity_id = "agricultural_produce" +quantity = 0.45 + +[[brand_inputs]] +brand_product_id = "schwarzwald-standard-gin-volume" +commodity_id = "water" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "brindlewood-reserve-honey-halo" +corp_id = "brindlewood-honey" +product_name = "Brindlewood Reserve Honey" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "artisanal_honey" +base_premium_multiplier = 7.5 +premium_floor = 0.40 +origin_system = "GJ 178" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "brindlewood-reserve-honey-halo" +commodity_id = "agricultural_produce" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "brindlewood-reserve-honey-halo" +commodity_id = "organic_compounds" +quantity = 0.08 + +[[brand_products]] +brand_product_id = "brindlewood-standard-volume" +corp_id = "brindlewood-honey" +product_name = "Brindlewood Standard" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "artisanal_honey" +base_premium_multiplier = 2.2 +premium_floor = 0.12 +origin_system = "GJ 178" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "brindlewood-reserve-honey-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "brindlewood-standard-volume" +commodity_id = "agricultural_produce" +quantity = 1.40 + +[[brand_inputs]] +brand_product_id = "brindlewood-standard-volume" +commodity_id = "organic_compounds" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "kaapse-baai-grand-reserve-halo" +corp_id = "kaapse-baai-wines" +product_name = "Kaapse Baai Grand Reserve" +brand_category = "terroir" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "fine_wine" +base_premium_multiplier = 10.5 +premium_floor = 0.62 +origin_system = "GJ 213" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "kaapse-baai-grand-reserve-halo" +commodity_id = "agricultural_produce" +quantity = 0.17 + +[[brand_inputs]] +brand_product_id = "kaapse-baai-grand-reserve-halo" +commodity_id = "water" +quantity = 0.05 + +[[brand_products]] +brand_product_id = "kaapse-baai-standard-volume" +corp_id = "kaapse-baai-wines" +product_name = "Kaapse Baai Standard" +brand_category = "terroir" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "fine_wine" +base_premium_multiplier = 2.5 +premium_floor = 0.15 +origin_system = "GJ 213" +terroir_locked = true +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kaapse-baai-grand-reserve-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "kaapse-baai-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.70 + +[[brand_inputs]] +brand_product_id = "kaapse-baai-standard-volume" +commodity_id = "water" +quantity = 0.18 + + +# ========================================================================== +# SERVICE_PREMIUM BRANDS — INVENTED (13 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "alcazar-grand-halo" +corp_id = "alcazar-hospitality" +product_name = "Alcazar Grand" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "resort_hospitality" +base_premium_multiplier = 12.0 +premium_floor = 0.70 +origin_system = "GJ 768" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "alcazar-grand-halo" +commodity_id = "hospitality" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "alcazar-grand-halo" +commodity_id = "consumer_goods" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "alcazar-standard-volume" +corp_id = "alcazar-hospitality" +product_name = "Alcazar Standard" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "resort_hospitality" +base_premium_multiplier = 3.5 +premium_floor = 0.22 +origin_system = "GJ 768" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "alcazar-grand-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "alcazar-standard-volume" +commodity_id = "hospitality" +quantity = 1.50 + +[[brand_inputs]] +brand_product_id = "alcazar-standard-volume" +commodity_id = "consumer_goods" +quantity = 0.45 + +[[brand_products]] +brand_product_id = "nordhavn-wealth-management-halo" +corp_id = "nordhavn-financial" +product_name = "Nordhavn Wealth Management" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "financial_advisory" +base_premium_multiplier = 14.0 +premium_floor = 0.85 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "nordhavn-wealth-management-halo" +commodity_id = "financial_services" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "nordhavn-wealth-management-halo" +commodity_id = "legal_services" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "nordhavn-standard-advisory-volume" +corp_id = "nordhavn-financial" +product_name = "Nordhavn Standard Advisory" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "financial_advisory" +base_premium_multiplier = 3.5 +premium_floor = 0.22 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "nordhavn-wealth-management-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "nordhavn-standard-advisory-volume" +commodity_id = "financial_services" +quantity = 1.60 + +[[brand_inputs]] +brand_product_id = "nordhavn-standard-advisory-volume" +commodity_id = "legal_services" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "meridional-banking-premium-halo" +corp_id = "meridional-banking" +product_name = "Meridional Premium Account" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "financial_institution" +base_premium_multiplier = 10.0 +premium_floor = 0.62 +origin_system = "GJ 674" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "meridional-banking-premium-halo" +commodity_id = "financial_services" +quantity = 0.50 + +[[brand_inputs]] +brand_product_id = "meridional-banking-premium-halo" +commodity_id = "legal_services" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "meridional-banking-standard-volume" +corp_id = "meridional-banking" +product_name = "Meridional Standard Account" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "financial_institution" +base_premium_multiplier = 1.9 +premium_floor = 0.10 +origin_system = "GJ 674" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "meridional-banking-premium-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "meridional-banking-standard-volume" +commodity_id = "financial_services" +quantity = 2.50 + +[[brand_inputs]] +brand_product_id = "meridional-banking-standard-volume" +commodity_id = "legal_services" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "hartsteen-premium-counsel-halo" +corp_id = "hartsteen-legal" +product_name = "Hartsteen Premium Counsel" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "legal_services_brand" +base_premium_multiplier = 12.0 +premium_floor = 0.72 +origin_system = "GJ 395" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "hartsteen-premium-counsel-halo" +commodity_id = "legal_services" +quantity = 0.45 + +[[brand_products]] +brand_product_id = "hartsteen-standard-brief-volume" +corp_id = "hartsteen-legal" +product_name = "Hartsteen Standard Brief" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "legal_services_brand" +base_premium_multiplier = 3.0 +premium_floor = 0.18 +origin_system = "GJ 395" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "hartsteen-premium-counsel-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "hartsteen-standard-brief-volume" +commodity_id = "legal_services" +quantity = 1.80 + +[[brand_products]] +brand_product_id = "hakone-signature-halo" +corp_id = "hakone-hospitality" +product_name = "Hakone Signature" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "luxury_hospitality" +base_premium_multiplier = 13.0 +premium_floor = 0.78 +origin_system = "GJ 687" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "hakone-signature-halo" +commodity_id = "hospitality" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "hakone-signature-halo" +commodity_id = "agricultural_produce" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "hakone-standard-volume" +corp_id = "hakone-hospitality" +product_name = "Hakone Standard" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "luxury_hospitality" +base_premium_multiplier = 3.8 +premium_floor = 0.25 +origin_system = "GJ 687" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "hakone-signature-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "hakone-standard-volume" +commodity_id = "hospitality" +quantity = 1.40 + +[[brand_inputs]] +brand_product_id = "hakone-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "calluna-premium-wellness-halo" +corp_id = "calluna-wellness" +product_name = "Calluna Premium Wellness" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "wellness_spa" +base_premium_multiplier = 10.0 +premium_floor = 0.60 +origin_system = "GJ 845" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "calluna-premium-wellness-halo" +commodity_id = "hospitality" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "calluna-premium-wellness-halo" +commodity_id = "organic_compounds" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "calluna-standard-program-volume" +corp_id = "calluna-wellness" +product_name = "Calluna Standard Program" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "wellness_spa" +base_premium_multiplier = 2.8 +premium_floor = 0.16 +origin_system = "GJ 845" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "calluna-premium-wellness-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "calluna-standard-program-volume" +commodity_id = "hospitality" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "calluna-standard-program-volume" +commodity_id = "organic_compounds" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "coriolis-premium-exchange-halo" +corp_id = "coriolis-exchange" +product_name = "Coriolis Premium Exchange" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "financial_exchange" +base_premium_multiplier = 10.0 +premium_floor = 0.62 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "coriolis-premium-exchange-halo" +commodity_id = "financial_services" +quantity = 0.60 + +[[brand_inputs]] +brand_product_id = "coriolis-premium-exchange-halo" +commodity_id = "electronics" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "coriolis-standard-volume" +corp_id = "coriolis-exchange" +product_name = "Coriolis Standard" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "financial_exchange" +base_premium_multiplier = 1.8 +premium_floor = 0.10 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "coriolis-premium-exchange-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "coriolis-standard-volume" +commodity_id = "financial_services" +quantity = 3.00 + +[[brand_inputs]] +brand_product_id = "coriolis-standard-volume" +commodity_id = "electronics" +quantity = 0.60 + +[[brand_products]] +brand_product_id = "spitsbergen-expedition-halo" +corp_id = "spitsbergen-retreat" +product_name = "Spitsbergen Expedition" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "wilderness_hospitality" +base_premium_multiplier = 15.0 +premium_floor = 0.90 +origin_system = "GJ 624" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "spitsbergen-expedition-halo" +commodity_id = "hospitality" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "spitsbergen-expedition-halo" +commodity_id = "transport_vehicles" +quantity = 0.08 + +[[brand_products]] +brand_product_id = "spitsbergen-standard-lodge-volume" +corp_id = "spitsbergen-retreat" +product_name = "Spitsbergen Standard Lodge" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "wilderness_hospitality" +base_premium_multiplier = 4.5 +premium_floor = 0.28 +origin_system = "GJ 624" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "spitsbergen-expedition-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "spitsbergen-standard-lodge-volume" +commodity_id = "hospitality" +quantity = 0.80 + +[[brand_inputs]] +brand_product_id = "spitsbergen-standard-lodge-volume" +commodity_id = "transport_vehicles" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "salud-priority-service-halo" +corp_id = "salud-alliance" +product_name = "Salud Alliance Priority Service" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "medical_distribution" +base_premium_multiplier = 8.0 +premium_floor = 0.50 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "institutional" + +[[brand_inputs]] +brand_product_id = "salud-priority-service-halo" +commodity_id = "medical_goods" +quantity = 0.45 + +[[brand_inputs]] +brand_product_id = "salud-priority-service-halo" +commodity_id = "transport_vehicles" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "salud-standard-distribution-volume" +corp_id = "salud-alliance" +product_name = "Salud Alliance Standard Distribution" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "medical_distribution" +base_premium_multiplier = 2.0 +premium_floor = 0.12 +origin_system = "GJ 884" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "salud-priority-service-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "salud-standard-distribution-volume" +commodity_id = "medical_goods" +quantity = 2.00 + +[[brand_inputs]] +brand_product_id = "salud-standard-distribution-volume" +commodity_id = "transport_vehicles" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "aldgate-premium-trust-halo" +corp_id = "aldgate-trust" +product_name = "Aldgate Premium Trust" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "fiduciary_trust_services" +base_premium_multiplier = 12.0 +premium_floor = 0.72 +origin_system = "GJ 661A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "aldgate-premium-trust-halo" +commodity_id = "legal_services" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "aldgate-premium-trust-halo" +commodity_id = "financial_services" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "aldgate-standard-trust-volume" +corp_id = "aldgate-trust" +product_name = "Aldgate Standard Trust" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "fiduciary_trust_services" +base_premium_multiplier = 3.0 +premium_floor = 0.18 +origin_system = "GJ 661A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "aldgate-premium-trust-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "aldgate-standard-trust-volume" +commodity_id = "legal_services" +quantity = 1.60 + +[[brand_inputs]] +brand_product_id = "aldgate-standard-trust-volume" +commodity_id = "financial_services" +quantity = 0.80 + +[[brand_products]] +brand_product_id = "lusaka-premium-analysis-halo" +corp_id = "lusaka-advisory" +product_name = "Lusaka Premium Analysis" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "economic_advisory" +base_premium_multiplier = 11.0 +premium_floor = 0.68 +origin_system = "GJ 1111" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "lusaka-premium-analysis-halo" +commodity_id = "legal_services" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "lusaka-premium-analysis-halo" +commodity_id = "financial_services" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "lusaka-standard-brief-volume" +corp_id = "lusaka-advisory" +product_name = "Lusaka Standard Brief" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "economic_advisory" +base_premium_multiplier = 2.8 +premium_floor = 0.16 +origin_system = "GJ 1111" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "lusaka-premium-analysis-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "lusaka-standard-brief-volume" +commodity_id = "legal_services" +quantity = 1.40 + +[[brand_inputs]] +brand_product_id = "lusaka-standard-brief-volume" +commodity_id = "financial_services" +quantity = 0.60 + +[[brand_products]] +brand_product_id = "saigon-premium-advisory-halo" +corp_id = "saigon-consulting" +product_name = "Saigon Premium Advisory" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "business_consulting" +base_premium_multiplier = 10.0 +premium_floor = 0.62 +origin_system = "GJ 17" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "saigon-premium-advisory-halo" +commodity_id = "legal_services" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "saigon-premium-advisory-halo" +commodity_id = "financial_services" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "saigon-standard-consulting-volume" +corp_id = "saigon-consulting" +product_name = "Saigon Standard Consulting" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "business_consulting" +base_premium_multiplier = 2.6 +premium_floor = 0.15 +origin_system = "GJ 17" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "saigon-premium-advisory-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "saigon-standard-consulting-volume" +commodity_id = "legal_services" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "saigon-standard-consulting-volume" +commodity_id = "financial_services" +quantity = 0.80 + +[[brand_products]] +brand_product_id = "nexus-way-premium-passage-halo" +corp_id = "nexus-way-express" +product_name = "Nexus Way Premium Passage" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "premium_transit" +base_premium_multiplier = 9.0 +premium_floor = 0.55 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "nexus-way-premium-passage-halo" +commodity_id = "transport_vehicles" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "nexus-way-premium-passage-halo" +commodity_id = "hospitality" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "nexus-way-standard-volume" +corp_id = "nexus-way-express" +product_name = "Nexus Way Standard" +brand_category = "service_premium" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "premium_transit" +base_premium_multiplier = 2.4 +premium_floor = 0.14 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "nexus-way-premium-passage-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "nexus-way-standard-volume" +commodity_id = "transport_vehicles" +quantity = 0.90 + +[[brand_inputs]] +brand_product_id = "nexus-way-standard-volume" +commodity_id = "hospitality" +quantity = 0.40 + + +# ========================================================================== +# COMMODITY_BRANDED — INVENTED (17 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "trek-standard-pro-halo" +corp_id = "trek-standard" +product_name = "Trek Standard Pro Edition" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "general_equipment" +base_premium_multiplier = 2.5 +premium_floor = 0.14 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "trek-standard-pro-halo" +commodity_id = "consumer_goods" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "trek-standard-pro-halo" +commodity_id = "advanced_alloys" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "trek-standard-basic-volume" +corp_id = "trek-standard" +product_name = "Trek Standard Basic" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "general_equipment" +base_premium_multiplier = 1.3 +premium_floor = 0.06 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "trek-standard-pro-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "trek-standard-basic-volume" +commodity_id = "consumer_goods" +quantity = 1.50 + +[[brand_inputs]] +brand_product_id = "trek-standard-basic-volume" +commodity_id = "advanced_alloys" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "workshift-pro-series-halo" +corp_id = "workshift-apparel" +product_name = "Workshift Pro Series" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "utility_workwear" +base_premium_multiplier = 2.2 +premium_floor = 0.12 +origin_system = "GJ 178" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "workshift-pro-series-halo" +commodity_id = "textiles" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "workshift-pro-series-halo" +commodity_id = "chemicals" +quantity = 0.05 + +[[brand_products]] +brand_product_id = "workshift-standard-volume" +corp_id = "workshift-apparel" +product_name = "Workshift Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "utility_workwear" +base_premium_multiplier = 1.2 +premium_floor = 0.06 +origin_system = "GJ 178" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "workshift-pro-series-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "workshift-standard-volume" +commodity_id = "textiles" +quantity = 2.50 + +[[brand_inputs]] +brand_product_id = "workshift-standard-volume" +commodity_id = "chemicals" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "commonstock-select-halo" +corp_id = "commonstock-foods" +product_name = "Commonstock Select" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "mass_food" +base_premium_multiplier = 1.8 +premium_floor = 0.09 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "commonstock-select-halo" +commodity_id = "agricultural_produce" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "commonstock-select-halo" +commodity_id = "processed_food" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "commonstock-standard-volume" +corp_id = "commonstock-foods" +product_name = "Commonstock Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "mass_food" +base_premium_multiplier = 1.2 +premium_floor = 0.05 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "commonstock-select-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "commonstock-standard-volume" +commodity_id = "agricultural_produce" +quantity = 2.00 + +[[brand_inputs]] +brand_product_id = "commonstock-standard-volume" +commodity_id = "processed_food" +quantity = 1.50 + +[[brand_products]] +brand_product_id = "fieldborn-premium-grade-halo" +corp_id = "fieldborn-grain" +product_name = "Fieldborn Premium Grade" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "agricultural_commodities" +base_premium_multiplier = 1.8 +premium_floor = 0.09 +origin_system = "GJ 3325" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "fieldborn-premium-grade-halo" +commodity_id = "agricultural_produce" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "fieldborn-standard-volume" +corp_id = "fieldborn-grain" +product_name = "Fieldborn Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "agricultural_commodities" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 3325" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "fieldborn-premium-grade-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "fieldborn-standard-volume" +commodity_id = "agricultural_produce" +quantity = 3.50 + +[[brand_products]] +brand_product_id = "matosinhos-premium-catch-halo" +corp_id = "matosinhos-fishing" +product_name = "Matosinhos Premium Catch" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "fishery_produce" +base_premium_multiplier = 1.9 +premium_floor = 0.10 +origin_system = "GJ 4A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "matosinhos-premium-catch-halo" +commodity_id = "agricultural_produce" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "matosinhos-premium-catch-halo" +commodity_id = "processed_food" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "matosinhos-standard-volume" +corp_id = "matosinhos-fishing" +product_name = "Matosinhos Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "fishery_produce" +base_premium_multiplier = 1.2 +premium_floor = 0.05 +origin_system = "GJ 4A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "matosinhos-premium-catch-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "matosinhos-standard-volume" +commodity_id = "agricultural_produce" +quantity = 2.50 + +[[brand_inputs]] +brand_product_id = "matosinhos-standard-volume" +commodity_id = "processed_food" +quantity = 0.80 + +[[brand_products]] +brand_product_id = "gronnmark-select-halo" +corp_id = "gronnmark-consumer" +product_name = "Grønnmark Select" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.7 +premium_floor = 0.08 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "gronnmark-select-halo" +commodity_id = "consumer_goods" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "gronnmark-standard-volume" +corp_id = "gronnmark-consumer" +product_name = "Grønnmark Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "gronnmark-select-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "gronnmark-standard-volume" +commodity_id = "consumer_goods" +quantity = 3.00 + +[[brand_products]] +brand_product_id = "koryo-premium-halo" +corp_id = "koryo-standard" +product_name = "Koryo Premium" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.7 +premium_floor = 0.08 +origin_system = "GJ 3728B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "koryo-premium-halo" +commodity_id = "consumer_goods" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "koryo-premium-halo" +commodity_id = "processed_food" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "koryo-standard-volume" +corp_id = "koryo-standard" +product_name = "Koryo Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 3728B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "koryo-premium-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "koryo-standard-volume" +commodity_id = "consumer_goods" +quantity = 2.50 + +[[brand_inputs]] +brand_product_id = "koryo-standard-volume" +commodity_id = "processed_food" +quantity = 1.00 + +[[brand_products]] +brand_product_id = "iberian-select-halo" +corp_id = "iberian-standard-foods" +product_name = "Iberian Select" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "iberian_food_commodities" +base_premium_multiplier = 1.9 +premium_floor = 0.10 +origin_system = "GJ 1002" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "iberian-select-halo" +commodity_id = "agricultural_produce" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "iberian-select-halo" +commodity_id = "processed_food" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "iberian-standard-volume" +corp_id = "iberian-standard-foods" +product_name = "Iberian Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "iberian_food_commodities" +base_premium_multiplier = 1.1 +premium_floor = 0.05 +origin_system = "GJ 1002" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "iberian-select-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "iberian-standard-volume" +commodity_id = "agricultural_produce" +quantity = 2.80 + +[[brand_inputs]] +brand_product_id = "iberian-standard-volume" +commodity_id = "processed_food" +quantity = 1.20 + +[[brand_products]] +brand_product_id = "plainfield-reserve-grade-halo" +corp_id = "plainfield-agricultural" +product_name = "Plainfield Reserve Grade" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "agricultural_commodities" +base_premium_multiplier = 1.8 +premium_floor = 0.09 +origin_system = "GJ 273" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "plainfield-reserve-grade-halo" +commodity_id = "agricultural_produce" +quantity = 0.55 + +[[brand_products]] +brand_product_id = "plainfield-standard-volume" +corp_id = "plainfield-agricultural" +product_name = "Plainfield Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "agricultural_commodities" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 273" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "plainfield-reserve-grade-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "plainfield-standard-volume" +commodity_id = "agricultural_produce" +quantity = 4.00 + +[[brand_products]] +brand_product_id = "gridsupply-pro-series-halo" +corp_id = "gridsupply-electronics" +product_name = "Gridsupply Pro Series" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "basic_electronics" +base_premium_multiplier = 1.8 +premium_floor = 0.09 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "gridsupply-pro-series-halo" +commodity_id = "electronics" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "gridsupply-standard-volume" +corp_id = "gridsupply-electronics" +product_name = "Gridsupply Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "basic_electronics" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "gridsupply-pro-series-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "gridsupply-standard-volume" +commodity_id = "electronics" +quantity = 3.50 + +[[brand_products]] +brand_product_id = "lowlands-select-halo" +corp_id = "lowlands-consumer" +product_name = "Lowlands Select" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.6 +premium_floor = 0.08 +origin_system = "GJ 506" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "lowlands-select-halo" +commodity_id = "consumer_goods" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "lowlands-standard-volume" +corp_id = "lowlands-consumer" +product_name = "Lowlands Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 506" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "lowlands-select-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "lowlands-standard-volume" +commodity_id = "consumer_goods" +quantity = 3.00 + +[[brand_products]] +brand_product_id = "makuti-premium-halo" +corp_id = "makuti-consumer" +product_name = "Makuti Premium" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "consumer_goods_cooperative" +base_premium_multiplier = 1.6 +premium_floor = 0.08 +origin_system = "GJ 693" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "makuti-premium-halo" +commodity_id = "consumer_goods" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "makuti-premium-halo" +commodity_id = "agricultural_produce" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "makuti-standard-volume" +corp_id = "makuti-consumer" +product_name = "Makuti Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "consumer_goods_cooperative" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 693" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "makuti-premium-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "makuti-standard-volume" +commodity_id = "consumer_goods" +quantity = 2.50 + +[[brand_inputs]] +brand_product_id = "makuti-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.80 + +[[brand_products]] +brand_product_id = "zulu-premium-select-halo" +corp_id = "zulu-consumer" +product_name = "Zulu Premium Select" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.6 +premium_floor = 0.08 +origin_system = "GJ 1111" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "zulu-premium-select-halo" +commodity_id = "consumer_goods" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "zulu-premium-select-halo" +commodity_id = "agricultural_produce" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "zulu-standard-volume" +corp_id = "zulu-consumer" +product_name = "Zulu Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 1111" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "zulu-premium-select-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "zulu-standard-volume" +commodity_id = "consumer_goods" +quantity = 2.50 + +[[brand_inputs]] +brand_product_id = "zulu-standard-volume" +commodity_id = "agricultural_produce" +quantity = 0.60 + +[[brand_products]] +brand_product_id = "westfield-common-select-halo" +corp_id = "westfield-common" +product_name = "Westfield Common Select" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.6 +premium_floor = 0.08 +origin_system = "GJ 526" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "westfield-common-select-halo" +commodity_id = "consumer_goods" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "westfield-common-standard-volume" +corp_id = "westfield-common" +product_name = "Westfield Common Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "consumer_goods_brand" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 526" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "westfield-common-select-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "westfield-common-standard-volume" +commodity_id = "consumer_goods" +quantity = 2.80 + +[[brand_products]] +brand_product_id = "eastbay-premium-halo" +corp_id = "eastbay-trading" +product_name = "Eastbay Premium" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "commodity_trading_brand" +base_premium_multiplier = 1.6 +premium_floor = 0.08 +origin_system = "GJ 53A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "eastbay-premium-halo" +commodity_id = "consumer_goods" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "eastbay-standard-volume" +corp_id = "eastbay-trading" +product_name = "Eastbay Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "commodity_trading_brand" +base_premium_multiplier = 1.1 +premium_floor = 0.04 +origin_system = "GJ 53A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "eastbay-premium-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "eastbay-standard-volume" +commodity_id = "consumer_goods" +quantity = 3.00 + +[[brand_products]] +brand_product_id = "reach-transport-premium-halo" +corp_id = "reach-transport" +product_name = "Reach Transport Premium" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "standardized_transport" +base_premium_multiplier = 1.8 +premium_floor = 0.09 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "reach-transport-premium-halo" +commodity_id = "transport_vehicles" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "reach-transport-standard-volume" +corp_id = "reach-transport" +product_name = "Reach Transport Standard" +brand_category = "commodity_branded" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "standardized_transport" +base_premium_multiplier = 1.2 +premium_floor = 0.05 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "reach-transport-premium-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "reach-transport-standard-volume" +commodity_id = "transport_vehicles" +quantity = 2.00 + + +# ========================================================================== +# DESIGN_HERITAGE — INVENTED (7 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "steinbach-signature-collection-halo" +corp_id = "steinbach-furniture" +product_name = "Steinbach Signature Collection" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "furniture_design" +base_premium_multiplier = 16.0 +premium_floor = 0.90 +origin_system = "GJ 454" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "steinbach-signature-collection-halo" +commodity_id = "timber" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "steinbach-signature-collection-halo" +commodity_id = "advanced_alloys" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "steinbach-atelier-series-volume" +corp_id = "steinbach-furniture" +product_name = "Steinbach Atelier Series" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "furniture_design" +base_premium_multiplier = 4.5 +premium_floor = 0.28 +origin_system = "GJ 454" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "steinbach-signature-collection-halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "steinbach-atelier-series-volume" +commodity_id = "timber" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "steinbach-atelier-series-volume" +commodity_id = "advanced_alloys" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "kyoei-master-collection-halo" +corp_id = "kyoei-design" +product_name = "Kyōei Master Collection" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "industrial_design" +base_premium_multiplier = 15.0 +premium_floor = 0.85 +origin_system = "GJ 205" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "kyoei-master-collection-halo" +commodity_id = "advanced_alloys" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "kyoei-master-collection-halo" +commodity_id = "electronics" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "kyoei-standard-series-volume" +corp_id = "kyoei-design" +product_name = "Kyōei Standard Series" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "industrial_design" +base_premium_multiplier = 4.0 +premium_floor = 0.25 +origin_system = "GJ 205" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kyoei-master-collection-halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "kyoei-standard-series-volume" +commodity_id = "advanced_alloys" +quantity = 0.70 + +[[brand_inputs]] +brand_product_id = "kyoei-standard-series-volume" +commodity_id = "electronics" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "vlaams-atelier-master-halo" +corp_id = "vlaams-atelier" +product_name = "Vlaams Master Edition" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "flemish_design_tradition" +base_premium_multiplier = 14.0 +premium_floor = 0.80 +origin_system = "GJ 103" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "vlaams-atelier-master-halo" +commodity_id = "textiles" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "vlaams-atelier-master-halo" +commodity_id = "timber" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "vlaams-atelier-standard-volume" +corp_id = "vlaams-atelier" +product_name = "Vlaams Standard" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "flemish_design_tradition" +base_premium_multiplier = 3.8 +premium_floor = 0.24 +origin_system = "GJ 103" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "vlaams-atelier-master-halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "vlaams-atelier-standard-volume" +commodity_id = "textiles" +quantity = 0.70 + +[[brand_inputs]] +brand_product_id = "vlaams-atelier-standard-volume" +commodity_id = "timber" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "sertanejo-signature-halo" +corp_id = "sertanejo-design" +product_name = "Sertanejo Signature" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "brazilian_industrial_design" +base_premium_multiplier = 13.0 +premium_floor = 0.75 +origin_system = "GJ 67" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "sertanejo-signature-halo" +commodity_id = "timber" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "sertanejo-signature-halo" +commodity_id = "advanced_alloys" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "sertanejo-standard-volume" +corp_id = "sertanejo-design" +product_name = "Sertanejo Standard" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "brazilian_industrial_design" +base_premium_multiplier = 3.5 +premium_floor = 0.22 +origin_system = "GJ 67" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "sertanejo-signature-halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "sertanejo-standard-volume" +commodity_id = "timber" +quantity = 1.00 + +[[brand_inputs]] +brand_product_id = "sertanejo-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "cape-modern-signature-halo" +corp_id = "cape-modern" +product_name = "Cape Modern Signature" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "south_african_modernist_design" +base_premium_multiplier = 13.0 +premium_floor = 0.75 +origin_system = "GJ 213" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "cape-modern-signature-halo" +commodity_id = "advanced_alloys" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "cape-modern-signature-halo" +commodity_id = "stone" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "cape-modern-standard-volume" +corp_id = "cape-modern" +product_name = "Cape Modern Standard" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "south_african_modernist_design" +base_premium_multiplier = 3.5 +premium_floor = 0.22 +origin_system = "GJ 213" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "cape-modern-signature-halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "cape-modern-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.80 + +[[brand_inputs]] +brand_product_id = "cape-modern-standard-volume" +commodity_id = "stone" +quantity = 0.60 + +[[brand_products]] +brand_product_id = "calloway-workshop-signature-halo" +corp_id = "calloway-workshop" +product_name = "Calloway Workshop Signature" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "anglo_craft_furniture" +base_premium_multiplier = 12.0 +premium_floor = 0.68 +origin_system = "GJ 3325" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "flagship" + +[[brand_inputs]] +brand_product_id = "calloway-workshop-signature-halo" +commodity_id = "timber" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "calloway-workshop-signature-halo" +commodity_id = "stone" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "calloway-workshop-standard-volume" +corp_id = "calloway-workshop" +product_name = "Calloway Workshop Standard" +brand_category = "design_heritage" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "anglo_craft_furniture" +base_premium_multiplier = 3.2 +premium_floor = 0.20 +origin_system = "GJ 3325" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "calloway-workshop-signature-halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "calloway-workshop-standard-volume" +commodity_id = "timber" +quantity = 1.20 + +[[brand_inputs]] +brand_product_id = "calloway-workshop-standard-volume" +commodity_id = "stone" +quantity = 0.40 + + +# ========================================================================== +# HERITAGE_CRAFT — INVENTED (11 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "orkney-master-series-halo" +corp_id = "orkney-ceramics" +product_name = "Orkney Master Series" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "island_ceramics" +base_premium_multiplier = 9.0 +premium_floor = 0.52 +origin_system = "GJ 845" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "orkney-master-series-halo" +commodity_id = "stone" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "orkney-master-series-halo" +commodity_id = "chemicals" +quantity = 0.08 + +[[brand_products]] +brand_product_id = "orkney-standard-volume" +corp_id = "orkney-ceramics" +product_name = "Orkney Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "island_ceramics" +base_premium_multiplier = 2.8 +premium_floor = 0.16 +origin_system = "GJ 845" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "orkney-master-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "orkney-standard-volume" +commodity_id = "stone" +quantity = 1.00 + +[[brand_inputs]] +brand_product_id = "orkney-standard-volume" +commodity_id = "chemicals" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "norrland-master-series-halo" +corp_id = "norrland-woodcraft" +product_name = "Norrland Master Series" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "nordic_woodworking" +base_premium_multiplier = 9.5 +premium_floor = 0.55 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "norrland-master-series-halo" +commodity_id = "timber" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "norrland-standard-volume" +corp_id = "norrland-woodcraft" +product_name = "Norrland Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "nordic_woodworking" +base_premium_multiplier = 2.8 +premium_floor = 0.16 +origin_system = "GJ 3737" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "norrland-master-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "norrland-standard-volume" +commodity_id = "timber" +quantity = 1.50 + +[[brand_products]] +brand_product_id = "hangil-master-celadon-halo" +corp_id = "hangil-celadon" +product_name = "Hangil Master Celadon" +brand_category = "heritage_craft" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "korean_celadon_ceramics" +base_premium_multiplier = 12.0 +premium_floor = 0.68 +origin_system = "GJ 754" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "hangil-master-celadon-halo" +commodity_id = "stone" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "hangil-master-celadon-halo" +commodity_id = "chemicals" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "hangil-standard-celadon-volume" +corp_id = "hangil-celadon" +product_name = "Hangil Standard Celadon" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "korean_celadon_ceramics" +base_premium_multiplier = 3.0 +premium_floor = 0.18 +origin_system = "GJ 754" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "hangil-master-celadon-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "hangil-standard-celadon-volume" +commodity_id = "stone" +quantity = 0.90 + +[[brand_inputs]] +brand_product_id = "hangil-standard-celadon-volume" +commodity_id = "chemicals" +quantity = 0.25 + +[[brand_products]] +brand_product_id = "shetland-master-collection-halo" +corp_id = "shetland-wool" +product_name = "Shetland Master Collection" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "heritage_wool_knit" +base_premium_multiplier = 8.5 +premium_floor = 0.48 +origin_system = "GJ 661A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "shetland-master-collection-halo" +commodity_id = "textiles" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "shetland-master-collection-halo" +commodity_id = "organic_compounds" +quantity = 0.08 + +[[brand_products]] +brand_product_id = "shetland-standard-volume" +corp_id = "shetland-wool" +product_name = "Shetland Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "heritage_wool_knit" +base_premium_multiplier = 2.5 +premium_floor = 0.14 +origin_system = "GJ 661A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "shetland-master-collection-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "shetland-standard-volume" +commodity_id = "textiles" +quantity = 0.90 + +[[brand_inputs]] +brand_product_id = "shetland-standard-volume" +commodity_id = "organic_compounds" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "lusitanian-master-glass-halo" +corp_id = "lusitanian-glass" +product_name = "Lusitanian Master Glass" +brand_category = "heritage_craft" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "portuguese_glass_tradition" +base_premium_multiplier = 10.0 +premium_floor = 0.58 +origin_system = "GJ 1002" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "lusitanian-master-glass-halo" +commodity_id = "stone" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "lusitanian-master-glass-halo" +commodity_id = "chemicals" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "lusitanian-standard-volume" +corp_id = "lusitanian-glass" +product_name = "Lusitanian Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "portuguese_glass_tradition" +base_premium_multiplier = 2.8 +premium_floor = 0.16 +origin_system = "GJ 1002" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "lusitanian-master-glass-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "lusitanian-standard-volume" +commodity_id = "stone" +quantity = 0.70 + +[[brand_inputs]] +brand_product_id = "lusitanian-standard-volume" +commodity_id = "chemicals" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "sendai-master-forge-halo" +corp_id = "sendai-forge" +product_name = "Sendai Master Forge" +brand_category = "heritage_craft" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "japanese_metalwork" +base_premium_multiplier = 14.0 +premium_floor = 0.80 +origin_system = "GJ 205" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "sendai-master-forge-halo" +commodity_id = "advanced_alloys" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "sendai-master-forge-halo" +commodity_id = "stone" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "sendai-standard-volume" +corp_id = "sendai-forge" +product_name = "Sendai Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "japanese_metalwork" +base_premium_multiplier = 3.2 +premium_floor = 0.20 +origin_system = "GJ 205" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "sendai-master-forge-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "sendai-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.80 + +[[brand_inputs]] +brand_product_id = "sendai-standard-volume" +commodity_id = "stone" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "kalahari-master-collection-halo" +corp_id = "kalahari-leatherworks" +product_name = "Kalahari Master Collection" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "southern_african_leather" +base_premium_multiplier = 9.0 +premium_floor = 0.52 +origin_system = "GJ 222A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "kalahari-master-collection-halo" +commodity_id = "organic_compounds" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "kalahari-master-collection-halo" +commodity_id = "textiles" +quantity = 0.10 + +[[brand_products]] +brand_product_id = "kalahari-standard-volume" +corp_id = "kalahari-leatherworks" +product_name = "Kalahari Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "southern_african_leather" +base_premium_multiplier = 2.6 +premium_floor = 0.15 +origin_system = "GJ 222A" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "kalahari-master-collection-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "kalahari-standard-volume" +commodity_id = "organic_compounds" +quantity = 1.00 + +[[brand_inputs]] +brand_product_id = "kalahari-standard-volume" +commodity_id = "textiles" +quantity = 0.30 + +[[brand_products]] +brand_product_id = "bavarian-master-series-halo" +corp_id = "bavarian-craft" +product_name = "Bavarian Master Series" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "bavarian_technical_craft" +base_premium_multiplier = 9.5 +premium_floor = 0.55 +origin_system = "GJ 505A" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "bavarian-master-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.20 + +[[brand_inputs]] +brand_product_id = "bavarian-master-series-halo" +commodity_id = "timber" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "bavarian-standard-craft-volume" +corp_id = "bavarian-craft" +product_name = "Bavarian Standard Craft" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "bavarian_technical_craft" +base_premium_multiplier = 2.8 +premium_floor = 0.16 +origin_system = "GJ 505A" +terroir_locked = false +currency_denomination = "mark" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "bavarian-master-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "bavarian-standard-craft-volume" +commodity_id = "advanced_alloys" +quantity = 0.65 + +[[brand_inputs]] +brand_product_id = "bavarian-standard-craft-volume" +commodity_id = "timber" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "pembrokeshire-master-series-halo" +corp_id = "pembrokeshire-smithy" +product_name = "Pembrokeshire Master Series" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "capped" +product_subcategory = "anglo_metalworking" +base_premium_multiplier = 9.0 +premium_floor = 0.52 +origin_system = "GJ 194B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "pembrokeshire-master-series-halo" +commodity_id = "refined_metals" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "pembrokeshire-master-series-halo" +commodity_id = "advanced_alloys" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "pembrokeshire-standard-volume" +corp_id = "pembrokeshire-smithy" +product_name = "Pembrokeshire Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "anglo_metalworking" +base_premium_multiplier = 2.5 +premium_floor = 0.14 +origin_system = "GJ 194B" +terroir_locked = false +currency_denomination = "tractus" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "pembrokeshire-master-series-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "pembrokeshire-standard-volume" +commodity_id = "refined_metals" +quantity = 1.00 + +[[brand_inputs]] +brand_product_id = "pembrokeshire-standard-volume" +commodity_id = "advanced_alloys" +quantity = 0.40 + +[[brand_products]] +brand_product_id = "iznik-master-collection-halo" +corp_id = "iznik-atelier" +product_name = "Iznik Master Collection" +brand_category = "heritage_craft" +value_trajectory = "appreciating" +scarcity_class = "capped" +product_subcategory = "ottoman_tile_ceramics" +base_premium_multiplier = 13.0 +premium_floor = 0.75 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = true +brand_tier = "halo" +price_tier = "luxury" + +[[brand_inputs]] +brand_product_id = "iznik-master-collection-halo" +commodity_id = "stone" +quantity = 0.30 + +[[brand_inputs]] +brand_product_id = "iznik-master-collection-halo" +commodity_id = "chemicals" +quantity = 0.12 + +[[brand_products]] +brand_product_id = "iznik-standard-volume" +corp_id = "iznik-atelier" +product_name = "Iznik Standard" +brand_category = "heritage_craft" +value_trajectory = "timeless" +scarcity_class = "constrained" +product_subcategory = "ottoman_tile_ceramics" +base_premium_multiplier = 3.2 +premium_floor = 0.20 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "iznik-master-collection-halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "iznik-standard-volume" +commodity_id = "stone" +quantity = 1.10 + +[[brand_inputs]] +brand_product_id = "iznik-standard-volume" +commodity_id = "chemicals" +quantity = 0.35 + + +# ========================================================================== +# PLATFORM_CATALOGUE — INVENTED (3 corps) +# ========================================================================== + +[[brand_products]] +brand_product_id = "open-corridor-premium-halo" +corp_id = "open-corridor-stream" +product_name = "Open Corridor Premium" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "cross_corridor_streaming" +base_premium_multiplier = 2.8 +premium_floor = 0.16 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "open-corridor-premium-halo" +commodity_id = "entertainment" +quantity = 0.35 + +[[brand_inputs]] +brand_product_id = "open-corridor-premium-halo" +commodity_id = "electronics" +quantity = 0.15 + +[[brand_products]] +brand_product_id = "open-corridor-standard-volume" +corp_id = "open-corridor-stream" +product_name = "Open Corridor Standard" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "cross_corridor_streaming" +base_premium_multiplier = 1.2 +premium_floor = 0.06 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "open-corridor-premium-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "open-corridor-standard-volume" +commodity_id = "entertainment" +quantity = 2.80 + +[[brand_inputs]] +brand_product_id = "open-corridor-standard-volume" +commodity_id = "electronics" +quantity = 0.50 + +[[brand_products]] +brand_product_id = "reach-archive-premium-access-halo" +corp_id = "reach-archive-standard" +product_name = "Reach Archive Premium Access" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "digital_catalogue_archive" +base_premium_multiplier = 3.0 +premium_floor = 0.18 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "reach-archive-premium-access-halo" +commodity_id = "entertainment" +quantity = 0.40 + +[[brand_inputs]] +brand_product_id = "reach-archive-premium-access-halo" +commodity_id = "electronics" +quantity = 0.20 + +[[brand_products]] +brand_product_id = "reach-archive-standard-volume" +corp_id = "reach-archive-standard" +product_name = "Reach Archive Standard" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "digital_catalogue_archive" +base_premium_multiplier = 1.2 +premium_floor = 0.06 +origin_system = "GJ 244A" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "reach-archive-premium-access-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "reach-archive-standard-volume" +commodity_id = "entertainment" +quantity = 3.20 + +[[brand_inputs]] +brand_product_id = "reach-archive-standard-volume" +commodity_id = "electronics" +quantity = 0.70 + +[[brand_products]] +brand_product_id = "transit-library-premium-halo" +corp_id = "transit-library" +product_name = "Transit Library Premium" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "scalable" +product_subcategory = "transit_content_catalogue" +base_premium_multiplier = 2.5 +premium_floor = 0.14 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "halo" +price_tier = "premium" + +[[brand_inputs]] +brand_product_id = "transit-library-premium-halo" +commodity_id = "entertainment" +quantity = 0.25 + +[[brand_inputs]] +brand_product_id = "transit-library-premium-halo" +commodity_id = "electronics" +quantity = 0.12 + +[[brand_products]] +brand_product_id = "transit-library-standard-volume" +corp_id = "transit-library" +product_name = "Transit Library Standard" +brand_category = "platform_catalogue" +value_trajectory = "timeless" +scarcity_class = "unlimited" +product_subcategory = "transit_content_catalogue" +base_premium_multiplier = 1.2 +premium_floor = 0.06 +origin_system = "GJ 380" +terroir_locked = false +currency_denomination = "mixed" +shadow_viable = false +brand_tier = "volume" +halo_brand_id = "transit-library-premium-halo" +price_tier = "mass" + +[[brand_inputs]] +brand_product_id = "transit-library-standard-volume" +commodity_id = "entertainment" +quantity = 2.00 + +[[brand_inputs]] +brand_product_id = "transit-library-standard-volume" +commodity_id = "electronics" +quantity = 0.40 diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d-1/globe.png b/wiki/star-systems/GJ-0/bodies/GJ0d-1/globe.png new file mode 100644 index 000000000..69aca0b1d Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0d-1/globe.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d-1/heightmap.png b/wiki/star-systems/GJ-0/bodies/GJ0d-1/heightmap.png new file mode 100644 index 000000000..4cbe7edd9 Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0d-1/heightmap.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d-1/index.md b/wiki/star-systems/GJ-0/bodies/GJ0d-1/index.md new file mode 100644 index 000000000..3d9926e34 --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0d-1/index.md @@ -0,0 +1,50 @@ +--- +id: GJ0d-1 +name: Luna +body_type: moon +planet_class: barren +body_scale: moon +seed: 859385629 +star: + type: G + luminosity_solar: 1.0 + color_temp_K: 5800 +orbit: + distance_au: 0.176 + period_days: 27.0 + axial_tilt_deg: 6.7 +physical: + gravity_g: 0.17 + oblateness: 0.0016 + atmosphere: none + atmosphere_color: null +terrain: + land_fraction: 1.0 + polar_ice_lat: 0.918 + tectonics: none +environment: + geothermal_flux: low + uv_index: high + substrate: silicate + chemosynthetic: false + hydrosphere: none +clouds: + enabled: false + coverage_base: 0.042 +render: + globe_light_angle_deg: 125 + specular_ocean: false + night_side_ambient: 0.025 +--- + +# Luna + +Barren moon. + +**System:** [GJ-0](../../index.md) + +## Visual + +![Heightmap](heightmap.png) + +![Globe](globe.png) diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d-1/markers.json b/wiki/star-systems/GJ-0/bodies/GJ0d-1/markers.json new file mode 100644 index 000000000..f9bfb1a84 --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0d-1/markers.json @@ -0,0 +1,445 @@ +{ + "grid": { + "w": 512, + "h": 256 + }, + "rivers": [], + "oceans": [], + "mountain_ranges": [ + { + "id": "range_5", + "name": "Montes Apenninus", + "center": [ + 122, + 60 + ], + "peak": [ + 120, + 30 + ], + "area_cells": 11221 + }, + { + "id": "range_34", + "name": "Montes Caucasus", + "center": [ + 113, + 461 + ], + "peak": [ + 138, + 457 + ], + "area_cells": 3670 + }, + { + "id": "range_79", + "name": "Mons R\u00fcmker", + "center": [ + 64, + 96 + ], + "peak": [ + 63, + 97 + ], + "area_cells": 21 + }, + { + "id": "range_124", + "name": "Montes Harbinger", + "center": [ + 85, + 473 + ], + "peak": [ + 90, + 476 + ], + "area_cells": 51 + }, + { + "id": "range_209", + "name": "Montes Jura", + "center": [ + 132, + 504 + ], + "peak": [ + 145, + 511 + ], + "area_cells": 367 + }, + { + "id": "range_231", + "name": "Gruithuisen Domes", + "center": [ + 121, + 124 + ], + "peak": [ + 120, + 129 + ], + "area_cells": 25 + }, + { + "id": "range_326", + "name": "Montes Carpatus", + "center": [ + 166, + 287 + ], + "peak": [ + 165, + 291 + ], + "area_cells": 106 + }, + { + "id": "range_348", + "name": "Leibnitz Mountains", + "center": [ + 159, + 31 + ], + "peak": [ + 160, + 34 + ], + "area_cells": 21 + }, + { + "id": "range_406", + "name": "Doerfel Mountains", + "center": [ + 171, + 121 + ], + "peak": [ + 170, + 124 + ], + "area_cells": 26 + }, + { + "id": "range_432", + "name": "Altai Scarp", + "center": [ + 176, + 138 + ], + "peak": [ + 176, + 136 + ], + "area_cells": 20 + }, + { + "id": "range_493", + "name": "Malapert Mountain", + "center": [ + 194, + 427 + ], + "peak": [ + 195, + 425 + ], + "area_cells": 23 + }, + { + "id": "range_522", + "name": "Pico Mons", + "center": [ + 214, + 434 + ], + "peak": [ + 212, + 435 + ], + "area_cells": 35 + }, + { + "id": "range_551", + "name": "Montes Alpes", + "center": [ + 231, + 291 + ], + "peak": [ + 231, + 282 + ], + "area_cells": 289 + }, + { + "id": "range_555", + "name": "Montes Pyrenaeus", + "center": [ + 230, + 159 + ], + "peak": [ + 233, + 160 + ], + "area_cells": 94 + }, + { + "id": "range_570", + "name": "Montes Riphaeus", + "center": [ + 232, + 195 + ], + "peak": [ + 232, + 199 + ], + "area_cells": 24 + }, + { + "id": "range_576", + "name": "Montes Rook", + "center": [ + 239, + 265 + ], + "peak": [ + 237, + 245 + ], + "area_cells": 258 + }, + { + "id": "range_579", + "name": "Haemus Montes", + "center": [ + 235, + 342 + ], + "peak": [ + 234, + 346 + ], + "area_cells": 33 + }, + { + "id": "range_580", + "name": "Mons La Hire", + "center": [ + 234, + 176 + ], + "peak": [ + 235, + 174 + ], + "area_cells": 25 + }, + { + "id": "range_586", + "name": "Montes Taurus", + "center": [ + 237, + 390 + ], + "peak": [ + 236, + 393 + ], + "area_cells": 90 + }, + { + "id": "range_587", + "name": "Montes Recti", + "center": [ + 237, + 196 + ], + "peak": [ + 238, + 193 + ], + "area_cells": 48 + }, + { + "id": "range_589", + "name": "Montes Teneriffe", + "center": [ + 239, + 321 + ], + "peak": [ + 240, + 321 + ], + "area_cells": 52 + }, + { + "id": "range_596", + "name": "Montes Secchi", + "center": [ + 244, + 364 + ], + "peak": [ + 245, + 366 + ], + "area_cells": 24 + }, + { + "id": "range_599", + "name": "Montes Cordillera", + "center": [ + 247, + 302 + ], + "peak": [ + 248, + 309 + ], + "area_cells": 164 + }, + { + "id": "range_604", + "name": "Montes Spitzbergen", + "center": [ + 249, + 257 + ], + "peak": [ + 249, + 261 + ], + "area_cells": 24 + } + ], + "roads": [], + "cities": [ + { + "id": "city_artemis", + "name": "Artemis", + "center": [ + 215, + 250 + ], + "population": 200000000 + }, + { + "id": "city_tranquility_station", + "name": "Tranquility Station", + "center": [ + 119, + 282 + ], + "population": 90000000 + }, + { + "id": "city_selene", + "name": "Selene", + "center": [ + 93, + 247 + ], + "population": 60000000 + } + ], + "railroads": [], + "pois": [ + { + "id": "poi_mare_tranquillitatis", + "name": "Mare Tranquillitatis", + "center": [ + 119, + 282 + ], + "kind": "mare" + }, + { + "id": "poi_mare_imbrium", + "name": "Mare Imbrium", + "center": [ + 93, + 247 + ], + "kind": "mare" + }, + { + "id": "poi_oceanus_procellarum", + "name": "Oceanus Procellarum", + "center": [ + 107, + 230 + ], + "kind": "mare" + }, + { + "id": "poi_mare_serenitatis", + "name": "Mare Serenitatis", + "center": [ + 104, + 277 + ], + "kind": "mare" + }, + { + "id": "poi_mare_crisium", + "name": "Mare Crisium", + "center": [ + 108, + 302 + ], + "kind": "mare" + }, + { + "id": "poi_mare_nubium", + "name": "Mare Nubium", + "center": [ + 134, + 248 + ], + "kind": "mare" + }, + { + "id": "poi_mare_fecunditatis", + "name": "Mare Fecunditatis", + "center": [ + 124, + 299 + ], + "kind": "mare" + }, + { + "id": "poi_south_pole_aitken", + "name": "South Pole-Aitken Basin", + "center": [ + 213, + 330 + ], + "kind": "basin" + }, + { + "id": "poi_tycho", + "name": "Tycho", + "center": [ + 163, + 249 + ], + "kind": "crater" + }, + { + "id": "poi_copernicus", + "name": "Copernicus", + "center": [ + 118, + 243 + ], + "kind": "crater" + } + ] +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d/globe.png b/wiki/star-systems/GJ-0/bodies/GJ0d/globe.png new file mode 100644 index 000000000..7f1c39adf Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0d/globe.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d/heightmap.png b/wiki/star-systems/GJ-0/bodies/GJ0d/heightmap.png new file mode 100644 index 000000000..6a6c5b4a7 Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0d/heightmap.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d/index.md b/wiki/star-systems/GJ-0/bodies/GJ0d/index.md new file mode 100644 index 000000000..a3bc9df11 --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0d/index.md @@ -0,0 +1,53 @@ +--- +id: GJ0d +name: Earth +body_type: planet +planet_class: temperate +body_scale: planet +seed: 1566162508 +star: + type: G + luminosity_solar: 1.0 + color_temp_K: 5800 +orbit: + distance_au: 1.0 + period_days: 365.0 + axial_tilt_deg: 23.4 +physical: + gravity_g: 1.0 + oblateness: 0.0048 + atmosphere: standard + atmosphere_color: + - 0.45 + - 0.65 + - 1.0 +terrain: + land_fraction: 0.29 + polar_ice_lat: 0.85 + tectonics: active +environment: + geothermal_flux: low + uv_index: moderate + substrate: silicate + chemosynthetic: false + hydrosphere: ocean +clouds: + enabled: true + coverage_base: 0.5 +render: + globe_light_angle_deg: 125 + specular_ocean: true + night_side_ambient: 0.025 +--- + +# Earth + +Temperate planet. + +**System:** [GJ-0](../../index.md) + +## Visual + +![Heightmap](heightmap.png) + +![Globe](globe.png) diff --git a/wiki/star-systems/GJ-0/bodies/GJ0d/markers.json b/wiki/star-systems/GJ-0/bodies/GJ0d/markers.json new file mode 100644 index 000000000..53b12cd8c --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0d/markers.json @@ -0,0 +1,941 @@ +{ + "grid": { + "w": 512, + "h": 256 + }, + "rivers": [ + { + "id": "river_0", + "name": "Rhine", + "path": [ + [ + 58, + 267 + ], + [ + 57, + 267 + ], + [ + 57, + 268 + ], + [ + 57, + 267 + ], + [ + 57, + 268 + ], + [ + 57, + 267 + ], + [ + 56, + 267 + ], + [ + 56, + 266 + ], + [ + 55, + 266 + ] + ] + }, + { + "id": "river_1", + "name": null, + "path": [ + [ + 59, + 280 + ], + [ + 59, + 281 + ], + [ + 60, + 281 + ], + [ + 60, + 282 + ], + [ + 59, + 282 + ], + [ + 60, + 282 + ], + [ + 59, + 283 + ], + [ + 60, + 283 + ], + [ + 60, + 282 + ], + [ + 61, + 282 + ] + ] + }, + { + "id": "river_2", + "name": "Volga", + "path": [ + [ + 75, + 316 + ], + [ + 75, + 317 + ], + [ + 75, + 316 + ], + [ + 75, + 317 + ], + [ + 75, + 316 + ], + [ + 76, + 316 + ], + [ + 76, + 317 + ], + [ + 77, + 317 + ], + [ + 76, + 317 + ], + [ + 77, + 317 + ] + ] + }, + { + "id": "river_3", + "name": "St. Lawrence", + "path": [ + [ + 60, + 122 + ], + [ + 60, + 123 + ], + [ + 61, + 123 + ], + [ + 61, + 122 + ], + [ + 62, + 122 + ], + [ + 62, + 121 + ], + [ + 63, + 121 + ], + [ + 63, + 122 + ], + [ + 63, + 123 + ], + [ + 64, + 123 + ], + [ + 64, + 124 + ], + [ + 64, + 125 + ], + [ + 65, + 125 + ], + [ + 65, + 126 + ], + [ + 66, + 126 + ], + [ + 67, + 126 + ], + [ + 67, + 127 + ], + [ + 68, + 127 + ], + [ + 69, + 127 + ], + [ + 69, + 126 + ], + [ + 70, + 126 + ], + [ + 70, + 125 + ], + [ + 70, + 126 + ], + [ + 70, + 125 + ], + [ + 71, + 125 + ], + [ + 71, + 126 + ], + [ + 72, + 126 + ], + [ + 72, + 127 + ], + [ + 72, + 126 + ], + [ + 72, + 127 + ] + ] + }, + { + "id": "river_4", + "name": null, + "path": [ + [ + 87, + 403 + ], + [ + 87, + 404 + ], + [ + 87, + 405 + ], + [ + 86, + 405 + ], + [ + 87, + 405 + ], + [ + 86, + 405 + ], + [ + 87, + 405 + ], + [ + 86, + 405 + ], + [ + 86, + 406 + ], + [ + 87, + 406 + ], + [ + 86, + 406 + ], + [ + 86, + 407 + ], + [ + 85, + 407 + ], + [ + 85, + 408 + ], + [ + 85, + 409 + ], + [ + 84, + 409 + ], + [ + 84, + 410 + ], + [ + 83, + 410 + ], + [ + 84, + 410 + ], + [ + 83, + 410 + ], + [ + 83, + 411 + ], + [ + 83, + 412 + ], + [ + 83, + 413 + ], + [ + 84, + 413 + ], + [ + 84, + 414 + ] + ] + }, + { + "id": "river_5", + "name": "Danube", + "path": [ + [ + 60, + 275 + ], + [ + 61, + 275 + ], + [ + 60, + 275 + ], + [ + 61, + 275 + ], + [ + 60, + 275 + ], + [ + 60, + 276 + ], + [ + 60, + 277 + ], + [ + 61, + 277 + ], + [ + 61, + 278 + ], + [ + 61, + 279 + ], + [ + 62, + 279 + ], + [ + 62, + 280 + ], + [ + 62, + 281 + ], + [ + 62, + 282 + ] + ] + }, + { + "id": "river_6", + "name": "Mekong", + "path": [ + [ + 84, + 369 + ], + [ + 84, + 368 + ], + [ + 85, + 368 + ], + [ + 84, + 368 + ], + [ + 85, + 368 + ], + [ + 85, + 367 + ], + [ + 84, + 367 + ], + [ + 85, + 367 + ], + [ + 85, + 366 + ], + [ + 86, + 366 + ], + [ + 86, + 367 + ], + [ + 87, + 367 + ], + [ + 88, + 367 + ], + [ + 88, + 368 + ], + [ + 88, + 369 + ], + [ + 89, + 369 + ], + [ + 89, + 370 + ], + [ + 90, + 370 + ], + [ + 90, + 371 + ] + ] + }, + { + "id": "river_7", + "name": "Paran\u00e1", + "path": [ + [ + 148, + 177 + ], + [ + 148, + 176 + ], + [ + 148, + 175 + ], + [ + 149, + 175 + ], + [ + 149, + 176 + ], + [ + 150, + 175 + ], + [ + 150, + 176 + ], + [ + 151, + 176 + ], + [ + 151, + 175 + ] + ] + }, + { + "id": "river_8", + "name": "Congo", + "path": [ + [ + 126, + 290 + ], + [ + 126, + 289 + ], + [ + 125, + 289 + ], + [ + 125, + 288 + ], + [ + 124, + 288 + ], + [ + 124, + 287 + ], + [ + 124, + 286 + ], + [ + 125, + 286 + ], + [ + 125, + 285 + ], + [ + 125, + 284 + ], + [ + 125, + 283 + ], + [ + 125, + 282 + ], + [ + 126, + 282 + ], + [ + 127, + 282 + ], + [ + 127, + 281 + ], + [ + 128, + 281 + ], + [ + 129, + 280 + ], + [ + 129, + 279 + ], + [ + 130, + 279 + ], + [ + 131, + 279 + ], + [ + 132, + 279 + ], + [ + 132, + 278 + ], + [ + 133, + 278 + ], + [ + 133, + 277 + ], + [ + 134, + 277 + ], + [ + 134, + 276 + ], + [ + 135, + 276 + ], + [ + 135, + 275 + ], + [ + 136, + 275 + ] + ] + }, + { + "id": "river_9", + "name": "Tigris", + "path": [ + [ + 101, + 303 + ], + [ + 100, + 303 + ], + [ + 100, + 302 + ], + [ + 101, + 302 + ], + [ + 101, + 301 + ], + [ + 102, + 301 + ], + [ + 102, + 300 + ], + [ + 102, + 299 + ], + [ + 101, + 299 + ], + [ + 100, + 299 + ], + [ + 99, + 299 + ], + [ + 98, + 299 + ], + [ + 97, + 299 + ], + [ + 97, + 300 + ] + ] + }, + { + "id": "river_10", + "name": null, + "path": [ + [ + 102, + 402 + ], + [ + 101, + 402 + ], + [ + 101, + 403 + ], + [ + 102, + 404 + ], + [ + 103, + 404 + ], + [ + 103, + 405 + ], + [ + 103, + 404 + ], + [ + 104, + 405 + ], + [ + 104, + 404 + ], + [ + 104, + 405 + ], + [ + 104, + 404 + ], + [ + 104, + 405 + ], + [ + 105, + 405 + ], + [ + 105, + 406 + ], + [ + 106, + 406 + ] + ] + } + ], + "oceans": [ + { + "id": "water_1", + "name": null, + "kind": "ocean", + "center": [ + 125, + 245 + ], + "area_fraction": 0.7049 + } + ], + "mountain_ranges": [ + { + "id": "range_4", + "name": "Himalayas", + "center": [ + 79, + 376 + ], + "peak": [ + 76, + 362 + ], + "area_cells": 136 + } + ], + "roads": [], + "cities": [ + { + "id": "city_brussels", + "name": "Brussels", + "center": [ + 80, + 266 + ], + "population": 2100000 + }, + { + "id": "city_istanbul", + "name": "Istanbul", + "center": [ + 83, + 279 + ], + "population": 15000000 + }, + { + "id": "city_moscow", + "name": "Moscow", + "center": [ + 72, + 294 + ], + "population": 12700000 + }, + { + "id": "city_new_york", + "name": "New York", + "center": [ + 87, + 130 + ], + "population": 20100000 + }, + { + "id": "city_s\u00e3o_paulo", + "name": "S\u00e3o Paulo", + "center": [ + 143, + 164 + ], + "population": 22400000 + }, + { + "id": "city_cairo", + "name": "Cairo", + "center": [ + 97, + 286 + ], + "population": 21300000 + }, + { + "id": "city_tokyo", + "name": "Tokyo", + "center": [ + 92, + 400 + ], + "population": 37400000 + }, + { + "id": "city_delhi", + "name": "Delhi", + "center": [ + 99, + 339 + ], + "population": 32900000 + }, + { + "id": "city_beijing", + "name": "Beijing", + "center": [ + 87, + 383 + ], + "population": 21500000 + }, + { + "id": "city_singapore", + "name": "Singapore", + "center": [ + 119, + 372 + ], + "population": 5900000 + }, + { + "id": "city_lagos", + "name": "Lagos", + "center": [ + 119, + 263 + ], + "population": 15000000 + } + ], + "railroads": [], + "pois": [] +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-0/bodies/GJ0e/globe.png b/wiki/star-systems/GJ-0/bodies/GJ0e/globe.png new file mode 100644 index 000000000..4dd6f808e Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0e/globe.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0e/heightmap.png b/wiki/star-systems/GJ-0/bodies/GJ0e/heightmap.png new file mode 100644 index 000000000..904710de7 Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0e/heightmap.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0e/index.md b/wiki/star-systems/GJ-0/bodies/GJ0e/index.md new file mode 100644 index 000000000..66bb38960 --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0e/index.md @@ -0,0 +1,53 @@ +--- +id: GJ0e +name: Mars +body_type: planet +planet_class: arid +body_scale: planet +seed: 992176496 +star: + type: G + luminosity_solar: 1.0 + color_temp_K: 5800 +orbit: + distance_au: 1.524 + period_days: 687.0 + axial_tilt_deg: 25.2 +physical: + gravity_g: 0.38 + oblateness: 0.0022 + atmosphere: thin + atmosphere_color: + - 0.9 + - 0.72 + - 0.5 +terrain: + land_fraction: 0.98 + polar_ice_lat: 0.65 + tectonics: low +environment: + geothermal_flux: low + uv_index: high + substrate: silicate + chemosynthetic: false + hydrosphere: ice +clouds: + enabled: true + coverage_base: 0.061 +render: + globe_light_angle_deg: 125 + specular_ocean: false + night_side_ambient: 0.025 +--- + +# Mars + +Arid planet. + +**System:** [GJ-0](../../index.md) + +## Visual + +![Heightmap](heightmap.png) + +![Globe](globe.png) diff --git a/wiki/star-systems/GJ-0/bodies/GJ0e/markers.json b/wiki/star-systems/GJ-0/bodies/GJ0e/markers.json new file mode 100644 index 000000000..ed98834fc --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0e/markers.json @@ -0,0 +1,160 @@ +{ + "grid": { + "w": 512, + "h": 256 + }, + "rivers": [], + "oceans": [ + { + "id": "water_23", + "name": "Hellas Basin", + "kind": "lake", + "center": [ + 186, + 352 + ], + "area_fraction": 0.0119 + } + ], + "mountain_ranges": [ + { + "id": "range_2", + "name": "Tyrrhena Mons", + "center": [ + 101, + 65 + ], + "peak": [ + 103, + 67 + ], + "area_cells": 67 + }, + { + "id": "range_3", + "name": "Hadriaca Mons", + "center": [ + 111, + 106 + ], + "peak": [ + 111, + 107 + ], + "area_cells": 31 + }, + { + "id": "range_4", + "name": "Amphitrites Montes", + "center": [ + 126, + 95 + ], + "peak": [ + 127, + 94 + ], + "area_cells": 28 + }, + { + "id": "range_5", + "name": "Hellespontus Montes", + "center": [ + 140, + 84 + ], + "peak": [ + 140, + 83 + ], + "area_cells": 87 + } + ], + "roads": [], + "cities": [ + { + "id": "city_olympia", + "name": "Olympia", + "center": [ + 107, + 358 + ], + "population": 450000000 + }, + { + "id": "city_hellas_station", + "name": "Hellas Station", + "center": [ + 148, + 329 + ], + "population": 350000000 + }, + { + "id": "city_elysium_city", + "name": "Elysium City", + "center": [ + 103, + 413 + ], + "population": 250000000 + }, + { + "id": "city_chryse_landing", + "name": "Chryse Landing", + "center": [ + 100, + 392 + ], + "population": 150000000 + } + ], + "railroads": [], + "pois": [ + { + "id": "poi_valles_marineris", + "name": "Valles Marineris", + "center": [ + 118, + 380 + ], + "kind": "canyon" + }, + { + "id": "poi_north_polar_cap", + "name": "North Polar Cap", + "center": [ + 10, + 256 + ], + "kind": "ice_cap" + }, + { + "id": "poi_south_polar_cap", + "name": "South Polar Cap", + "center": [ + 245, + 256 + ], + "kind": "ice_cap" + }, + { + "id": "poi_chryse_planitia", + "name": "Chryse Planitia", + "center": [ + 100, + 392 + ], + "kind": "plain" + }, + { + "id": "poi_acidalia_planitia", + "name": "Acidalia Planitia", + "center": [ + 80, + 395 + ], + "kind": "plain" + } + ] +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-0/bodies/GJ0f-2/globe.png b/wiki/star-systems/GJ-0/bodies/GJ0f-2/globe.png new file mode 100644 index 000000000..1855b8fff Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0f-2/globe.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0f-2/heightmap.png b/wiki/star-systems/GJ-0/bodies/GJ0f-2/heightmap.png new file mode 100644 index 000000000..f5ef251a5 Binary files /dev/null and b/wiki/star-systems/GJ-0/bodies/GJ0f-2/heightmap.png differ diff --git a/wiki/star-systems/GJ-0/bodies/GJ0f-2/index.md b/wiki/star-systems/GJ-0/bodies/GJ0f-2/index.md new file mode 100644 index 000000000..501467696 --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0f-2/index.md @@ -0,0 +1,50 @@ +--- +id: GJ0f-2 +name: Europa +body_type: moon +planet_class: frozen +body_scale: moon +seed: 1152508360 +star: + type: G + luminosity_solar: 1.0 + color_temp_K: 5800 +orbit: + distance_au: 0.049 + period_days: 4.0 + axial_tilt_deg: 40.1 +physical: + gravity_g: 0.13 + oblateness: 0.0015 + atmosphere: none + atmosphere_color: null +terrain: + land_fraction: 1.0 + polar_ice_lat: 0.137 + tectonics: low +environment: + geothermal_flux: moderate + uv_index: high + substrate: ice + chemosynthetic: true + hydrosphere: subsurface +clouds: + enabled: false + coverage_base: 0.306 +render: + globe_light_angle_deg: 125 + specular_ocean: false + night_side_ambient: 0.025 +--- + +# Europa + +Frozen moon. + +**System:** [GJ-0](../../index.md) + +## Visual + +![Heightmap](heightmap.png) + +![Globe](globe.png) diff --git a/wiki/star-systems/GJ-0/bodies/GJ0f-2/markers.json b/wiki/star-systems/GJ-0/bodies/GJ0f-2/markers.json new file mode 100644 index 000000000..4cc4354bf --- /dev/null +++ b/wiki/star-systems/GJ-0/bodies/GJ0f-2/markers.json @@ -0,0 +1,83 @@ +{ + "grid": { + "w": 512, + "h": 256 + }, + "rivers": [], + "oceans": [], + "mountain_ranges": [ + { + "id": "range_1", + "name": "Conamara Ridges", + "center": [ + 129, + 255 + ], + "peak": [ + 230, + 274 + ], + "area_cells": 123557 + } + ], + "roads": [], + "cities": [ + { + "id": "city_conamara_station", + "name": "Conamara Station", + "center": [ + 118, + 328 + ], + "population": 20000000 + }, + { + "id": "city_pwyll_base", + "name": "Pwyll Base", + "center": [ + 155, + 328 + ], + "population": 10000000 + } + ], + "railroads": [], + "pois": [ + { + "id": "poi_conamara_chaos", + "name": "Conamara Chaos", + "center": [ + 118, + 328 + ], + "kind": "chaos" + }, + { + "id": "poi_pwyll_crater", + "name": "Pwyll Crater", + "center": [ + 155, + 328 + ], + "kind": "crater" + }, + { + "id": "poi_thera_macula", + "name": "Thera Macula", + "center": [ + 145, + 340 + ], + "kind": "macula" + }, + { + "id": "poi_tyre", + "name": "Tyre", + "center": [ + 93, + 357 + ], + "kind": "multi_ring" + } + ] +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1/bodies/GJ1c/markers.json b/wiki/star-systems/GJ-1/bodies/GJ1c/markers.json index 18399fefb..b5ab3ba9b 100644 --- a/wiki/star-systems/GJ-1/bodies/GJ1c/markers.json +++ b/wiki/star-systems/GJ-1/bodies/GJ1c/markers.json @@ -642,7 +642,7 @@ }, { "id": "water_1", - "name": "Gro\u00dfe Gr\u00fcne", + "name": "Große Grüne", "kind": "ocean", "center": [ 174, @@ -723,7 +723,7 @@ }, { "id": "range_3", - "name": "Waldh\u00fcgel", + "name": "Waldhügel", "center": [ 62, 459 @@ -739,7 +739,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenstadt", + "name": "Feldmark", "kind": "capital", "center": [ 97, @@ -752,7 +752,7 @@ "pois": [ { "id": "poi_0", - "name": "Eisenh\u00fcgel", + "name": "Eisenhügel", "kind": "transit", "center": [ 97, @@ -760,4 +760,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1/bodies/GJ1e-m1/markers.json b/wiki/star-systems/GJ-1/bodies/GJ1e-m1/markers.json index e521b5cca..ce875342b 100644 --- a/wiki/star-systems/GJ-1/bodies/GJ1e-m1/markers.json +++ b/wiki/star-systems/GJ-1/bodies/GJ1e-m1/markers.json @@ -556,7 +556,7 @@ }, { "id": "river_3", - "name": "Gr\u00fcne Wiese", + "name": "Grüne Wiese", "path": [ [ 112, @@ -915,7 +915,7 @@ "cities": [ { "id": "city_0", - "name": "Steinbruch", + "name": "Klause", "kind": "capital", "center": [ 5, @@ -936,4 +936,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1002/bodies/GJ1002b/markers.json b/wiki/star-systems/GJ-1002/bodies/GJ1002b/markers.json index cb2f1222e..c9a7f9686 100644 --- a/wiki/star-systems/GJ-1002/bodies/GJ1002b/markers.json +++ b/wiki/star-systems/GJ-1002/bodies/GJ1002b/markers.json @@ -457,7 +457,7 @@ "cities": [ { "id": "city_0", - "name": "Ribeira Nova", + "name": "Caparica", "kind": "capital", "center": [ 159, @@ -478,4 +478,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1005A/bodies/GJ1005Ac/markers.json b/wiki/star-systems/GJ-1005A/bodies/GJ1005Ac/markers.json index e80952503..5987db9e6 100644 --- a/wiki/star-systems/GJ-1005A/bodies/GJ1005Ac/markers.json +++ b/wiki/star-systems/GJ-1005A/bodies/GJ1005Ac/markers.json @@ -270,7 +270,7 @@ }, { "id": "water_3", - "name": "K\u014dri Strait", + "name": "Kōri Strait", "kind": "sea", "center": [ 34, @@ -419,7 +419,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Grand Rochers", "kind": "capital", "center": [ 167, @@ -440,4 +440,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1073/bodies/GJ1073c/markers.json b/wiki/star-systems/GJ-1073/bodies/GJ1073c/markers.json index 391ce4f2d..0a49b17e9 100644 --- a/wiki/star-systems/GJ-1073/bodies/GJ1073c/markers.json +++ b/wiki/star-systems/GJ-1073/bodies/GJ1073c/markers.json @@ -515,7 +515,7 @@ "cities": [ { "id": "city_0", - "name": "Bayan", + "name": "Mabuhay", "kind": "capital", "center": [ 115, @@ -536,4 +536,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-107A/bodies/GJ107Ae/markers.json b/wiki/star-systems/GJ-107A/bodies/GJ107Ae/markers.json index 6d48c1304..0d8e7b96e 100644 --- a/wiki/star-systems/GJ-107A/bodies/GJ107Ae/markers.json +++ b/wiki/star-systems/GJ-107A/bodies/GJ107Ae/markers.json @@ -499,7 +499,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "An Cảng", "kind": "capital", "center": [ 154, @@ -520,4 +520,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-111/bodies/GJ111d/markers.json b/wiki/star-systems/GJ-111/bodies/GJ111d/markers.json index b60098083..5eaf7211a 100644 --- a/wiki/star-systems/GJ-111/bodies/GJ111d/markers.json +++ b/wiki/star-systems/GJ-111/bodies/GJ111d/markers.json @@ -504,7 +504,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Greyton", "kind": "capital", "center": [ 83, @@ -525,4 +525,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1116A/bodies/GJ1116Ac/markers.json b/wiki/star-systems/GJ-1116A/bodies/GJ1116Ac/markers.json index 1a562e3d8..8c5b7b8c3 100644 --- a/wiki/star-systems/GJ-1116A/bodies/GJ1116Ac/markers.json +++ b/wiki/star-systems/GJ-1116A/bodies/GJ1116Ac/markers.json @@ -297,7 +297,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Little Upton–Ashworth Road", "kind": "commercial", "path": [ [ @@ -566,7 +566,7 @@ "cities": [ { "id": "city_0", - "name": "Little Upton", + "name": "Mabaso Prime", "kind": "capital", "center": [ 41, @@ -588,7 +588,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Little Upton–Ashworth Line", "kind": "passenger_freight", "path": [ [ @@ -865,4 +865,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1125/bodies/GJ1125c/markers.json b/wiki/star-systems/GJ-1125/bodies/GJ1125c/markers.json index a066d9219..6486debd4 100644 --- a/wiki/star-systems/GJ-1125/bodies/GJ1125c/markers.json +++ b/wiki/star-systems/GJ-1125/bodies/GJ1125c/markers.json @@ -405,7 +405,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Hwajeon", "kind": "capital", "center": [ 250, @@ -426,4 +426,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1156/bodies/GJ1156d/markers.json b/wiki/star-systems/GJ-1156/bodies/GJ1156d/markers.json index 348e98cbf..9ddccf139 100644 --- a/wiki/star-systems/GJ-1156/bodies/GJ1156d/markers.json +++ b/wiki/star-systems/GJ-1156/bodies/GJ1156d/markers.json @@ -334,7 +334,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Serra da Foz\u2013Costa Brava Estrada", "kind": "commercial", "path": [ [ @@ -625,7 +625,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Serra da Foz\u2013Costa Brava Run", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-1232/bodies/GJ1232c/markers.json b/wiki/star-systems/GJ-1232/bodies/GJ1232c/markers.json index c357f63c5..a0e74b4a4 100644 --- a/wiki/star-systems/GJ-1232/bodies/GJ1232c/markers.json +++ b/wiki/star-systems/GJ-1232/bodies/GJ1232c/markers.json @@ -302,7 +302,7 @@ }, { "id": "river_4", - "name": "Bj\u00f8rnesund", + "name": "Bjørnesund", "path": [ [ 4, @@ -408,7 +408,7 @@ }, { "id": "water_4", - "name": "B\u0142otka", + "name": "Błotka", "kind": "ocean", "center": [ 205, @@ -508,7 +508,7 @@ }, { "id": "range_6", - "name": "Bj\u00f8rnvik", + "name": "Bjørnvik", "center": [ 37, 307 @@ -521,7 +521,7 @@ }, { "id": "range_7", - "name": "Gr\u00f8nmark", + "name": "Grønmark", "center": [ 94, 5 @@ -537,7 +537,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordheim", + "name": "Gammla", "kind": "capital", "center": [ 169, @@ -550,7 +550,7 @@ "pois": [ { "id": "poi_0", - "name": "\u00c5smark", + "name": "Åsmark", "kind": "transit", "center": [ 169, @@ -558,4 +558,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-124/bodies/GJ124d/markers.json b/wiki/star-systems/GJ-124/bodies/GJ124d/markers.json index 390dfef80..923ae8fa5 100644 --- a/wiki/star-systems/GJ-124/bodies/GJ124d/markers.json +++ b/wiki/star-systems/GJ-124/bodies/GJ124d/markers.json @@ -575,7 +575,7 @@ "cities": [ { "id": "city_0", - "name": "Hanseong", + "name": "Hạ Long", "kind": "capital", "center": [ 239, @@ -596,4 +596,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1248/bodies/GJ1248c/markers.json b/wiki/star-systems/GJ-1248/bodies/GJ1248c/markers.json index faa9e8931..52bd3788c 100644 --- a/wiki/star-systems/GJ-1248/bodies/GJ1248c/markers.json +++ b/wiki/star-systems/GJ-1248/bodies/GJ1248c/markers.json @@ -276,7 +276,7 @@ }, { "id": "river_3", - "name": "Gr\u00e5vatn", + "name": "Gråvatn", "path": [ [ 1, @@ -412,7 +412,7 @@ "oceans": [ { "id": "water_0", - "name": "Frosth\u00f8yd", + "name": "Frosthøyd", "kind": "lake", "center": [ 14, @@ -422,7 +422,7 @@ }, { "id": "water_1", - "name": "Sn\u00f8haug", + "name": "Snøhaug", "kind": "lake", "center": [ 11, @@ -452,7 +452,7 @@ }, { "id": "water_4", - "name": "Bj\u00f8rg's Strand", + "name": "Bjørg's Strand", "kind": "ocean", "center": [ 181, @@ -462,7 +462,7 @@ }, { "id": "water_5", - "name": "J\u00f6kul", + "name": "Jökul", "kind": "lake", "center": [ 107, @@ -474,7 +474,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Svobodsk\u00fd", + "name": "Svobodský", "center": [ 112, 268 @@ -487,7 +487,7 @@ }, { "id": "range_1", - "name": "Zaj\u0105c", + "name": "Zając", "center": [ 68, 470 @@ -500,7 +500,7 @@ }, { "id": "range_2", - "name": "Kov\u00e1\u0159", + "name": "Kovář", "center": [ 114, 467 @@ -513,7 +513,7 @@ }, { "id": "range_3", - "name": "Novotn\u00fd", + "name": "Novotný", "center": [ 82, 170 @@ -539,7 +539,7 @@ }, { "id": "range_5", - "name": "Nov\u00e1k", + "name": "Novák", "center": [ 168, 422 @@ -581,7 +581,7 @@ "cities": [ { "id": "city_0", - "name": "Bj\u00f6rn's Fjord", + "name": "Torfmoor", "kind": "capital", "center": [ 7, @@ -602,4 +602,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1267/bodies/GJ1267c/markers.json b/wiki/star-systems/GJ-1267/bodies/GJ1267c/markers.json index 99455f721..8ab7d135d 100644 --- a/wiki/star-systems/GJ-1267/bodies/GJ1267c/markers.json +++ b/wiki/star-systems/GJ-1267/bodies/GJ1267c/markers.json @@ -550,7 +550,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Monsaraz", "kind": "capital", "center": [ 207, @@ -571,4 +571,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-127A/bodies/GJ127Ad/markers.json b/wiki/star-systems/GJ-127A/bodies/GJ127Ad/markers.json index cc0cd5a8c..ca952320f 100644 --- a/wiki/star-systems/GJ-127A/bodies/GJ127Ad/markers.json +++ b/wiki/star-systems/GJ-127A/bodies/GJ127Ad/markers.json @@ -382,7 +382,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Line", + "name": "Harra", "kind": "capital", "center": [ 189, @@ -403,4 +403,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-127B/bodies/GJ127Bc/markers.json b/wiki/star-systems/GJ-127B/bodies/GJ127Bc/markers.json index a42bd5641..d32a89dce 100644 --- a/wiki/star-systems/GJ-127B/bodies/GJ127Bc/markers.json +++ b/wiki/star-systems/GJ-127B/bodies/GJ127Bc/markers.json @@ -667,7 +667,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenstadt", + "name": "Wiltz", "kind": "capital", "center": [ 101, @@ -688,4 +688,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-1286/bodies/GJ1286d/markers.json b/wiki/star-systems/GJ-1286/bodies/GJ1286d/markers.json index 6af943929..f24f3e6fa 100644 --- a/wiki/star-systems/GJ-1286/bodies/GJ1286d/markers.json +++ b/wiki/star-systems/GJ-1286/bodies/GJ1286d/markers.json @@ -409,7 +409,7 @@ }, { "id": "range_1", - "name": "The Forum Veritas", + "name": "The Pomerium", "center": [ 140, 112 @@ -477,7 +477,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Rotundum", "kind": "capital", "center": [ 90, diff --git a/wiki/star-systems/GJ-1286/bodies/GJ1286e/markers.json b/wiki/star-systems/GJ-1286/bodies/GJ1286e/markers.json index 3e51b39a0..b40bebb35 100644 --- a/wiki/star-systems/GJ-1286/bodies/GJ1286e/markers.json +++ b/wiki/star-systems/GJ-1286/bodies/GJ1286e/markers.json @@ -910,7 +910,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Pantheon Magna\u2013Sonarium Corridor", "kind": "commercial", "path": [ [ @@ -1189,7 +1189,7 @@ }, { "id": "city_1", - "name": "Forum Veritas", + "name": "Sonarium", "kind": "city", "center": [ 87, @@ -1201,7 +1201,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Pantheon Magna\u2013Sonarium Express", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-1289/bodies/GJ1289c/markers.json b/wiki/star-systems/GJ-1289/bodies/GJ1289c/markers.json index 9d317682c..3101aff6c 100644 --- a/wiki/star-systems/GJ-1289/bodies/GJ1289c/markers.json +++ b/wiki/star-systems/GJ-1289/bodies/GJ1289c/markers.json @@ -616,7 +616,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Red Rock Gully\u2013Blackwood Gully Road", "kind": "commercial", "path": [ [ @@ -907,7 +907,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Red Rock Gully\u2013Blackwood Gully Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-1292/bodies/GJ1292d/markers.json b/wiki/star-systems/GJ-1292/bodies/GJ1292d/markers.json index cee04553a..10768afa9 100644 --- a/wiki/star-systems/GJ-1292/bodies/GJ1292d/markers.json +++ b/wiki/star-systems/GJ-1292/bodies/GJ1292d/markers.json @@ -559,7 +559,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Creek", + "name": "Isiolo", "kind": "capital", "center": [ 212, @@ -580,4 +580,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-136/bodies/GJ136d/markers.json b/wiki/star-systems/GJ-136/bodies/GJ136d/markers.json index ec4d168be..7d6ccd3ec 100644 --- a/wiki/star-systems/GJ-136/bodies/GJ136d/markers.json +++ b/wiki/star-systems/GJ-136/bodies/GJ136d/markers.json @@ -444,7 +444,7 @@ }, { "id": "range_2", - "name": "K\u014dri Summit", + "name": "Kōri Summit", "center": [ 132, 484 @@ -525,7 +525,7 @@ "cities": [ { "id": "city_0", - "name": "Zen Garden", + "name": "Dài Lộ Primary", "kind": "capital", "center": [ 117, @@ -546,4 +546,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-137/bodies/GJ137d/markers.json b/wiki/star-systems/GJ-137/bodies/GJ137d/markers.json index 6cdf83ff0..afdd25c79 100644 --- a/wiki/star-systems/GJ-137/bodies/GJ137d/markers.json +++ b/wiki/star-systems/GJ-137/bodies/GJ137d/markers.json @@ -345,7 +345,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Novyy Port", "kind": "capital", "center": [ 32, @@ -366,4 +366,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-138/bodies/GJ138c/markers.json b/wiki/star-systems/GJ-138/bodies/GJ138c/markers.json index 55a500bf5..a169270d7 100644 --- a/wiki/star-systems/GJ-138/bodies/GJ138c/markers.json +++ b/wiki/star-systems/GJ-138/bodies/GJ138c/markers.json @@ -180,7 +180,7 @@ }, { "id": "river_1", - "name": "North Fork Delta", + "name": "Delta das Oliveiras", "path": [ [ 141, @@ -456,7 +456,7 @@ }, { "id": "river_3", - "name": "West Bend Valley", + "name": "Volta do Rio", "path": [ [ 254, @@ -554,7 +554,7 @@ }, { "id": "river_4", - "name": "Willow Creek Reach", + "name": "Ribeira dos Salgueiros", "path": [ [ 72, @@ -644,7 +644,7 @@ }, { "id": "river_5", - "name": "Stony Creek Crossing", + "name": "Vau das Pedras", "path": [ [ 140, @@ -803,7 +803,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Marco Sert\u00e3o", "kind": "capital", "center": [ 250, diff --git a/wiki/star-systems/GJ-139/bodies/GJ139d/markers.json b/wiki/star-systems/GJ-139/bodies/GJ139d/markers.json index 15ff0bc11..f0f3543b4 100644 --- a/wiki/star-systems/GJ-139/bodies/GJ139d/markers.json +++ b/wiki/star-systems/GJ-139/bodies/GJ139d/markers.json @@ -289,7 +289,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Gully", + "name": "Onitsha", "kind": "capital", "center": [ 162, @@ -310,4 +310,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-142/bodies/GJ142c/markers.json b/wiki/star-systems/GJ-142/bodies/GJ142c/markers.json index 709f3885d..13a2b41fc 100644 --- a/wiki/star-systems/GJ-142/bodies/GJ142c/markers.json +++ b/wiki/star-systems/GJ-142/bodies/GJ142c/markers.json @@ -757,7 +757,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Point", + "name": "Jena", "kind": "capital", "center": [ 100, @@ -778,4 +778,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-144/bodies/GJ144d/markers.json b/wiki/star-systems/GJ-144/bodies/GJ144d/markers.json index 3e17cf6a6..3f49bb738 100644 --- a/wiki/star-systems/GJ-144/bodies/GJ144d/markers.json +++ b/wiki/star-systems/GJ-144/bodies/GJ144d/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Flatland Stream", + "name": "R\u00e1n's Run", "path": [ [ 142, @@ -108,7 +108,7 @@ }, { "id": "river_1", - "name": "Gap Crossing", + "name": "Randalfoss", "path": [ [ 132, @@ -202,7 +202,7 @@ }, { "id": "river_2", - "name": "Ridge Fork", + "name": "Scarp Fork", "path": [ [ 255, @@ -276,7 +276,7 @@ }, { "id": "river_3", - "name": "Pine Gulch", + "name": "Timber Keld", "path": [ [ 106, @@ -326,7 +326,7 @@ }, { "id": "river_4", - "name": "Valley View", + "name": "Ranfall Beck", "path": [ [ 22, @@ -372,7 +372,7 @@ }, { "id": "river_5", - "name": "Canyon Edge", + "name": "Cliff Leat", "path": [ [ 229, @@ -416,7 +416,7 @@ "oceans": [ { "id": "water_0", - "name": "West Pass", + "name": "R\u00e1n Sea", "kind": "sea", "center": [ 22, @@ -426,7 +426,7 @@ }, { "id": "water_1", - "name": "Boulder Bluff", + "name": "Keldmere", "kind": "ocean", "center": [ 38, @@ -436,7 +436,7 @@ }, { "id": "water_2", - "name": "High Mesa", + "name": "Seterfjord", "kind": "ocean", "center": [ 185, @@ -448,7 +448,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Sierra Peak", + "name": "Seterfjellet", "center": [ 75, 163 @@ -461,7 +461,7 @@ }, { "id": "range_1", - "name": "Prairie Bend", + "name": "Kaldmoor Ridge", "center": [ 84, 38 @@ -474,7 +474,7 @@ }, { "id": "range_2", - "name": "Delta Reach", + "name": "Ranholm Escarpment", "center": [ 136, 23 @@ -489,7 +489,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Kallast\u2013R\u00e1n's Landing Corridor", "kind": "commercial", "path": [ [ @@ -758,7 +758,7 @@ "cities": [ { "id": "city_0", - "name": "Iron Creek", + "name": "Kallast", "kind": "capital", "center": [ 250, @@ -768,7 +768,7 @@ }, { "id": "city_1", - "name": "Willow Bend", + "name": "R\u00e1n's Landing", "kind": "city", "center": [ 246, @@ -780,7 +780,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Kallast\u2013R\u00e1n's Landing Express", "kind": "passenger_freight", "path": [ [ @@ -1049,7 +1049,7 @@ "pois": [ { "id": "poi_0", - "name": "Summit Point", + "name": "Kallast Gate Terminal", "kind": "transit", "center": [ 250, diff --git a/wiki/star-systems/GJ-144/bodies/GJ144e/markers.json b/wiki/star-systems/GJ-144/bodies/GJ144e/markers.json index ad04f260c..a6fa9aa6c 100644 --- a/wiki/star-systems/GJ-144/bodies/GJ144e/markers.json +++ b/wiki/star-systems/GJ-144/bodies/GJ144e/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Riverbend", + "name": "Greywash", "path": [ [ 147, @@ -184,7 +184,7 @@ }, { "id": "river_1", - "name": "West Bend", + "name": "Greywash Fork", "path": [ [ 154, @@ -346,7 +346,7 @@ }, { "id": "river_2", - "name": "Delta Flow", + "name": "Veth Delta", "path": [ [ 183, @@ -408,7 +408,7 @@ }, { "id": "river_3", - "name": "Stone Point", + "name": "Thornrun", "path": [ [ 248, @@ -462,7 +462,7 @@ }, { "id": "river_4", - "name": "Mesa Run", + "name": "Kelside Run", "path": [ [ 232, @@ -508,7 +508,7 @@ }, { "id": "river_5", - "name": "Blue Ridge", + "name": "Ashvale Beck", "path": [ [ 7, @@ -556,7 +556,7 @@ "oceans": [ { "id": "water_0", - "name": "Canyon View", + "name": "Dusthollow", "kind": "ocean", "center": [ 64, @@ -566,7 +566,7 @@ }, { "id": "water_1", - "name": "Flat Ground", + "name": "The Morlands", "kind": "lake", "center": [ 216, @@ -576,7 +576,7 @@ }, { "id": "water_2", - "name": "High Bluff", + "name": "Veth Mere", "kind": "lake", "center": [ 219, @@ -588,7 +588,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Timberline", + "name": "Thorncrests", "center": [ 177, 183 @@ -601,7 +601,7 @@ }, { "id": "range_1", - "name": "Golden Valley", + "name": "Greymoor Range", "center": [ 180, 4 @@ -614,7 +614,7 @@ }, { "id": "range_2", - "name": "Swift River", + "name": "Strandford Heights", "center": [ 200, 17 @@ -627,7 +627,7 @@ }, { "id": "range_3", - "name": "Eastern Slope", + "name": "Far Shore Spine", "center": [ 193, 395 @@ -640,7 +640,7 @@ }, { "id": "range_4", - "name": "Broad Fork", + "name": "Keld Spur", "center": [ 240, 245 @@ -653,7 +653,7 @@ }, { "id": "range_5", - "name": "Granite Ridge", + "name": "Greystone Ridge", "center": [ 243, 501 @@ -668,7 +668,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Vethis Station\u2013Ashvale Corridor", "kind": "commercial", "path": [ [ @@ -905,7 +905,7 @@ "cities": [ { "id": "city_0", - "name": "Prairie View", + "name": "Vethis Station", "kind": "capital", "center": [ 212, @@ -915,7 +915,7 @@ }, { "id": "city_1", - "name": "Dusty Gulch", + "name": "Ashvale", "kind": "city", "center": [ 221, @@ -925,7 +925,7 @@ }, { "id": "city_2", - "name": "Stony Creek", + "name": "Kelbridge", "kind": "city", "center": [ 7, @@ -935,7 +935,7 @@ }, { "id": "city_3", - "name": "Iron Pass", + "name": "Irongate", "kind": "city", "center": [ 46, @@ -947,7 +947,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Vethis Station\u2013Ashvale Express", "kind": "passenger_freight", "path": [ [ @@ -1184,7 +1184,7 @@ "pois": [ { "id": "poi_0", - "name": "Ridge Crossing", + "name": "Vethis Gate Terminal", "kind": "transit", "center": [ 221, diff --git a/wiki/star-systems/GJ-150/bodies/GJ150d/markers.json b/wiki/star-systems/GJ-150/bodies/GJ150d/markers.json index 60e72d41d..0e26f9a8b 100644 --- a/wiki/star-systems/GJ-150/bodies/GJ150d/markers.json +++ b/wiki/star-systems/GJ-150/bodies/GJ150d/markers.json @@ -815,7 +815,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenstadt", + "name": "Vesper", "kind": "capital", "center": [ 38, @@ -836,4 +836,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-15A/bodies/GJ15Ac/markers.json b/wiki/star-systems/GJ-15A/bodies/GJ15Ac/markers.json index 0e8ceb1dc..3d3e2bea4 100644 --- a/wiki/star-systems/GJ-15A/bodies/GJ15Ac/markers.json +++ b/wiki/star-systems/GJ-15A/bodies/GJ15Ac/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Riverbend", + "name": "The Chancellor's Run", "path": [ [ 107, @@ -660,7 +660,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Swift Current", + "name": "Gongshu Ridge", "center": [ 38, 175 @@ -727,7 +727,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Forum Gongshu\u2013Station Lu Ban Corridor", "kind": "commercial", "path": [ [ @@ -996,7 +996,7 @@ "cities": [ { "id": "city_0", - "name": "Willow Creek", + "name": "Forum Gongshu", "kind": "capital", "center": [ 123, @@ -1006,7 +1006,7 @@ }, { "id": "city_1", - "name": "Ridgeview", + "name": "Station Lu Ban", "kind": "city", "center": [ 226, @@ -1018,7 +1018,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Forum Gongshu\u2013Station Lu Ban Express", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-166A/bodies/GJ166Ac/markers.json b/wiki/star-systems/GJ-166A/bodies/GJ166Ac/markers.json index ccaf37ce0..dda788de9 100644 --- a/wiki/star-systems/GJ-166A/bodies/GJ166Ac/markers.json +++ b/wiki/star-systems/GJ-166A/bodies/GJ166Ac/markers.json @@ -364,7 +364,7 @@ }, { "id": "range_2", - "name": "The Forum Veritas", + "name": "The Mons Sacer", "center": [ 155, 224 @@ -444,7 +444,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Tabularium\u2013Basilica Aethel Corridor", "kind": "commercial", "path": [ [ @@ -713,7 +713,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Tabularium", "kind": "capital", "center": [ 128, @@ -735,7 +735,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Tabularium\u2013Basilica Aethel Express", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-169/bodies/GJ169c/markers.json b/wiki/star-systems/GJ-169/bodies/GJ169c/markers.json index e25be4ab3..1edf42277 100644 --- a/wiki/star-systems/GJ-169/bodies/GJ169c/markers.json +++ b/wiki/star-systems/GJ-169/bodies/GJ169c/markers.json @@ -552,7 +552,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Elvas", "kind": "capital", "center": [ 250, @@ -573,4 +573,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-17/bodies/GJ17d/markers.json b/wiki/star-systems/GJ-17/bodies/GJ17d/markers.json index 3ff0af5b7..529cafd13 100644 --- a/wiki/star-systems/GJ-17/bodies/GJ17d/markers.json +++ b/wiki/star-systems/GJ-17/bodies/GJ17d/markers.json @@ -382,7 +382,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "K\u014dri Valley", + "name": "Kōri Valley", "center": [ 17, 342 @@ -463,7 +463,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Trang Bến", "kind": "capital", "center": [ 95, @@ -484,4 +484,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-172/bodies/GJ172c/markers.json b/wiki/star-systems/GJ-172/bodies/GJ172c/markers.json index 35150370c..38cd7677a 100644 --- a/wiki/star-systems/GJ-172/bodies/GJ172c/markers.json +++ b/wiki/star-systems/GJ-172/bodies/GJ172c/markers.json @@ -564,7 +564,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Kaelong", "kind": "capital", "center": [ 88, @@ -585,4 +585,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-174/bodies/GJ174c/markers.json b/wiki/star-systems/GJ-174/bodies/GJ174c/markers.json index 31701fd65..5a67dfc66 100644 --- a/wiki/star-systems/GJ-174/bodies/GJ174c/markers.json +++ b/wiki/star-systems/GJ-174/bodies/GJ174c/markers.json @@ -108,7 +108,7 @@ }, { "id": "river_1", - "name": "Flat Meadow", + "name": "Flacherbach", "path": [ [ 202, @@ -166,7 +166,7 @@ }, { "id": "river_2", - "name": "Heathland Rise", + "name": "Heidewasser", "path": [ [ 94, @@ -220,7 +220,7 @@ }, { "id": "river_3", - "name": "Bouldery Slope", + "name": "Steinlauf", "path": [ [ 246, @@ -400,7 +400,7 @@ }, { "id": "range_4", - "name": "North Fork", + "name": "Erzberg", "center": [ 57, 250 @@ -413,7 +413,7 @@ }, { "id": "range_5", - "name": "Open Plain", + "name": "Hochflur", "center": [ 75, 18 @@ -429,7 +429,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Bergstation", "kind": "capital", "center": [ 250, diff --git a/wiki/star-systems/GJ-178/bodies/GJ178e/markers.json b/wiki/star-systems/GJ-178/bodies/GJ178e/markers.json index 0f9c733b2..ae99d2fd9 100644 --- a/wiki/star-systems/GJ-178/bodies/GJ178e/markers.json +++ b/wiki/star-systems/GJ-178/bodies/GJ178e/markers.json @@ -779,7 +779,7 @@ "cities": [ { "id": "city_0", - "name": "Dry Creek Station", + "name": "Cinderford", "kind": "capital", "center": [ 79, @@ -800,4 +800,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-189/bodies/GJ189c/markers.json b/wiki/star-systems/GJ-189/bodies/GJ189c/markers.json index 48dd1f62a..43e02bbcc 100644 --- a/wiki/star-systems/GJ-189/bodies/GJ189c/markers.json +++ b/wiki/star-systems/GJ-189/bodies/GJ189c/markers.json @@ -617,7 +617,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Goslar", "kind": "capital", "center": [ 5, @@ -638,4 +638,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-197/bodies/GJ197d/markers.json b/wiki/star-systems/GJ-197/bodies/GJ197d/markers.json index 35d8a2c0c..e2b644c90 100644 --- a/wiki/star-systems/GJ-197/bodies/GJ197d/markers.json +++ b/wiki/star-systems/GJ-197/bodies/GJ197d/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Rio Esperan\u00e7a", + "name": "Rio Esperança", "path": [ [ 115, @@ -252,7 +252,7 @@ }, { "id": "river_1", - "name": "Foz do Drag\u00e3o", + "name": "Foz do Dragão", "path": [ [ 112, @@ -672,7 +672,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Rio do Crep\u00fasculo", + "name": "Rio do Crepúsculo", "center": [ 34, 386 @@ -685,7 +685,7 @@ }, { "id": "range_1", - "name": "Cabo do Sil\u00eancio", + "name": "Cabo do Silêncio", "center": [ 48, 127 @@ -698,7 +698,7 @@ }, { "id": "range_2", - "name": "Foz do Atl\u00e2ntico", + "name": "Foz do Atlântico", "center": [ 87, 165 @@ -724,7 +724,7 @@ }, { "id": "range_4", - "name": "Vale do Lim\u00e3o", + "name": "Vale do Limão", "center": [ 21, 15 @@ -763,7 +763,7 @@ }, { "id": "range_7", - "name": "Serra do Drag\u00e3o", + "name": "Serra do Dragão", "center": [ 98, 215 @@ -779,7 +779,7 @@ "cities": [ { "id": "city_0", - "name": "Ribeira Nova", + "name": "Puerto Último", "kind": "capital", "center": [ 5, @@ -800,4 +800,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-204/bodies/GJ204c/markers.json b/wiki/star-systems/GJ-204/bodies/GJ204c/markers.json index 47efd5525..85b0059a6 100644 --- a/wiki/star-systems/GJ-204/bodies/GJ204c/markers.json +++ b/wiki/star-systems/GJ-204/bodies/GJ204c/markers.json @@ -613,7 +613,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Mértola", "kind": "capital", "center": [ 5, @@ -634,4 +634,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-208/bodies/GJ208c/markers.json b/wiki/star-systems/GJ-208/bodies/GJ208c/markers.json index 35cb02661..2aa929602 100644 --- a/wiki/star-systems/GJ-208/bodies/GJ208c/markers.json +++ b/wiki/star-systems/GJ-208/bodies/GJ208c/markers.json @@ -544,7 +544,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenstadt", + "name": "Remanso", "kind": "capital", "center": [ 244, @@ -565,4 +565,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-211/bodies/GJ211c/markers.json b/wiki/star-systems/GJ-211/bodies/GJ211c/markers.json index 1b4985458..2170ebc30 100644 --- a/wiki/star-systems/GJ-211/bodies/GJ211c/markers.json +++ b/wiki/star-systems/GJ-211/bodies/GJ211c/markers.json @@ -719,7 +719,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge View", + "name": "Almeida", "kind": "capital", "center": [ 218, @@ -740,4 +740,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-213/bodies/GJ213c/markers.json b/wiki/star-systems/GJ-213/bodies/GJ213c/markers.json index 95e7aeef3..88e95cb14 100644 --- a/wiki/star-systems/GJ-213/bodies/GJ213c/markers.json +++ b/wiki/star-systems/GJ-213/bodies/GJ213c/markers.json @@ -52,7 +52,7 @@ }, { "id": "river_1", - "name": "Mar\u00e9 Coast", + "name": "Maré Coast", "path": [ [ 95, @@ -208,7 +208,7 @@ }, { "id": "range_2", - "name": "M\u2019Bila Bay", + "name": "M’Bila Bay", "center": [ 12, 107 @@ -237,7 +237,7 @@ "cities": [ { "id": "city_0", - "name": "S\u00e3o Vicente", + "name": "Rooiels", "kind": "capital", "center": [ 88, @@ -258,4 +258,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-216B/bodies/GJ216Bd/markers.json b/wiki/star-systems/GJ-216B/bodies/GJ216Bd/markers.json index 08a0f5d38..75300bd21 100644 --- a/wiki/star-systems/GJ-216B/bodies/GJ216Bd/markers.json +++ b/wiki/star-systems/GJ-216B/bodies/GJ216Bd/markers.json @@ -943,7 +943,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Gulch", + "name": "Doublet", "kind": "capital", "center": [ 65, @@ -964,4 +964,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-229/bodies/GJ229c/markers.json b/wiki/star-systems/GJ-229/bodies/GJ229c/markers.json index f65ccc189..a11177703 100644 --- a/wiki/star-systems/GJ-229/bodies/GJ229c/markers.json +++ b/wiki/star-systems/GJ-229/bodies/GJ229c/markers.json @@ -192,7 +192,7 @@ }, { "id": "river_1", - "name": "Bj\u00f6rnsfjord", + "name": "Björnsfjord", "path": [ [ 128, @@ -684,7 +684,7 @@ }, { "id": "range_2", - "name": "Bj\u00f8rnsvik", + "name": "Bjørnsvik", "center": [ 67, 327 @@ -713,7 +713,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordheim", + "name": "Lepola", "kind": "capital", "center": [ 208, @@ -726,7 +726,7 @@ "pois": [ { "id": "poi_0", - "name": "Sk\u00e4rg\u00e5rd", + "name": "Skärgård", "kind": "transit", "center": [ 208, @@ -734,4 +734,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-231/bodies/GJ231d/markers.json b/wiki/star-systems/GJ-231/bodies/GJ231d/markers.json index bb943d9a0..75f21e4b2 100644 --- a/wiki/star-systems/GJ-231/bodies/GJ231d/markers.json +++ b/wiki/star-systems/GJ-231/bodies/GJ231d/markers.json @@ -620,7 +620,7 @@ }, { "id": "water_2", - "name": "K\u0159iv\u00e1", + "name": "Křivá", "kind": "ocean", "center": [ 199, @@ -671,7 +671,7 @@ }, { "id": "range_3", - "name": "Havsgr\u00e4ns", + "name": "Havsgräns", "center": [ 18, 44 @@ -697,7 +697,7 @@ }, { "id": "range_5", - "name": "J\u00f6kull Plain", + "name": "Jökull Plain", "center": [ 20, 225 @@ -739,7 +739,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordheim", + "name": "Britta's Landing", "kind": "capital", "center": [ 142, @@ -760,4 +760,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-234A/bodies/GJ234Ac/markers.json b/wiki/star-systems/GJ-234A/bodies/GJ234Ac/markers.json index 04bd04684..778681d33 100644 --- a/wiki/star-systems/GJ-234A/bodies/GJ234Ac/markers.json +++ b/wiki/star-systems/GJ-234A/bodies/GJ234Ac/markers.json @@ -120,7 +120,7 @@ }, { "id": "river_1", - "name": "Rio do Sil\u00eancio", + "name": "Rio do Silêncio", "path": [ [ 18, @@ -234,7 +234,7 @@ }, { "id": "river_2", - "name": "Rio da Esperan\u00e7a", + "name": "Rio da Esperança", "path": [ [ 111, @@ -644,7 +644,7 @@ "cities": [ { "id": "city_0", - "name": "Serra do Sol", + "name": "Sobreiro", "kind": "capital", "center": [ 45, @@ -665,4 +665,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-244A/bodies/GJ244Ad/markers.json b/wiki/star-systems/GJ-244A/bodies/GJ244Ad/markers.json index a77c613fc..2ae937180 100644 --- a/wiki/star-systems/GJ-244A/bodies/GJ244Ad/markers.json +++ b/wiki/star-systems/GJ-244A/bodies/GJ244Ad/markers.json @@ -27,7 +27,7 @@ }, { "id": "water_2", - "name": "Upper Shelf", + "name": "Veil Shelf", "kind": "lake", "center": [ 54, @@ -47,7 +47,7 @@ }, { "id": "water_4", - "name": "Southern Melt", + "name": "Concord Mere", "kind": "lake", "center": [ 201, @@ -77,7 +77,7 @@ }, { "id": "water_7", - "name": "Eastern Tarn", + "name": "Charter Tarn", "kind": "lake", "center": [ 218, @@ -128,7 +128,7 @@ }, { "id": "range_3", - "name": "Westwall", + "name": "The Statute", "center": [ 111, 17 @@ -141,7 +141,7 @@ }, { "id": "range_4", - "name": "Keel Ridge", + "name": "Charter Spur", "center": [ 115, 125 @@ -276,4 +276,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-250A/bodies/GJ250Ad/markers.json b/wiki/star-systems/GJ-250A/bodies/GJ250Ad/markers.json index 3c0e230d4..11188273c 100644 --- a/wiki/star-systems/GJ-250A/bodies/GJ250Ad/markers.json +++ b/wiki/star-systems/GJ-250A/bodies/GJ250Ad/markers.json @@ -749,7 +749,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Creek", + "name": "Heaviside", "kind": "capital", "center": [ 130, @@ -770,4 +770,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-251/bodies/GJ251c/markers.json b/wiki/star-systems/GJ-251/bodies/GJ251c/markers.json index af5365adf..8c377ae28 100644 --- a/wiki/star-systems/GJ-251/bodies/GJ251c/markers.json +++ b/wiki/star-systems/GJ-251/bodies/GJ251c/markers.json @@ -455,7 +455,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Tributarium–Capitolium Corridor", "kind": "commercial", "path": [ [ @@ -724,7 +724,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Tributarium", "kind": "capital", "center": [ 123, @@ -734,7 +734,7 @@ }, { "id": "city_1", - "name": "Capitolium", + "name": "Ruhr", "kind": "city", "center": [ 105, @@ -746,7 +746,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Tributarium–Capitolium Express", "kind": "passenger_freight", "path": [ [ @@ -1023,4 +1023,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-273/bodies/GJ273c/markers.json b/wiki/star-systems/GJ-273/bodies/GJ273c/markers.json index b52681e1c..5f50ed80b 100644 --- a/wiki/star-systems/GJ-273/bodies/GJ273c/markers.json +++ b/wiki/star-systems/GJ-273/bodies/GJ273c/markers.json @@ -780,7 +780,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Dry Creek Station–Billabong Crossing Road", "kind": "commercial", "path": [ [ @@ -1049,7 +1049,7 @@ "cities": [ { "id": "city_0", - "name": "Dry Creek Station", + "name": "Bunbury", "kind": "capital", "center": [ 249, @@ -1071,7 +1071,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Dry Creek Station–Billabong Crossing Line", "kind": "passenger_freight", "path": [ [ @@ -1348,4 +1348,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-280A/bodies/GJ280Ad/markers.json b/wiki/star-systems/GJ-280A/bodies/GJ280Ad/markers.json index 125331fbf..77b618b2e 100644 --- a/wiki/star-systems/GJ-280A/bodies/GJ280Ad/markers.json +++ b/wiki/star-systems/GJ-280A/bodies/GJ280Ad/markers.json @@ -414,7 +414,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Eastern Shelf", + "name": "Parallax Scarp", "center": [ 180, 448 @@ -427,7 +427,7 @@ }, { "id": "range_1", - "name": "Western Range", + "name": "Vantage Ridge", "center": [ 202, 57 @@ -440,7 +440,7 @@ }, { "id": "range_2", - "name": "Southern Heights", + "name": "Ledger Peaks", "center": [ 212, 387 diff --git a/wiki/star-systems/GJ-282A/bodies/GJ282Ac/markers.json b/wiki/star-systems/GJ-282A/bodies/GJ282Ac/markers.json index c461ad8e7..c3c22e4d5 100644 --- a/wiki/star-systems/GJ-282A/bodies/GJ282Ac/markers.json +++ b/wiki/star-systems/GJ-282A/bodies/GJ282Ac/markers.json @@ -794,7 +794,7 @@ }, { "id": "range_4", - "name": "Gro\u00dfe Kette", + "name": "Große Kette", "center": [ 226, 88 @@ -810,7 +810,7 @@ "cities": [ { "id": "city_0", - "name": "Steinbruch", + "name": "Dieulefit", "kind": "capital", "center": [ 27, @@ -831,4 +831,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-282B/bodies/GJ282Bc/markers.json b/wiki/star-systems/GJ-282B/bodies/GJ282Bc/markers.json index a3bff23f8..7aab427c7 100644 --- a/wiki/star-systems/GJ-282B/bodies/GJ282Bc/markers.json +++ b/wiki/star-systems/GJ-282B/bodies/GJ282Bc/markers.json @@ -467,7 +467,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Line", + "name": "Belver", "kind": "capital", "center": [ 206, @@ -488,4 +488,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-299/bodies/GJ299c/markers.json b/wiki/star-systems/GJ-299/bodies/GJ299c/markers.json index cbe8cfc8c..140770d11 100644 --- a/wiki/star-systems/GJ-299/bodies/GJ299c/markers.json +++ b/wiki/star-systems/GJ-299/bodies/GJ299c/markers.json @@ -374,7 +374,7 @@ }, { "id": "water_6", - "name": "Vale do Esp\u00edrito", + "name": "Vale do Espírito", "kind": "lake", "center": [ 242, @@ -461,7 +461,7 @@ }, { "id": "range_5", - "name": "Monte do Esp\u00edrito", + "name": "Monte do Espírito", "center": [ 161, 219 @@ -503,7 +503,7 @@ "cities": [ { "id": "city_0", - "name": "Ribeira Grande", + "name": "Várzea", "kind": "capital", "center": [ 115, @@ -524,4 +524,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-302/bodies/GJ302c/markers.json b/wiki/star-systems/GJ-302/bodies/GJ302c/markers.json index 78a66472b..e11e66778 100644 --- a/wiki/star-systems/GJ-302/bodies/GJ302c/markers.json +++ b/wiki/star-systems/GJ-302/bodies/GJ302c/markers.json @@ -300,7 +300,7 @@ }, { "id": "range_2", - "name": "Silberh\u00fcgel", + "name": "Silberhügel", "center": [ 172, 226 @@ -381,7 +381,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenberg", + "name": "Brücke", "kind": "capital", "center": [ 250, @@ -402,4 +402,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-309/bodies/GJ309c/markers.json b/wiki/star-systems/GJ-309/bodies/GJ309c/markers.json index b2ddd1b97..7a38fe038 100644 --- a/wiki/star-systems/GJ-309/bodies/GJ309c/markers.json +++ b/wiki/star-systems/GJ-309/bodies/GJ309c/markers.json @@ -606,7 +606,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Freystadt", "kind": "capital", "center": [ 247, @@ -627,4 +627,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3135/bodies/GJ3135c/markers.json b/wiki/star-systems/GJ-3135/bodies/GJ3135c/markers.json index 19a74f500..3fd70e4ee 100644 --- a/wiki/star-systems/GJ-3135/bodies/GJ3135c/markers.json +++ b/wiki/star-systems/GJ-3135/bodies/GJ3135c/markers.json @@ -382,7 +382,7 @@ }, { "id": "water_1", - "name": "Sh\u014dgun Falls", + "name": "Shōgun Falls", "kind": "ocean", "center": [ 164, @@ -392,7 +392,7 @@ }, { "id": "water_2", - "name": "K\u014dri Stream", + "name": "Kōri Stream", "kind": "lake", "center": [ 44, @@ -482,7 +482,7 @@ "cities": [ { "id": "city_0", - "name": "Sakura Bay", + "name": "Whitfield Crossing", "kind": "capital", "center": [ 150, @@ -503,4 +503,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-320/bodies/GJ320c/markers.json b/wiki/star-systems/GJ-320/bodies/GJ320c/markers.json index 96f513194..9f6ed9f34 100644 --- a/wiki/star-systems/GJ-320/bodies/GJ320c/markers.json +++ b/wiki/star-systems/GJ-320/bodies/GJ320c/markers.json @@ -447,7 +447,7 @@ "cities": [ { "id": "city_0", - "name": "Steinbach", + "name": "Wend", "kind": "capital", "center": [ 85, @@ -468,4 +468,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-325A/bodies/GJ325Ac/markers.json b/wiki/star-systems/GJ-325A/bodies/GJ325Ac/markers.json index 730f1e75d..78dcdacac 100644 --- a/wiki/star-systems/GJ-325A/bodies/GJ325Ac/markers.json +++ b/wiki/star-systems/GJ-325A/bodies/GJ325Ac/markers.json @@ -524,7 +524,7 @@ "oceans": [ { "id": "water_0", - "name": "Sh\u014dgun", + "name": "Shōgun", "kind": "ocean", "center": [ 69, @@ -544,7 +544,7 @@ }, { "id": "water_2", - "name": "K\u014dan Bay", + "name": "Kōan Bay", "kind": "lake", "center": [ 208, @@ -650,7 +650,7 @@ "cities": [ { "id": "city_0", - "name": "Zen Garden", + "name": "Purnima", "kind": "capital", "center": [ 250, @@ -671,4 +671,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3323/bodies/GJ3323c/markers.json b/wiki/star-systems/GJ-3323/bodies/GJ3323c/markers.json index e6dad2441..b4ae2ab02 100644 --- a/wiki/star-systems/GJ-3323/bodies/GJ3323c/markers.json +++ b/wiki/star-systems/GJ-3323/bodies/GJ3323c/markers.json @@ -553,7 +553,7 @@ "cities": [ { "id": "city_0", - "name": "Mbanza Grande", + "name": "Entroncamento", "kind": "capital", "center": [ 162, @@ -574,4 +574,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3325/bodies/GJ3325d/markers.json b/wiki/star-systems/GJ-3325/bodies/GJ3325d/markers.json index 31be50a8f..49f1b3516 100644 --- a/wiki/star-systems/GJ-3325/bodies/GJ3325d/markers.json +++ b/wiki/star-systems/GJ-3325/bodies/GJ3325d/markers.json @@ -762,7 +762,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Auldhaven–Blackwater Ford Road", "kind": "commercial", "path": [ [ @@ -1041,7 +1041,7 @@ }, { "id": "city_1", - "name": "Blackwater Ford", + "name": "Strathmore", "kind": "city", "center": [ 64, @@ -1053,7 +1053,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Auldhaven–Blackwater Ford Line", "kind": "passenger_freight", "path": [ [ @@ -1330,4 +1330,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3379/bodies/GJ3379e-m1/markers.json b/wiki/star-systems/GJ-3379/bodies/GJ3379e-m1/markers.json index d4e5e3bec..7b883ec66 100644 --- a/wiki/star-systems/GJ-3379/bodies/GJ3379e-m1/markers.json +++ b/wiki/star-systems/GJ-3379/bodies/GJ3379e-m1/markers.json @@ -110,7 +110,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Weicheng", "kind": "capital", "center": [ 196, @@ -131,4 +131,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-338B/bodies/GJ338Bd/markers.json b/wiki/star-systems/GJ-338B/bodies/GJ338Bd/markers.json index 1894c388a..ff1b01a28 100644 --- a/wiki/star-systems/GJ-338B/bodies/GJ338Bd/markers.json +++ b/wiki/star-systems/GJ-338B/bodies/GJ338Bd/markers.json @@ -490,7 +490,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Viridarium", "kind": "capital", "center": [ 53, diff --git a/wiki/star-systems/GJ-349/bodies/GJ349c/markers.json b/wiki/star-systems/GJ-349/bodies/GJ349c/markers.json index 65bbed359..681dc5d47 100644 --- a/wiki/star-systems/GJ-349/bodies/GJ349c/markers.json +++ b/wiki/star-systems/GJ-349/bodies/GJ349c/markers.json @@ -551,7 +551,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Herborn", "kind": "capital", "center": [ 130, @@ -572,4 +572,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-34A/bodies/GJ34Ad/markers.json b/wiki/star-systems/GJ-34A/bodies/GJ34Ad/markers.json index 0011a8efe..689bf8a72 100644 --- a/wiki/star-systems/GJ-34A/bodies/GJ34Ad/markers.json +++ b/wiki/star-systems/GJ-34A/bodies/GJ34Ad/markers.json @@ -442,7 +442,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Billabong Creek\u2013Dusty Pasture Road", "kind": "commercial", "path": [ [ @@ -733,7 +733,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Billabong Creek\u2013Dusty Pasture Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-35/bodies/GJ35c/markers.json b/wiki/star-systems/GJ-35/bodies/GJ35c/markers.json index 3574a1a9f..1bd359f22 100644 --- a/wiki/star-systems/GJ-35/bodies/GJ35c/markers.json +++ b/wiki/star-systems/GJ-35/bodies/GJ35c/markers.json @@ -286,7 +286,7 @@ }, { "id": "river_2", - "name": "Rooistroom", + "name": "Obotan", "path": [ [ 142, @@ -466,7 +466,7 @@ }, { "id": "water_4", - "name": "Suidelike Poel", + "name": "Lagoa do Sul", "kind": "lake", "center": [ 244, @@ -491,7 +491,7 @@ }, { "id": "range_1", - "name": "Skerprant", + "name": "Kwahu Scarp", "center": [ 34, 219 @@ -530,7 +530,7 @@ }, { "id": "range_4", - "name": "Asrant", + "name": "Crista das Cinzas", "center": [ 41, 387 @@ -556,7 +556,7 @@ }, { "id": "range_6", - "name": "Waterrant", + "name": "Bosomtwe Shelf", "center": [ 171, 130 diff --git a/wiki/star-systems/GJ-3533/bodies/GJ3533c/markers.json b/wiki/star-systems/GJ-3533/bodies/GJ3533c/markers.json index abbe4fe78..0a764fd96 100644 --- a/wiki/star-systems/GJ-3533/bodies/GJ3533c/markers.json +++ b/wiki/star-systems/GJ-3533/bodies/GJ3533c/markers.json @@ -634,7 +634,7 @@ }, { "id": "water_1", - "name": "Kai Sh\u014d", + "name": "Kai Shō", "kind": "lake", "center": [ 142, @@ -714,7 +714,7 @@ "cities": [ { "id": "city_0", - "name": "Zen Garden", + "name": "Trung's Crossing", "kind": "capital", "center": [ 240, @@ -735,4 +735,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-356A/bodies/GJ356Ac/markers.json b/wiki/star-systems/GJ-356A/bodies/GJ356Ac/markers.json index 8285dd25a..aff791331 100644 --- a/wiki/star-systems/GJ-356A/bodies/GJ356Ac/markers.json +++ b/wiki/star-systems/GJ-356A/bodies/GJ356Ac/markers.json @@ -750,7 +750,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenfels", + "name": "Sonneberg", "kind": "capital", "center": [ 5, @@ -771,4 +771,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-357/bodies/GJ357c/markers.json b/wiki/star-systems/GJ-357/bodies/GJ357c/markers.json index 1c70c21d5..723e79b3a 100644 --- a/wiki/star-systems/GJ-357/bodies/GJ357c/markers.json +++ b/wiki/star-systems/GJ-357/bodies/GJ357c/markers.json @@ -447,7 +447,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenstadt", + "name": "Stendal", "kind": "capital", "center": [ 196, @@ -468,4 +468,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3586/bodies/GJ3586c/markers.json b/wiki/star-systems/GJ-3586/bodies/GJ3586c/markers.json index 711868c40..b55cc814c 100644 --- a/wiki/star-systems/GJ-3586/bodies/GJ3586c/markers.json +++ b/wiki/star-systems/GJ-3586/bodies/GJ3586c/markers.json @@ -476,7 +476,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "H\u00e4ngegraben", + "name": "Hängegraben", "center": [ 28, 328 @@ -531,7 +531,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenberg", + "name": "Wiesengrund", "kind": "capital", "center": [ 250, @@ -552,4 +552,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3612/bodies/GJ3612d/markers.json b/wiki/star-systems/GJ-3612/bodies/GJ3612d/markers.json index 6e3e7254b..72fd5e3e9 100644 --- a/wiki/star-systems/GJ-3612/bodies/GJ3612d/markers.json +++ b/wiki/star-systems/GJ-3612/bodies/GJ3612d/markers.json @@ -76,7 +76,7 @@ }, { "id": "river_1", - "name": "Shogun\u2019s Isle", + "name": "Shogun’s Isle", "path": [ [ 120, @@ -503,7 +503,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Vời Cảng", "kind": "capital", "center": [ 40, @@ -524,4 +524,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3622/bodies/GJ3622c/markers.json b/wiki/star-systems/GJ-3622/bodies/GJ3622c/markers.json index e0e9263f6..9de951c51 100644 --- a/wiki/star-systems/GJ-3622/bodies/GJ3622c/markers.json +++ b/wiki/star-systems/GJ-3622/bodies/GJ3622c/markers.json @@ -794,7 +794,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Loch Moray\u2013Burghead Road", "kind": "commercial", "path": [ [ @@ -1085,7 +1085,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Loch Moray\u2013Burghead Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-3737/bodies/GJ3737e-m2/markers.json b/wiki/star-systems/GJ-3737/bodies/GJ3737e-m2/markers.json index c31e3e16c..0c19326a4 100644 --- a/wiki/star-systems/GJ-3737/bodies/GJ3737e-m2/markers.json +++ b/wiki/star-systems/GJ-3737/bodies/GJ3737e-m2/markers.json @@ -52,7 +52,7 @@ }, { "id": "range_1", - "name": "Bj\u00f8rnsfjell", + "name": "Bjørnsfjell", "center": [ 104, 504 @@ -117,7 +117,7 @@ }, { "id": "range_6", - "name": "Bj\u00f8rnstrand", + "name": "Bjørnstrand", "center": [ 95, 343 @@ -146,7 +146,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordholm", + "name": "Kvitfjell", "kind": "capital", "center": [ 36, @@ -167,4 +167,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-380/bodies/GJ380c/markers.json b/wiki/star-systems/GJ-380/bodies/GJ380c/markers.json index dfdc0b075..b4254ef59 100644 --- a/wiki/star-systems/GJ-380/bodies/GJ380c/markers.json +++ b/wiki/star-systems/GJ-380/bodies/GJ380c/markers.json @@ -52,7 +52,7 @@ }, { "id": "river_1", - "name": "The Kesset", + "name": "Nkwanta Beck", "path": [ [ 250, @@ -102,7 +102,7 @@ }, { "id": "river_2", - "name": "Pale Run", + "name": "Durneth Beck", "path": [ [ 74, @@ -176,7 +176,7 @@ }, { "id": "water_3", - "name": "Selet Basin", + "name": "Subin Basin", "kind": "lake", "center": [ 220, @@ -240,7 +240,7 @@ }, { "id": "range_4", - "name": "Tember Ridge", + "name": "Tember Spine", "center": [ 34, 305 @@ -253,7 +253,7 @@ }, { "id": "range_5", - "name": "Holt Spur", + "name": "Bosomtwe Spur", "center": [ 33, 396 @@ -514,4 +514,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-3877/bodies/GJ3877c/markers.json b/wiki/star-systems/GJ-3877/bodies/GJ3877c/markers.json index a92031465..31918bc1f 100644 --- a/wiki/star-systems/GJ-3877/bodies/GJ3877c/markers.json +++ b/wiki/star-systems/GJ-3877/bodies/GJ3877c/markers.json @@ -500,7 +500,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Forum Aethel–Basilica Nova Corridor", "kind": "commercial", "path": [ [ @@ -769,7 +769,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Aethel", + "name": "Corvel", "kind": "capital", "center": [ 168, @@ -779,7 +779,7 @@ }, { "id": "city_1", - "name": "Basilica Nova", + "name": "Velum", "kind": "city", "center": [ 69, @@ -791,7 +791,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Forum Aethel–Basilica Nova Express", "kind": "passenger_freight", "path": [ [ @@ -1068,4 +1068,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-393/bodies/GJ393c/markers.json b/wiki/star-systems/GJ-393/bodies/GJ393c/markers.json index 7ffb8f396..d84c720d5 100644 --- a/wiki/star-systems/GJ-393/bodies/GJ393c/markers.json +++ b/wiki/star-systems/GJ-393/bodies/GJ393c/markers.json @@ -382,7 +382,7 @@ }, { "id": "water_1", - "name": "Cabo da Boa Esperan\u00e7a", + "name": "Cabo da Boa Esperança", "kind": "lake", "center": [ 6, @@ -402,7 +402,7 @@ }, { "id": "water_3", - "name": "Atl\u00e2ntico Coast", + "name": "Atlântico Coast", "kind": "ocean", "center": [ 171, @@ -414,7 +414,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "U\u00edge", + "name": "Uíge", "center": [ 30, 269 @@ -495,7 +495,7 @@ "cities": [ { "id": "city_0", - "name": "M\u2019Banza", + "name": "Encrucijada", "kind": "capital", "center": [ 5, @@ -516,4 +516,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-402/bodies/GJ402c/markers.json b/wiki/star-systems/GJ-402/bodies/GJ402c/markers.json index 5f8626c34..357e8b343 100644 --- a/wiki/star-systems/GJ-402/bodies/GJ402c/markers.json +++ b/wiki/star-systems/GJ-402/bodies/GJ402c/markers.json @@ -246,7 +246,7 @@ "cities": [ { "id": "city_0", - "name": "Dry Creek Station", + "name": "Arkwright", "kind": "capital", "center": [ 173, @@ -267,4 +267,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-4053/bodies/GJ4053c/markers.json b/wiki/star-systems/GJ-4053/bodies/GJ4053c/markers.json index 6cd200ae0..252b73d34 100644 --- a/wiki/star-systems/GJ-4053/bodies/GJ4053c/markers.json +++ b/wiki/star-systems/GJ-4053/bodies/GJ4053c/markers.json @@ -599,7 +599,7 @@ "cities": [ { "id": "city_0", - "name": "Mwezi Beach", + "name": "Masvingo", "kind": "capital", "center": [ 125, @@ -620,4 +620,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-407/bodies/GJ407c/markers.json b/wiki/star-systems/GJ-407/bodies/GJ407c/markers.json index 83e2e64d4..9ee5f6595 100644 --- a/wiki/star-systems/GJ-407/bodies/GJ407c/markers.json +++ b/wiki/star-systems/GJ-407/bodies/GJ407c/markers.json @@ -600,7 +600,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Sutherton", "kind": "capital", "center": [ 140, @@ -621,4 +621,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-411/bodies/GJ411c/markers.json b/wiki/star-systems/GJ-411/bodies/GJ411c/markers.json index a895261d3..9db0706e5 100644 --- a/wiki/star-systems/GJ-411/bodies/GJ411c/markers.json +++ b/wiki/star-systems/GJ-411/bodies/GJ411c/markers.json @@ -711,7 +711,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Ribeira do Sol\u2013Douro Valley Estrada", "kind": "commercial", "path": [ [ @@ -1002,7 +1002,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Ribeira do Sol\u2013Douro Valley Run", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-412A/bodies/GJ412Ac/markers.json b/wiki/star-systems/GJ-412A/bodies/GJ412Ac/markers.json index 3ef5ad22a..de359b6ff 100644 --- a/wiki/star-systems/GJ-412A/bodies/GJ412Ac/markers.json +++ b/wiki/star-systems/GJ-412A/bodies/GJ412Ac/markers.json @@ -666,7 +666,7 @@ }, { "id": "range_4", - "name": "Vale da Esperan\u00e7a", + "name": "Vale da Esperança", "center": [ 148, 496 @@ -721,7 +721,7 @@ "cities": [ { "id": "city_0", - "name": "Mbanza Grande", + "name": "Tierranueva", "kind": "capital", "center": [ 5, @@ -742,4 +742,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-412B/bodies/GJ412Bc/markers.json b/wiki/star-systems/GJ-412B/bodies/GJ412Bc/markers.json index 4b7f8c875..3de210f27 100644 --- a/wiki/star-systems/GJ-412B/bodies/GJ412Bc/markers.json +++ b/wiki/star-systems/GJ-412B/bodies/GJ412Bc/markers.json @@ -671,7 +671,7 @@ "cities": [ { "id": "city_0", - "name": "Hanseong", + "name": "Korhonen", "kind": "capital", "center": [ 213, @@ -692,4 +692,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-42/bodies/GJ42c/markers.json b/wiki/star-systems/GJ-42/bodies/GJ42c/markers.json index f019f5a27..19ea64e46 100644 --- a/wiki/star-systems/GJ-42/bodies/GJ42c/markers.json +++ b/wiki/star-systems/GJ-42/bodies/GJ42c/markers.json @@ -534,7 +534,7 @@ }, { "id": "river_4", - "name": "Gr\u00fcnenhain", + "name": "Grünenhain", "path": [ [ 126, @@ -794,7 +794,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenfels", + "name": "Poperinge", "kind": "capital", "center": [ 92, @@ -815,4 +815,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-421B/bodies/GJ421Bc/markers.json b/wiki/star-systems/GJ-421B/bodies/GJ421Bc/markers.json index 8ec72d413..4b738e2b7 100644 --- a/wiki/star-systems/GJ-421B/bodies/GJ421Bc/markers.json +++ b/wiki/star-systems/GJ-421B/bodies/GJ421Bc/markers.json @@ -354,7 +354,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Flatland", + "name": "Crista de Serpa", "center": [ 155, 361 @@ -380,7 +380,7 @@ }, { "id": "range_2", - "name": "Coastal Edge", + "name": "Ponta da Pedra", "center": [ 133, 227 @@ -393,7 +393,7 @@ }, { "id": "range_3", - "name": "Valley Floor", + "name": "Corvo Negro", "center": [ 106, 321 @@ -419,7 +419,7 @@ }, { "id": "range_5", - "name": "Inland Reach", + "name": "Serra Seca", "center": [ 84, 418 @@ -461,7 +461,7 @@ "cities": [ { "id": "city_0", - "name": "Ridgeview", + "name": "Miradouro Seco", "kind": "capital", "center": [ 162, diff --git a/wiki/star-systems/GJ-423A/bodies/GJ423Ad/markers.json b/wiki/star-systems/GJ-423A/bodies/GJ423Ad/markers.json index fc82802e3..37bde3a8a 100644 --- a/wiki/star-systems/GJ-423A/bodies/GJ423Ad/markers.json +++ b/wiki/star-systems/GJ-423A/bodies/GJ423Ad/markers.json @@ -645,7 +645,7 @@ "cities": [ { "id": "city_0", - "name": "Bayan", + "name": "Marunong", "kind": "capital", "center": [ 165, @@ -666,4 +666,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-423B/bodies/GJ423Bd/markers.json b/wiki/star-systems/GJ-423B/bodies/GJ423Bd/markers.json index 921c7655a..512142f9f 100644 --- a/wiki/star-systems/GJ-423B/bodies/GJ423Bd/markers.json +++ b/wiki/star-systems/GJ-423B/bodies/GJ423Bd/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Chapad\u00e3o Grande", + "name": "Chapadão Grande", "path": [ [ 176, @@ -132,7 +132,7 @@ }, { "id": "river_1", - "name": "C\u00f3rrego Fino", + "name": "Córrego Fino", "path": [ [ 45, @@ -474,7 +474,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "C\u00e2nion Profundo", + "name": "Cânion Profundo", "center": [ 89, 180 @@ -526,7 +526,7 @@ }, { "id": "range_4", - "name": "Plan\u00edcie Seca", + "name": "Planície Seca", "center": [ 108, 263 @@ -539,7 +539,7 @@ }, { "id": "range_5", - "name": "Trilha do Drag\u00e3o", + "name": "Trilha do Dragão", "center": [ 167, 424 @@ -552,7 +552,7 @@ }, { "id": "range_6", - "name": "Pouso do Gavi\u00e3o", + "name": "Pouso do Gavião", "center": [ 192, 202 @@ -568,7 +568,7 @@ "cities": [ { "id": "city_0", - "name": "Serra do Sol", + "name": "Quilombo", "kind": "capital", "center": [ 60, @@ -589,4 +589,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-4285/bodies/GJ4285e-m1/markers.json b/wiki/star-systems/GJ-4285/bodies/GJ4285e-m1/markers.json index 6f26cbcb3..68a870762 100644 --- a/wiki/star-systems/GJ-4285/bodies/GJ4285e-m1/markers.json +++ b/wiki/star-systems/GJ-4285/bodies/GJ4285e-m1/markers.json @@ -585,7 +585,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Lam's Rest", "kind": "capital", "center": [ 83, @@ -606,4 +606,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-428A/bodies/GJ428Ac/markers.json b/wiki/star-systems/GJ-428A/bodies/GJ428Ac/markers.json index 357fc324b..87aecc6dc 100644 --- a/wiki/star-systems/GJ-428A/bodies/GJ428Ac/markers.json +++ b/wiki/star-systems/GJ-428A/bodies/GJ428Ac/markers.json @@ -398,7 +398,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Fritzlar", "kind": "capital", "center": [ 138, @@ -419,4 +419,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-435/bodies/GJ435c/markers.json b/wiki/star-systems/GJ-435/bodies/GJ435c/markers.json index 9befcf524..51d15c694 100644 --- a/wiki/star-systems/GJ-435/bodies/GJ435c/markers.json +++ b/wiki/star-systems/GJ-435/bodies/GJ435c/markers.json @@ -278,7 +278,7 @@ }, { "id": "river_4", - "name": "Rio da N\u00e9voa", + "name": "Rio da Névoa", "path": [ [ 242, @@ -376,7 +376,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Fal\u00e9sia da Esperan\u00e7a", + "name": "Falésia da Esperança", "center": [ 37, 260 @@ -402,7 +402,7 @@ }, { "id": "range_2", - "name": "Cume do Drag\u00e3o", + "name": "Cume do Dragão", "center": [ 51, 307 @@ -415,7 +415,7 @@ }, { "id": "range_3", - "name": "Vale do Esp\u00edrito", + "name": "Vale do Espírito", "center": [ 111, 397 @@ -428,7 +428,7 @@ }, { "id": "range_4", - "name": "Serra do Sil\u00eancio", + "name": "Serra do Silêncio", "center": [ 121, 270 @@ -441,7 +441,7 @@ }, { "id": "range_5", - "name": "Rocha da F\u00e9", + "name": "Rocha da Fé", "center": [ 135, 451 @@ -470,7 +470,7 @@ "cities": [ { "id": "city_0", - "name": "Ribeira Grande", + "name": "Mirante", "kind": "capital", "center": [ 221, @@ -491,4 +491,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-438/bodies/GJ438c/markers.json b/wiki/star-systems/GJ-438/bodies/GJ438c/markers.json index 0498d1f75..7df2276e5 100644 --- a/wiki/star-systems/GJ-438/bodies/GJ438c/markers.json +++ b/wiki/star-systems/GJ-438/bodies/GJ438c/markers.json @@ -693,7 +693,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Node Seven", "kind": "capital", "center": [ 239, @@ -714,4 +714,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-442A/bodies/GJ442Ad/markers.json b/wiki/star-systems/GJ-442A/bodies/GJ442Ad/markers.json index 7980cd943..72a09bfc9 100644 --- a/wiki/star-systems/GJ-442A/bodies/GJ442Ad/markers.json +++ b/wiki/star-systems/GJ-442A/bodies/GJ442Ad/markers.json @@ -460,7 +460,7 @@ }, { "id": "range_4", - "name": "R\u016fst\u00e1", + "name": "Růstá", "center": [ 224, 429 @@ -476,7 +476,7 @@ "cities": [ { "id": "city_0", - "name": "Bj\u00f6rn's Fjord", + "name": "Hagfors", "kind": "capital", "center": [ 149, @@ -489,7 +489,7 @@ "pois": [ { "id": "poi_0", - "name": "Moravsk\u00e1 Voda", + "name": "Moravská Voda", "kind": "transit", "center": [ 149, @@ -497,4 +497,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-445/bodies/GJ445c-m1/markers.json b/wiki/star-systems/GJ-445/bodies/GJ445c-m1/markers.json index 049e51da2..2239ecb0b 100644 --- a/wiki/star-systems/GJ-445/bodies/GJ445c-m1/markers.json +++ b/wiki/star-systems/GJ-445/bodies/GJ445c-m1/markers.json @@ -401,7 +401,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Jingmen", "kind": "capital", "center": [ 240, @@ -422,4 +422,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-447/bodies/GJ447c/markers.json b/wiki/star-systems/GJ-447/bodies/GJ447c/markers.json index 80be9cd25..6134958ca 100644 --- a/wiki/star-systems/GJ-447/bodies/GJ447c/markers.json +++ b/wiki/star-systems/GJ-447/bodies/GJ447c/markers.json @@ -542,7 +542,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Cenacula\u2013Basilica Aeterna Corridor", "kind": "commercial", "path": [ [ @@ -811,7 +811,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Cenacula", "kind": "capital", "center": [ 95, @@ -843,7 +843,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Cenacula\u2013Basilica Aeterna Express", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-453/bodies/GJ453c/markers.json b/wiki/star-systems/GJ-453/bodies/GJ453c/markers.json index fac18afe0..386ab1104 100644 --- a/wiki/star-systems/GJ-453/bodies/GJ453c/markers.json +++ b/wiki/star-systems/GJ-453/bodies/GJ453c/markers.json @@ -209,7 +209,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenberg", + "name": "Gemeinland", "kind": "capital", "center": [ 238, @@ -230,4 +230,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-454/bodies/GJ454d/markers.json b/wiki/star-systems/GJ-454/bodies/GJ454d/markers.json index 92a0e59ab..d9132dfd1 100644 --- a/wiki/star-systems/GJ-454/bodies/GJ454d/markers.json +++ b/wiki/star-systems/GJ-454/bodies/GJ454d/markers.json @@ -349,7 +349,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenberg", + "name": "Graustein", "kind": "capital", "center": [ 100, @@ -370,4 +370,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-475/bodies/GJ475e/markers.json b/wiki/star-systems/GJ-475/bodies/GJ475e/markers.json index 7df2edec6..4b8716036 100644 --- a/wiki/star-systems/GJ-475/bodies/GJ475e/markers.json +++ b/wiki/star-systems/GJ-475/bodies/GJ475e/markers.json @@ -748,7 +748,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Blackwater Ford–Firth View Road", "kind": "commercial", "path": [ [ @@ -1017,7 +1017,7 @@ "cities": [ { "id": "city_0", - "name": "Blackwater Ford", + "name": "Crieff", "kind": "capital", "center": [ 58, @@ -1039,7 +1039,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Blackwater Ford–Firth View Line", "kind": "passenger_freight", "path": [ [ @@ -1316,4 +1316,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-481/bodies/GJ481c/markers.json b/wiki/star-systems/GJ-481/bodies/GJ481c/markers.json index b9f8b15d7..8b7c78bd8 100644 --- a/wiki/star-systems/GJ-481/bodies/GJ481c/markers.json +++ b/wiki/star-systems/GJ-481/bodies/GJ481c/markers.json @@ -748,7 +748,7 @@ "cities": [ { "id": "city_0", - "name": "Blackwood", + "name": "Pershore", "kind": "capital", "center": [ 106, @@ -769,4 +769,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-482B/bodies/GJ482Bc/markers.json b/wiki/star-systems/GJ-482B/bodies/GJ482Bc/markers.json index fa4e90e76..91c185e32 100644 --- a/wiki/star-systems/GJ-482B/bodies/GJ482Bc/markers.json +++ b/wiki/star-systems/GJ-482B/bodies/GJ482Bc/markers.json @@ -462,7 +462,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Constância", "kind": "capital", "center": [ 220, @@ -483,4 +483,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-49/bodies/GJ49c/markers.json b/wiki/star-systems/GJ-49/bodies/GJ49c/markers.json index f86622d6c..55555ed36 100644 --- a/wiki/star-systems/GJ-49/bodies/GJ49c/markers.json +++ b/wiki/star-systems/GJ-49/bodies/GJ49c/markers.json @@ -152,7 +152,7 @@ }, { "id": "river_3", - "name": "K\u014dji Valley", + "name": "Kōji Valley", "path": [ [ 234, @@ -429,7 +429,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Baume", "kind": "capital", "center": [ 250, @@ -442,7 +442,7 @@ "pois": [ { "id": "poi_0", - "name": "K\u014dji Gate", + "name": "Kōji Gate", "kind": "transit", "center": [ 250, @@ -450,4 +450,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-501B/bodies/GJ501Bd/markers.json b/wiki/star-systems/GJ-501B/bodies/GJ501Bd/markers.json index 24d7e8304..613ed4931 100644 --- a/wiki/star-systems/GJ-501B/bodies/GJ501Bd/markers.json +++ b/wiki/star-systems/GJ-501B/bodies/GJ501Bd/markers.json @@ -617,7 +617,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Limiar", "kind": "capital", "center": [ 164, @@ -638,4 +638,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-502/bodies/GJ502d/markers.json b/wiki/star-systems/GJ-502/bodies/GJ502d/markers.json index 5ec250e86..099fa47df 100644 --- a/wiki/star-systems/GJ-502/bodies/GJ502d/markers.json +++ b/wiki/star-systems/GJ-502/bodies/GJ502d/markers.json @@ -484,7 +484,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Vinter\u00e5s", + "name": "Vinterås", "center": [ 11, 351 @@ -497,7 +497,7 @@ }, { "id": "range_1", - "name": "Vattenh\u00f8e", + "name": "Vattenhøe", "center": [ 17, 185 @@ -523,7 +523,7 @@ }, { "id": "range_3", - "name": "Skogv\u00e5g", + "name": "Skogvåg", "center": [ 42, 443 @@ -552,7 +552,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordholm", + "name": "Iter", "kind": "capital", "center": [ 234, @@ -573,4 +573,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-505A/bodies/GJ505Ac/markers.json b/wiki/star-systems/GJ-505A/bodies/GJ505Ac/markers.json index d04e0727f..d60923228 100644 --- a/wiki/star-systems/GJ-505A/bodies/GJ505Ac/markers.json +++ b/wiki/star-systems/GJ-505A/bodies/GJ505Ac/markers.json @@ -654,7 +654,7 @@ }, { "id": "range_2", - "name": "Steinbr\u00fccke", + "name": "Steinbrücke", "center": [ 147, 52 @@ -722,7 +722,7 @@ "cities": [ { "id": "city_0", - "name": "Steinbach", + "name": "Mass", "kind": "capital", "center": [ 28, @@ -743,4 +743,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-526/bodies/GJ526c/markers.json b/wiki/star-systems/GJ-526/bodies/GJ526c/markers.json index b4e6a40fc..cea50eafb 100644 --- a/wiki/star-systems/GJ-526/bodies/GJ526c/markers.json +++ b/wiki/star-systems/GJ-526/bodies/GJ526c/markers.json @@ -694,7 +694,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Morayh\u00fcgel", + "name": "Morayhügel", "center": [ 209, 105 @@ -746,7 +746,7 @@ }, { "id": "range_4", - "name": "Wei\u00dfe Wiese", + "name": "Weiße Wiese", "center": [ 187, 424 @@ -801,7 +801,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenfels", + "name": "Hütte", "kind": "capital", "center": [ 146, @@ -822,4 +822,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-528A/bodies/GJ528Ac/markers.json b/wiki/star-systems/GJ-528A/bodies/GJ528Ac/markers.json index 47a92254f..f00f7dbd9 100644 --- a/wiki/star-systems/GJ-528A/bodies/GJ528Ac/markers.json +++ b/wiki/star-systems/GJ-528A/bodies/GJ528Ac/markers.json @@ -132,7 +132,7 @@ }, { "id": "river_1", - "name": "Riverbend", + "name": "Die Draai", "path": [ [ 250, @@ -461,7 +461,7 @@ }, { "id": "range_1", - "name": "Northern Scarp", + "name": "Ouplaas Krans", "center": [ 67, 117 @@ -487,7 +487,7 @@ }, { "id": "range_3", - "name": "Western Mesa", + "name": "Klipplaas Tafel", "center": [ 112, 145 @@ -500,7 +500,7 @@ }, { "id": "range_4", - "name": "Southern Ridge", + "name": "Perdekop", "center": [ 106, 179 @@ -539,7 +539,7 @@ }, { "id": "range_7", - "name": "Eastern Reach", + "name": "Langrug", "center": [ 38, 214 @@ -555,7 +555,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Line", + "name": "Klaardorp", "kind": "capital", "center": [ 32, diff --git a/wiki/star-systems/GJ-529/bodies/GJ529c/markers.json b/wiki/star-systems/GJ-529/bodies/GJ529c/markers.json index 0147e13f9..80896452c 100644 --- a/wiki/star-systems/GJ-529/bodies/GJ529c/markers.json +++ b/wiki/star-systems/GJ-529/bodies/GJ529c/markers.json @@ -244,7 +244,7 @@ }, { "id": "river_1", - "name": "Schieferh\u00fcgel", + "name": "Schieferhügel", "path": [ [ 130, @@ -835,7 +835,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenfels", + "name": "Midtmark", "kind": "capital", "center": [ 183, @@ -856,4 +856,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-532/bodies/GJ532c/markers.json b/wiki/star-systems/GJ-532/bodies/GJ532c/markers.json index 7801b6737..c61f76383 100644 --- a/wiki/star-systems/GJ-532/bodies/GJ532c/markers.json +++ b/wiki/star-systems/GJ-532/bodies/GJ532c/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "O\u2019Malley", + "name": "O’Malley", "path": [ [ 0, @@ -600,7 +600,7 @@ "cities": [ { "id": "city_0", - "name": "Blackwood", + "name": "Iserlohn", "kind": "capital", "center": [ 39, @@ -621,4 +621,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-53A/bodies/GJ53Ad/markers.json b/wiki/star-systems/GJ-53A/bodies/GJ53Ad/markers.json index 04ecb7d43..e5a5b563f 100644 --- a/wiki/star-systems/GJ-53A/bodies/GJ53Ad/markers.json +++ b/wiki/star-systems/GJ-53A/bodies/GJ53Ad/markers.json @@ -276,7 +276,7 @@ }, { "id": "river_3", - "name": "Sh\u014dgun Pass", + "name": "Shōgun Pass", "path": [ [ 67, @@ -376,7 +376,7 @@ }, { "id": "river_5", - "name": "K\u014dd\u014d Stream", + "name": "Kōdō Stream", "path": [ [ 10, @@ -515,7 +515,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Bridgepoint", "kind": "capital", "center": [ 112, @@ -536,4 +536,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-54.1/bodies/GJ54.1b/markers.json b/wiki/star-systems/GJ-54.1/bodies/GJ54.1b/markers.json index ab91aa3c7..a337bc0f9 100644 --- a/wiki/star-systems/GJ-54.1/bodies/GJ54.1b/markers.json +++ b/wiki/star-systems/GJ-54.1/bodies/GJ54.1b/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Chapad\u00e3o", + "name": "Chapadão", "path": [ [ 82, @@ -196,7 +196,7 @@ }, { "id": "river_1", - "name": "Plan\u00edcie Alta", + "name": "Planície Alta", "path": [ [ 100, @@ -350,7 +350,7 @@ }, { "id": "river_2", - "name": "C\u00e2nion Profundo", + "name": "Cânion Profundo", "path": [ [ 131, @@ -708,7 +708,7 @@ }, { "id": "river_5", - "name": "C\u00f3rreia Seca", + "name": "Córreia Seca", "path": [ [ 56, @@ -843,7 +843,7 @@ }, { "id": "range_1", - "name": "C\u00e2nion da \u00c1gua", + "name": "Cânion da Água", "center": [ 135, 390 @@ -856,7 +856,7 @@ }, { "id": "range_2", - "name": "Vale da Esperan\u00e7a", + "name": "Vale da Esperança", "center": [ 185, 346 @@ -898,7 +898,7 @@ "cities": [ { "id": "city_0", - "name": "Serra do Sol", + "name": "Évora", "kind": "capital", "center": [ 28, @@ -919,4 +919,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-54/bodies/GJ54c/markers.json b/wiki/star-systems/GJ-54/bodies/GJ54c/markers.json index a6354cd0b..bd31ef48c 100644 --- a/wiki/star-systems/GJ-54/bodies/GJ54c/markers.json +++ b/wiki/star-systems/GJ-54/bodies/GJ54c/markers.json @@ -561,7 +561,7 @@ "cities": [ { "id": "city_0", - "name": "Mbanza", + "name": "Machamba", "kind": "capital", "center": [ 250, @@ -592,4 +592,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-541/bodies/GJ541e/markers.json b/wiki/star-systems/GJ-541/bodies/GJ541e/markers.json index 524e05553..92cd53c88 100644 --- a/wiki/star-systems/GJ-541/bodies/GJ541e/markers.json +++ b/wiki/star-systems/GJ-541/bodies/GJ541e/markers.json @@ -685,7 +685,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Central Depot", "kind": "capital", "center": [ 39, @@ -706,4 +706,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-542/bodies/GJ542c/markers.json b/wiki/star-systems/GJ-542/bodies/GJ542c/markers.json index 631631374..c9ababce9 100644 --- a/wiki/star-systems/GJ-542/bodies/GJ542c/markers.json +++ b/wiki/star-systems/GJ-542/bodies/GJ542c/markers.json @@ -88,7 +88,7 @@ }, { "id": "river_1", - "name": "Bj\u00f6rnsfjellet", + "name": "Björnsfjellet", "path": [ [ 255, @@ -326,7 +326,7 @@ }, { "id": "river_4", - "name": "Bj\u00f8rn's Reach", + "name": "Bjørn's Reach", "path": [ [ 151, @@ -516,7 +516,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Gr\u00e5viken", + "name": "Gråviken", "center": [ 107, 98 @@ -529,7 +529,7 @@ }, { "id": "range_1", - "name": "K\u0159ivka", + "name": "Křivka", "center": [ 88, 335 @@ -542,7 +542,7 @@ }, { "id": "range_2", - "name": "Sv\u011btl\u00e1", + "name": "Světlá", "center": [ 136, 366 @@ -568,7 +568,7 @@ }, { "id": "range_4", - "name": "B\u0159eh", + "name": "Břeh", "center": [ 158, 264 @@ -610,7 +610,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordheim", + "name": "Kopparmark", "kind": "capital", "center": [ 249, @@ -631,4 +631,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-551/bodies/GJ551b/markers.json b/wiki/star-systems/GJ-551/bodies/GJ551b/markers.json index 7ee5e97b2..ae102b7e0 100644 --- a/wiki/star-systems/GJ-551/bodies/GJ551b/markers.json +++ b/wiki/star-systems/GJ-551/bodies/GJ551b/markers.json @@ -295,7 +295,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Velabrum", "kind": "capital", "center": [ 170, diff --git a/wiki/star-systems/GJ-556/bodies/GJ556c/markers.json b/wiki/star-systems/GJ-556/bodies/GJ556c/markers.json index 4a2fdd593..ff13060d3 100644 --- a/wiki/star-systems/GJ-556/bodies/GJ556c/markers.json +++ b/wiki/star-systems/GJ-556/bodies/GJ556c/markers.json @@ -372,7 +372,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Northern Reach", + "name": "Bord\u00e3o", "center": [ 12, 267 @@ -398,7 +398,7 @@ }, { "id": "range_2", - "name": "Flat Meadow", + "name": "Crista Alta", "center": [ 21, 9 @@ -424,7 +424,7 @@ }, { "id": "range_4", - "name": "Central Valley", + "name": "Crest\u00e3o", "center": [ 136, 483 @@ -437,7 +437,7 @@ }, { "id": "range_5", - "name": "North Fork", + "name": "Bifurcada", "center": [ 186, 264 @@ -453,7 +453,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Line", + "name": "Miradouro", "kind": "capital", "center": [ 119, diff --git a/wiki/star-systems/GJ-566A/bodies/GJ566Ac/markers.json b/wiki/star-systems/GJ-566A/bodies/GJ566Ac/markers.json index aabda8030..ff86cb24d 100644 --- a/wiki/star-systems/GJ-566A/bodies/GJ566Ac/markers.json +++ b/wiki/star-systems/GJ-566A/bodies/GJ566Ac/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "F\u016bjin Stream", + "name": "Fūjin Stream", "path": [ [ 137, @@ -132,7 +132,7 @@ }, { "id": "river_1", - "name": "K\u014dri Delta", + "name": "Kōri Delta", "path": [ [ 114, @@ -448,7 +448,7 @@ }, { "id": "river_5", - "name": "F\u016bjin Valley", + "name": "Fūjin Valley", "path": [ [ 247, @@ -632,7 +632,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Jade Harbor–Sakura Bay Line", "kind": "commercial", "path": [ [ @@ -901,7 +901,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Lianyun Harbor", "kind": "capital", "center": [ 114, @@ -911,7 +911,7 @@ }, { "id": "city_1", - "name": "Sakura Bay", + "name": "Haodu", "kind": "city", "center": [ 105, @@ -923,7 +923,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Jade Harbor–Sakura Bay Run", "kind": "passenger_freight", "path": [ [ @@ -1192,7 +1192,7 @@ "pois": [ { "id": "poi_0", - "name": "K\u014dri Gate", + "name": "Kōri Gate", "kind": "transit", "center": [ 114, @@ -1200,4 +1200,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-567/bodies/GJ567c/markers.json b/wiki/star-systems/GJ-567/bodies/GJ567c/markers.json index 488c721d7..74e0fc3ea 100644 --- a/wiki/star-systems/GJ-567/bodies/GJ567c/markers.json +++ b/wiki/star-systems/GJ-567/bodies/GJ567c/markers.json @@ -238,7 +238,7 @@ }, { "id": "river_2", - "name": "M\u2019Bishi Delta", + "name": "M’Bishi Delta", "path": [ [ 123, @@ -560,7 +560,7 @@ }, { "id": "range_2", - "name": "Serra do Drag\u00e3o", + "name": "Serra do Dragão", "center": [ 169, 332 @@ -586,7 +586,7 @@ }, { "id": "range_4", - "name": "Cabo do Sil\u00eancio", + "name": "Cabo do Silêncio", "center": [ 194, 12 @@ -599,7 +599,7 @@ }, { "id": "range_5", - "name": "Pico da Esperan\u00e7a", + "name": "Pico da Esperança", "center": [ 123, 2 @@ -625,7 +625,7 @@ }, { "id": "range_7", - "name": "Foz do Atl\u00e2ntico", + "name": "Foz do Atlântico", "center": [ 119, 505 @@ -641,7 +641,7 @@ "cities": [ { "id": "city_0", - "name": "Rio Grande", + "name": "Fragua", "kind": "capital", "center": [ 190, @@ -662,4 +662,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-575A/bodies/GJ575Ae/markers.json b/wiki/star-systems/GJ-575A/bodies/GJ575Ae/markers.json index a26068bcb..3ad6454fd 100644 --- a/wiki/star-systems/GJ-575A/bodies/GJ575Ae/markers.json +++ b/wiki/star-systems/GJ-575A/bodies/GJ575Ae/markers.json @@ -854,7 +854,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Gully", + "name": "Sawantwadi", "kind": "capital", "center": [ 111, @@ -875,4 +875,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-581/bodies/GJ581c/markers.json b/wiki/star-systems/GJ-581/bodies/GJ581c/markers.json index 27c17b029..89fc2bd11 100644 --- a/wiki/star-systems/GJ-581/bodies/GJ581c/markers.json +++ b/wiki/star-systems/GJ-581/bodies/GJ581c/markers.json @@ -64,7 +64,7 @@ }, { "id": "river_1", - "name": "Bj\u00f8rnsfjord", + "name": "Bjørnsfjord", "path": [ [ 214, @@ -258,7 +258,7 @@ "oceans": [ { "id": "water_0", - "name": "K\u0159iv\u00e1 B\u0159ehy", + "name": "Křivá Břehy", "kind": "lake", "center": [ 9, @@ -278,7 +278,7 @@ }, { "id": "water_2", - "name": "Moravsk\u00e1 Pola", + "name": "Moravská Pola", "kind": "lake", "center": [ 6, @@ -288,7 +288,7 @@ }, { "id": "water_3", - "name": "R\u00f8dvik", + "name": "Rødvik", "kind": "sea", "center": [ 225, @@ -326,7 +326,7 @@ }, { "id": "range_2", - "name": "Gl\u00f8dberg", + "name": "Glødberg", "center": [ 70, 374 @@ -407,7 +407,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordholm", + "name": "Glødberg", "kind": "capital", "center": [ 235, @@ -420,7 +420,7 @@ "pois": [ { "id": "poi_0", - "name": "Sv\u011btla", + "name": "Světla", "kind": "transit", "center": [ 235, @@ -428,4 +428,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-588/bodies/GJ588c/markers.json b/wiki/star-systems/GJ-588/bodies/GJ588c/markers.json index 85045f374..a07eeb586 100644 --- a/wiki/star-systems/GJ-588/bodies/GJ588c/markers.json +++ b/wiki/star-systems/GJ-588/bodies/GJ588c/markers.json @@ -975,7 +975,7 @@ "cities": [ { "id": "city_0", - "name": "Little Upton", + "name": "Kielder", "kind": "capital", "center": [ 93, @@ -996,4 +996,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-598/bodies/GJ598d/markers.json b/wiki/star-systems/GJ-598/bodies/GJ598d/markers.json index 4decf4a33..f439b7482 100644 --- a/wiki/star-systems/GJ-598/bodies/GJ598d/markers.json +++ b/wiki/star-systems/GJ-598/bodies/GJ598d/markers.json @@ -441,7 +441,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Freudenberg", "kind": "capital", "center": [ 161, @@ -462,4 +462,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-601A/bodies/GJ601Ad/markers.json b/wiki/star-systems/GJ-601A/bodies/GJ601Ad/markers.json index 1535b3edb..3cafa4e9a 100644 --- a/wiki/star-systems/GJ-601A/bodies/GJ601Ad/markers.json +++ b/wiki/star-systems/GJ-601A/bodies/GJ601Ad/markers.json @@ -823,7 +823,7 @@ }, { "id": "range_5", - "name": "M\u00fchlenfeld", + "name": "Mühlenfeld", "center": [ 187, 376 @@ -852,7 +852,7 @@ "cities": [ { "id": "city_0", - "name": "Steinbruch", + "name": "Rand", "kind": "capital", "center": [ 120, @@ -873,4 +873,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-61/bodies/GJ61c/markers.json b/wiki/star-systems/GJ-61/bodies/GJ61c/markers.json index f821f2adc..511013ff2 100644 --- a/wiki/star-systems/GJ-61/bodies/GJ61c/markers.json +++ b/wiki/star-systems/GJ-61/bodies/GJ61c/markers.json @@ -541,7 +541,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Line", + "name": "Wolfenbüttel", "kind": "capital", "center": [ 249, @@ -562,4 +562,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-620.1A/bodies/GJ620.1Ad/markers.json b/wiki/star-systems/GJ-620.1A/bodies/GJ620.1Ad/markers.json index 810e97057..4c62e5c5b 100644 --- a/wiki/star-systems/GJ-620.1A/bodies/GJ620.1Ad/markers.json +++ b/wiki/star-systems/GJ-620.1A/bodies/GJ620.1Ad/markers.json @@ -562,7 +562,7 @@ }, { "id": "water_1", - "name": "K\u014dan Valley", + "name": "Kōan Valley", "kind": "sea", "center": [ 30, @@ -701,7 +701,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Vàng Cảng", "kind": "capital", "center": [ 78, @@ -722,4 +722,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-624/bodies/GJ624d/markers.json b/wiki/star-systems/GJ-624/bodies/GJ624d/markers.json index 3fdd3da18..2ff595eed 100644 --- a/wiki/star-systems/GJ-624/bodies/GJ624d/markers.json +++ b/wiki/star-systems/GJ-624/bodies/GJ624d/markers.json @@ -210,7 +210,7 @@ }, { "id": "river_2", - "name": "Skogv\u00e5g", + "name": "Skogvåg", "path": [ [ 110, @@ -354,7 +354,7 @@ }, { "id": "river_4", - "name": "Bj\u00f8rnsfjord", + "name": "Bjørnsfjord", "path": [ [ 208, @@ -416,7 +416,7 @@ }, { "id": "river_5", - "name": "Bj\u00f8rnevik", + "name": "Bjørnevik", "path": [ [ 251, @@ -512,7 +512,7 @@ }, { "id": "water_4", - "name": "Sj\u00f8gr\u00f8nn", + "name": "Sjøgrønn", "kind": "lake", "center": [ 235, @@ -524,7 +524,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Vinter\u00e5s", + "name": "Vinterås", "center": [ 50, 108 @@ -537,7 +537,7 @@ }, { "id": "range_1", - "name": "St\u0159ebo\u0148", + "name": "Střeboň", "center": [ 182, 135 @@ -550,7 +550,7 @@ }, { "id": "range_2", - "name": "Kr\u00e1lov", + "name": "Králov", "center": [ 226, 199 @@ -563,7 +563,7 @@ }, { "id": "range_3", - "name": "Zelen\u00e1", + "name": "Zelená", "center": [ 27, 19 @@ -576,7 +576,7 @@ }, { "id": "range_4", - "name": "W\u0119giel", + "name": "Węgiel", "center": [ 109, 393 @@ -589,7 +589,7 @@ }, { "id": "range_5", - "name": "D\u011bd", + "name": "Děd", "center": [ 224, 355 @@ -602,7 +602,7 @@ }, { "id": "range_6", - "name": "Sv\u011bsto", + "name": "Svěsto", "center": [ 50, 473 @@ -615,7 +615,7 @@ }, { "id": "range_7", - "name": "B\u0159eh", + "name": "Břeh", "center": [ 190, 198 @@ -631,7 +631,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordheim", + "name": "Øya", "kind": "capital", "center": [ 97, @@ -652,4 +652,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-625/bodies/GJ625c/markers.json b/wiki/star-systems/GJ-625/bodies/GJ625c/markers.json index efc4ce553..c020f7cf0 100644 --- a/wiki/star-systems/GJ-625/bodies/GJ625c/markers.json +++ b/wiki/star-systems/GJ-625/bodies/GJ625c/markers.json @@ -528,7 +528,7 @@ }, { "id": "range_2", - "name": "K\u014dt\u014d", + "name": "Kōtō", "center": [ 31, 480 @@ -580,7 +580,7 @@ }, { "id": "range_6", - "name": "Sh\u014dgun Gate", + "name": "Shōgun Gate", "center": [ 159, 433 @@ -609,7 +609,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Songjiang", "kind": "capital", "center": [ 244, @@ -630,4 +630,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-625/bodies/GJ625d/markers.json b/wiki/star-systems/GJ-625/bodies/GJ625d/markers.json index d874a6a42..b235c6b15 100644 --- a/wiki/star-systems/GJ-625/bodies/GJ625d/markers.json +++ b/wiki/star-systems/GJ-625/bodies/GJ625d/markers.json @@ -483,7 +483,7 @@ "cities": [ { "id": "city_0", - "name": "Sakura Bay", + "name": "Songjiang Secondary", "kind": "capital", "center": [ 93, @@ -504,4 +504,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-628/bodies/GJ628c/markers.json b/wiki/star-systems/GJ-628/bodies/GJ628c/markers.json index d09ae31f9..3f95a4dbc 100644 --- a/wiki/star-systems/GJ-628/bodies/GJ628c/markers.json +++ b/wiki/star-systems/GJ-628/bodies/GJ628c/markers.json @@ -349,7 +349,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenfels", + "name": "Carraig", "kind": "capital", "center": [ 217, @@ -370,4 +370,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-628/bodies/GJ628e-m1/markers.json b/wiki/star-systems/GJ-628/bodies/GJ628e-m1/markers.json index 17e14b25e..0a13f47e9 100644 --- a/wiki/star-systems/GJ-628/bodies/GJ628e-m1/markers.json +++ b/wiki/star-systems/GJ-628/bodies/GJ628e-m1/markers.json @@ -140,7 +140,7 @@ "cities": [ { "id": "city_0", - "name": "Steinbruch", + "name": "Tobar", "kind": "capital", "center": [ 49, @@ -161,4 +161,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-635A/bodies/GJ635Ad/markers.json b/wiki/star-systems/GJ-635A/bodies/GJ635Ad/markers.json index 9786ae275..4346bd345 100644 --- a/wiki/star-systems/GJ-635A/bodies/GJ635Ad/markers.json +++ b/wiki/star-systems/GJ-635A/bodies/GJ635Ad/markers.json @@ -335,7 +335,7 @@ }, { "id": "range_3", - "name": "Bj\u00f8rnsfjord", + "name": "Bjørnsfjord", "center": [ 206, 244 @@ -348,7 +348,7 @@ }, { "id": "range_4", - "name": "Wr\u00f3bel", + "name": "Wróbel", "center": [ 69, 453 @@ -374,7 +374,7 @@ }, { "id": "range_6", - "name": "Kov\u00e1\u0159", + "name": "Kovář", "center": [ 94, 2 @@ -387,7 +387,7 @@ }, { "id": "range_7", - "name": "Dvo\u0159\u00e1k", + "name": "Dvořák", "center": [ 112, 427 @@ -403,7 +403,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordholm", + "name": "Stille", "kind": "capital", "center": [ 114, @@ -424,4 +424,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-638/bodies/GJ638d/markers.json b/wiki/star-systems/GJ-638/bodies/GJ638d/markers.json index 000472405..e606d4237 100644 --- a/wiki/star-systems/GJ-638/bodies/GJ638d/markers.json +++ b/wiki/star-systems/GJ-638/bodies/GJ638d/markers.json @@ -388,7 +388,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Creek", + "name": "Halton", "kind": "capital", "center": [ 10, @@ -409,4 +409,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-643/bodies/GJ643c/markers.json b/wiki/star-systems/GJ-643/bodies/GJ643c/markers.json index c8f68c660..bc7f4e84c 100644 --- a/wiki/star-systems/GJ-643/bodies/GJ643c/markers.json +++ b/wiki/star-systems/GJ-643/bodies/GJ643c/markers.json @@ -860,7 +860,7 @@ }, { "id": "range_6", - "name": "S\u00fcdfeld", + "name": "Südfeld", "center": [ 218, 313 @@ -889,7 +889,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenberg", + "name": "Alsfeld", "kind": "capital", "center": [ 250, @@ -910,4 +910,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-644A/bodies/GJ644Ac/markers.json b/wiki/star-systems/GJ-644A/bodies/GJ644Ac/markers.json index 4392b2993..57a673a19 100644 --- a/wiki/star-systems/GJ-644A/bodies/GJ644Ac/markers.json +++ b/wiki/star-systems/GJ-644A/bodies/GJ644Ac/markers.json @@ -496,7 +496,7 @@ "cities": [ { "id": "city_0", - "name": "Mwezi Beach", + "name": "Mavela", "kind": "capital", "center": [ 98, @@ -517,4 +517,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-644C/bodies/GJ644Cb/markers.json b/wiki/star-systems/GJ-644C/bodies/GJ644Cb/markers.json index ce4c6b9d3..3a6f6ef03 100644 --- a/wiki/star-systems/GJ-644C/bodies/GJ644Cb/markers.json +++ b/wiki/star-systems/GJ-644C/bodies/GJ644Cb/markers.json @@ -693,7 +693,7 @@ "cities": [ { "id": "city_0", - "name": "Mbanza", + "name": "Tombua", "kind": "capital", "center": [ 228, @@ -714,4 +714,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-660A/bodies/GJ660Ad/markers.json b/wiki/star-systems/GJ-660A/bodies/GJ660Ad/markers.json index c9ce5e026..0be28dff0 100644 --- a/wiki/star-systems/GJ-660A/bodies/GJ660Ad/markers.json +++ b/wiki/star-systems/GJ-660A/bodies/GJ660Ad/markers.json @@ -409,7 +409,7 @@ "cities": [ { "id": "city_0", - "name": "Hanseong", + "name": "Seongho", "kind": "capital", "center": [ 69, @@ -430,4 +430,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-661A/bodies/GJ661Ad/markers.json b/wiki/star-systems/GJ-661A/bodies/GJ661Ad/markers.json index 23e367fa9..50e5cccfe 100644 --- a/wiki/star-systems/GJ-661A/bodies/GJ661Ad/markers.json +++ b/wiki/star-systems/GJ-661A/bodies/GJ661Ad/markers.json @@ -567,7 +567,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Thornfield\u2013Meadowbrook Road", "kind": "commercial", "path": [ [ @@ -836,7 +836,7 @@ "cities": [ { "id": "city_0", - "name": "Oakhaven", + "name": "Thornfield", "kind": "capital", "center": [ 88, @@ -856,7 +856,7 @@ }, { "id": "city_2", - "name": "Greenham", + "name": "Saltfield", "kind": "city", "center": [ 210, @@ -868,7 +868,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Thornfield\u2013Meadowbrook Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-661B/bodies/GJ661Bd/markers.json b/wiki/star-systems/GJ-661B/bodies/GJ661Bd/markers.json index 287160c52..e7c381dd4 100644 --- a/wiki/star-systems/GJ-661B/bodies/GJ661Bd/markers.json +++ b/wiki/star-systems/GJ-661B/bodies/GJ661Bd/markers.json @@ -553,7 +553,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Gulch", + "name": "Velddrif", "kind": "capital", "center": [ 147, @@ -574,4 +574,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-664/bodies/GJ664d/markers.json b/wiki/star-systems/GJ-664/bodies/GJ664d/markers.json index 05eef5127..27a802f15 100644 --- a/wiki/star-systems/GJ-664/bodies/GJ664d/markers.json +++ b/wiki/star-systems/GJ-664/bodies/GJ664d/markers.json @@ -709,7 +709,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenstadt", + "name": "Farrow", "kind": "capital", "center": [ 243, @@ -730,4 +730,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-667A/bodies/GJ667Ad/markers.json b/wiki/star-systems/GJ-667A/bodies/GJ667Ad/markers.json index 0b1fbbde8..5d0fb2760 100644 --- a/wiki/star-systems/GJ-667A/bodies/GJ667Ad/markers.json +++ b/wiki/star-systems/GJ-667A/bodies/GJ667Ad/markers.json @@ -938,7 +938,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Homestead Lot", + "name": "Settler's Rise", "center": [ 37, 367 @@ -951,7 +951,7 @@ }, { "id": "range_1", - "name": "Wide Plain", + "name": "Paddock Hill", "center": [ 66, 61 @@ -966,7 +966,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Wattle Creek\u2013Ironbark Road", "kind": "commercial", "path": [ [ @@ -1235,7 +1235,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Gully", + "name": "Wattle Creek", "kind": "capital", "center": [ 152, @@ -1245,7 +1245,7 @@ }, { "id": "city_1", - "name": "Iron Creek", + "name": "Ironbark", "kind": "city", "center": [ 138, @@ -1257,7 +1257,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Wattle Creek\u2013Ironbark Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-667B/bodies/GJ667Bd/markers.json b/wiki/star-systems/GJ-667B/bodies/GJ667Bd/markers.json index cc03b166f..41854a58b 100644 --- a/wiki/star-systems/GJ-667B/bodies/GJ667Bd/markers.json +++ b/wiki/star-systems/GJ-667B/bodies/GJ667Bd/markers.json @@ -1062,7 +1062,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Cape Point\u2013Drakensberg View Road", "kind": "commercial", "path": [ [ @@ -1329,7 +1329,7 @@ }, { "id": "road_1", - "name": "", + "name": "Cape Point\u2013Baobab Plain Road", "kind": "commercial", "path": [ [ @@ -1630,7 +1630,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Cape Point\u2013Drakensberg View Line", "kind": "passenger_freight", "path": [ [ @@ -1897,7 +1897,7 @@ }, { "id": "railroad_1", - "name": "", + "name": "Cape Point\u2013Baobab Plain Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-667C/bodies/GJ667Ce/markers.json b/wiki/star-systems/GJ-667C/bodies/GJ667Ce/markers.json index 1474d63d1..f789d3ee0 100644 --- a/wiki/star-systems/GJ-667C/bodies/GJ667Ce/markers.json +++ b/wiki/star-systems/GJ-667C/bodies/GJ667Ce/markers.json @@ -676,7 +676,7 @@ "oceans": [ { "id": "water_0", - "name": "K\u014dji-no-Sora", + "name": "Kōji-no-Sora", "kind": "lake", "center": [ 96, @@ -779,7 +779,7 @@ "cities": [ { "id": "city_0", - "name": "Sakura Bay", + "name": "Nakhon Sung", "kind": "capital", "center": [ 171, @@ -800,4 +800,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-66A/bodies/GJ66Ad/markers.json b/wiki/star-systems/GJ-66A/bodies/GJ66Ad/markers.json index 5cb57d3c5..e00de597a 100644 --- a/wiki/star-systems/GJ-66A/bodies/GJ66Ad/markers.json +++ b/wiki/star-systems/GJ-66A/bodies/GJ66Ad/markers.json @@ -491,7 +491,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Eridani Node", "kind": "capital", "center": [ 97, @@ -512,4 +512,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-67/bodies/GJ67d/markers.json b/wiki/star-systems/GJ-67/bodies/GJ67d/markers.json index 33b153bee..d06b0ca11 100644 --- a/wiki/star-systems/GJ-67/bodies/GJ67d/markers.json +++ b/wiki/star-systems/GJ-67/bodies/GJ67d/markers.json @@ -52,7 +52,7 @@ }, { "id": "river_1", - "name": "Vale do C\u00e2nion", + "name": "Vale do Cânion", "path": [ [ 59, @@ -144,7 +144,7 @@ }, { "id": "river_3", - "name": "Rio da Esperan\u00e7a", + "name": "Rio da Esperança", "path": [ [ 174, @@ -298,7 +298,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Plan\u00edcie Seca", + "name": "Planície Seca", "center": [ 162, 415 @@ -311,7 +311,7 @@ }, { "id": "range_1", - "name": "Planalto do Sil\u00eancio", + "name": "Planalto do Silêncio", "center": [ 195, 57 @@ -324,7 +324,7 @@ }, { "id": "range_2", - "name": "C\u00f3rrego do Lamento", + "name": "Córrego do Lamento", "center": [ 199, 491 @@ -366,7 +366,7 @@ "cities": [ { "id": "city_0", - "name": "Rio Grande", + "name": "Roça Nova", "kind": "capital", "center": [ 101, @@ -387,4 +387,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-672/bodies/GJ672d/markers.json b/wiki/star-systems/GJ-672/bodies/GJ672d/markers.json index 936c081b7..4575bcbbf 100644 --- a/wiki/star-systems/GJ-672/bodies/GJ672d/markers.json +++ b/wiki/star-systems/GJ-672/bodies/GJ672d/markers.json @@ -418,7 +418,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Viçosa", "kind": "capital", "center": [ 110, @@ -439,4 +439,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-674/bodies/GJ674c/markers.json b/wiki/star-systems/GJ-674/bodies/GJ674c/markers.json index 356f4d448..dba348b90 100644 --- a/wiki/star-systems/GJ-674/bodies/GJ674c/markers.json +++ b/wiki/star-systems/GJ-674/bodies/GJ674c/markers.json @@ -514,7 +514,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Capitol Heights\u2013Metropolitan Hub Corridor", "kind": "commercial", "path": [ [ @@ -783,7 +783,7 @@ "cities": [ { "id": "city_0", - "name": "Capitol Heights", + "name": "Provenance Heights", "kind": "capital", "center": [ 176, @@ -815,7 +815,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Capitol Heights\u2013Metropolitan Hub Express", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-675/bodies/GJ675c/markers.json b/wiki/star-systems/GJ-675/bodies/GJ675c/markers.json index 28b21307b..6a09c0890 100644 --- a/wiki/star-systems/GJ-675/bodies/GJ675c/markers.json +++ b/wiki/star-systems/GJ-675/bodies/GJ675c/markers.json @@ -563,7 +563,7 @@ "cities": [ { "id": "city_0", - "name": "Fort Iron", + "name": "Laubach", "kind": "capital", "center": [ 72, @@ -584,4 +584,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-68/bodies/GJ68c/markers.json b/wiki/star-systems/GJ-68/bodies/GJ68c/markers.json index 17050e871..6d49c7fe4 100644 --- a/wiki/star-systems/GJ-68/bodies/GJ68c/markers.json +++ b/wiki/star-systems/GJ-68/bodies/GJ68c/markers.json @@ -247,7 +247,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Ridgeview Point\u2013Willow Creek Track", "kind": "commercial", "path": [ [ @@ -516,7 +516,7 @@ "cities": [ { "id": "city_0", - "name": "Ridgeview Point", + "name": "Warmtedorp", "kind": "capital", "center": [ 171, @@ -526,7 +526,7 @@ }, { "id": "city_1", - "name": "Willow Creek", + "name": "Zomervlei", "kind": "city", "center": [ 158, @@ -538,7 +538,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Ridgeview Point\u2013Willow Creek Run", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-68/bodies/GJ68d/markers.json b/wiki/star-systems/GJ-68/bodies/GJ68d/markers.json index 8ed2e7b1a..35fa2c698 100644 --- a/wiki/star-systems/GJ-68/bodies/GJ68d/markers.json +++ b/wiki/star-systems/GJ-68/bodies/GJ68d/markers.json @@ -492,7 +492,7 @@ }, { "id": "river_3", - "name": "Flat Ground", + "name": "Vlakloop", "path": [ [ 3, @@ -582,7 +582,7 @@ }, { "id": "river_4", - "name": "Open Field", + "name": "Groenloop", "path": [ [ 48, @@ -644,7 +644,7 @@ }, { "id": "river_5", - "name": "Broken Road", + "name": "Kliprif", "path": [ [ 32, @@ -747,7 +747,7 @@ }, { "id": "range_3", - "name": "Swift Current", + "name": "Lenteskop", "center": [ 59, 388 @@ -786,7 +786,7 @@ }, { "id": "range_6", - "name": "Gravel Path", + "name": "Gruisrug", "center": [ 141, 68 @@ -801,7 +801,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Lentevlei\u2013Blompunt Track", "kind": "commercial", "path": [ [ @@ -1070,7 +1070,7 @@ "cities": [ { "id": "city_0", - "name": "Willow Creek", + "name": "Lentevlei", "kind": "capital", "center": [ 7, @@ -1080,7 +1080,7 @@ }, { "id": "city_1", - "name": "Ridge Point", + "name": "Blompunt", "kind": "city", "center": [ 15, @@ -1092,7 +1092,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Lentevlei\u2013Blompunt Run", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-68/bodies/GJ68e/markers.json b/wiki/star-systems/GJ-68/bodies/GJ68e/markers.json index c8d10dea7..0ce93bf92 100644 --- a/wiki/star-systems/GJ-68/bodies/GJ68e/markers.json +++ b/wiki/star-systems/GJ-68/bodies/GJ68e/markers.json @@ -634,7 +634,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Mesa Vista–Stony Bluff Track", "kind": "commercial", "path": [ [ @@ -903,7 +903,7 @@ "cities": [ { "id": "city_0", - "name": "Mesa Vista", + "name": "Herfst", "kind": "capital", "center": [ 207, @@ -925,7 +925,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Mesa Vista–Stony Bluff Run", "kind": "passenger_freight", "path": [ [ @@ -1202,4 +1202,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-68/bodies/GJ68f/markers.json b/wiki/star-systems/GJ-68/bodies/GJ68f/markers.json index 9fee82944..5a43df6d6 100644 --- a/wiki/star-systems/GJ-68/bodies/GJ68f/markers.json +++ b/wiki/star-systems/GJ-68/bodies/GJ68f/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Northern Divide", + "name": "Sneeuloop", "path": [ [ 143, @@ -148,7 +148,7 @@ }, { "id": "river_1", - "name": "Western Vein", + "name": "Ysteraar", "path": [ [ 56, @@ -246,7 +246,7 @@ }, { "id": "river_2", - "name": "Central Divide", + "name": "Skeidwater", "path": [ [ 91, @@ -300,7 +300,7 @@ }, { "id": "river_3", - "name": "North Fork Crossing", + "name": "Winterdrift", "path": [ [ 0, @@ -350,7 +350,7 @@ }, { "id": "river_4", - "name": "Northern Flow", + "name": "Kouestroom", "path": [ [ 20, @@ -392,7 +392,7 @@ }, { "id": "river_5", - "name": "West Bend Crossing", + "name": "Winterboord", "path": [ [ 134, @@ -558,7 +558,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Stofkamp\u2013Kaalveld Track", "kind": "commercial", "path": [ [ @@ -827,7 +827,7 @@ "cities": [ { "id": "city_0", - "name": "Dust Bowl Flats", + "name": "Stofkamp", "kind": "capital", "center": [ 7, @@ -837,7 +837,7 @@ }, { "id": "city_1", - "name": "Barren Meadow", + "name": "Kaalveld", "kind": "city", "center": [ 93, @@ -849,7 +849,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Stofkamp\u2013Kaalveld Run", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-680/bodies/GJ680d/markers.json b/wiki/star-systems/GJ-680/bodies/GJ680d/markers.json index 20dcc6fe5..b6651daf9 100644 --- a/wiki/star-systems/GJ-680/bodies/GJ680d/markers.json +++ b/wiki/star-systems/GJ-680/bodies/GJ680d/markers.json @@ -1084,7 +1084,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Vleiview\u2013Table Run Road", "kind": "commercial", "path": [ [ @@ -1375,7 +1375,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Vleiview\u2013Table Run Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-684A/bodies/GJ684Ac/markers.json b/wiki/star-systems/GJ-684A/bodies/GJ684Ac/markers.json index f63cb55bd..f1d6a1b6f 100644 --- a/wiki/star-systems/GJ-684A/bodies/GJ684Ac/markers.json +++ b/wiki/star-systems/GJ-684A/bodies/GJ684Ac/markers.json @@ -707,7 +707,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Line", + "name": "Freyburg", "kind": "capital", "center": [ 151, @@ -728,4 +728,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-699/bodies/GJ699b-1/markers.json b/wiki/star-systems/GJ-699/bodies/GJ699b-1/markers.json index 8630b5f0c..a98d7517d 100644 --- a/wiki/star-systems/GJ-699/bodies/GJ699b-1/markers.json +++ b/wiki/star-systems/GJ-699/bodies/GJ699b-1/markers.json @@ -8,7 +8,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Grandview Avenue", + "name": "Verada Scarp", "center": [ 171, 321 @@ -21,7 +21,7 @@ }, { "id": "range_1", - "name": "Central District", + "name": "Barnard Heights", "center": [ 189, 17 @@ -34,7 +34,7 @@ }, { "id": "range_2", - "name": "Harmony Boulevard", + "name": "Keystone Scarp", "center": [ 224, 193 @@ -47,7 +47,7 @@ }, { "id": "range_3", - "name": "Capitol Heights", + "name": "Tribunal Spur", "center": [ 192, 502 @@ -60,7 +60,7 @@ }, { "id": "range_4", - "name": "Meridian Plaza", + "name": "Zenith Spine", "center": [ 87, 402 @@ -73,7 +73,7 @@ }, { "id": "range_5", - "name": "Liberty Square", + "name": "Ironwood Spur", "center": [ 211, 100 @@ -86,7 +86,7 @@ }, { "id": "range_6", - "name": "Metropolitan Way", + "name": "Consulate Scarp", "center": [ 215, 81 @@ -99,7 +99,7 @@ }, { "id": "range_7", - "name": "Beacon Street", + "name": "Prefecture Spur", "center": [ 194, 210 @@ -115,4 +115,4 @@ "cities": [], "railroads": [], "pois": [] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-699/bodies/GJ699b/markers.json b/wiki/star-systems/GJ-699/bodies/GJ699b/markers.json index ac7cb0b16..714660c79 100644 --- a/wiki/star-systems/GJ-699/bodies/GJ699b/markers.json +++ b/wiki/star-systems/GJ-699/bodies/GJ699b/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Grandview Square", + "name": "Verada Reach", "path": [ [ 150, @@ -72,7 +72,7 @@ }, { "id": "river_1", - "name": "Meridian City", + "name": "The Meridian", "path": [ [ 39, @@ -106,7 +106,7 @@ }, { "id": "river_2", - "name": "Summit View", + "name": "Capitol Beck", "path": [ [ 105, @@ -230,7 +230,7 @@ "oceans": [ { "id": "water_0", - "name": "Prospect Terrace", + "name": "Prospect Sea", "kind": "ocean", "center": [ 81, @@ -240,7 +240,7 @@ }, { "id": "water_1", - "name": "Metropolitan Square", + "name": "Haven Sea", "kind": "ocean", "center": [ 63, @@ -250,7 +250,7 @@ }, { "id": "water_2", - "name": "Central District", + "name": "Meridian Sound", "kind": "sea", "center": [ 118, @@ -260,7 +260,7 @@ }, { "id": "water_3", - "name": "Liberty Plaza", + "name": "Capitol Mere", "kind": "lake", "center": [ 158, @@ -270,7 +270,7 @@ }, { "id": "water_4", - "name": "Sterling Heights", + "name": "Sterling Pool", "kind": "lake", "center": [ 169, @@ -349,7 +349,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Capitol Heights\u2013Port Haven Corridor", "kind": "commercial", "path": [ [ @@ -640,7 +640,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Capitol Heights\u2013Port Haven Express", "kind": "passenger_freight", "path": [ [ @@ -917,4 +917,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-702B/bodies/GJ702Bf/markers.json b/wiki/star-systems/GJ-702B/bodies/GJ702Bf/markers.json index 812673e23..a19b66969 100644 --- a/wiki/star-systems/GJ-702B/bodies/GJ702Bf/markers.json +++ b/wiki/star-systems/GJ-702B/bodies/GJ702Bf/markers.json @@ -72,7 +72,7 @@ }, { "id": "water_1", - "name": "Forum Veritas", + "name": "The Vivarium", "kind": "sea", "center": [ 44, diff --git a/wiki/star-systems/GJ-702B/bodies/GJ702Bg/markers.json b/wiki/star-systems/GJ-702B/bodies/GJ702Bg/markers.json index 9013d0add..a7220f128 100644 --- a/wiki/star-systems/GJ-702B/bodies/GJ702Bg/markers.json +++ b/wiki/star-systems/GJ-702B/bodies/GJ702Bg/markers.json @@ -17,7 +17,7 @@ }, { "id": "water_1", - "name": "Forum Veritas", + "name": "The Ostium", "kind": "lake", "center": [ 38, diff --git a/wiki/star-systems/GJ-707/bodies/GJ707c/markers.json b/wiki/star-systems/GJ-707/bodies/GJ707c/markers.json index 31b287524..423105414 100644 --- a/wiki/star-systems/GJ-707/bodies/GJ707c/markers.json +++ b/wiki/star-systems/GJ-707/bodies/GJ707c/markers.json @@ -620,7 +620,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Point", + "name": "Faial", "kind": "capital", "center": [ 149, @@ -641,4 +641,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-71/bodies/GJ71c/markers.json b/wiki/star-systems/GJ-71/bodies/GJ71c/markers.json index 9512735a4..340154307 100644 --- a/wiki/star-systems/GJ-71/bodies/GJ71c/markers.json +++ b/wiki/star-systems/GJ-71/bodies/GJ71c/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Aethelred", + "name": "Gaius", "path": [ [ 127, @@ -395,7 +395,7 @@ }, { "id": "range_1", - "name": "Pantheon", + "name": "Arcanum", "center": [ 75, 150 @@ -408,7 +408,7 @@ }, { "id": "range_2", - "name": "Capitolium", + "name": "Firmamentum", "center": [ 130, 329 @@ -437,7 +437,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Janua", "kind": "capital", "center": [ 111, @@ -458,4 +458,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-71/bodies/GJ71d-1/markers.json b/wiki/star-systems/GJ-71/bodies/GJ71d-1/markers.json index 506e307c0..96266335c 100644 --- a/wiki/star-systems/GJ-71/bodies/GJ71d-1/markers.json +++ b/wiki/star-systems/GJ-71/bodies/GJ71d-1/markers.json @@ -8,7 +8,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "The Basilica", + "name": "The Lateranum", "center": [ 164, 248 @@ -21,7 +21,7 @@ }, { "id": "range_1", - "name": "The Senate Hall", + "name": "The Curia Magna", "center": [ 93, 48 @@ -34,7 +34,7 @@ }, { "id": "range_2", - "name": "The Lyceum", + "name": "The Exedra", "center": [ 79, 138 @@ -47,7 +47,7 @@ }, { "id": "range_3", - "name": "The Collegium", + "name": "The Aedes Sacra", "center": [ 127, 168 @@ -60,7 +60,7 @@ }, { "id": "range_4", - "name": "The Forum", + "name": "The Macellum", "center": [ 37, 22 @@ -86,7 +86,7 @@ }, { "id": "range_6", - "name": "The Tribunal", + "name": "The Comitium", "center": [ 217, 378 @@ -115,7 +115,7 @@ "cities": [ { "id": "city_0", - "name": "The Capitolium", + "name": "Praetorium", "kind": "capital", "center": [ 190, @@ -128,7 +128,7 @@ "pois": [ { "id": "poi_0", - "name": "The Pantheon", + "name": "The Pronaos", "kind": "transit", "center": [ 190, diff --git a/wiki/star-systems/GJ-71/bodies/GJ71d/markers.json b/wiki/star-systems/GJ-71/bodies/GJ71d/markers.json index d9d3dfa4c..f4064c3bb 100644 --- a/wiki/star-systems/GJ-71/bodies/GJ71d/markers.json +++ b/wiki/star-systems/GJ-71/bodies/GJ71d/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "The Prefecture", + "name": "The Rostrum", "path": [ [ 93, @@ -192,7 +192,7 @@ }, { "id": "river_1", - "name": "Basilica Nova", + "name": "Via Principia", "path": [ [ 101, @@ -462,7 +462,7 @@ }, { "id": "river_4", - "name": "Senate House", + "name": "The Curia", "path": [ [ 165, @@ -540,7 +540,7 @@ }, { "id": "river_5", - "name": "The Tribunal", + "name": "The Decumanus", "path": [ [ 255, @@ -612,7 +612,7 @@ "oceans": [ { "id": "water_0", - "name": "The Pantheon", + "name": "The Augusteum", "kind": "ocean", "center": [ 39, @@ -632,7 +632,7 @@ }, { "id": "water_2", - "name": "The Lyceum", + "name": "The Porticus", "kind": "lake", "center": [ 227, @@ -670,7 +670,7 @@ }, { "id": "range_2", - "name": "The Foundation", + "name": "The Substructures", "center": [ 146, 155 @@ -683,7 +683,7 @@ }, { "id": "range_3", - "name": "The Axiom", + "name": "The Codicil", "center": [ 161, 155 @@ -696,7 +696,7 @@ }, { "id": "range_4", - "name": "The Citadel", + "name": "The Oppidum", "center": [ 215, 440 @@ -724,7 +724,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Palaestra\u2013Veritas Square Corridor", "kind": "commercial", "path": [ [ @@ -993,7 +993,7 @@ "cities": [ { "id": "city_0", - "name": "Athenaeum", + "name": "Palaestra", "kind": "capital", "center": [ 242, @@ -1013,7 +1013,7 @@ }, { "id": "city_2", - "name": "Concordia Hall", + "name": "The Praxis", "kind": "city", "center": [ 51, @@ -1025,7 +1025,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Palaestra\u2013Veritas Square Express", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-713A/bodies/GJ713Ad/markers.json b/wiki/star-systems/GJ-713A/bodies/GJ713Ad/markers.json index 6545564a2..303cc1725 100644 --- a/wiki/star-systems/GJ-713A/bodies/GJ713Ad/markers.json +++ b/wiki/star-systems/GJ-713A/bodies/GJ713Ad/markers.json @@ -320,7 +320,7 @@ "oceans": [ { "id": "water_0", - "name": "K\u014dan Drift", + "name": "Kōan Drift", "kind": "sea", "center": [ 20, @@ -469,7 +469,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Samuels", "kind": "capital", "center": [ 163, @@ -490,4 +490,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-716/bodies/GJ716d/markers.json b/wiki/star-systems/GJ-716/bodies/GJ716d/markers.json index f6891fd9a..8616d6367 100644 --- a/wiki/star-systems/GJ-716/bodies/GJ716d/markers.json +++ b/wiki/star-systems/GJ-716/bodies/GJ716d/markers.json @@ -916,7 +916,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Gully", + "name": "Laverton", "kind": "capital", "center": [ 21, @@ -937,4 +937,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-722/bodies/GJ722c/markers.json b/wiki/star-systems/GJ-722/bodies/GJ722c/markers.json index 48cfe3192..c2f5441e0 100644 --- a/wiki/star-systems/GJ-722/bodies/GJ722c/markers.json +++ b/wiki/star-systems/GJ-722/bodies/GJ722c/markers.json @@ -417,7 +417,7 @@ "cities": [ { "id": "city_0", - "name": "Mesa Vista", + "name": "Rietbron", "kind": "capital", "center": [ 69, @@ -438,4 +438,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-725B/bodies/GJ725Bc/markers.json b/wiki/star-systems/GJ-725B/bodies/GJ725Bc/markers.json index dc15fabc5..1347ff18d 100644 --- a/wiki/star-systems/GJ-725B/bodies/GJ725Bc/markers.json +++ b/wiki/star-systems/GJ-725B/bodies/GJ725Bc/markers.json @@ -395,7 +395,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Metropolis Central\u2013Summit View Corridor", "kind": "commercial", "path": [ [ @@ -696,7 +696,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Metropolis Central\u2013Summit View Express", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-737B/bodies/GJ737Bc/markers.json b/wiki/star-systems/GJ-737B/bodies/GJ737Bc/markers.json index cb2a898d3..2e3b7a7fa 100644 --- a/wiki/star-systems/GJ-737B/bodies/GJ737Bc/markers.json +++ b/wiki/star-systems/GJ-737B/bodies/GJ737Bc/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "Estu\u00e1rio", + "name": "Estuário", "path": [ [ 179, @@ -461,7 +461,7 @@ }, { "id": "range_3", - "name": "C\u00e2nion Profundo", + "name": "Cânion Profundo", "center": [ 101, 15 @@ -477,7 +477,7 @@ "cities": [ { "id": "city_0", - "name": "Ribeira Grande", + "name": "Punta del Sol", "kind": "capital", "center": [ 159, @@ -498,4 +498,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-75/bodies/GJ75d/markers.json b/wiki/star-systems/GJ-75/bodies/GJ75d/markers.json index 0eee7a1e9..0b059f756 100644 --- a/wiki/star-systems/GJ-75/bodies/GJ75d/markers.json +++ b/wiki/star-systems/GJ-75/bodies/GJ75d/markers.json @@ -994,7 +994,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Dunmore Bay–Ballynahown Road", "kind": "commercial", "path": [ [ @@ -1273,7 +1273,7 @@ }, { "id": "city_1", - "name": "Ballynahown", + "name": "Nnewi", "kind": "city", "center": [ 100, @@ -1285,7 +1285,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Dunmore Bay–Ballynahown Line", "kind": "passenger_freight", "path": [ [ @@ -1562,4 +1562,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-754/bodies/GJ754c/markers.json b/wiki/star-systems/GJ-754/bodies/GJ754c/markers.json index 17228adc2..78dfb9667 100644 --- a/wiki/star-systems/GJ-754/bodies/GJ754c/markers.json +++ b/wiki/star-systems/GJ-754/bodies/GJ754c/markers.json @@ -544,7 +544,7 @@ "cities": [ { "id": "city_0", - "name": "Hanseong", + "name": "Miryang", "kind": "capital", "center": [ 171, @@ -565,4 +565,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-7547/bodies/GJ7547c/markers.json b/wiki/star-systems/GJ-7547/bodies/GJ7547c/markers.json index 1d84e16a5..7aced1a73 100644 --- a/wiki/star-systems/GJ-7547/bodies/GJ7547c/markers.json +++ b/wiki/star-systems/GJ-7547/bodies/GJ7547c/markers.json @@ -313,7 +313,7 @@ }, { "id": "range_1", - "name": "Southern Mesa", + "name": "Skemertafel", "center": [ 45, 89 @@ -326,7 +326,7 @@ }, { "id": "range_2", - "name": "Western Crag", + "name": "Stormkrans", "center": [ 83, 445 @@ -339,7 +339,7 @@ }, { "id": "range_3", - "name": "Eastern Slope", + "name": "Oggendrand", "center": [ 62, 18 @@ -352,7 +352,7 @@ }, { "id": "range_4", - "name": "North Peak", + "name": "Dagwagter", "center": [ 80, 89 @@ -378,7 +378,7 @@ }, { "id": "range_6", - "name": "Western Rise", + "name": "Rooisteenrug", "center": [ 100, 5 @@ -391,7 +391,7 @@ }, { "id": "range_7", - "name": "Northern Crag", + "name": "Vuurbaken", "center": [ 137, 448 @@ -407,7 +407,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Wagpos", "kind": "capital", "center": [ 151, diff --git a/wiki/star-systems/GJ-764/bodies/GJ764d/markers.json b/wiki/star-systems/GJ-764/bodies/GJ764d/markers.json index ffc7adaf3..6eb27c392 100644 --- a/wiki/star-systems/GJ-764/bodies/GJ764d/markers.json +++ b/wiki/star-systems/GJ-764/bodies/GJ764d/markers.json @@ -639,7 +639,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Aethel", + "name": "Mirafiori", "kind": "capital", "center": [ 237, @@ -649,7 +649,7 @@ }, { "id": "city_1", - "name": "Basilica Nova", + "name": "Fiorino", "kind": "city", "center": [ 127, @@ -670,4 +670,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-768/bodies/GJ768e/markers.json b/wiki/star-systems/GJ-768/bodies/GJ768e/markers.json index f689706a4..bded389ac 100644 --- a/wiki/star-systems/GJ-768/bodies/GJ768e/markers.json +++ b/wiki/star-systems/GJ-768/bodies/GJ768e/markers.json @@ -287,7 +287,7 @@ }, { "id": "range_3", - "name": "Mar\u00e9 Alta", + "name": "Maré Alta", "center": [ 188, 366 @@ -355,7 +355,7 @@ "cities": [ { "id": "city_0", - "name": "S\u00e3o Vicente", + "name": "Solano", "kind": "capital", "center": [ 245, @@ -376,4 +376,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-768/bodies/GJ768f/markers.json b/wiki/star-systems/GJ-768/bodies/GJ768f/markers.json index 0f664dfc6..eb127bb1e 100644 --- a/wiki/star-systems/GJ-768/bodies/GJ768f/markers.json +++ b/wiki/star-systems/GJ-768/bodies/GJ768f/markers.json @@ -524,7 +524,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Bissau-Ngu\u00e8\u2013Fogo Coast Estrada", "kind": "commercial", "path": [ [ @@ -825,7 +825,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Bissau-Ngu\u00e8\u2013Fogo Coast Run", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-770/bodies/GJ770d/markers.json b/wiki/star-systems/GJ-770/bodies/GJ770d/markers.json index 30bcfd654..c22d9435e 100644 --- a/wiki/star-systems/GJ-770/bodies/GJ770d/markers.json +++ b/wiki/star-systems/GJ-770/bodies/GJ770d/markers.json @@ -607,7 +607,7 @@ "cities": [ { "id": "city_0", - "name": "Ballynahown", + "name": "Te Whanga", "kind": "capital", "center": [ 8, @@ -628,4 +628,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-771A/bodies/GJ771Ad/markers.json b/wiki/star-systems/GJ-771A/bodies/GJ771Ad/markers.json index d1d845798..9d8b4e7e2 100644 --- a/wiki/star-systems/GJ-771A/bodies/GJ771Ad/markers.json +++ b/wiki/star-systems/GJ-771A/bodies/GJ771Ad/markers.json @@ -606,7 +606,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordheim", + "name": "Havmark", "kind": "capital", "center": [ 116, @@ -627,4 +627,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-775/bodies/GJ775c/markers.json b/wiki/star-systems/GJ-775/bodies/GJ775c/markers.json index 1b8f43ee1..7c03c582d 100644 --- a/wiki/star-systems/GJ-775/bodies/GJ775c/markers.json +++ b/wiki/star-systems/GJ-775/bodies/GJ775c/markers.json @@ -348,7 +348,7 @@ }, { "id": "river_3", - "name": "Krystall\u00f8", + "name": "Krystallø", "path": [ [ 119, @@ -438,7 +438,7 @@ }, { "id": "river_4", - "name": "Bj\u00f8rg's Stream", + "name": "Bjørg's Stream", "path": [ [ 133, @@ -622,7 +622,7 @@ }, { "id": "range_2", - "name": "L\u00f8vskog", + "name": "Løvskog", "center": [ 152, 31 @@ -635,7 +635,7 @@ }, { "id": "range_3", - "name": "Skj\u00e6rg\u00e5rd", + "name": "Skjærgård", "center": [ 187, 261 @@ -664,7 +664,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordholm", + "name": "Ytterkant", "kind": "capital", "center": [ 188, @@ -677,7 +677,7 @@ "pois": [ { "id": "poi_0", - "name": "V\u00e5genfell", + "name": "Vågenfell", "kind": "transit", "center": [ 188, @@ -685,4 +685,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-780/bodies/GJ780e/markers.json b/wiki/star-systems/GJ-780/bodies/GJ780e/markers.json index 7a4646e66..38aaef4f8 100644 --- a/wiki/star-systems/GJ-780/bodies/GJ780e/markers.json +++ b/wiki/star-systems/GJ-780/bodies/GJ780e/markers.json @@ -362,7 +362,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Red Gum Gulch\u2013Stonegate Outpost Road", "kind": "commercial", "path": [ [ @@ -657,7 +657,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Red Gum Gulch\u2013Stonegate Outpost Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-783A/bodies/GJ783Ad/markers.json b/wiki/star-systems/GJ-783A/bodies/GJ783Ad/markers.json index 4c5c5f239..feddadfc5 100644 --- a/wiki/star-systems/GJ-783A/bodies/GJ783Ad/markers.json +++ b/wiki/star-systems/GJ-783A/bodies/GJ783Ad/markers.json @@ -551,7 +551,7 @@ "cities": [ { "id": "city_0", - "name": "Forum Veritas", + "name": "Operatorium", "kind": "capital", "center": [ 250, diff --git a/wiki/star-systems/GJ-783A/bodies/GJ783Ae/markers.json b/wiki/star-systems/GJ-783A/bodies/GJ783Ae/markers.json index 8d4ae2962..4a42715c5 100644 --- a/wiki/star-systems/GJ-783A/bodies/GJ783Ae/markers.json +++ b/wiki/star-systems/GJ-783A/bodies/GJ783Ae/markers.json @@ -858,7 +858,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Pantheon Lyceum–Capitolium Corridor", "kind": "commercial", "path": [ [ @@ -1137,7 +1137,7 @@ }, { "id": "city_1", - "name": "Capitolium", + "name": "Hesychia", "kind": "city", "center": [ 92, @@ -1159,7 +1159,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Pantheon Lyceum–Capitolium Express", "kind": "passenger_freight", "path": [ [ @@ -1436,4 +1436,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-784/bodies/GJ784c-m1/markers.json b/wiki/star-systems/GJ-784/bodies/GJ784c-m1/markers.json index 04d0ebaa2..9ce2cf52a 100644 --- a/wiki/star-systems/GJ-784/bodies/GJ784c-m1/markers.json +++ b/wiki/star-systems/GJ-784/bodies/GJ784c-m1/markers.json @@ -321,7 +321,7 @@ "cities": [ { "id": "city_0", - "name": "Zen Garden", + "name": "Kovács Loop", "kind": "capital", "center": [ 110, @@ -342,4 +342,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-785/bodies/GJ785c/markers.json b/wiki/star-systems/GJ-785/bodies/GJ785c/markers.json index 2a1c2d2a6..98330da51 100644 --- a/wiki/star-systems/GJ-785/bodies/GJ785c/markers.json +++ b/wiki/star-systems/GJ-785/bodies/GJ785c/markers.json @@ -6,7 +6,7 @@ "rivers": [ { "id": "river_0", - "name": "U\u00edge", + "name": "Uíge", "path": [ [ 153, @@ -696,7 +696,7 @@ "oceans": [ { "id": "water_0", - "name": "Angol\u00e2ndia Reach", + "name": "Angolândia Reach", "kind": "sea", "center": [ 29, @@ -718,7 +718,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "**M\u2019Tapo**", + "name": "**M’Tapo**", "center": [ 26, 142 @@ -796,7 +796,7 @@ }, { "id": "range_6", - "name": "**Ilha do Pr\u00edncipe**", + "name": "**Ilha do Príncipe**", "center": [ 144, 372 @@ -812,7 +812,7 @@ "cities": [ { "id": "city_0", - "name": "M\u2019Banza", + "name": "Trancoso", "kind": "capital", "center": [ 159, @@ -833,4 +833,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-807/bodies/GJ807d/markers.json b/wiki/star-systems/GJ-807/bodies/GJ807d/markers.json index 9dff513bd..39eb73fcc 100644 --- a/wiki/star-systems/GJ-807/bodies/GJ807d/markers.json +++ b/wiki/star-systems/GJ-807/bodies/GJ807d/markers.json @@ -735,7 +735,7 @@ "cities": [ { "id": "city_0", - "name": "Steinbach", + "name": "Pierrevert", "kind": "capital", "center": [ 41, @@ -756,4 +756,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-829/bodies/GJ829c/markers.json b/wiki/star-systems/GJ-829/bodies/GJ829c/markers.json index b2cf6cbb8..6ff5fb8c2 100644 --- a/wiki/star-systems/GJ-829/bodies/GJ829c/markers.json +++ b/wiki/star-systems/GJ-829/bodies/GJ829c/markers.json @@ -358,7 +358,7 @@ }, { "id": "river_2", - "name": "Vale do Para\u00edba", + "name": "Vale do Paraíba", "path": [ [ 29, @@ -476,7 +476,7 @@ }, { "id": "river_3", - "name": "Rio da Esperan\u00e7a", + "name": "Rio da Esperança", "path": [ [ 28, @@ -734,7 +734,7 @@ }, { "id": "water_1", - "name": "C\u00f3rrego do Sol", + "name": "Córrego do Sol", "kind": "lake", "center": [ 110, @@ -785,7 +785,7 @@ }, { "id": "range_3", - "name": "Vale do Sil\u00eancio", + "name": "Vale do Silêncio", "center": [ 155, 155 @@ -798,7 +798,7 @@ }, { "id": "range_4", - "name": "Planalto da F\u00e9", + "name": "Planalto da Fé", "center": [ 194, 329 @@ -837,7 +837,7 @@ }, { "id": "range_7", - "name": "Chapada da Esperan\u00e7a", + "name": "Chapada da Esperança", "center": [ 193, 487 @@ -853,7 +853,7 @@ "cities": [ { "id": "city_0", - "name": "Rio Grande", + "name": "Posto Avançado", "kind": "capital", "center": [ 10, @@ -874,4 +874,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-83.1/bodies/GJ83.1c/markers.json b/wiki/star-systems/GJ-83.1/bodies/GJ83.1c/markers.json index 590d82900..0006c8d9c 100644 --- a/wiki/star-systems/GJ-83.1/bodies/GJ83.1c/markers.json +++ b/wiki/star-systems/GJ-83.1/bodies/GJ83.1c/markers.json @@ -863,7 +863,7 @@ }, { "id": "range_3", - "name": "Estu\u00e1rio", + "name": "Estuário", "center": [ 41, 43 @@ -931,7 +931,7 @@ "cities": [ { "id": "city_0", - "name": "Mbanza", + "name": "Farol", "kind": "capital", "center": [ 85, @@ -952,4 +952,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-832/bodies/GJ832c/markers.json b/wiki/star-systems/GJ-832/bodies/GJ832c/markers.json index 28aa77f9b..34322947b 100644 --- a/wiki/star-systems/GJ-832/bodies/GJ832c/markers.json +++ b/wiki/star-systems/GJ-832/bodies/GJ832c/markers.json @@ -639,7 +639,7 @@ "cities": [ { "id": "city_0", - "name": "Eisenstadt", + "name": "Damm", "kind": "capital", "center": [ 152, @@ -660,4 +660,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-860B/bodies/GJ860Bc/markers.json b/wiki/star-systems/GJ-860B/bodies/GJ860Bc/markers.json index b319edfd3..2c5a3cd97 100644 --- a/wiki/star-systems/GJ-860B/bodies/GJ860Bc/markers.json +++ b/wiki/star-systems/GJ-860B/bodies/GJ860Bc/markers.json @@ -697,7 +697,7 @@ "cities": [ { "id": "city_0", - "name": "Hanseong", + "name": "Changsong", "kind": "capital", "center": [ 91, @@ -718,4 +718,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-877/bodies/GJ877c/markers.json b/wiki/star-systems/GJ-877/bodies/GJ877c/markers.json index 780c53d59..263c52fec 100644 --- a/wiki/star-systems/GJ-877/bodies/GJ877c/markers.json +++ b/wiki/star-systems/GJ-877/bodies/GJ877c/markers.json @@ -1009,7 +1009,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Braidwater–Loch Fyne Road", "kind": "commercial", "path": [ [ @@ -1288,7 +1288,7 @@ }, { "id": "city_1", - "name": "Loch Fyne", + "name": "Sundsvall", "kind": "city", "center": [ 137, @@ -1300,7 +1300,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Braidwater–Loch Fyne Line", "kind": "passenger_freight", "path": [ [ @@ -1577,4 +1577,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-877/bodies/GJ877d/markers.json b/wiki/star-systems/GJ-877/bodies/GJ877d/markers.json index 3de2624f4..273fe1396 100644 --- a/wiki/star-systems/GJ-877/bodies/GJ877d/markers.json +++ b/wiki/star-systems/GJ-877/bodies/GJ877d/markers.json @@ -286,7 +286,7 @@ "cities": [ { "id": "city_0", - "name": "Fjordholm", + "name": "Härnösand", "kind": "capital", "center": [ 106, @@ -307,4 +307,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-879/bodies/GJ879d/markers.json b/wiki/star-systems/GJ-879/bodies/GJ879d/markers.json index eeb4db016..f37d608cc 100644 --- a/wiki/star-systems/GJ-879/bodies/GJ879d/markers.json +++ b/wiki/star-systems/GJ-879/bodies/GJ879d/markers.json @@ -926,7 +926,7 @@ "mountain_ranges": [ { "id": "range_0", - "name": "Billabong", + "name": "Anandpur Scarp", "center": [ 149, 276 @@ -939,7 +939,7 @@ }, { "id": "range_1", - "name": "Southern Reach", + "name": "Kalka Ridge", "center": [ 225, 17 @@ -952,7 +952,7 @@ }, { "id": "range_2", - "name": "Central Plain", + "name": "Doab Shelf", "center": [ 208, 388 @@ -965,7 +965,7 @@ }, { "id": "range_3", - "name": "Wide expanse", + "name": "Ghaggar Plateau", "center": [ 190, 122 @@ -978,7 +978,7 @@ }, { "id": "range_4", - "name": "North Point", + "name": "Ropar Crest", "center": [ 82, 464 @@ -991,7 +991,7 @@ }, { "id": "range_5", - "name": "Green Valley", + "name": "Beas Dell", "center": [ 43, 254 @@ -1004,7 +1004,7 @@ }, { "id": "range_6", - "name": "East Shore", + "name": "Sutlej Scarp", "center": [ 225, 503 @@ -1032,7 +1032,7 @@ "roads": [ { "id": "road_0", - "name": "", + "name": "Phillaur\u2013Copper Kettle Road", "kind": "commercial", "path": [ [ @@ -1301,7 +1301,7 @@ "cities": [ { "id": "city_0", - "name": "Dusty Gully", + "name": "Phillaur", "kind": "capital", "center": [ 153, @@ -1323,7 +1323,7 @@ "railroads": [ { "id": "railroad_0", - "name": "", + "name": "Phillaur\u2013Copper Kettle Line", "kind": "passenger_freight", "path": [ [ diff --git a/wiki/star-systems/GJ-880/bodies/GJ880c/markers.json b/wiki/star-systems/GJ-880/bodies/GJ880c/markers.json index 0ea60b4c9..3d6c77d5c 100644 --- a/wiki/star-systems/GJ-880/bodies/GJ880c/markers.json +++ b/wiki/star-systems/GJ-880/bodies/GJ880c/markers.json @@ -829,7 +829,7 @@ "cities": [ { "id": "city_0", - "name": "Loch Fyne", + "name": "Kongsberg", "kind": "capital", "center": [ 203, @@ -850,4 +850,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-884/bodies/GJ884c/markers.json b/wiki/star-systems/GJ-884/bodies/GJ884c/markers.json index 6b6efac32..713ab10a0 100644 --- a/wiki/star-systems/GJ-884/bodies/GJ884c/markers.json +++ b/wiki/star-systems/GJ-884/bodies/GJ884c/markers.json @@ -843,7 +843,7 @@ "cities": [ { "id": "city_0", - "name": "Mbanza", + "name": "Lukala", "kind": "capital", "center": [ 163, @@ -864,4 +864,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-892/bodies/GJ892d/markers.json b/wiki/star-systems/GJ-892/bodies/GJ892d/markers.json index 1a8116873..de5caea93 100644 --- a/wiki/star-systems/GJ-892/bodies/GJ892d/markers.json +++ b/wiki/star-systems/GJ-892/bodies/GJ892d/markers.json @@ -72,7 +72,7 @@ }, { "id": "range_1", - "name": "Westwall Range", + "name": "Kappa Escarpment", "center": [ 42, 8 diff --git a/wiki/star-systems/GJ-892/bodies/GJ892e/markers.json b/wiki/star-systems/GJ-892/bodies/GJ892e/markers.json index ed7334734..efc84bb8f 100644 --- a/wiki/star-systems/GJ-892/bodies/GJ892e/markers.json +++ b/wiki/star-systems/GJ-892/bodies/GJ892e/markers.json @@ -37,7 +37,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge Marker", + "name": "Corrosion Bench", "kind": "capital", "center": [ 154, @@ -58,4 +58,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-896A/bodies/GJ896Ac/markers.json b/wiki/star-systems/GJ-896A/bodies/GJ896Ac/markers.json index 5408f7c75..20828f944 100644 --- a/wiki/star-systems/GJ-896A/bodies/GJ896Ac/markers.json +++ b/wiki/star-systems/GJ-896A/bodies/GJ896Ac/markers.json @@ -136,7 +136,7 @@ }, { "id": "river_1", - "name": "M\u2019Banza Current", + "name": "M’Banza Current", "path": [ [ 111, @@ -484,7 +484,7 @@ }, { "id": "river_5", - "name": "M\u2019Banza Reach", + "name": "M’Banza Reach", "path": [ [ 60, @@ -581,7 +581,7 @@ "cities": [ { "id": "city_0", - "name": "Rio Grande", + "name": "Nowa Huta", "kind": "capital", "center": [ 101, @@ -602,4 +602,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-908/bodies/GJ908c/markers.json b/wiki/star-systems/GJ-908/bodies/GJ908c/markers.json index 9e34e3246..05bd1c93a 100644 --- a/wiki/star-systems/GJ-908/bodies/GJ908c/markers.json +++ b/wiki/star-systems/GJ-908/bodies/GJ908c/markers.json @@ -477,7 +477,7 @@ "cities": [ { "id": "city_0", - "name": "Jade Harbor", + "name": "Thorngate", "kind": "capital", "center": [ 248, @@ -498,4 +498,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/wiki/star-systems/GJ-914A/bodies/GJ914Ac/markers.json b/wiki/star-systems/GJ-914A/bodies/GJ914Ac/markers.json index 6740841c2..58449f998 100644 --- a/wiki/star-systems/GJ-914A/bodies/GJ914Ac/markers.json +++ b/wiki/star-systems/GJ-914A/bodies/GJ914Ac/markers.json @@ -397,7 +397,7 @@ "cities": [ { "id": "city_0", - "name": "Ridge View", + "name": "Calvinia", "kind": "capital", "center": [ 192, @@ -418,4 +418,4 @@ ] } ] -} +} \ No newline at end of file