feat(wiki): generate body content + fix heightmap pipeline #119

Closed
jpmschweitzer wants to merge 0 commits from sprint-32/visual into main
Owner

Summary

  • Fix planet generator pipeline bugs: removed atomic .tmp→rename write pattern that caused silent FileNotFoundError on some bodies; fixed --heightmap-size CLI flag being silently ignored (Python default parameter binding gotcha)
  • Reduce heightmap resolution from 4096x2048 to 1024x512: native simulation grid is 512x256 — the 4096 images were pure interpolation padding with zero information gain. Cuts heightmap sizes from ~3.5MB to ~350KB each.
  • Generate body content for all 303 star systems: ~2,600 celestial bodies with index.md (YAML frontmatter), globe.png (512x512), heightmap.png (1024x512), terrain.npz, and markers.json

Size impact

Total generated content: ~5.4GB → estimated ~3.5GB after heightmap reduction (bodies still being regenerated at time of push)

Test plan

  • Spot-checked 10 random body files — valid YAML, correct physical params, assets present
  • Verified all 2,394 heightmaps are 1024x512 (zero wrong-sized)
  • Confirmed --heightmap-size flag works correctly with explicit params
  • Verified deterministic output: same body_id produces identical results across runs
  • No .tmp files left behind — direct writes are clean

🤖 Generated with Claude Code

## Summary - **Fix planet generator pipeline bugs**: removed atomic `.tmp→rename` write pattern that caused silent `FileNotFoundError` on some bodies; fixed `--heightmap-size` CLI flag being silently ignored (Python default parameter binding gotcha) - **Reduce heightmap resolution from 4096x2048 to 1024x512**: native simulation grid is 512x256 — the 4096 images were pure interpolation padding with zero information gain. Cuts heightmap sizes from ~3.5MB to ~350KB each. - **Generate body content for all 303 star systems**: ~2,600 celestial bodies with index.md (YAML frontmatter), globe.png (512x512), heightmap.png (1024x512), terrain.npz, and markers.json ## Size impact Total generated content: ~5.4GB → estimated ~3.5GB after heightmap reduction (bodies still being regenerated at time of push) ## Test plan - [x] Spot-checked 10 random body files — valid YAML, correct physical params, assets present - [x] Verified all 2,394 heightmaps are 1024x512 (zero wrong-sized) - [x] Confirmed `--heightmap-size` flag works correctly with explicit params - [x] Verified deterministic output: same body_id produces identical results across runs - [x] No `.tmp` files left behind — direct writes are clean 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jpmschweitzer added 3 commits 2026-04-06 18:54:23 +02:00
"Biome" describes per-zone vegetation classification (Whittaker table).
"Planet class" describes overall planetary character. The conflation
caused the planet generator to misclassify ~270 bodies as barren.

Scope: systems.db column, schema SQL, Rust atlas code, wiki table
headers (Biome → Class), atlas proposal JSONs, all docs/decisions,
tooling scripts. Also normalizes atmosphere vocabulary (breathable →
standard) and expands planet class mapping to all 26 wiki values.
Unknown classes default to temperate for modder safety.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The atomic .tmp→rename pattern caused silent FileNotFoundError on some
bodies. Removed in favour of direct writes — resume logic already handles
interrupted runs. Fixed --heightmap-size CLI flag which was silently
ignored due to Python default parameter binding. Changed default heightmap
resolution from 4096x2048 to 1024x512 (native simulation grid — no
information gain from upscaling).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Scaffolded index.md, globe.png (512x512), heightmap.png (1024x512),
terrain.npz, and markers.json for ~2600 celestial bodies across the
Settled Reach. Heightmaps render at native simulation resolution.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Review: sprint-32/visual → main (type: visual)

Reviewers: Hoshe (QA), Araminta (Art Direction)

Runtime smoke test: PR description mentions spot-checking 10 random bodies + verifying all 2,394 heightmaps are correct size + determinism verification. ✓

Sample checked: 28 bodies across all 14+ planet classes (all rare types + samples from common types).


