Generate-pass methods and decision record

Documentation index · Generation guide · Prerequisites

Scope and preservation policy

This is the central decision record for work whose proposed deliverable is a src.generate/generate-*.cc pass or infrastructure that selects generate-* Make targets. It intentionally excludes projection-algorithm, WebAssembly, browser, and general documentation evaluations.

The repository does not retain chat transcripts. It retains two durable forms of the generation discussions:

An evaluation request is not treated as an approved design. Where a proposed pass has no confirmed plan or implementation in the repository, the ledger below says so explicitly. This avoids turning an exploratory prompt into a decision after the fact.

Generate-pass evaluation ledger

Stage Proposed pass Repository status Preserved evaluation record
4.1 generate-astro / space and astronomy Implemented Visualization-grade feasibility, source roles, profile authority, calculation methods, products, and limits are summarized below and detailed in the astronomy implementation notes
4.1a generate-cloud-atmosphere Implemented Confirmed P-Tree physical-cloud contract, regional/daytime coverage, process-start solar calculation, source-timed JAXA atmosphere layers, H3 preparation, products, and limits are detailed in the Cloud-atmosphere implementation notes
4.2 generate-orbiting / Orbital Technosphere Implemented Naming, NASA/CelesTrak feasibility, OMM/SGP4, profile authority, products, and limits are summarized below and detailed in the Orbital Technosphere implementation notes
4.4 generate-network-swarm Implemented Confirmed variable-input contract, fixed cumulative snapshot, H3/Izzi clustering, projection-safe components, independent downloader layers, products, and limits are detailed in the network-swarm implementation notes
4.5 generate-bathymetry-roulette Implemented; Stage 13 revised Cycloid-minimum filled forms, depth-only d/r, 24-region Voronoi grouping, 30% opacity, restored blue ramp, clipping, accepted moiré, products, and limits are detailed in the Bathymetry Roulette implementation notes
4.6 generate-bathymetry-hamonshu Implemented Separate source-indexed Izzi Hamonshū wave-field experiment using the same depth/Voronoi/opacity/blue architecture is detailed in the Bathymetry Hamonshū implementation notes
6a generate-resources / World Game Historical method only; implementation retired A bounded 1960 production-leader transcription was feasible, but it was not a current resources atlas; its data, renderer, targets, and generated products were removed at the Stage 6b cutover
6b resources-energy, resources-food, resources-flora, resources-mineral, resources-human Implemented historical first increment; superseded by Stage 12 The five-family v2 baseline established metric separation, non-sparse coverage gates, deterministic archives, source refresh, and six-projection rules
7 Configurable generate-* selection Implemented infrastructure JSON profile, validation, safe target expansion, default Make behavior, alternatives, and scope boundaries are recorded in this document
8 / 8b / 15 generate-anthropocene; generate-anthropocene-{2025,2026} Implemented dual-year standard family plus bounded experiments Complete-2025 and partial-2026 particulate editions replace the unqualified atlas and join the two CPC temperature editions as 24 default-generated, accepted-experimental products. A required-global-FIRMS refresh gate remains; synthetic PurpleAir-interface and five-station water-debris products are exploration-only, while CAMS, observed PurpleAir, and broader ocean enrichment remain planned in the Stage 8b enrichment plan and Stage 15 ledger.
9 generate-network-infrastructure Implemented Confirmed external-source contract, normal cloud/CDN site atlas, explicit CC BY-NC-SA 3.0 topology opt-in, physical/logical relation boundary, projection-safe paths, Izzi detiling, products, and limits are detailed in the network-infrastructure implementation notes
12 Expanded resources, dual-year Anthropocene defaults, external authorization, and Cahill-Keyes snapshot Implemented Six resource families and 14 v3 country/spatial products, five released human products plus two rejected coverage attempts, fisheries plus actual reef geometry, 2025/2026 default fields, authorize-external, 28 thumbnails, and Star-X Antarctic paint order are detailed in the Stage 12 notes

