ILLUSTRATIVE · NASA / SVS · NOT ADITYA-L1 DATA
Evidence · traceability
From any conclusion back to the bytes
Six headline claims, each walked the whole way down — figure, metric, artifact, the code that read it, the commit, and the document that governs how it may be read.
What is this?
A chain of custody for every claim this platform makes, plus the full index of governed measurements with their JSON pointers and artifact digests.
Why should I trust it?
The index is a projection of the same measurement map the rest of the site renders from — not a second list kept in step by hand. A CI gate re-reads the artifacts and fails the build if any rendered value drifts from its source.
Where can I verify it?
- This index, as JSON/api/v1/traceability.json
- Every published payloadWith served-byte digests
- The integrity metricsIncluding what is unverified
- When evidence contradicted the specSix adjudications
The method
What a chain of custody looks like here
1
Claim
A sentence someone might dispute.
the thing to check
2
Figure
Where it is shown, and in what form.
a page and an anchor
3
Metric
The named quantity behind the figure.
a definition
4
Artifact
The committed JSON the value was read from.
a file path
5
Source file
The code that read it. No number is typed by hand.
a derivation
6
Commit
The digest of the exact bytes, at a known commit.
immutability
7
Documentation
The written record that governs the interpretation.
context
The claims
Six chains, walked
Including the two that constrain this project's own result.
01
A threshold on the SoLEXS count rate detects as many flares as any model tried.
- Figure
- Confidence-interval comparison, every model against the thresholdFindings — the verdict →
- Metric
- Event recall, threshold detector, M/X nowcast0.927 (76 of 82 events)
- Artifact
- artifacts/v2/ml/benchmark_results.json
- Source file
- web/scripts/derive.py
- Commit
- 99af630Digest checked by the evidence gate
- Documentation
- Evaluation protocol and full benchmark tables →
02
Machine learning ranks individual minutes better than the threshold does.
- Figure
- Precision–recall curve, LightGBM against the thresholdValidation — ranking →
- Metric
- PR-AUC, minute level, M/X nowcast0.707 vs 0.486
- Artifact
- artifacts/v2/ml/benchmark_predictions.json
- Source file
- web/scripts/derive_metrics.py
- Commit
- 99af630Derived at build time; artifact digest recorded
- Documentation
- LightGBM model card →
03
But it raises far more false alarms, which is why it is not recommended.
- Figure
- Recall against alarm burden across the threshold sweepValidation — the trade-off →
- Metric
- False alarm runs at the operating point79 vs 15
- Artifact
- artifacts/v2/ml/benchmark_results.json
- Source file
- web/scripts/derive.py
- Commit
- 99af630Derived at build time; artifact digest recorded
- Documentation
- Threshold detector model card →
04
Extra spectral resolution adds nothing measurable — a confirmed null.
- Figure
- Ablation delta cardFindings — why this result holds →
- Metric
- Δ ROC-AUC from added spectral bands+0.0033
- Artifact
- artifacts/v2/ml/ablation_results.json
- Source file
- web/scripts/derive.py
- Commit
- 99af630Derived at build time; artifact digest recorded
- Documentation
- Limitation clause L-5 →
05
The dataset is frozen and every file in it is digest-addressed.
- Figure
- Table inventory with per-table hashesBuild — per-table digests →
- Metric
- Parquet files in the freeze1,985
- Artifact
- artifacts/v2/phase05/freeze_manifest.json
- Source file
- web/scripts/derive.py
- Commit
- 99af630Digest checked by the evidence gate
- Documentation
- Dataset card →
06
A rebuild of the dataset lands on byte-identical output.
- Figure
- Determinism metric cardsReproducibility — determinism →
- Metric
- Byte-identical comparisons, 12-day sample24 of 24
- Artifact
- artifacts/v2/phase05/reproducibility_check.json
- Source file
- web/scripts/derive.py
- Commit
- 99af630Derived at build time; artifact digest recorded
- Documentation
- Reproduction instructions →
Two kinds of link, distinguished. Chains marked checked by the evidence gate use a value from the governed measurement set: the CI gate re-reads the artifact and compares it against the rendered HTML, so drift fails the build. The others are derived at build time by a named script from a named artifact — reproducible, but not byte-compared against the page. The distinction is printed rather than smoothed over, because a uniform green tick across both would be a claim this platform has not earned.
The governed set
6 measurements, 2 artifacts
Every quantity in the set that the evidence gate enforces, with the pointer and the digest of the bytes it was read from.
| Measurement | Value | Artifact · pointer | Digest · commit |
|---|---|---|---|
| Threshold nowcast event recalln = 82 | 0.9268CI 0.875–0.976 | artifacts/v2/ml/benchmark_results.json/M~1X NOWCAST/results/threshold_rate/event/event_recall | 3a1d425e7cb29bf9…commit 99af630 |
| Threshold nowcast ROC-AUC | 0.9539CI 0.940–0.966 | artifacts/v2/ml/benchmark_results.json/M~1X NOWCAST/results/threshold_rate/minute/roc_auc | 3a1d425e7cb29bf9…commit 99af630 |
| Parquet files | 1985 | artifacts/v2/phase05/freeze_manifest.json/identity/n_parquet_files | 5aaab68db13d7108…commit 99af630 |
| Dataset size | 596917461 | artifacts/v2/phase05/freeze_manifest.json/identity/total_bytes | 5aaab68db13d7108…commit 99af630 |
| SoLEXS observation days | 424 | artifacts/v2/phase05/freeze_manifest.json/tables/T1/n_files | 5aaab68db13d7108…commit 99af630 |
| HEL1OS housekeeping orbits | 389 | artifacts/v2/phase05/freeze_manifest.json/tables/T4/n_files | 5aaab68db13d7108…commit 99af630 |
The scope of this set, stated plainly. It covers the quantities rendered through the measurement API — the figures a reader meets first, on the pages that make claims. It does not yet cover every number on every documentation surface; tables carried verbatim from frozen reports are reproduced as written and traced to the report rather than to a pointer. Growing the governed set is work that remains, and it is described here rather than implied away.
How it is enforced
The evidence gate
Traceability that depends on a person keeping two things in step is not traceability. So the binding is mechanical in both directions.
On the way in: a component that displays a measured quantity takes a measurement key, not a number. There is deliberately no value prop — a caller cannot pass a figure, so a figure cannot reach a page without existing in an artifact first.
On the way out: each rendered value is marked in the HTML with the key it came from. After the build, pnpm budget re-reads the artifacts from disk, resolves each pointer, and compares the result against what is actually in the markup. A drifted figure fails the build rather than shipping.
Run it yourself
pnpm --dir web build
pnpm --dir web budgetThe same command CI runs on every push to main. Change a digit in any artifact and the build stops.