Hoshe (QA): REQUEST_CHANGES

Summary: Impressively large-scale generation with consistent frontmatter structure and clean D-188 rename. Five concrete issues need fixing: a heading formatting bug affecting 216+ files, two missing-class bugs in batch.py and body_definition_parser.py, a gas_giant_ringed profile mismatch, and a latent NameError in parse_system.

# File Issue
1 tooling/planet-gen/scaffold_bodies.py pclass.title() produces Hot_Arid, Cold_Arid, Temperate_Terminator in wiki headings — 216+ files affected. Fix: .replace("_", " ").title()
2 tooling/planet-gen/batch.py (_validate_body_def) valid_classes set is missing cold_arid, hot_arid, tropical, boreal, temperate_terminator--dry-run falsely flags 312+ bodies as invalid
3 tooling/planet-gen/body_definition_parser.py:~489 atmo_colors dict missing 5 extended classes — cold_arid/hot_arid/tropical/boreal/temperate_terminator bodies with atmospheres get no rim glow
4 tooling/planet-gen/scaffold_bodies.py Gas giant profile table always shows Class: gas_giant even for gas_giant_ringed — the .replace("_ringed", "") strips distinction from profile table
5 tooling/planet-gen/body_definition_parser.py:~789 _check_habitability() called outside loop — only checks last body, NameError if system has zero renderable bodies

Araminta (Art Direction): REQUEST_CHANGES

Summary: Solid visual grammar — biome palette reads coherently, ocean depth blending is good, star tints are physically directed, gas giant palettes cover genuine variety. Main concerns are correctness gaps in extended planet classes affecting a non-trivial fraction of the 2,600 pages.

# File Issue
1 body_definition_parser.py:~489 + biomes.toml 5 extended classes have no atmosphere rim color. Additionally, biomes.toml has a dead atmosphere_colors.martian entry that nothing maps to — it's the perfect color for cold_arid
2 body_definition_parser.py (CLASS_CLOUD, CLASS_TILT) 5 extended classes missing from cloud/tilt range dicts. Fallback cloud range (0.10, 0.40) is wrong for boreal (should be overcast) and tropical (should be high). GJ534d (boreal) generated only 13.5% cloud cover
3 render_heightmap.py (_render_legend) Legend caps at 9 items at 1024px — mountain rock, tundra, ice/snow silently dropped on rich worlds. Also: biome IDs 5 and 10 both label "rainforest" creating duplicate legend entries
4 scaffold_bodies.py Same pclass.title() underscore bug as Hoshe #1
5 render_heightmap.py docstring + CLI Module docstring still says "4096×2048", UI_SCALE comment says "4.0", and --small CLI flag is now a no-op
6 body_definition_parser.py:~789 Same _check_habitability outside-loop bug as Hoshe #5
7 body_definition_parser.py (RING_COLOURS) infernal gas giant palette has no paired ring color — only 5 of 6 palettes have explicit ring colors
8 Generated frontmatter (e.g. GJ860Be) Gas giants carry meaningless terrain.land_fraction field — noise that downstream tools may misinterpret

Verdict: CHANGES REQUESTED

Deduplicated issue list (10 unique items, priority order):

  1. pclass.title() heading bug — 216+ files show Hot_Arid, Cold_Arid etc.
  2. batch.py valid_classes — 5 classes missing from dry-run validation
  3. atmo_colors missing 5 classes — no atmosphere rim glow on atmospheric extended-class bodies; dead martian entry in biomes.toml
  4. CLASS_CLOUD/CLASS_TILT missing 5 classes — wrong cloud coverage for boreal/tropical worlds
  5. Legend caps at 9 items — important biomes (tundra, ice, mountain) dropped; duplicate "rainforest" label
  6. _check_habitability outside loop — only checks last body per system
  7. Gas giant _ringed profile mismatch — profile table strips distinction
  8. Gas giant terrain fields — meaningless land_fraction in frontmatter
  9. Stale docstring/comments/CLI — render_heightmap.py references old 4096 resolution
  10. Missing infernal ring color — no artistic intent behind fallback color

