latitude-generation-order-rules
Canonical rules for how Latitude decides biomes and applies them across generation stages. Prevents the model from inventing steps, reordering pipeline stages, or “fixing” bugs by changing generation order.
SKILL.md
| Name | latitude-generation-order-rules |
| Description | Canonical rules for how Latitude decides biomes and applies them across generation stages. Prevents the model from inventing steps, reordering pipeline stages, or “fixing” bugs by changing generation order. |
name: latitude-generation-order-rules description: Canonical rules for how Latitude decides biomes and applies them across generation stages. Prevents the model from inventing steps, reordering pipeline stages, or “fixing” bugs by changing generation order.
Latitude — Generation Order Rules (Authoritative)
This skill defines the only allowed high-level order of operations for Latitude worldgen and related runtime guards. It exists to prevent the assistant from:
- Inventing new pipeline steps
- Reordering stages without evidence
- “Fixing” biome leaks by guessing different order
- Removing vanilla biomes or changing eligibility tables
If the assistant cannot prove a step from code, logs, or an attached authority table, it must say UNKNOWN and ask for the specific file / method signature.
Primary authority files (must consult)
- Vanilla biome latitude eligibility table (single source of truth):
.windsurf/skills/latitude-biome-authority/SKILL.md
- Biome bands reference (if present in repo docs / exports):
cc-latitude-comprehensive-2026-02-05.md(project notes)
- Any “LatitudeBiomes” / picker implementation:
src/main/java/com/example/globe/world/LatitudeBiomes.java(or the current equivalent)
Rule: If there is any conflict between a guess and an authority file, the authority file wins.
Non-negotiable invariants
- All vanilla biomes must still exist somewhere unless the authority list explicitly excludes them.
- Latitude bands constrain selection; variants/overlays are secondary and may only restrict, not invent.
- “Fixes” must not rely on changing worldgen order unless:
- a concrete call site is identified, and
- a targeted change is made with minimal surface area.
- If snow/cold artifacts appear in warm bands, the allowed fixes are write-path guards (ProtoChunk/ChunkRegion/Feature cancel) or correct biome container propagation — not “change band table.”
Canonical generation pipeline (high level)
When reasoning about how a block/biome appears, assume this order unless code proves otherwise:
Stage A — Base / vanilla biome resolution
- Vanilla chooses a base biome (the “base=” shown in logs).
- Latitude may log this (e.g.
[LAT_PICK] base=...).
Stage B — Latitude selection and output biome override
- Latitude computes:
radius = worldBorderSize / 2t = abs(z)/radiuszone = band(t)
- Latitude chooses an out biome (the biome returned to the generator).
- Latitude logs (example shape):
[LAT_PICK] zone=EQUATOR base=snowy_taiga out=jungle ...
- If the assistant proposes threshold changes, it must reference the exact helper/constants used.
Stage C — Surface rules / material placement
- Surface rules (MaterialRules) place top blocks (grass/sand/snow_block, etc.) based on biome + noise.
- If “out biome” is warm but cold blocks appear, suspect that:
- some placements still consult base biome temperature/precip flags, OR
- placements happen through features after surface rules.
Stage D — Feature placement / post-processing
- Features can place blocks using region/world access (e.g.
FreezeTopLayerFeature). - These may use biome temperature flags and can be triggered even when out biome is warm if base biome data leaks.
Stage E — Runtime & write-path guards (Latitude protections)
Allowed guard layers (in order of preference for robustness):
- Feature-level cancel for known offenders (e.g., cancel
FreezeTopLayerFeaturein warm bands) - Write-path trap at
ChunkRegion#setBlockStateduring worldgen - ProtoChunk#setBlockState` trap for direct chunk writes
- Biome precipitation hooks (only affect weather-driven snow layers, not worldgen blocks)
Rule: If a block is still appearing, identify which write path is used by logging/stack trace; do not guess.
Debugging protocol (mandatory)
When a worldgen artifact appears (snow/powder snow in warm bands, wrong biome, etc.):
- Confirm out biome (F3) and capture coords (x,y,z).
- Search logs for the decision record near that location:
[LAT_PICK] ... base=... out=... zone=...
- Determine which system wrote the offending block:
- Feature hook logs (e.g.,
[FREEZE_GUARD]) - Write-path logs (e.g.,
[SNOWBLOCK_GUARD])
- Feature hook logs (e.g.,
- Only then propose the smallest fix:
- cancel the feature, or
- rewrite the blockstate at the write choke point, gated by warm band logic.
If any of these steps lack evidence, the assistant must request the relevant file/method signature.
Allowed outputs the assistant may produce
- Exact “next step” commands (PowerShell) to locate call sites (
Select-String,git grep,jar tf, etc.) - Minimal patch plans: 1–3 files, 1–2 commits, with revert path
- Explicit “proof” instrumentation plans: single-shot logs, counters, or stack trace capture
- Release discipline steps: build, jar verify, tag placement, and Modrinth upload checklist
Forbidden behaviors
- Inventing a “worldgen order” not supported by code/logs
- Reassigning biomes to bands to “fix” bugs
- Removing vanilla biomes because they’re “rare” or “problematic”
- Proposing broad refactors when a write-path guard would solve the symptom
- Shipping releases from branches polluted with extracted MC sources or tooling folders
Reminder: one variable at a time
When making changes:
- One change per commit
- Test
- Tag savepoint if it touches generation
- Then proceed