The unnumbered solar/high-energy, atmosphere/cloud, and small-body/mission lines in the raw ledger are taxonomy notes, not extra passes beyond the numbered stages. Astronomy owns celestial solar, high-energy, and representative small-body content; Cloud-atmosphere owns terrestrial solar illumination and physical atmosphere observations.

Implemented evaluation conclusions

Stage 4.1: astronomy

The evaluation concluded that an astronomy pass is feasible for visualization and atlas placement, provided it does not claim observatory- or navigation-grade ephemerides. The implemented choices were:

JAXA Earth data is not a source of celestial coordinates and is now consumed by the separate Stage 4.1a pass. The astronomy implementation, exact formulas, source-role table, validation, and deferred precision work are recorded in astro-implementation-notes.md.

Stage 4.1a: Cloud-atmosphere

The evaluation concluded that a physical atmosphere pass is feasible if it preserves source coverage and time rather than filling gaps or presenting a mixed-age mosaic as simultaneous. The confirmed and implemented choices were:

The source matrix, QA bits, profile schema, time contract, acquisition and preparation workflow, layer contract, terms, validation, and deferred water-vapor/GOSAT/EarthCARE classifications are recorded in cloud-atmosphere-implementation-notes.md.

Stage 4.2: Orbital Technosphere

The evaluation concluded that a human-made orbit pass is feasible at visualization scale, but that no single requested NASA source supplies the complete current Earth-orbit population. The implemented choices were:

The naming alternatives, source matrix, OMM/SGP4 conversions, coordinate pipeline, detiling layers, tests, and accuracy boundary are recorded in orbital-technosphere-implementation-notes.md.

Stage 4.4: cumulative network-swarm

The evaluation concluded that the corrected cumulative aggregate is feasible as a density atlas, but not as a graph because its Point features contain no edge or route semantics. The confirmed and implemented choices were:

The input audit, visual-reference conclusions, profile, clustering formulas, Izzi lattice safeguard, layer grammar, verification, previews, and deferred edge-data work are recorded in network-swarm-implementation-notes.md.

Stage 4.5: Bathymetry Roulette

The evaluation concluded that a roulette bathymetry pass is feasible by reusing the twelve nested Natural Earth depth polygons as projection-safe SVG clips and Izzi’s closed roulette paths as explicit page-space form fields. Stage 13 revised the confirmed choices to:

The exact twelve-row catalogue, SVG layer contract, products, verification, and interpretation boundary are recorded in bathymetry-roulette-implementation-notes.md.

Stage 4.6: Bathymetry Hamonshū

The second art pass retains the revised depth clips, blue ramp, 30% opacity, field spacing, Voronoi grouping, shallow-to-deep replacement, explicit path serialization, and accepted-moiré policy. It replaces the roulette engine with twelve source-indexed wave motifs from Izzi’s procedural interpretation of Mori Yūzan’s 1903 Hamonshū, volume 2. Depth increases Izzi’s native density and curvature parameters instead of inventing a d/r analogue; motifs remain stroke linework because many source forms are open polylines. The canonical standard-pass name is bathymetry-hamonshu, with hamonshu and art-agua-hamonshu profile aliases.

The source selection, exact depth table, field/layer contract, provenance, commands, verification, and interpretation limits are in the Bathymetry Hamonshū implementation notes.

Stage 6a: World Game resources (historical method record)

The evaluation found an inspectable primary scan for Fuller and McHale’s 1963 Inventory of World Resources, Human Trends, and Needs, but no licensed, machine-readable corpus covering every World Game archival resource. The confirmed and implemented bounded product therefore:

This result is retained here only as the historical method and feasibility record. Stage 6b does not reuse its values, categories, representative leader points, profile, or rendering model. The cutover removed the old generated files and generation rules rather than retaining an opt-in compatibility product.

Stage 6b baseline and Stage 12 resources expansion