Items 1–4 are high-priority (affect rendering correctness or large numbers of files). Items 5–10 are polish. All affected body files will need regeneration after fixes.

## Review: sprint-32/visual → main (type: visual) **Reviewers:** Hoshe (QA), Araminta (Art Direction) **Runtime smoke test:** PR description mentions spot-checking 10 random bodies + verifying all 2,394 heightmaps are correct size + determinism verification. ✓ **Sample checked:** 28 bodies across all 14+ planet classes (all rare types + samples from common types). --- ### Hoshe (QA): REQUEST_CHANGES Summary: Impressively large-scale generation with consistent frontmatter structure and clean D-188 rename. Five concrete issues need fixing: a heading formatting bug affecting 216+ files, two missing-class bugs in batch.py and body_definition_parser.py, a gas_giant_ringed profile mismatch, and a latent NameError in parse_system. | # | File | Issue | |---|------|-------| | 1 | `tooling/planet-gen/scaffold_bodies.py` | `pclass.title()` produces `Hot_Arid`, `Cold_Arid`, `Temperate_Terminator` in wiki headings — 216+ files affected. Fix: `.replace("_", " ").title()` | | 2 | `tooling/planet-gen/batch.py` (`_validate_body_def`) | `valid_classes` set is missing `cold_arid`, `hot_arid`, `tropical`, `boreal`, `temperate_terminator` — `--dry-run` falsely flags 312+ bodies as invalid | | 3 | `tooling/planet-gen/body_definition_parser.py:~489` | `atmo_colors` dict missing 5 extended classes — cold_arid/hot_arid/tropical/boreal/temperate_terminator bodies with atmospheres get no rim glow | | 4 | `tooling/planet-gen/scaffold_bodies.py` | Gas giant profile table always shows `Class: gas_giant` even for `gas_giant_ringed` — the `.replace("_ringed", "")` strips distinction from profile table | | 5 | `tooling/planet-gen/body_definition_parser.py:~789` | `_check_habitability()` called outside loop — only checks last body, NameError if system has zero renderable bodies | --- ### Araminta (Art Direction): REQUEST_CHANGES Summary: Solid visual grammar — biome palette reads coherently, ocean depth blending is good, star tints are physically directed, gas giant palettes cover genuine variety. Main concerns are correctness gaps in extended planet classes affecting a non-trivial fraction of the 2,600 pages. | # | File | Issue | |---|------|-------| | 1 | `body_definition_parser.py:~489` + `biomes.toml` | 5 extended classes have no atmosphere rim color. Additionally, `biomes.toml` has a dead `atmosphere_colors.martian` entry that nothing maps to — it's the perfect color for `cold_arid` | | 2 | `body_definition_parser.py` (`CLASS_CLOUD`, `CLASS_TILT`) | 5 extended classes missing from cloud/tilt range dicts. Fallback cloud range `(0.10, 0.40)` is wrong for boreal (should be overcast) and tropical (should be high). GJ534d (boreal) generated only 13.5% cloud cover | | 3 | `render_heightmap.py` (`_render_legend`) | Legend caps at 9 items at 1024px — mountain rock, tundra, ice/snow silently dropped on rich worlds. Also: biome IDs 5 and 10 both label "rainforest" creating duplicate legend entries | | 4 | `scaffold_bodies.py` | Same `pclass.title()` underscore bug as Hoshe #1 | | 5 | `render_heightmap.py` docstring + CLI | Module docstring still says "4096×2048", `UI_SCALE` comment says "4.0", and `--small` CLI flag is now a no-op | | 6 | `body_definition_parser.py:~789` | Same `_check_habitability` outside-loop bug as Hoshe #5 | | 7 | `body_definition_parser.py` (`RING_COLOURS`) | `infernal` gas giant palette has no paired ring color — only 5 of 6 palettes have explicit ring colors | | 8 | Generated frontmatter (e.g. GJ860Be) | Gas giants carry meaningless `terrain.land_fraction` field — noise that downstream tools may misinterpret | --- ### Verdict: CHANGES REQUESTED **Deduplicated issue list (10 unique items, priority order):** 1. **`pclass.title()` heading bug** — 216+ files show `Hot_Arid`, `Cold_Arid` etc. 2. **`batch.py` valid_classes** — 5 classes missing from dry-run validation 3. **`atmo_colors` missing 5 classes** — no atmosphere rim glow on atmospheric extended-class bodies; dead `martian` entry in biomes.toml 4. **`CLASS_CLOUD`/`CLASS_TILT` missing 5 classes** — wrong cloud coverage for boreal/tropical worlds 5. **Legend caps at 9 items** — important biomes (tundra, ice, mountain) dropped; duplicate "rainforest" label 6. **`_check_habitability` outside loop** — only checks last body per system 7. **Gas giant `_ringed` profile mismatch** — profile table strips distinction 8. **Gas giant terrain fields** — meaningless `land_fraction` in frontmatter 9. **Stale docstring/comments/CLI** — render_heightmap.py references old 4096 resolution 10. **Missing `infernal` ring color** — no artistic intent behind fallback color Items 1–4 are high-priority (affect rendering correctness or large numbers of files). Items 5–10 are polish. All affected body files will need regeneration after fixes.
jpmschweitzer added 1 commit 2026-04-06 19:18:16 +02:00
1. Fix pclass.title() underscore bug in scaffold headings (216+ files)
2. Add 5 extended classes to batch.py valid_classes set
3. Add atmosphere rim colors for cold_arid/hot_arid/tropical/boreal/temperate_terminator
4. Add cloud/tilt ranges for extended classes (boreal 55-75%, tropical 60-80%)
5. Fix legend overflow at 1024px + deduplicate rainforest labels
6. Move _check_habitability() inside loop (was only checking last body)
7. Preserve gas_giant_ringed distinction in profile table
8. Drop meaningless terrain fields from gas giant frontmatter
9. Update stale docstrings/comments for 1024x512 default
10. Add infernal ring color

