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
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.
| Split | Train | Calibration | Test | Excluded |
|---|---|---|---|---|
| chronological | 1909 | 408 | 410 | — |
| cold_station | 2031 | 293 | 403 | — |
| cold_transmitter | 2235 | 139 | 353 | — |
| cold_combined | 945 | 110 | 183 | 1489 |
Receipts
One per stage, each with the digest of the file as it stood when this payload was built.
| File | SHA-256 | Bytes | As of |
|---|---|---|---|
| AGENT_RECEIPT.json | 7927ca92bfb7f3ad… | 29,230 | this build |
| ATTRIBUTION_AUDIT.json | 661213c8fed4b152… | 85,390 | the build before the sign-off |
| AXIS_READER_AUDIT.json | 01592786df3cb33c… | 15,640 | this build |
| BASELINE_RECEIPT.json | f2796822ec53b590… | 8,803 | this build |
| CIRCULARITY_RECEIPT.json | 8e6f893a005e3bcc… | 11,376 | this build |
| CLEAN_CLONE_TRANSCRIPT.json | 312237a9855220eb… | 14,794 | this build |
| DATASET_MANIFEST.json | 7029e2a8b3bef5fd… | 2,309,369 | this build |
| EXPLAIN_RECEIPT.json | 49f9a2f902c2b1fb… | 24,954 | this build |
| FONT_PAINT_RECEIPT.json | cf9a8a36448599c1… | 6,377 | this build |
| FUSION_RECEIPT.json | 57c379eff2f2ffdb… | 270,666 | this build |
| GATE3_POOL.json | dc6529a2eb4a22ff… | 3,017,898 | this build |
| GATE3_POOL_A_RECEIPT.json | 80d1fa57f0cc3276… | 2,064,646 | this build |
| GATE3_RECEIPT.json | fd52c0dbf08ef188… | 2,048,382 | this build |
| GATE3_SENSITIVITY.json | eac05c8bfb49a420… | 2,725 | this build |
| GATE4_BUNDLE.json | 4a4411de5b4ea76c… | 1,509 | this build |
| GATE4_RECEIPT.json | 16ca34b7ed81bd41… | 74,928 | this build |
| GATE4_WORKSHEET.json | 44cc11bd27d624f1… | 11,481 | this build |
| GATE_POWER_RECEIPT.json | 5912a7c8cb50b329… | 11,333 | this build |
| HERO_NULLS.json | 6c5ed7b02bf449a1… | 24,728 | this build |
| LANGCHAIN_RECEIPT.json | 043c8239286dee16… | 4,069 | this build |
| LANGFLOW_RECEIPT.json | 71cc7dfe1826e3cb… | 3,018 | this build |
| LEAKAGE_AUDIT.json | ecb4aff23de89169… | 10,942 | this build |
| LIVE_SHELF_RECEIPT.json | 26c7c431441925aa… | 2,653 | this build |
| MOTION_AA_CONTROL.json | 144edd40ad9380f9… | 11,217 | this build |
| MOTION_RECEIPT.json | 7848414e2567859d… | 13,006 | this build |
| NETWORK_SCALE.json | 5dcb941cf37d8d1f… | 3,153 | this build |
| OFFLINE_RECEIPT.json | e869ab82c1b7bdae… | 3,727 | this build |
| OPERATOR_SESSION.json | 69564bde019b6783… | 6,829 | this build |
| PHYSICS_VALIDATION.json | 6dc5302b24363528… | 63,045 | this build |
| PRECEDENT_RECEIPT.json | 7cc6b2fde7059111… | 9,549 | this build |
| QUEUE_RECEIPT.json | 4204193634349fa8… | 259,290 | this build |
| REPO_WEIGHT.json | b0a80699b259dd2d… | 4,927 | the build before the sign-off |
| SATELLITE_NAMES.json | 196ad682c56350b8… | 12,328 | this build |
| SECOND_TRACE_SURVEY.json | ef43f2ad5bc160be… | 334,073 | this build |
| SECRET_SCAN.json | c9b9f0296c922f16… | 1,053 | the build before the sign-off |
| SIGNOFF_RECEIPT.json | dc2280012b556543… | 3,829 | the build before the sign-off |
| SPLIT_MANIFEST.json | c0f8cd3a5dd5fbf9… | 223,247 | this build |
| THROUGHPUT_RECEIPT.json | 8434514de99fd625… | 3,112 | this build |
| TRIAGE_RECEIPT.json | 5884eb5dc9b6d1a7… | 3,775 | this build |
| WATSONX_RECEIPT.json | 86c9fbc9266c249c… | 2,108 | this build |
| corridor_features.json | 748ac151f0873df0… | 527,163 | this 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.
| Contract | Version | Status | SHA-256 |
|---|---|---|---|
| annotation_record.schema.json | 0.1.0 | ratified | 0f25ccfb0faca625… |
| dataset_manifest.schema.json | 0.2.1 | ratified | 13e1805625ea0f28… |
| fusion_receipt.schema.json | 0.1.0 | ratified | 6f1da46ce3f05513… |
| queue_receipt.schema.json | 0.3.0 | ratified | 0a5cdbdc7aa59ac5… |
| source_observation.schema.json | 0.2.1 | ratified | 851c4db620bc3bce… |
| split_manifest.schema.json | 0.5.0 | ratified | daca6d6992ea30b0… |
| triage_receipt.schema.json | 0.3.0 | ratified | 5d491ab7fe86a9b2… |
| waterfall_geometry.schema.json | 0.2.2 | ratified | 1ac826b1a1610843… |
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.
| Document | What it fixes |
|---|---|
| KILL_GATE.md | The gates, their wording, and what each one would have killed. Written before the pipeline that answers them. |
| CLAIM_REGISTER.md | Every claim this project makes, with the evidence behind it and the claims that were withdrawn. |
| C2_PREREGISTRATION.md | The 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.
| Stage | Observations | Wall clock | Per observation | One core, one day |
|---|---|---|---|---|
| corridor fit | 743 | 934 s | 1.26 s | 68,702 |
| second trace survey | 743 | 867 s | 1.17 s | 74,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.
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.jsonnames 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 state, and the count in this corpus
| When | What the console shows | Shipped cards in this state |
|---|---|---|
| The observation is not in the snapshot | The card page says so and links back to the queue. No blank frame, no zeroes. | 0 |
| No frequency information, so no centre pixel | The 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 geometry | The 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 range | The 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 context | The 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 decode | The same note, naming the decode as the cause. | not from data |
| JavaScript is off | The 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 nothing | A 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.