Files
settled-reach/tooling/planet-gen/earth_blocklist.txt
T
jpmschweitzer cbeadc3184 feat(tooling): grounding overhaul + richer naming palettes (#833)
Substantial quality pass on gemma_naming.py driven by user review of
the first real-mode smoke test output. The earlier run produced names
that read too sci-fi / epic-fantasy / same-y: Aureus, Aetheria,
Stellaris, Nexus, Elysium. Root cause analysis + fixes:

1. Runtime timestamps. The log prefix is now
   `[HH:MM:SS +00h03m]` — clock time plus elapsed-since-start. Gives
   the user an at-a-glance sense of how long the run has been going
   without scrolling back to the banner.

2. System / body headers. When the loop enters a new system it prints
   `── SYSTEM K/N  GJ 71 — Tau Ceti  (hop 0)`. Each body line now
   shows `GJ71c (Threshold)` if the body has a proper_name in
   systems.db, so the log reads like a tour of the reach rather than
   a wall of body_id slugs. Preserved (already-named) bodies now log
   a compact "(skip — N names already set)" line so progress is
   visible even when no inference happened.

3. Prompt grounding overhaul. The old few-shot examples were all
   classical/epic (Wolcott Beck, Nakamura Stream, Ribeiro do Sal,
   Drayton Spine) which biased Gemma 2 2B toward Latin/Greek
   coinages. New preambles use the shape:
       "Settlers named X after themselves, after what they saw, or
        after places back home. Most names are mundane, short, and
        direct — a surname, a compass direction, a feature, a
        practical description. Classical or epic names are rare."
   Combined with grounded example pools, Gemma now produces names
   like "Cooper's Creek", "Western Ridge", "The Highroad",
   "Blackwood Creek", "Dustbowl".

4. Core corridor relabel. The "core" palette inflection was
   "institutional Latin / pan-Anglo / Gateway-era", which pattern-
   matched in Gemma's training data to "make up Latin-sounding
   words" (→ Ardenia, Aurelia, Stellaris). Now it's
   "administrative English / Gateway-era" and the outputs are
   prosaic — Port Dundas, East Ridge, Meridian, Landing.

5. Rotating few-shot example pools. Each feature type now has 5-7
   pools of 5-6 examples each. `_build_prompt()` picks a pool
   deterministically per (body_id, local_id, attempt) so:
   - Same feature always gets the same prompt (determinism preserved).
   - Neighbouring features on the same body get different prompts
     (output variance — the sampler doesn't collapse to a single
     mode when you ask for 16 mountain names in a row).
   - Retries rotate to a new pool, not just a bumped seed, giving
     dedup failures a clean second attempt.

6. Cosmopolitan cultural variety in the examples. Earlier pools only
   showed British/Australian, Korean/Japanese, Portuguese/Swahili,
   German/Dutch/Nordic axes — the four reach corridors. Gemma learned
   "names come in four flavours". New pools span Dutch, Nordic,
   Italian, French, Polish, Hungarian, Czech, Spanish, Russian,
   Finnish, Greek, Irish, Japanese, and British — teaching the model
   that names can be any real Earth cultural register, not just the
   corridor label. The result: actual Dutch names (Egelantier,
   Hochland, Van Damhoeve), actual Nordic (Lundstad, Brygga),
   actual Italian (Borgo Marconi, Piazza Nuova), etc.

7. First-name possessive pools. Per user feedback, settler naming
   includes both surnames ("Cooper's Creek") and first names
   ("Clifford's Bay", "Maura's Run", "Yuki's Pool"). Each feature
   type now has a dedicated first-name-possessive pool in addition
   to the existing surname pool — the two rotate alongside so both
   patterns show up without either dominating.

8. One "classical/Latinate" pool per feature type (≈17% of calls
   given 5-7 pools per type). Keeps occasional Latin flavour without
   making it dominant — the user explicitly noted that replacing
   one pattern with another "is never a clean fix for a randomizer."

9. Earth-name blocklist expansion. The Gemma 2 model reached for
   real European names ("Weser", "Rhine", "Reykjavik") in the first
   real run. Added 21 European rivers (Rhine, Weser, Elbe, Oder,
   Vistula, Loire, Rhône, Douro, Tagus, Ebro, Po, Arno, Tiber, …)
   and 25 Nordic/Eastern European cities (Reykjavik, Oslo, Gdansk,
   Krakow, Prague, Warsaw, Budapest, Belgrade, …). Case-insensitive
   "The <name>" stripping still applies so "The Great Divide" also
   matches "Great Divide".

Combined smoke test after these changes (10 real-mode prompts across
core + west_reach):
  - core:       Port Dundas, The Backbone, Dustbowl, Blackwood Creek
  - west_reach: Egelantier, Hochland, Der Rücken, Lundstad, Klipfjord
  - no placeholder residue, no markdown, no 5+ word outputs.

--shard is gone (dead code since GPU contention killed parallelism).
Resume semantics are still free: re-run the same command and
already-named bodies skip via the preserved path.
2026-04-15 11:35:07 +02:00

268 lines
3.1 KiB
Plaintext

# Earth-name blocklist for gemma_naming.py (#833, D-191 §4).
#
# Per memory feedback_earth_echo_names: Earth-sounding names are OK and
# expected — the setting is a blended reality. This file is a small,
# curated list of Earth *majors* whose raw names should not appear as
# settled-reach feature names because they are too on-the-nose. Prefixed
# variants like "Nouveau Paris", "Neu Berlin", or "New Tokyo" are allowed
# (they pass because the exact-match check does not strip prefixes).
#
# Match rule: case-insensitive whole-name equality between a generated
# feature name and any entry below. One entry per line, `#` comments are
# allowed, blank lines ignored.
#
# Expand this list if the generator starts producing raw-Earth-major
# names in frequent runs. Err on the side of short — we do NOT want to
# block every vaguely Earthy token.
# Capitals & megacities
Paris
London
Tokyo
Beijing
Moscow
Berlin
Madrid
Rome
Cairo
Mumbai
Delhi
Jakarta
Seoul
Bangkok
Istanbul
Lagos
Nairobi
Johannesburg
Sydney
Washington
Ottawa
Mexico City
Rio de Janeiro
Rio
Buenos Aires
Lima
Bogota
Dhaka
Karachi
Lahore
Tehran
Baghdad
Riyadh
Manila
Hanoi
Kuala Lumpur
Singapore
Vienna
Prague
Warsaw
Amsterdam
Brussels
Copenhagen
Stockholm
Oslo
Helsinki
Reykjavik
Lisbon
Athens
Budapest
Dublin
Edinburgh
Glasgow
# Iconic cities / regional majors
New York
Los Angeles
Chicago
Houston
Miami
Boston
Seattle
Toronto
Vancouver
Montreal
Barcelona
Munich
Hamburg
Frankfurt
Milan
Venice
Florence
Naples
Marseille
Lyon
Geneva
Zurich
Shanghai
Hong Kong
Taipei
Osaka
Kyoto
Yokohama
Busan
Ho Chi Minh
Kolkata
Chennai
Bangalore
Hyderabad
Addis Ababa
Casablanca
Accra
Kinshasa
Cape Town
Tel Aviv
Dubai
Doha
Damascus
Beirut
Jerusalem
Auckland
Wellington
Melbourne
Brisbane
Perth
# Mountain / natural majors that read as Earth
Everest
Kilimanjaro
Fuji
Matterhorn
Olympus
Etna
Vesuvius
Denali
Aconcagua
Ararat
K2
Annapurna
Elbrus
Kosciuszko
# Rivers
Amazon
Nile
Danube
Mississippi
Mekong
Ganges
Yangtze
Rhine
Volga
Thames
Seine
Tigris
Euphrates
Congo
Niger
Zambezi
# Oceans / seas
Atlantic
Pacific
Indian
Arctic
Mediterranean
Baltic
Caspian
Aegean
Adriatic
Caribbean
# Historical / colonial / alternate spellings of Earth cities — Gemma
# knows these from training data and emits them as if they were
# neutral names.
Calcutta
Bombay
Madras
Bangalore
Poona
Benares
Peking
Canton
Nanking
Chungking
Saigon
Rangoon
Ceylon
Batavia
Angora
Smyrna
Constantinople
Formosa
Tasmania
Rhodesia
Persia
Mesopotamia
# Earth natural-phenomenon names Gemma likes to reach for
Aurora Borealis
Aurora Australis
Great Divide
Great Lakes
Great Basin
Grand Canyon
Death Valley
Sahara
Gobi
Patagonia
Serengeti
Outback
Tundra
Siberia
Amazon Basin
# Greek/Roman mythology that reads too literally as Earth classical
Olympus Mons
Mount Olympus
# European rivers the model keeps reaching for
Rhine
Weser
Elbe
Oder
Vistula
Loire
Rhône
Douro
Tagus
Ebro
Po
Arno
Tiber
Sava
Drava
Vlatava
Vltava
Dnieper
Don
Volga
Dniester
# Nordic / Eastern European cities
Reykjavik
Oslo
Bergen
Tromsø
Gothenburg
Gdansk
Krakow
Warsaw
Prague
Brno
Bratislava
Budapest
Debrecen
Bucharest
Sofia
Belgrade
Zagreb
Ljubljana
Tallinn
Riga
Vilnius
Kiev
Kyiv
Minsk
Odessa
Lviv