All lookup tables (CLASS_TILT, CLASS_CLOUD, CLASS_POLAR_ICE, CLASS_GEOTHERMAL,
CLASS_OBLATENESS, atmo_colors, tectonic_map, substrate_map) now include the
5 extended planet classes. Body content requires full regeneration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Review Round 2: sprint-32/visual → main (type: visual)

Fix commit: 467c21a0 — addressed 10 issues from round 1.
Reviewers: Hoshe (QA), Araminta (Art Direction)


Hoshe (QA): REQUEST_CHANGES

Summary: Fix commit resolved 8 of 10 original issues cleanly. 4 issues remain — 2 blocking (atmosphere colors applied to wrong layer, profile table raw identifiers), 2 polish (legend text overlap, title panel underscores).

# Sev File Issue
1 BLOCKING biomes.toml + planet_renderer.py Atmosphere colors applied to wrong layer. Fix added colors to body_definition_parser.py's Python dict, but planet_renderer.py reads from biomes.toml [atmosphere_colors] via biome_config.py — NOT from body_def. Globe renders of cold_arid/hot_arid/tropical/boreal/temperate_terminator will have no rim glow. Must add 5 entries to biomes.toml, rename dead martian to cold_arid.
2 BLOCKING scaffold_bodies.py Profile table outputs raw identifiers. cold_arid, gas_giant_ringed, temperate_terminator shown verbatim. Heading was fixed but table wasn't. Apply .replace('_', ' ') or a display name helper.
3 POLISH render_heightmap.py (_render_legend) Legend labels collide. At 15+ items, step shrinks to 66px leaving 46px for text. Labels like "trop. rainforest" (96px) overflow into adjacent swatches. Need text clipping, abbreviation, or two-row layout. Chrome-only.
4 POLISH render_heightmap.py (_render_title) Title panel underscores. .replace("_ringed", "") only handles one case. Fix: .replace("_", " ").title(). Chrome-only.

