One body per archetype, best-first, searching outward from Sol.
"Best" is the most relief per unit radius, which is the rule that puts
Miranda ahead of Titan for icy-active: 10 km of scarp on a 236 km moon is
4.2% of its own radius, and Titan's 350 m on 2,575 km is 0.014%. A zoo is
where terrain is looked at, so the body with the most of it per pixel wins
— and Verona Rupes is a real 10 km cliff, so the rule is picking the right
world for the right reason rather than picking a big number.
This loads systems. It is the same caveat capability check 3 carries: a
session that has asked for the zoo has more systems loaded than one that has
not, which is visible in ir.summary() and is not a bug. It stops the moment
all four archetypes are filled.
What it must not do is read what is already loaded, and the first version
did. Considering world.loadedSystems() before generating anything makes the
answer a function of where the session has been: a browser that had flown
fifteen light years returned a different rocky pair from pnpm sim, on the
same seed, because twenty extra systems were sitting in the world when the
search ran. That is the "never make generation depend on order" rule exactly
— generating a different object first changed this one's output — and it
hollows out the whole point of a fixture, which is that the same places come
back. The search is anchored at Sol and walks systemsWithin in its own
sorted order instead, so the result is a function of the galaxy seed, the
catalog, the radius and the budget, and of nothing else.
- worldWorld
- Undocumented
- optionsZooOptions
- Undocumented