Planet generator pipeline (tooling/planet-gen/) — procedural terrain simulation with Whittaker biome classification, equirectangular heightmap (4096×2048) + globe (512×512) rendering from wiki system data
Batch runner with error handling, resume support, atomic writes, determinism verification, and 50% error rate circuit breaker
Per-body wiki pages with YAML frontmatter at wiki/star-systems/*/bodies/*/index.md — body definition serves as both data source and wiki page
Externalized config — all biome colors, classification tables, and rendering parameters in biomes.toml
7 planet type PNGs (512×512px RGBA) covering all biome_summary values:
temperate, temperate_terminator, oceanic, arid, frozen, volcanic, barren.
Pure Python ray-sphere renderer (spikes/planet-renders/generate_planets.py)
— numpy/PIL only, no Godot dependency, ~2s for all 7 types. Seeded from
body_id for reproducibility. Resolves Q-064 (Godot 3D planet plugin
evaluation — superseded by headless Python approach).
Assets at client/assets/planets/, 512×512 RGBA, displayed at 240×240 in
the body-info-panel navigator and GTTR arrival window.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Health icon: replaced overlapping outlined rects (railroad crossing
effect) with a single solid polygon path. Careful stance: redesigned
from diagonal-arm to horizontal T-shape for clear differentiation
from walk at 20px.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
scipy 1.17.1 and Pillow 12.2.0 — both CVE-audited clean against
NVD + OSV (2026-04-06). Required by planet generator pipeline.
Gitignore generated terrain.npz, spike intermediates, and tmp files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PO-built prototype (FBM terrain, Whittaker biomes, procedural globe)
with test body definitions for all planet types. Replaces pyplatec
approach. Spike validates the pipeline architecture for batch #817.
Includes handover doc, 9 test body definitions, and updated spike
pipeline documentation. Stale pyplatec outputs removed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
First system through the planet generator pipeline. Per-body wiki
pages with YAML frontmatter at wiki/star-systems/GJ-144/bodies/.
Each body has: index.md (definition + profile), heightmap.png
(4096×2048), globe.png (512×512), and markers.json (rivers, oceans,
mountain ranges).
Bodies: GJ144b-g + moons. Includes temperate (Kallast, Vethis),
frozen, barren moons, and a ringed gas giant.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove tracked kallast_terrain.npy (HIGH — binary in git)
- Amend D-086: stance + interaction icons delivered, not deferred
- Create ticket #818 for icon_tint.gdshader (client team)
- Fix gas giant profile table: suppress gravity/land%/hydrosphere
- Fix atmosphere_color: null when atmosphere is none
- Fix gas_giant_ringed display as gas_giant in profile table
- Re-scaffold + regenerate Ran system with fixes
.import sidecars: not applicable — gitignored by design (client/**/*.import).
Godot auto-generates on first run.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
tooling/planet-gen/) — procedural terrain simulation with Whittaker biome classification, equirectangular heightmap (4096×2048) + globe (512×512) rendering from wiki system datawiki/star-systems/*/bodies/*/index.md— body definition serves as both data source and wiki pagebiomes.tomlSupports all body types: temperate, arid, frozen, volcanic, barren, oceanic, gas giant (banded + ringed), and moons (half-size, grey, cratered).
Pipeline
Test plan
tooling/planet-gen/batch --system GJ-144 --force— 10 bodies, 0 errorstooling/planet-gen/batch --system GJ-144 --dry-run— all 10 validtooling/planet-gen/batch --system GJ-144 --verify-determinism 2— 2/2 passedtooling/planet-gen/batchacross all 301 systems (run by PO)🤖 Generated with Claude Code
Review: sprint-32/visual → main (type: visual)
Reviewers: Hoshe (QA), Araminta (art direction)
Hoshe (QA): REQUEST_CHANGES
Icons conform to D-086 throughout, planet renders consistent, GJ-144 body pages complete. Two high-severity issues:
kallast_terrain.npygit rm --cachedneeded.client/assets/icons/*.svg,planets/*.pngicon_tint.gdshaderreferenced but doesn't exist — undelivered forward reference.logging/mathimports missed by ruff pass.Araminta (Art Direction): REQUEST_CHANGES
Icons faithfully apply D-086 constraints, stance silhouettes distinct at 20px, diamond-eye vocabulary creates visual coherence. Two blockers:
icon_tint.gdshader— icons can't be runtime-recolored. Open tracking ticket.gas_giantbut frontmatter hasgas_giant_ringed.atmosphere: nonebutatmosphere_colorhas values — should be null.Verdict: CHANGES REQUESTED
Deduplicated blockers (4): tracked .npy binary, missing .import sidecars, D-086 scope amendment for stance+action icons, shader ticket.
Re-review: sprint-32/visual → main (round 2)
Commit:
0c3eddee— fix(assets): address PR #117 review commentsIssues addressed:
kallast_terrain.npy(2MB binary)git rm --cached.importsidecars.gitignorehasclient/**/*.importby design. Godot auto-generates on first run.icon_tint.gdshadertracking ticketgas_giantvsgas_giant_ringedatmosphere_colorshould be nullAdvisory items (from round 1, not blocking):
Verdict: APPROVED
No new issues. All blockers resolved or retracted.
Pull request closed