Skip to content

Paper build

task paper rebuilds the preliminary article, Reproducible slope-quality accounting for a lunar polar DEM, from the frozen Site01 source witness. It is a private, receipt-backed build. It is not a publication step, and it does not deploy or publish anything.

  • The repository toolchain: uv, Task and Node, as described in Install.
  • mise, which the task uses to obtain Typst 0.15.0. No Typst binary is vendored, and global tool selection is unchanged.
  • The frozen source blobs in the local CAS. Set LUNARTRACE_SOURCE_STORE to its location; there is no default.
  • The paper dependency group, which pins Snakemake 9.27.0 and MyST 1.11.0.

From the repository root:

task paper

The task runs mise exec typst@0.15.0 -- uv run --frozen --group paper snakemake --snakefile paper/Snakefile --cores 1 --force-use-threads. Snakemake uses its thread-based local executor, which is the executor on Windows, and scientific commands receive argument lists rather than shell-quoted paths.

Configuration lives in paper/config.yaml. It supplies the manifest, the CAS root and the expected SHA-256 values for the result and the SVG figure. No store path is hard-coded in the rules. Override values through Task’s argument forwarding:

task paper -- --config store="D:/frozen-source-store"

Use --forceall to replay every rule from cold:

task paper -- --forceall
  1. Study. Runs python -I -m lunartrace.science.study run against the configured manifest and store.
  2. Projection. Runs study project on the canonical result.
  3. Figure. Runs the unchanged examples/polar-source-quality/make_figure.py.
  4. Checks. Asserts the canonical result SHA-256 and the SVG SHA-256 against the configured values, checks the receipt, manifest, result and projection bindings, and generates the provenance text that the article includes.
  5. Tables. paper/tables.py renders the source inventory and the results table. Each first checks that the manifest or result bytes match the SHA-256 recorded in verified.json, so a table can only be written from an artifact that passed step 4. It formats values and recomputes nothing; an undefined statistic prints as a dash, never as zero.
  6. Article. MyST exports paper/article.md through the local Typst template, and typst compile produces the PDF.

The gates in steps 4 and 5 are what make the build a reproduction check. A changed result, figure or binding fails the build; it is not silently accepted.

All artifacts are written under the ignored paper/_build/ directory:

PathContents
study/result.json, study/receipt.jsonCanonical result and execution receipt
projection.jsonTyped summary projection
figure/figure.svg, figure/figure.pdfNumeric Figure
verified.jsonHash and binding checks that passed
provenance.mdProvenance text included by the article
source-table.mdSource inventory table (hash-gated) included by the article
results-table.mdPer-ROI, per-cutoff results table (hash-gated) included by the article
article.pdfThe compiled preliminary article

MyST keeps generated Typst sources under paper/_build/temp/, and .snakemake/ is also ignored. Do not commit source data, figures, PDFs or build caches.

The receipt’s SHA-256 differs between executions because its timestamps and environment differ. The canonical result and the SVG are byte-reproducible for fixed inputs and environment.

Rebuild triggers: changes to the source, lock, manifest or CAS invalidate the scientific outputs. Changes to the article, bibliography or template rebuild only the article.

The article’s standing is NUMERIC_REPRODUCED for the frozen Site01 study. It is not scientific admission.

  • included_fraction is a fraction of jointly valid cells. It is not a physical area.
  • The τ threshold is a slope-RMS cutoff in degrees, not propagated uncertainty.
  • The PGDA source redistribution rights are UNVERIFIED. Neither the source rasters nor the source bytes are embedded in the article. The derived figure stays local and private.
  • No publication, deployment, scholarly authorship decision or licence decision is made by this task.

The two source citations were checked against Crossref on 2026-10-10. The full ordered author lists and the retrieval sources are recorded in paper/CITATION_VERIFICATION.md and paper/references.bib. That check verifies bibliographic metadata, not the scientific findings of the cited work.

Read Provenance before sharing any output of this build.