Provenance

Every measurement on this site was produced offline, validated against a schema before it was written, and committed. The console reads those files and renders them. It runs no model, calls no service and holds no credentials, so there is nothing between the number in the receipt and the number on the page.

The snapshot

Snapshot
snap-20260817-stage1
frozen before any model was fitted
Queue built
2026-08-22 04:07
seed 42, fixed
Receipts
41
11.0 MB, all committed
Waterfalls shipped
25
of 25 requested, 0 degraded

Splits

Four ways of holding data back, because a chronological split alone cannot tell you whether the model learned the task or learned the stations.

TrainCalibrationTestExcludedchronological1,9094084102,727cold_station2,0312934032,727cold_transmitter2,2353532,727cold_combined9451831,4892,727
One scale across all four rows, so a split that keeps fewer observations is drawn shorter. The number at the right of each row is that split's total, and every total is the same corpus.
All four are defined in SPLIT_MANIFEST.json, digest c0f8cd3a5dd5fbf9…
SplitTrainCalibrationTestExcluded
chronological1909408410
cold_station2031293403
cold_transmitter2235139353
cold_combined9451101831489
The cold combined split excludes rather than assigns the observations that would break its own guarantee. An observation whose station is held out but whose transmitter is not cannot sit in a partition that promises both are cold, so it sits in neither, and the count is stated rather than absorbed.

Receipts

One per stage, each with the digest of the file as it stood when this payload was built.

FileSHA-256BytesAs of
AGENT_RECEIPT.json7927ca92bfb7f3ad29,230this build
ATTRIBUTION_AUDIT.json661213c8fed4b15285,390the build before the sign-off
AXIS_READER_AUDIT.json01592786df3cb33c15,640this build
BASELINE_RECEIPT.jsonf2796822ec53b5908,803this build
CIRCULARITY_RECEIPT.json8e6f893a005e3bcc11,376this build
CLEAN_CLONE_TRANSCRIPT.json312237a9855220eb14,794this build
DATASET_MANIFEST.json7029e2a8b3bef5fd2,309,369this build
EXPLAIN_RECEIPT.json49f9a2f902c2b1fb24,954this build
FONT_PAINT_RECEIPT.jsoncf9a8a36448599c16,377this build
FUSION_RECEIPT.json57c379eff2f2ffdb270,666this build
GATE3_POOL.jsondc6529a2eb4a22ff3,017,898this build
GATE3_POOL_A_RECEIPT.json80d1fa57f0cc32762,064,646this build
GATE3_RECEIPT.jsonfd52c0dbf08ef1882,048,382this build
GATE3_SENSITIVITY.jsoneac05c8bfb49a4202,725this build
GATE4_BUNDLE.json4a4411de5b4ea76c1,509this build
GATE4_RECEIPT.json16ca34b7ed81bd4174,928this build
GATE4_WORKSHEET.json44cc11bd27d624f111,481this build
GATE_POWER_RECEIPT.json5912a7c8cb50b32911,333this build
HERO_NULLS.json6c5ed7b02bf449a124,728this build
LANGCHAIN_RECEIPT.json043c8239286dee164,069this build
LANGFLOW_RECEIPT.json71cc7dfe1826e3cb3,018this build
LEAKAGE_AUDIT.jsonecb4aff23de8916910,942this build
LIVE_SHELF_RECEIPT.json26c7c431441925aa2,653this build
MOTION_AA_CONTROL.json144edd40ad9380f911,217this build
MOTION_RECEIPT.json7848414e2567859d13,006this build
NETWORK_SCALE.json5dcb941cf37d8d1f3,153this build
OFFLINE_RECEIPT.jsone869ab82c1b7bdae3,727this build
OPERATOR_SESSION.json69564bde019b67836,829this build
PHYSICS_VALIDATION.json6dc5302b2436352863,045this build
PRECEDENT_RECEIPT.json7cc6b2fde70591119,549this build
QUEUE_RECEIPT.json4204193634349fa8259,290this build
REPO_WEIGHT.jsonb0a80699b259dd2d4,927the build before the sign-off
SATELLITE_NAMES.json196ad682c56350b812,328this build
SECOND_TRACE_SURVEY.jsonef43f2ad5bc160be334,073this build
SECRET_SCAN.jsonc9b9f0296c922f161,053the build before the sign-off
SIGNOFF_RECEIPT.jsondc2280012b5565433,829the build before the sign-off
SPLIT_MANIFEST.jsonc0f8cd3a5dd5fbf9223,247this build
THROUGHPUT_RECEIPT.json8434514de99fd6253,112this build
TRIAGE_RECEIPT.json5884eb5dc9b6d1a73,775this build
WATSONX_RECEIPT.json86c9fbc9266c249c2,108this build
corridor_features.json748ac151f0873df0527,163this build

Every digest here is of the file as it stood when this payload was built. Four are marked, because scripts/signoff.py rewrites them after the console is built: it re-runs the release audit and then writes its own receipt, and each of those records the commit it ran at. A commit cannot record its own hash, so those four digests are one generation behind by construction and are marked rather than quietly wrong. Every unmarked digest is checked against the file on every gate run by tests/test_published_digests.py.

The queue and evaluation pages read QUEUE_RECEIPT.json (4204193634349fa8) and FUSION_RECEIPT.json (57c379eff2f2ffdb).

