Skip to content

FMG full-JSON ingest stores burg population in FMG points; burg zoom rules expect absolute people — burgs invisible below zoom 6 #40

Description

@barrulus

Symptom

For full-JSON-imported worlds, the Burgs layer renders nothing at world zooms. Digia (2,871 burgs) and Jolliariana (19,474) show zero burgs until zoom 6.

Root cause

Two conventions collide:

  • fmg-full-json ingest stores FMG's raw population points verbatim (Digia max 239, Jolliariana max 320; p90 = 1 and 6).
  • components/maps/questables-style-factory.ts BURG_ZOOM_RULES were calibrated for the legacy import's absolute populations (snoopia max 221,168; 45 burgs ≥ 10k): zoom 2–3 need ≥10,000, zoom 4 ≥1,000, zoom 5 ≥250 → FMG-point worlds render nothing until zoom 6 (threshold 0).

FMG's own convention: displayed population = points × settings.populationRate × settings.urbanization (both present in the Full JSON settings block).

Fix options

  1. (Preferred) Scale at ingest: store absolute people (b.population * populationRate * urbanization, rounded) so all downstream consumers (zoom rules, settlemaker inputs, shops/encounters, LLM context) see one convention; backfill existing full-JSON worlds using their stored settings.
  2. Or keep points in DB and scale in the style factory — but that leaves every other population consumer reading points.

Audit note: anything already consuming Jolliariana burg populations (settlement generation, narrative context) has been seeing points since 2026-08-09.

Found browser-testing lazy-world-tiles 2026-08-10; pre-existing Plan B ingest behavior, unrelated to that branch.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions