How it works

What a camera is asked, and when it’s believed.

A vision model looks at a frame only after satellite heat earns the look. It is handed the sky as computed fact, asked for the signal that sky makes possible, and believed only when a second, independent check agrees.

The signal follows the sun

In daylight a fire scatters light and reads as a smoke column. After dark it emits, and reads as a glow. Asking for a smoke column at night returned “likely moon or light glare” on a frame with open flame in it, so the prompt now asks for what can physically be seen.

daylight, sun above -2°a fire is a smoke column: scattering, drift, a base to marktwilight, -2° to -6°both signals live here. Ivanpah showed open flame in this bandnight, sun below -6°a fire is an emitter: a glow, judged against the computed moon and towns-2°-6°
The prompt asks for the signal the sky makes possible, and the record keeps which one was found. A night observation is stored as glow, never implied to be smoke.

Handed as fact, not asked as astronomy

The model’s doubts are only useful when it can resolve them. Whether the bright thing could be the moon is arithmetic, so the arithmetic is done first and handed over.

The sky

Sun altitude, moon altitude, azimuth and phase, computed from the frame's own time and place. Shown the moon's position once, the model stopped arguing for moonrise.

The towns

Every settlement over about 500 people in view, by name, bearing, range and population. A glow with no town on its bearing has one less innocent explanation.

The aim

Where in the frame the thermal bearing lands, so the model looks where the heat is instead of describing the whole horizon.

The settlement list stops near 500 people. An isolated mine, a lit yard or a vehicle is not in it, and the record says so instead of implying the check was exhaustive.

Two independent checks, both required

The model must claim a signal, and the bearing implied by its plume-base pixel must agree with the bearing from that camera to the thermal footprint. Either alone is not enough.

cameratolerance: the footprint’s own half-width, plus pose, position,pixel and field-of-view uncertainty. Capped at 12°, floored at 1.5°thermal footprint, 2 km pixelbearing to the heatbearing from the model’s plume base
Two independent claims about the same direction. The model never sees the satellite bearing, and the satellite never sees the frame, so agreement means something. As agreement tightens, the confidence the model must clear slides from 0.35 down to 0.25.

After dark, arithmetic becomes a gate

A night frame publishes only when every innocent explanation the system can compute has been ruled out, server-side, against the bearing the pixels actually produced.

  • The moon is below the horizon, or more than 8 degrees from the sighting
  • No known settlement in view within 4 degrees of it
  • Vision confidence at least 0.50, above the daylight floor
  • The model found a signal at all, smoke or glow

The saved record then says what happened in plain terms: seen after dark as glow, moon below the horizon, no populated place in view. A night observation is never written back as a smoke measurement, and never as a heat measurement.

Honest limits

  • One vision sample decides a frame today. Measured on a real incident, one run in six was badly wrong while five landed together, so a stored verdict is a sample, not a repeatable measurement yet.
  • Night bearings are excellent and night ranges are not. Depth cues do not survive darkness, so a night detection wants a second camera or the thermal footprint to carry range.
  • A glow with no thermal corroboration is still refused. A bright blob alone is a town, a vehicle, a mine or a flare about as often as it is a fire.
  • Visible imagery never establishes heat, hotspots, fire-front shape or acreage, in any light.

The rules on this page live in the vision route, sky.ts, night-lights.ts, bearing-alignment.ts and night-corroboration.ts. Where the page and the code disagree, the code is right.