Contracts

A schema is ratified before the script that writes against it runs, so a receipt that violates its contract never reaches disk.

ContractVersionStatusSHA-256
annotation_record.schema.json0.1.0ratified0f25ccfb0faca625
dataset_manifest.schema.json0.2.1ratified13e1805625ea0f28
fusion_receipt.schema.json0.1.0ratified6f1da46ce3f05513
queue_receipt.schema.json0.3.0ratified0a5cdbdc7aa59ac5
source_observation.schema.json0.2.1ratified851c4db620bc3bce
split_manifest.schema.json0.5.0ratifieddaca6d6992ea30b0
triage_receipt.schema.json0.3.0ratified5d491ab7fe86a9b2
waterfall_geometry.schema.json0.2.2ratified1ac826b1a1610843

The documents these numbers were promised against

Each was written before the measurement it governs, and each is served here as the file itself rather than as a summary of it.

DocumentWhat it fixes
KILL_GATE.mdThe gates, their wording, and what each one would have killed. Written before the pipeline that answers them.
CLAIM_REGISTER.mdEvery claim this project makes, with the evidence behind it and the claims that were withdrawn.
C2_PREREGISTRATION.mdThe concentration caps, the grouping keys and the decision rule, all committed before the numbers on this site were computed.

What it costs to run

One core, timed over a real batch rather than a benchmark loop.

One observation
1.26 s
at the slowest measured stage
One core, one day
68,702
observations, at that rate
The network, one day
6,380
captures with a waterfall, over 9.4 hours
Headroom
10.77×
0.093 of a core keeps up
Observations a dayOne corewhat the pipeline can process68,70268,702The networkwhat it produced in this snapshot6,3806,380
One core processes 68702 observations a day at the dominant measured stage, against 6380 the network produced in the span this snapshot covers. That is 10.77 times the load on a single core, so the pipeline is not compute-bound at network scale.
Both stages were timed over the same batch. The slower one sets the rate above, because a pipeline runs no faster than its slowest stage.
StageObservationsWall clockPer observationOne core, one day
corridor fit743934 s1.26 s68,702
second trace survey743867 s1.17 s74,077

Ingestion costs more per observation than the corridor fit does, and it is bound by a courtesy interval and a 1.7 MB image download rather than by anything this project computes.

The deployment that removes it is the obvious one: run at the station, where the waterfall is already local and there is no API to be polite to.

The capture span is 9.4 hours inside one day. A day rate from it is one observation of the network's rate, not a long-run average.elapsed_s covers the corridor fit and the second-trace survey only. SGP4, the fusion forward pass and the queue sort are cheaper per observation and are not in it, and Granite is not per observation at all.Both stages were timed on one machine, single-threaded. The core count is a division and not a measured parallel speed-up.No figure here is a claim about latency. The queue is a batch reading order, and nothing in this project needs to answer inside a pass.

What this console does not do

Stated positively, because an absence is easy to claim and hard to notice.

  • No request for data to any origin but its own, before or after load. Two licensed display faces are the one exception and they carry no data; the content security policy in vercel.json names the only hosts a browser is permitted to reach, and every digit of every measurement is set in IBM Plex served from this site: artifacts/FONT_PAINT_RECEIPT.json.
  • No model runs in the browser. The probabilities shown were fitted offline on the training partition of the split named beside them.
  • No number on any page is computed by the console, except the map from stored intensities to screen colours, which the waterfall viewer states on every card.
  • No analytics about you, no cookies, no storage, and nothing to consent to.

Degraded states

What the console shows when something is missing, and whether any observation it ships actually puts the console into that state.

Every count is zero, which is worth saying rather than leaving in a table: the observations this console ships are the top of a queue, so they have the cleanest geometry. To see a degraded path here, block the waterfall image and the page will say what it lost.
Every state, and the count in this corpus
Counted over the 25 observations with imagery. A zero means the path is covered by the offline suite and by a forced check, not by this corpus.
WhenWhat the console showsShipped cards in this state
The observation is not in the snapshotThe card page says so and links back to the queue. No blank frame, no zeroes.0
No frequency information, so no centre pixelThe waterfall renders and the corridor overlay is withheld, with the reason and the share of records it affects.0
The TLE will not propagate, so there is no pass geometryThe same withheld overlay, carrying the physics module's own degraded reason rather than a generic one.0
The corridor fit ran into the edge of its search rangeThe offset is shown with a greater-or-equal marker and a note that it is a lower bound. The observation is excluded from the stale-catalogue conflict criterion.0
The browser has no WebGL2, or loses the contextThe same image as a plain img, the reason in a note, and the contrast controls removed rather than left dead.not from data
The waterfall image will not decodeThe same note, naming the decode as the cause.not from data
JavaScript is offThe waterfall, the corridor overlay and the top of the queue all still render. The filter controls are hidden and a line says why.not from data
A filter matches nothingA stated empty result with the full queue size beside it, so an empty table cannot be read as a broken one.not from data

Data and attribution

Waterfall imagery from the SatNOGS Network, contributed by volunteer ground stations, under CC BY-SA 4.0. See DATA_LICENSE.md.

Waterfall imagery is the unweighted mean of the R, G and B channels, which is the quantity the corridor fit operates on. A SatNOGS waterfall is false coloured, so its luma is not its intensity and two different intensities can share a luma.