Skip to content

Documentation

LunarTrace

Inspect lunar terrain without losing the evidence. Python computes; the workbench makes every threshold, source and limit visible.

LunarTrace is an experimental Python package and web workbench for event-conditioned lunar observation Studies. Version 0.2 puts the temporal method behind one call: name a site, an event interval and a product type, and get back a Study that can be checked, saved and replayed.

Replay the archived Vikram run
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")
study.frontier("angles") # the 13 pairs nothing beats
study.why("pair:002ea7a82e1060f1") # names the pair that beat it
study.save("vikram.study.json") # replays to the same sha256

archive="vikram-2026-10-14" replays the archived pages of the 14 October 2026 run. The snapshot ships inside the package, so the call needs no network and returns the same result every time:

Products
108
Pairs
2,340
Digest
sha256:3d75a662ce75f00cd34dd9ba288012ad471c73b1e56ecf0abe36896d0b199dd0

Install it with pip install lunartrace (Install). The same three steps are available on the command line as lunartrace study, lunartrace why and lunartrace verify; see the one-call Study.

The second vertical is the frozen PGDA LOLA Site01 slope quality result. The method lunartrace.slope_quality/v1 evaluates it into a deterministic result, an execution receipt and a typed browser projection.

  • Researchers who need to know which pre-event and post-event lunar observations are comparable, and need that answer to replay.
  • Anyone inspecting a source-backed terrain-quality calculation.
  • Python users reproducing the frozen Site01 example.
  • Reviewers who need the method, the source witness and the proof ceiling beside every displayed number.

Module contracts are in the generated API reference; source custody is in Provenance.

  • A one-call temporal Study: the observations before and after an event, every PRE × POST pair, the Pareto frontiers of the pairs nothing beats, a why answer that names the beating pair, and a digest that shows nothing moved. Method: lunartrace.temporal_prepost/v1.
  • A deterministic implementation of the Site01 slope-quality method. Identical inputs give identical canonical result bytes.
  • A custody-aware STUDY path that resolves a frozen source-witness manifest from a local content-addressed store and re-hashes every input before use.
  • Generated, typed projections (JSON Schema, TypeScript types and AJV validators) that the browser reads without recomputing science.
  • It is not a landing-safety assessment, a surface-change detector or a physical-area calculation. Temporal adjacency is not a surface-change claim.
  • It is not a drop-in upgrade of the older PyPI releases. 0.2.0 is on PyPI; 0.1.0 and 0.1.1 under the same name are a different codebase, and 0.2.0 removes their API and command line. See the changelog.
  • It does not redistribute source data. Source and derived-data rights are UNVERIFIED; keep all inputs and outputs local and private.