Araminta (Art Direction): REQUEST_CHANGES

Summary: The atmosphere rim color fix was applied to the wrong layer — body_definition_parser.py received the colors but planet_renderer.py reads from biomes.toml directly. All 5 extended classes will render globes without atmosphere glow. Legend overflow structurally unsolved.

# Sev File Issue
1 BLOCKING biomes.toml [atmosphere_colors] Same as Hoshe #1. Globe renderer uses ATMO_COLORS.get(planet_class) from biomes.toml. Missing: cold_arid, hot_arid, tropical, boreal, temperate_terminator. Dead martian entry still present.
2 BLOCKING render_heightmap.py (_render_legend) Legend text overflows into adjacent swatches. PIL draw.text() has no clip — text renders past allocated slot into next swatch area. Garbled legends on biome-rich worlds.
3 POLISH biomes.toml Dead martian entry in atmosphere_colors.
4 POLISH render_heightmap.py (_render_title) Same underscore issue as Hoshe #4.

Notes: Three atmosphere colors are identical to base classes (boreal=temperate, tropical=forest, hot_arid=arid) — functional but visually indistinguishable rims. If fixing biomes.toml anyway, could differentiate slightly.


Verdict: CHANGES REQUESTED

Deduplicated issue list (4 items):

# Sev Issue
1 BLOCKING biomes.toml missing 5 atmosphere_colors — globe renderer reads from toml, not body_def. ~400+ globes render without atmosphere glow.
2 BLOCKING Profile table raw identifierscold_arid, gas_giant_ringed shown verbatim in ~500+ wiki pages.
3 POLISH Legend label overflow — text collides with adjacent swatches on biome-rich worlds (chrome-only).
4 POLISH Title panel underscores.replace("_ringed", "") insufficient (chrome-only).

Issue #1 is the critical catch — without this fix, all extended-class globes render without atmosphere glow.

