Introduction
LunarTrace connects frozen lunar source bytes to a versioned scientific method, a deterministic numerical result, an execution receipt, a numeric Figure and a browser projection. The numerical authority is Python. The browser does not implement a second scientific method.
Two verticals
Section titled “Two verticals”LunarTrace has a temporal Study and a slope-quality method. They share the same habits: frozen bytes in, a canonical record out, and a digest that shows nothing moved.
The temporal Study (0.2)
Section titled “The temporal Study (0.2)”lt.temporal.study(...) takes a site, an event interval and a product type, and compiles the
observations before and after the event, every PRE x POST pair, and the Pareto frontiers of
the pairs that no other pair beats. study.why(pair) names the pair that beat another, and
study.save(...) writes a file that replays to the same SHA-256. The method is
lunartrace.temporal_prepost/v1, and a Study is recorded as METHOD_EXECUTED. It is not a
claim that the surface changed. The call and its limits are on the one-call Study;
the retained run it replays is the Lunar ODE query for the Chandrayaan-3 Vikram lander
site (landing 23 August 2023), fetched on 14 October 2026.
import lunartrace as lt
study = lt.temporal.study(site=(-69.3741, 32.32), event="2023-08-23T12:33Z/12:35Z", products="LRO/LROC/CDRNAC4", archive="vikram-2026-10-14") # replays the archived pagesSite01 slope quality
Section titled “Site01 slope quality”The only numerically reproduced vertical is PGDA LOLA Site01 slope quality: the
Planetary Geodesy Data Archive product 78, LOLA 5 m/pixel products for Site01
(“Connecting ridge”). The method lunartrace.slope_quality/v1 evaluates a slope
raster and a slope-RMS raster against a set of regions of interest (ROIs) at one or
more thresholds τ. For each ROI and for the union of ROIs it reports cell counts,
the fraction of jointly valid cells that are included, slope quantiles and mean, and
a histogram in 2° bins.
Why it is organised this way
Section titled “Why it is organised this way”The project separates five things that are easy to conflate:
| Concept | Where it lives | What it establishes |
|---|---|---|
| Source bytes | Local content-addressed store (CAS), outside Git | The exact input bytes, identified by SHA-256 |
| Source witness | research/sources/pgda78-site01.manifest.json | Which bytes are intended for a task, and their roles |
| Result | result.json, canonical bytes | The deterministic output of the method |
| Execution receipt | receipt.json | That one execution occurred, with its inputs, code state and environment |
| Standing | A projection label | The evidence level a claim may carry |
A receipt records an execution. It is not a signature, not proof of numeric reproduction and not scientific admission. Standing is an explicit label chosen by the caller and must reflect the available evidence; no command in this project promotes it.
Architecture
Section titled “Architecture”frozen source witness + local CAS | hash-verified inputs vlunartrace.science (Python, canonical authority) | result.json, receipt.json, projection.json vPydantic models -> JSON Schema -> generated TypeScript types and AJV validators | contracts/ (generated, not hand-edited) vWeb workbench (TanStack Start client, Vite) -> filters, sorts, draws validated dataBrowser code may filter, sort, format and draw validated projection data. It must not
recompute science, raise a standing, derive an area from included_fraction, or turn a
missing value into zero. A projection that fails validation is an error, not a
silent fallback.
Standing
Section titled “Standing”| Claim | Standing |
|---|---|
| Frozen Site01 study, historical primary and oracle agreement | NUMERIC_REPRODUCED, NOT_ADMITTED |
Temporal Study compiled from the retained Vikram pages (digest sha256:3d75a662...) | METHOD_EXECUTED |
| Temporal Study fetched live | METHOD_EXECUTED on bytes that were current at fetch time; not comparable with the retained run |
| Fresh STUDY execution on a new run | METHOD_EXECUTED, NOT_ADMITTED |
| Workbench ROI results | METHOD_EXECUTED · NOT_ADMITTED |
| Source and derived-data rights | UNVERIFIED; local and private use only |
| Historical Probe observation rows | Unavailable; only frozen aggregate reports exist |
Scientific admission, landing safety, uncertainty propagation and physical area are not established by this software. See the method for the exact cell rules and the provenance guide for source status.
Where to go next
Section titled “Where to go next”- Install from a local wheel or the locked environment.
- Run the quickstart: three lines to a replayed Study.
- Read the one-call Study for frontiers,
why, save and replay. - Read the workflows guide for the notebook, Figure and projection paths.