The re-evaluation concluded that “resources” is not one comparable scalar and must not be represented by a collection of country-leader points. Stage 12 retains the Stage 6b metric-separation rule and implements six target families:

The canonical flora spelling is resources-flora; ressources-flora is an input alias only. Each family produces metric-specific artifacts so unlike units are not combined into an invented score. Country choropleths and global fields provide the non-sparse baseline; audited facilities, deposits, occurrences, and legal-policy observations are supplemental unless they pass a documented coverage gate.

The released v3 catalogue contains four energy products (solar, wind, nuclear, and precisely labelled petroleum-refinery throughput), food production, fisheries production, a 7,215-cell field derived from actual WRI reef geometry, forest-area percentage, rare-earth mine production, and five human products: population under 30, population over 60, upper-secondary attainment, bachelor’s attainment, and resident patent applications per million. Literacy and advanced-degree candidates remain documented failed coverage attempts rather than sparse release maps. The source catalogue, normalized country/spatial schema, explicit refresh workflow, and release thresholds are recorded in the Resources Stage 12 enrichment plan and implementation notes.

Stage 8: Anthropocene observation atlas

The evaluation concluded that a multi-source climate-impact observation atlas is feasible, but a generic point count cannot attribute each mapped event to human-caused climate change. The confirmed and implemented choices were:

The source matrix, exact station-record and precipitation formulas, snapshot audit, additional resource classifications, fire-source research, SVG layer grammar, refresh procedure, products, and interpretation limits are recorded in anthropocene-implementation-notes.md.

The accepted Stage 15 revision replaces the unqualified v1 product with complete-2025 and partial-2026 particulate editions and retains the separate NOAA CPC analysis-field family for both years. The four pass IDs serialize global resolution-3 H3 fields where applicable, retain valid-day denominators, and distinguish an analyzed zero-record cell from missing or outside-domain cells. Year aliases generate all six projections. Observation refreshes still require credentialed NASA FIRMS input and must pass reporting-date plus world-region audits; the checked particulate snapshots explicitly contain zero FIRMS rows and are not relabelled as global fire coverage. Stage 15 also implements a credential-free synthetic PurpleAir-interface review and a bounded five-station water-debris experiment, both exploration-only. CAMS, observed PurpleAir, and broader ocean decisions remain in the Stage 8b enrichment plan and Stage 15 ledger.

Stage 9: network infrastructure

The evaluation concluded that a network-infrastructure atlas is feasible when cloud/CDN sites, physical submarine routes, and logical exchange membership remain distinct evidence classes. The confirmed and implemented choices were:

The audited counts, source discrepancy decision, license boundary, spherical hub formula, clustering behavior, layer contract, previews, and verification are recorded in network-infrastructure-implementation-notes.md.

Stage 7 configured-selection outcome

Stage 7 adds a project-level JSON preference for the common development case: select one or more projections, select one or more generation passes, and let a bare make build only that cross-product. The checked-in default selects Cahill-Keyes plus the Earth and complementary physical-feature passes.

The implementation keeps the existing Make dependency graph authoritative. The profile resolver translates validated names into existing, public Make targets; the generators still own all geographic, astronomical, orbital, SVG, and embedded verification behavior.

This distinction is intentional: Stage 7 selects generation passes, not individual semantic layers inside one generated SVG. Internal layer sets are generator-specific contracts. Selecting them would require a different schema and generator API rather than a build-orchestration preference.

Stage 7 orchestration methods evaluated

