⚠ In development — prototype · Project management and author: Adrien Normier · Ontological development grounded in the works of the Cosmic Footprint Society (2024 ISSI Forum on Cosmic Footprint) · Dataset © Adrien Normier · Licence: SSR-GPL v2.0
The Factory is the registry's single licensed maker of values nobody measured. When a real object is missing a parameter — a diameter, a mass, an orbit plane — or when a region of the scene has no catalogued content at all, the Factory supplies an explicit, modelled estimate. It never measures and never invents ad-hoc: every output is deterministic from a seed and a paper pack (a named, swappable bundle of published distributions), and every value is tagged so it reads as an estimate wherever it appears — synthetic and fitted content renders dimmed or translucent, and each factory-supplied parameter is listed per object with the method that produced it.
The Factory is a watertight block (architecture §4): it imports only the shared record contract, it never fetches data, never reads disk, never emits measured records. Registry truth (from the ingest block) always comes first; the Factory only fills what truth left empty. It is the in-repo embryo of an external Factory service — stateless, reproducible, replaceable behind one door.
The Factory's published model spans three domains, mirroring the functional specification:
| Domain | Generates | Origin |
|---|---|---|
| Astrophysics | stars, planets, moons, galaxies, surfaces, atmospheres | NATURAL |
| Exobiology | abiogenesis, biospheres, biosignatures (reserved — not yet generating) | NATURAL |
| Footprint | infrastructure, emissions, debris, maneuver exhaust, deposition footprints | ARTIFICIAL |
Each domain offers the same three operations:
This is the current, honest inventory of what the prototype Factory
implements. Everything below is reached through the Factory's single
public door (src/factory/index.ts); nothing else in the
codebase calls its internals.
Reached via fillSync / fillStreaming,
budgeted by a scale preset (TINY → HUGE) and the paper pack's category
mix. All output is SYNTHETIC, seeded and
reproducible, rendered dimmed — a setting, never a census.
| Function | Generates | Origin |
|---|---|---|
emitGalaxiesnatural/galaxies.ts | synthetic galaxies populating the Local Group beyond the catalogued members, each with a seeded disc orientation | NATURAL |
emitStarsnatural/stars.ts | synthetic stars filling the Milky Way beyond the Gaia catalogue's reach | NATURAL |
emitGalacticStarsnatural/milkyway.ts | “generate galaxy from image” — ≈30,000 field stars sampled from the NASA/JPL-Caltech (R. Hurt) Milky Way structure map: luminance drives the spiral-arm density (CDF sharpened ^1.5, circular cutout), the map's colour tints each star, with a bulge-thickened exponential disc and a flat 220 km/s rotation curve. An artist-informed density proxy, not a stellar census (real stars are the Gaia layer) | NATURAL |
emitPlanetsnatural/planets.ts | synthetic planets on log-uniform orbits around synthetic stars | NATURAL |
emitMoonsnatural/moons.ts | procedural moons on the generated planets | NATURAL |
emitOrbiters · emitLandersartificial/artifacts.ts | synthetic artefacts (orbiters, landers) on the synthetic bodies — the Footprint domain's backdrop | ARTIFICIAL |
Reached via fitNode — the LIGHT-mode half of the
VIZ→Factory pull. It supplies only what the registry left empty, so a
real but under-described object can still be drawn and inspected.
| Function | Completes | Origin |
|---|---|---|
fitNodefit.ts | radius ↔ mass power laws and a generic surface for radius-less known objects (most exoplanets), each listed as “provided by factory” with its method | matches the host |
fitTrajectoryartificial/trajectory.ts | the multistage maneuver catalog: for each phase boundary it classifies a same-parent burn (Δv), a patched-conic handover, a landing or a launch — the inspector's per-segment voyage breakdown | ARTIFICIAL |
fitDepositionfit.ts | the ballistic plume footprint of a lander on an airless body (≈ v²/g), oriented by the curated approach bearing where one exists | ARTIFICIAL |
asteroidShapenatural/asteroidshape.ts | the seeded irregular 3D form (“potato”) of a minor body with a measured radius but no observed shape model — a direction-displaced icosphere with baked lambert shading, emitted as plain position+colour arrays (tier-pure, no THREE). The SIZE is real (the node's radius); the SHAPE is modelled — the record card reads “3D shape: procedural [factory · seeded, modelled]”, distinct from an observed radar/GLB mesh | NATURAL |
| Function | Derives | Origin |
|---|---|---|
deriveExhaustPuffsartificial/exhaust.ts | maneuver exhaust puffs located at navigation-arc Δv discontinuities, with Tsiolkovsky propellant masses — upper-bound proxies, limits declared in the method article | ARTIFICIAL |
Every run is a pure function of (seed, paperPack, request).
The shipped pack is proto-uniform@0 — honest log-uniform
toy distributions for stress-testing, not literature models; real packs
(a Kroupa initial mass function, measured size–frequency laws) replace
it without touching any caller. Scale presets TINY · SMALL ·
MEDIUM · LARGE · HUGE set the node budget; the same seed and pack
reproduce the same scene bit-for-bit, and every bake is recorded in the
append-only archive.
Epistemic transparency is a hard rule. Factory output is always visibly an estimate: synthetic populations render dimmed and translucent against the measured catalogue, and each fitted parameter is named in the object's inspector under “provided by factory”, with the model that produced it. The Factory never overwrites a registry value and never passes an estimate off as an observation.