The Factory

⚠ 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

What the Factory is

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.

Three domains

The Factory's published model spans three domains, mirroring the functional specification:

DomainGeneratesOrigin
Astrophysicsstars, planets, moons, galaxies, surfaces, atmospheresNATURAL
Exobiologyabiogenesis, biospheres, biosignatures (reserved — not yet generating)NATURAL
Footprintinfrastructure, emissions, debris, maneuver exhaust, deposition footprintsARTIFICIAL

Three operations

Each domain offers the same three operations:

Functions developed so far

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.

fill — synthetic backdrop population

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.

FunctionGeneratesOrigin
emitGalaxies
natural/galaxies.ts
synthetic galaxies populating the Local Group beyond the catalogued members, each with a seeded disc orientationNATURAL
emitStars
natural/stars.ts
synthetic stars filling the Milky Way beyond the Gaia catalogue's reachNATURAL
emitGalacticStars
natural/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
emitPlanets
natural/planets.ts
synthetic planets on log-uniform orbits around synthetic starsNATURAL
emitMoons
natural/moons.ts
procedural moons on the generated planetsNATURAL
emitOrbiters · emitLanders
artificial/artifacts.ts
synthetic artefacts (orbiters, landers) on the synthetic bodies — the Footprint domain's backdropARTIFICIAL

fit — completing a known object

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.

FunctionCompletesOrigin
fitNode
fit.ts
radius ↔ mass power laws and a generic surface for radius-less known objects (most exoplanets), each listed as “provided by factory” with its methodmatches the host
fitTrajectory
artificial/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 breakdownARTIFICIAL
fitDeposition
fit.ts
the ballistic plume footprint of a lander on an airless body (≈ v²/g), oriented by the curated approach bearing where one existsARTIFICIAL
asteroidShape
natural/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 meshNATURAL

Footprint derivation

FunctionDerivesOrigin
deriveExhaustPuffs
artificial/exhaust.ts
maneuver exhaust puffs located at navigation-arc Δv discontinuities, with Tsiolkovsky propellant masses — upper-bound proxies, limits declared in the method articleARTIFICIAL

Determinism, seeds and paper packs

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.

How estimated content reads

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.