Method Benefits Costs and risks Decision
Invoke explicit Make targets Existing, precise, no new mechanism Repetitive for a changing projection/pass matrix; preferences are not saved Retained for one-off and automation use
Make command-line variables such as PROJECTIONS=... PASSES=... Small implementation; easy CI override Ephemeral; weak list validation and quoting; no durable profile Not the primary interface
Include a user-authored .mk fragment Native Make expansion and dependency behavior The preference file is executable Make syntax, not data; typos can alter arbitrary variables or rules Rejected for a user preference
Parse JSON with jq Concise query expressions Adds a tool that is not otherwise a required build dependency; shell quoting and target validation still need code Rejected
Parse JSON with Python Good validation libraries and diagnostics Adds a runtime language to the native C++/Make generation path Rejected
Generate and include a .mk file from JSON Makes the selected targets visible during Make’s parse phase Requires include-file remakes and Make restarts; stale generated fragments and bootstrap ordering complicate a small feature Rejected
Filter layers inside every generator Could eventually control individual SVG layers Starts expensive generators before work can be excluded; layer vocabulary differs among terrestrial, astronomy, orbital, and network-swarm products; duplicates Make’s role Rejected for Stage 7
Validated C++ resolver followed by recursive Make Durable JSON, strict diagnostics, reuse of the existing C++20/RapidJSON stack, safe fixed targets, normal Make dependencies and parallelism Builds one small resolver and starts one recursive Make Selected

The selected approach has one deliberate limitation: configured generation produces layered SVG source artifacts. PDF and PNG format selection was not added to schema version 1 because the request concerned projection and pass selection, and exports are cheap to express with existing explicit artifact or aggregate targets. A later schema can add formats without changing the meaning of the current fields.

Selected workflow

flowchart LR
  JSON["generation-profile.json"]
  RESOLVE["C++ validator and resolver"]
  TARGETS["Whitelisted Make targets"]
  MAKE["Existing Make dependency graph"]
  SVG["Selected checked SVG artifacts"]

  JSON --> RESOLVE --> TARGETS --> MAKE --> SVG

generation-profile.json is the default input. generation-profile.h owns schema validation, alias normalization, and target expansion. The thin resolve-generation-profile.cc entry point provides machine-readable target output and the human-readable plan. The Makefile compiles it, makes configured the default goal, and invokes a recursive Make with the resolved targets.

The recursion is a useful boundary rather than a second build system:

Profile schema version 1

{
  "schema_version": 1,
  "description": "Fast Cahill-Keyes terrestrial development profile",
  "projections": ["cahill_keyes"],
  "passes": ["earth", "ocean"]
}

schema_version, projections, and passes are required. description is optional. Unknown members are rejected so a misspelled selector cannot be silently ignored. Both selectors are nonempty arrays; "all" is valid only when it is the sole item.

Normalization is limited and deterministic:

Aliases are canonicalized before duplicate detection. For example, ["water", "ocean"] is rejected rather than generating the same artifact twice.

The supported cross-product is:

Projection selector Geometry Graticules Earth Water Astronomy Orbital Technosphere Network-swarm Stage 12 resources aggregate Bathymetry Roulette Bathymetry Hamonshū Anthropocene defaults Network infrastructure Fiber Synthesized
cahill-keyes 1 SVG 1 SVG 1 SVG 1 SVG 3 SVGs 2 SVGs 1 SVG 14 SVG.gz 1 SVG 1 SVG 2 SVGs 1 SVG 1 SVG
authagraph 1 SVG 1 SVG 1 SVG 1 SVG 3 SVGs 2 SVGs 1 SVG 14 SVG.gz 1 SVG 1 SVG 2 SVGs 1 SVG 1 SVG
dymaxion 1 SVG 1 SVG 1 SVG 1 SVG 3 SVGs 2 SVGs 1 SVG 14 SVG.gz 1 SVG 1 SVG 2 SVGs 1 SVG 1 SVG
myriahedral 1 SVG 1 SVG 1 SVG 1 SVG 3 SVGs 2 SVGs 1 SVG 14 SVG.gz 1 SVG 1 SVG 2 SVGs 1 SVG 1 SVG
star-x 1 SVG 1 SVG 1 SVG 1 SVG 3 SVGs 2 SVGs 1 SVG 14 SVG.gz 1 SVG 1 SVG 2 SVGs 1 SVG 1 SVG
voronoi 1 SVG 1 SVG 1 SVG 1 SVG 3 SVGs 2 SVGs 1 SVG 14 SVG.gz 1 SVG 1 SVG 2 SVGs 1 SVG 1 SVG

