Analysis
Deciding what something was, and refusing to when you cannot.
The discriminator takes an event, subtracts everything known, scores what is left against a fixed set of hypotheses, and writes a verdict that explains itself in prose. Most of its design is about the second half of that sentence: the ways it is prevented from claiming more than the instruments measured.
Step one
Subtract everything that is already catalogued
ADS-B
Cooperative aircraft transponders, received locally on 1090 MHz or pulled from a network feed. Matches by position, altitude, and time.
Satellite TLE
Orbital elements propagated to the node's horizon to find satellites and rocket bodies in the field of view, including their illumination state.
Lightning
Sferic network fixes, used to explain UV, RF, acoustic, and magnetic coincidences.
RFI baseline
The node's own learned per-site radio interference fingerprint, plus licensed transmitter records where available.
Meteor
Shower radiants and sporadic rates for the date, used to weight a fast optical streak.
Weather
Cloud, precipitation, temperature profile, and inversion state at the time of the event.
Solar and geomagnetic
Solar flux, Kp index, and aurora extent, which explain most wide-area magnetometer and HF excursions.
Airspace activity
NOTAMs, temporary flight restrictions, and published launch or test windows.
A catalogue that was down is not a catalogue that found nothing
This is the single most important rule in the engine. If the aircraft transponder feed was unreachable, every aircraft that night looks unexplained. So every lookup is recorded with three states rather than two: matched, checked and clean, or unavailable. An event with any unavailable catalogue is structurally barred from the top of the ladder, no matter how good it looks otherwise. The test suite asserts this, and those assertions are the ones that protect the archive from manufacturing mysteries.
Step two
Score what is left against a fixed hypothesis set
| Hypothesis | Rung if it wins | Cold-start prior |
|---|---|---|
| Aircraft | Known source | 0.42 |
| Satellite or rocket body | Known source | 0.11 |
| Bird or insect | Likely conventional | 0.18 |
| Meteor | Likely conventional | 0.03 |
| Balloon or wind-borne debris | Likely conventional | 0.04 |
| Small uncrewed aircraft | Likely conventional | 0.07 |
| Atmospheric or optical effect | Likely conventional | 0.05 |
| Instrumental artefact | Instrumental | 0.09 |
| Unmodelled | Unresolved | 0.01 |
Why “unmodelled” winning is not how an event becomes unresolved
With a cold-start prior of 0.01, the catch-all hypothesis can essentially never have the highest posterior however well it fits, which would make the top rung decorative. So the engine asks a different and more answerable question: does anything ordinary actually explain this? An event is a candidate for “unresolved” when the best conventional hypothesis fails to reach a posterior of 0.40, not when the catch-all wins a popularity contest it was designed to lose.
Step three
Place it on the ladder, and check the gates
Instrumental
rung 0The signal originated in the instrument: sensor glitch, hot pixel, shutter event, self-interference from the node's own emitters, condensation on optics, or a cable fault.
Known source
rung 1Matched to a specific catalogued object. An ADS-B airframe by hex code, a satellite by NORAD ID, a lightning stroke by network fix, a licensed transmitter by frequency and bearing.
Likely conventional
rung 2Consistent with a known class but not matched to a specific object. A bird, an insect near the lens, a balloon, a meteor, an aircraft not transmitting ADS-B. Common and uninteresting, and by far the largest bucket after known sources.
Ambiguous
rung 3Insufficient data to classify. Too few bands, too short a track, clock quality too poor, or the only witness channel was one the discriminator does not score alone. Not a mystery, just a bad measurement.
Unresolved
rung 4Survived every catalogue subtraction available, was witnessed coherently in two or more bands, and has kinematics or energetics the discriminator could not reconcile with any conventional class it knows. This is a statement about the limits of the catalogues, not a claim about the object.
At least two bands must agree
A single channel cannot reach the top rung at any score. Instrument artefacts are single-band by nature, and the entire argument for building a multi-spectral node collapses if one sensor can carry a verdict alone.
The clock must be disciplined
Cross-band coincidence is a claim about simultaneity, and simultaneity at 250 milliseconds is meaningless on a clock good to tens of milliseconds. A node without pulse-per-second lock has its score capped and the top rung closed.
Every catalogue must have been reachable
If any check could not run, the event is ambiguous rather than unresolved. The verdict records exactly which ones were missing so the event can be rescored later when they are available.
The score must clear 70
Derived from how badly the best conventional explanation fits, then adjusted for corroboration and collapsed almost to zero if any catalogue positively explained the event.
Corroboration
How much independent support an event has
Single channel
One sensor on one node. Never eligible for the unresolved rung.
Multi-band
Two or more bands on one node agreed within the coincidence window.
Multi-node
Two or more nodes saw it. With PPS-disciplined clocks this yields a geometric fix and therefore a real range, altitude, and speed rather than an angular track.
Step four
Write down why
Every verdict carries a prose explanation naming the catalogues consulted, the ones that were unreachable, the winning hypothesis and its posterior, the runner-up, and the specific reasons each was weighted the way it was. A number without a reason is not a result anyone can argue with, and being arguable is the entire point.
Event spanned 2.0 s across 3 band(s) (lwir, mmw, vis), corroboration multi node, clock gnss_pps. Checked 5 of 5 catalogues. ADSB was reachable and found no match. TLE was reachable and found no match. LIGHTNING was reachable and found no match. RFI was reachable and found no match. WEATHER was reachable and found no match. Best hypothesis: Aircraft at posterior 0.34. Best conventional explanation: Aircraft at 0.34. No conventional hypothesis reached the 0.40 fit floor. Because ADS-B was reachable and reported no aircraft on this bearing. Next best: Unmodelled at 0.27. Classified unresolved. This states that no catalogue consulted explains the event, not that its cause is known to be unusual.
Verdicts are versioned, not overwritten
Re-running an improved discriminator over the archive writes a new verdict alongside the old one, stamped with the discriminator and schema version that produced it. The history of how the platform’s opinion changed is itself part of the record, and an event that was called unresolved in 2026 and explained in 2028 keeps both entries.