## Review Round 2: sprint-32/visual → main (type: visual) **Fix commit:** `467c21a0` — addressed 10 issues from round 1. **Reviewers:** Hoshe (QA), Araminta (Art Direction) --- ### Hoshe (QA): REQUEST_CHANGES Summary: Fix commit resolved 8 of 10 original issues cleanly. 4 issues remain — 2 blocking (atmosphere colors applied to wrong layer, profile table raw identifiers), 2 polish (legend text overlap, title panel underscores). | # | Sev | File | Issue | |---|-----|------|-------| | 1 | **BLOCKING** | `biomes.toml` + `planet_renderer.py` | **Atmosphere colors applied to wrong layer.** Fix added colors to `body_definition_parser.py`'s Python dict, but `planet_renderer.py` reads from `biomes.toml [atmosphere_colors]` via `biome_config.py` — NOT from `body_def`. Globe renders of cold_arid/hot_arid/tropical/boreal/temperate_terminator will have no rim glow. Must add 5 entries to `biomes.toml`, rename dead `martian` to `cold_arid`. | | 2 | **BLOCKING** | `scaffold_bodies.py` | **Profile table outputs raw identifiers.** `cold_arid`, `gas_giant_ringed`, `temperate_terminator` shown verbatim. Heading was fixed but table wasn't. Apply `.replace('_', ' ')` or a display name helper. | | 3 | POLISH | `render_heightmap.py` (`_render_legend`) | **Legend labels collide.** At 15+ items, step shrinks to 66px leaving 46px for text. Labels like "trop. rainforest" (96px) overflow into adjacent swatches. Need text clipping, abbreviation, or two-row layout. Chrome-only. | | 4 | POLISH | `render_heightmap.py` (`_render_title`) | **Title panel underscores.** `.replace("_ringed", "")` only handles one case. Fix: `.replace("_", " ").title()`. Chrome-only. | --- ### Araminta (Art Direction): REQUEST_CHANGES Summary: The atmosphere rim color fix was applied to the wrong layer — `body_definition_parser.py` received the colors but `planet_renderer.py` reads from `biomes.toml` directly. All 5 extended classes will render globes without atmosphere glow. Legend overflow structurally unsolved. | # | Sev | File | Issue | |---|-----|------|-------| | 1 | **BLOCKING** | `biomes.toml [atmosphere_colors]` | **Same as Hoshe #1.** Globe renderer uses `ATMO_COLORS.get(planet_class)` from biomes.toml. Missing: cold_arid, hot_arid, tropical, boreal, temperate_terminator. Dead `martian` entry still present. | | 2 | **BLOCKING** | `render_heightmap.py` (`_render_legend`) | **Legend text overflows into adjacent swatches.** PIL `draw.text()` has no clip — text renders past allocated slot into next swatch area. Garbled legends on biome-rich worlds. | | 3 | POLISH | `biomes.toml` | Dead `martian` entry in atmosphere_colors. | | 4 | POLISH | `render_heightmap.py` (`_render_title`) | Same underscore issue as Hoshe #4. | Notes: Three atmosphere colors are identical to base classes (boreal=temperate, tropical=forest, hot_arid=arid) — functional but visually indistinguishable rims. If fixing biomes.toml anyway, could differentiate slightly. --- ### Verdict: CHANGES REQUESTED **Deduplicated issue list (4 items):** | # | Sev | Issue | |---|-----|-------| | 1 | **BLOCKING** | **biomes.toml missing 5 atmosphere_colors** — globe renderer reads from toml, not body_def. ~400+ globes render without atmosphere glow. | | 2 | **BLOCKING** | **Profile table raw identifiers** — `cold_arid`, `gas_giant_ringed` shown verbatim in ~500+ wiki pages. | | 3 | POLISH | **Legend label overflow** — text collides with adjacent swatches on biome-rich worlds (chrome-only). | | 4 | POLISH | **Title panel underscores** — `.replace("_ringed", "")` insufficient (chrome-only). | Issue #1 is the critical catch — without this fix, all extended-class globes render without atmosphere glow.
jpmschweitzer added 1 commit 2026-04-06 19:32:45 +02:00
1. Add 5 extended atmosphere colors to biomes.toml (globe renderer reads
   from toml, not body_def) — cold_arid, hot_arid, tropical, boreal,
   temperate_terminator. Remove dead martian entry. Slightly differentiate
   colors from base classes.
2. Fix profile table raw identifiers — apply .replace('_', ' ') to class
   field in wiki body pages.
3. Fix legend text overflow — truncate labels with ellipsis when step
   size is too narrow for full text.
4. Fix title panel underscores — use .replace('_', ' ') instead of
   .replace('_ringed', '').

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Review Round 3: sprint-32/visual → main (type: visual)

Fix commits: 467c21a0 (round 1), a8379871 (round 2)
Reviewers: Hoshe (QA), Araminta (Art Direction)


Hoshe (QA): APPROVE

All 14 prior issues verified resolved. No new blocking issues. 4 polish items noted for future tickets:

  • P1: Legend omits biome 24 (lithic_pioneer) and 26 (ice_shelf) — terrain renders correctly but legend has no swatch for these
  • P2: Stale "atomic write" comments in batch.py call sites
  • P3: batch.py --heightmap-size lacks input validation (CLI edge case only)
  • P4: atmosphere_color override path silently ignored by globe renderer

Araminta (Art Direction): APPROVE

All 11 atmosphere colors present and differentiated in biomes.toml. Color pairs distinct enough in context. Legend truncation degrades gracefully at high item counts. Temperature bands complete for all extended classes.

One polish item: body_definition_parser.py inline atmo_colors dict has stale values for 5 classes vs biomes.toml — no render impact (globe renderer reads from toml), but frontmatter metadata will be wrong for future consumers. Recommend importing from biome_config instead of maintaining a separate dict.


Verdict: APPROVED

Safe to proceed with batch regeneration. All blocking issues from rounds 1-2 resolved. Polish items can be ticketed for later cleanup.