Astronomy resolves to generate-astro-PROJECTION, which intentionally makes all-sky, ground-observer, and Hubble-observer products. Orbital Technosphere resolves to generate-orbiting-PROJECTION, which makes both global and observer products. The four terrestrial passes resolve to uniform generate-PASS-PROJECTION targets.

Network-swarm resolves to generate-network-swarm-PROJECTION and makes the one cumulative swarm product. The two bathymetry art selectors resolve to generate-bathymetry-roulette-PROJECTION and generate-bathymetry-hamonshu-PROJECTION, each making one blue depth map. Each canonical resource-family selector resolves to generate-resources-FAMILY-PROJECTION and makes every released metric in that family as a deterministic .svg.gz archive. The aggregate resources selector expands to all six canonical passes and all 14 products before targets are emitted. Anthropocene resolves to generate-anthropocene-PROJECTION and makes the 2025 and 2026 temperature fields; the source-separated observation atlas remains under explicit generate-anthropocene-atlas-PROJECTION targets. Network infrastructure resolves to generate-network-infrastructure-PROJECTION and makes only the cloud/CDN site atlas; licensed topology is intentionally not a profile-selectable product. Fiber Synthesized resolves to generate-fiber-synthesized-PROJECTION and makes the standard cleaned union whose complete 20260805 snapshot is the default visible layer. See the implementation notes.

Stage 7 adds uniform Cahill-Keyes aliases for the terrestrial rule. In particular, generate-earth-cahill-keyes produces only the whole-map Earth SVG, whereas the older generate-earth-ck compatibility target also produces 12 Cahill-Keyes slices.

Available generation methods

Saved development selection

Preview the resolved names, then build them:

make generation-plan
make

make configured is the explicit spelling of the default goal. Use make -B to force regeneration of only the configured selection.

For an uncommitted personal profile, create generation-profile.local.json and select it on the command line:

make GENERATION_PROFILE=generation-profile.local.json generation-plan
make GENERATION_PROFILE=generation-profile.local.json

Complete release artifact suite

make all

This remains the release/review build. It creates the complete layered SVG, PDF, and opaque-PNG suite, including all 84 Stage 12 resource maps plus slice and perspective families outside the configurable matrix. A clean checkout makes 32 lower-resolution thumbnails per projection. Locally recorded JAXA or topology authorization adds the corresponding optional preview; the complete JAXA-authorized graph makes 33 per projection, including those linked from the generated snapshot. The aliases generate-projections, generated-projections, and make-generated retain the same full-suite behavior. Use make assets-resilient for the bounded parallel first pass plus serial completion workflow used to prepare a static release bundle.

Projection, pass, and product families

Existing family targets are useful when the desired selection does not need to be saved:

make generate-star-x
make generate-earth-projections
make generate-astro-observer
make generate-orbiting-global
make generate-anthropocene
make generate-resources
make generate-network-swarm
make generate-network-infrastructure
make generate-fiber-synthesized
make generate-bathymetry-roulette
make generate-bathymetry-hamonshu
make generate-water-myriahedral-perspectives
make generate-ck-slices

