Scope freeze — launch Eventdex kind
Frozen 2026-06-26. A terrestrial event kind: one slot = one spaceflight launch that actually happened, lifting off from a real pad at a real spaceport. Unlike the cosmic-origin kinds (gw/uhecr/neutrino/transient), a launch has a ground position, so the dossier carries a geocoded launch-site point.
The source
launch_library (already live in PG, LaunchLibraryFetcher) — Launch Library 2
(ll.thespacedevs.com), the community spaceflight database. The fetcher
re-snapshots each launch many times as its status evolves (Go for Launch then
Launch Successful), so one launch appears in many observation rows. No
spine-reload script: the kind is built directly from the live source by
collapsing the snapshots to one slot per launch.
The slot
- One slot = one launch (slot ID = the Launch Library
launch_idUUID). An launch's many snapshot rows collapse to its most-advanced captured status. - Terrestrial: the launch site is a real ground point. The feed names the pad and spaceport but carries no coordinates, so each launch is anchored to its spaceport centroid by geocoding the location string (see Coordinates).
- Roster: 86 measured launches (84 successful, 2 failure) over the live source's window so far (ingestion began 2026-03-28). This is a rolling recent window, not deep history; the kind grows as the feed confirms more launches.
Measured reality — happened launches only (Mike's bright line, 2026-06-26)
A launch is a measured event only once it has happened. Launch Library statuses split cleanly:
- Measured (IN):
Launch Successful,Launch Failure,Launch in Flight— the vehicle physically left the pad. - Planned (OUT):
Go for Launch,To Be Determined,To Be Confirmed,On Hold— these are schedules, not measurements. They are excluded even when the scheduled date has already passed: a past-datedGo for Launchin our snapshot is a stale plan with no confirmed outcome, not evidence the launch occurred. Clean perfeedback_measured_reality_only.
Of 131 distinct launches in the current window, 86 have a terminal status (kept) and 45 are still scheduled (excluded).
Slot contents
- Identity: launch_id, full name, vehicle (the rocket, parsed from the
"
<rocket> | <mission>" name), provider, mission name, mission type. - Outcome: subtype
success/failure/in_flight, plus the raw Launch Library status. Anin_flightlaunch is flagged provisional (not yet terminal). - Place: pad name, spaceport location string, geocoded lat/lon,
geocodedflag. - Time: liftoff time (the observation timestamp).
- Source fields: the chosen snapshot's native fields, verbatim.
Coordinates (geocoded, flagged not hidden)
The feed gives a named pad and a spaceport string ("Cape Canaveral SFS, FL,
USA") with no coordinates. Each launch is anchored to its spaceport centroid
via the project geocoder (forward_geocode, OSM Nominatim, throttled to 1 req/s
and cached at data/launch_library_cache/geocode.json), flagged
geocoded="spaceport". Of 86 launches, 77 geocoded; 9 are from three sites OSM
could not resolve from their exact strings (Haiyang Oriental Spaceport; Rocket
Lab LC-1, Mahia; Taiyuan SLC) and remain coordinate-less, flagged null. Pad-level
precision (the feed's pad ids carry exact coordinates in the full API the fetcher
does not capture) is deferred-v2.
Storage
- Source
launch_library(unchanged; already live and active). - Slots in the shared
data/event_storehouse/launch/, reusing theevent_storehousewrite + disk-rebuilt-index machinery.
Gotchas (reuse-critical)
- Heavy snapshot duplication. ~9 rows per launch; never count distinct
launch rows as launches. Dedup on
launch_id, keep the most-advanced status. extra_jsonis TEXT — cast::jsonbfor SQL onlaunch_id/status/etc.- Status, not date, decides measured-vs-planned. A past-dated
Go for Launchis still a plan; filter on terminal status, never ontimestamp < now(). - No coordinates in the feed — spaceport geocode required; some non-US sites fail to resolve and stay null.
Frozen vs deferred-v2
- Frozen (this brick): measured-launch roster (86 now, growing) as terrestrial event slots; vehicle/provider/mission/outcome; spaceport-geocoded point; catalog index.
- Deferred-v2: exact pad coordinates from the full Launch Library API; a ground-sensor sweep near the pad; payload-mass / orbit enrichment; backfill of pre-ingestion historical launches if a bulk source is wired.