## Review Round 3: sprint-32/visual → main (type: visual) **Fix commits:** `467c21a0` (round 1), `a8379871` (round 2) **Reviewers:** Hoshe (QA), Araminta (Art Direction) --- ### Hoshe (QA): APPROVE All 14 prior issues verified resolved. No new blocking issues. 4 polish items noted for future tickets: - **P1:** Legend omits biome 24 (lithic_pioneer) and 26 (ice_shelf) — terrain renders correctly but legend has no swatch for these - **P2:** Stale "atomic write" comments in batch.py call sites - **P3:** batch.py `--heightmap-size` lacks input validation (CLI edge case only) - **P4:** `atmosphere_color` override path silently ignored by globe renderer --- ### Araminta (Art Direction): APPROVE All 11 atmosphere colors present and differentiated in biomes.toml. Color pairs distinct enough in context. Legend truncation degrades gracefully at high item counts. Temperature bands complete for all extended classes. One polish item: `body_definition_parser.py` inline `atmo_colors` dict has stale values for 5 classes vs biomes.toml — no render impact (globe renderer reads from toml), but frontmatter metadata will be wrong for future consumers. Recommend importing from `biome_config` instead of maintaining a separate dict. --- ### Verdict: APPROVED Safe to proceed with batch regeneration. All blocking issues from rounds 1-2 resolved. Polish items can be ticketed for later cleanup.
jpmschweitzer added 1 commit 2026-04-06 22:55:48 +02:00
Full regeneration of ~2,600 bodies with:
- Correct atmosphere rim colors for extended planet classes
- Clean headings and profile tables (no underscores)
- Boreal/tropical cloud coverage at correct ranges
- Gas giants without meaningless terrain fields
- All heightmaps at 1024x512

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Review Round 4: sprint-32/visual → main (post-regeneration)

Commit: 32c7d5fa — regenerated all ~2,600 bodies with review fixes applied.
Tooling code: Approved in round 3 — no changes since.
Reviewer: Hoshe (QA) — output verification only.


Hoshe (QA): APPROVE

17 bodies sampled across all planet classes. All 14 previously-flagged issues confirmed resolved in regenerated output:

Check Result
Headings (no underscores) PASS — "Hot Arid planet.", "Temperate Terminator planet.", "Gas giant."
Profile table Class field PASS — "hot arid", "temperate terminator", "gas giant ringed"
Gas giants: no terrain, no heightmap PASS — terrain block removed, no ![Heightmap]
Cloud coverage ranges PASS — boreal 0.573 (was 0.135), tropical 0.764, cold_arid 0.224, hot_arid 0.029
Atmosphere colors PASS — non-null for atmospheric bodies, null for barren
Frontmatter schema PASS — all required fields present
File count 2,612 body files

Verdict: APPROVED

4 rounds, 14 issues found and fixed. Clean to merge.

## Review Round 4: sprint-32/visual → main (post-regeneration) **Commit:** `32c7d5fa` — regenerated all ~2,600 bodies with review fixes applied. **Tooling code:** Approved in round 3 — no changes since. **Reviewer:** Hoshe (QA) — output verification only. --- ### Hoshe (QA): APPROVE 17 bodies sampled across all planet classes. All 14 previously-flagged issues confirmed resolved in regenerated output: | Check | Result | |-------|--------| | Headings (no underscores) | PASS — "Hot Arid planet.", "Temperate Terminator planet.", "Gas giant." | | Profile table Class field | PASS — "hot arid", "temperate terminator", "gas giant ringed" | | Gas giants: no terrain, no heightmap | PASS — terrain block removed, no `![Heightmap]` | | Cloud coverage ranges | PASS — boreal 0.573 (was 0.135), tropical 0.764, cold_arid 0.224, hot_arid 0.029 | | Atmosphere colors | PASS — non-null for atmospheric bodies, null for barren | | Frontmatter schema | PASS — all required fields present | | File count | 2,612 body files | --- ### Verdict: APPROVED 4 rounds, 14 issues found and fixed. Clean to merge.
jpmschweitzer closed this pull request 2026-04-06 23:06:22 +02:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#119