Projection family targets generate SVGs unless their documented target says artifacts; resources stores those SVGs as deterministic .svg.gz archives. generate-orbiting-artifacts, for example, adds PDF and PNG exports for that product family. generate-network-swarm-artifacts does the same for all six network-swarm products. generate-network-infrastructure-artifacts does the same for the six cloud/CDN site products. The separate generate-network-infrastructure-topology and generate-network-infrastructure-topology-artifacts targets begin as explicit CC BY-NC-SA 3.0 opt-ins. After a fully successful authorized generation, the local persisted pass state makes topology a dependency of that checkout’s make all graph. generate-fiber-synthesized-artifacts exports the six standard checked-union submarine-fiber products in all three formats; it is neither credential-gated nor optional. generate-anthropocene-artifacts does the same for all 24 default 2025 and 2026 particulate and temperature products; generate-anthropocene-atlas-artifacts is a compatibility alias that exports the 12 year-qualified particulate products, not a legacy unqualified artifact. generate-resources-artifacts adds PDF and PNG exports to all 84 compressed Stage 12 SVG products. generate-bathymetry-roulette-artifacts does the same for all six roulette bathymetry products. generate-bathymetry-hamonshu-artifacts does the same for all six Hamonshū bathymetry products.

generate-snapshot-ck builds the 32 clean-graph 480-pixel-wide contact-sheet thumbnails and their Cahill-Keyes SVG prerequisites. Recorded JAXA or topology authorization extends the sheet with the corresponding optional product; the JAXA-authorized graph therefore has 33. authorize-external performs read-only credential/terms-boundary checks for selected optional P-Tree, NASA FIRMS, and network-topology passes; it does not fetch source data or accept provider terms. Its explicit mutating companion, generate-authorized-external, authorizes the entire selection first, then runs the P-Tree and licensed-topology full-artifact workflows and stages the FIRMS-backed Anthropocene review candidate. It never promotes or renders that candidate automatically. Its default pass list is filtered by local netrc, map-key, and license-acknowledgement presence with explicit skip notices; overriding EXTERNAL_PASSES requests strict behavior. A discovered P-Tree account gets the pinned per-user trust anchor automatically when missing. After every selected workflow succeeds, the driver atomically records only canonical pass names in .cartofreako/authorized-external-passes. Later make all runs include recorded JAXA and topology artifact graphs; FIRMS remains a review-only acquisition because it has no promoted renderer.

Exact targets and artifact paths

Multiple explicit targets already express an ad hoc matrix:

make generate-earth-cahill-keyes generate-water-cahill-keyes
make generate-geometry-star-x generate-graticules-voronoi

Generated PDF and PNG paths are also direct Make targets. Their pattern rules first update the corresponding checked SVG and then invoke Inkscape:

make assets.generated/cahill-keyes/png/earth-ck-44-22.png
make assets.generated/star-x/pdf/astro-observer-hubble-star-x-34-44.pdf

Input acquisition and verification

Acquisition remains explicit because it changes reproducibility inputs:

make fetch-natural-earth-10m
make fetch-astro-data
make fetch-orbiting-data
make fetch-anthropocene-data
make prepare-anthropocene-data
make refresh-resources-data
make prepare-network-swarm-data
make check-network-infrastructure-sources
make check-network-infrastructure-topology-sources

These are maintainer acquisition/preparation operations, not prerequisites automatically pulled into generation. In particular, normal astronomy uses the checked-in snapshots with make generate-astro; fetch-astro-data neither runs before it nor invokes it afterward.

refresh-resources-data is an explicit network-and-preparation maintainer operation. It stages upstream files in a temporary directory and rewrites the checked v2 candidates; normal generation never depends on it. See the resources implementation notes.

make check compiles and runs the native algorithm/API suite, including generation-profile schema and alias tests. SVG generators instead run their own structural validation whenever their generation target executes.

Scope boundaries and future extensions

The generation profile does not override astronomical, orbital, resources, Anthropocene, network-swarm, or network-infrastructure calculation properties. Their pass-specific profiles remain the sole authorities for source state, calculation or clustering choices, and display budgets. Stage 7 only decides which Make branches to enter.

The following remain explicit rather than configurable in schema version 1:

If repeated workflows justify schema version 2, formats and product variants can be modeled as additional validated dimensions. Individual SVG layer selection should be designed separately, with a shared naming contract and generator-specific dependency analysis, rather than overloaded onto the pass selector.