Skip to content
NBAND

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

Before an event can be called anything, it is checked against every source that could plausibly explain it. Most events close here, and that is the system working rather than the system being boring.

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

Nine hypotheses, with per-site priors learned from that site’s own history. The cold-start values below are what a node uses before it has accumulated its own statistics. The model is deliberately coarse: more parameters than the archive can constrain would produce confident numbers that mean nothing.
HypothesisRung if it winsCold-start prior
AircraftKnown source0.42
Satellite or rocket bodyKnown source0.11
Bird or insectLikely conventional0.18
MeteorLikely conventional0.03
Balloon or wind-borne debrisLikely conventional0.04
Small uncrewed aircraftLikely conventional0.07
Atmospheric or optical effectLikely conventional0.05
Instrumental artefactInstrumental0.09
UnmodelledUnresolved0.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

Five rungs. The top one is reachable only through four gates, each of which exists because of a specific way this kind of system usually fools itself.

Instrumental

rung 0

The 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 1

Matched 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 2

Consistent 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 3

Insufficient 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 4

Survived 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

Orthogonal to the ladder. An event can be strongly corroborated and still be a perfectly ordinary aircraft.

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.

Example verdict, generated by the engine
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.