DEEPSIFT
DEEPSIFT v1 · research release

Which signals actually help decide what a rover should downlink?

Held-out result (Curiosity Navcam, sols 950–979): Scheduler V3 + POSITION at 1/4 retention used 26.1% of full-quality traverse bytes with 5 m coverage 1.000, a largest distance to a kept frame of 2.05 m and 0 broken stereo pairs — pre-registered criterion PASS. Limitations · Reproducibility

Documents (repository paths)

  • docs/deepsift-paper.md — technical paper (abstract, method, results, negative results, limitations)
  • docs/phase3-final-test-report.md — final held-out test report (sols 950–979)
  • docs/phase3.4-report.md — post-validation simplification + fresh validation (1100–1129)
  • docs/phase3.3-report.md — out-of-sample validation (779–820)
  • docs/phase3.2-report.md · docs/phase3.1-report.md · docs/phase3-report.md — Phase 3 development reports
  • docs/jev-evaluation.md · docs/jev-model-selection.md — Phase 2 Jev evaluation and stop decision
  • docs/research-methodology.md — methodology and pre-registration notes
  • docs/architecture.md — system architecture
  • docs/demo-script.md — 60-second demo script
  • docs/release/science-artifacts.json — SHA-256 of every scientific artifact in the release

Figures

Phase 1–2 methodology (telemetry triage) — historical record

The sections below describe the original REMS/RAD telemetry-triage study and the Jev evaluation (Phase 2 conclusion: Jev did not improve candidate ranking and was discontinued for that role). Full text: docs/research-methodology.md.

Research question

Given a fixed downlink budget, does placing a fast, bounded-output decision model (TypeSafe's Jev) between deterministic candidate detection and a deterministic priority engine retain more scientifically important events per downlinked byte than simple baselines — and how many expensive deep-model calls does it avoid?

Hypothesis

H1: Jev-informed triage achieves higher high-severity recall than threshold rules at equal downlinked bytes. H0: it does not. A second question is cost: the fraction of candidates that still need deep analysis. Either outcome is a valid result; the harness is designed so the model can lose.

Dataset

MSL/Curiosity REMS MODRDR (MSL-M-REMS-5-MODRDR-V1.0, PDS Atmospheres Node) and RAD RDR (MSL-M-RAD-3-RDR-V1.0, PDS PPI Node), sols 232–251 (April 2013). Channels: pressure, ambient air temperature, ground brightness temperature, UV-ABC, relative humidity, RAD total dose rate B and E. Every file is recorded with its URL and SHA-256 in data/raw/manifest.json; a bundled subset (sols 238–243) is the offline fallback and is labelled LOCAL NASA SAMPLE.

Timing: REMS UTC is derived per product from the label's spacecraft-clock/UTC pair; RAD local time is derived from START_OBS_UTC with a linear fit to the REMS UTC↔LMST relation (fitted sol length 88,775.244 s, max residual < 0.5 s), because the RAD START_OBS_MARS field does not advance per observation in these products.

Strategies

  1. Random sampling of instrument windows, full products, seeded.
  2. Threshold rules — the deterministic candidate filter plus rule-based type and value; identical to the pipeline's fallback path.
  3. Statistical anomaly detection — all windows ranked by multivariate robust deviation, independent of the candidate filter.
  4. Decision engine — candidates → engine → gating → priority. A labelled heuristic mock by default; Jev was evaluated in Phase 2 and discontinued for the ranking role (see Study).
  5. Engine + deep analysis — escalations go to a DeepAnalysisProvider; reported UNAVAILABLE without one.

All strategies use the same greedy byte allocator and the same budget (passes/sol × bytes/pass × sols).

Ground truth

We do not know automatically what is scientifically important. Labels come from separate, never-merged sources: DOCUMENTED_EVENT (cited literature; currently the 2013-04-11 solar particle event on sol 242, status “needs verification” for time bounds), SYNTHETIC_ANOMALY (nine injection types with known placement), and HUMAN_LABEL (entered in the Event Inspector). Model predictions are stored as predictions and are never used as labels.

Metrics

  • Event recall and high-severity recall, overall and per label source.
  • Retained-but-unlabeled rate — an upper bound on the false-positive rate, because unlabeled real phenomena exist.
  • Downlinked bytes and data reduction (1 − downlinked / raw PDS bytes).
  • Science value per downlinked byte (proxy) = Σ severity weight × assumed product fidelity over recovered labels, per MB. It depends on assumed fidelities (config) and on which labels exist. It does not measure true scientific value.
  • Decision latency (measured wall time), engine calls, deep calls, fraction requiring expensive analysis, cost where the API reports tokens.

Limitations

  • One documented event; recall is dominated by synthetic injections whose magnitudes we chose.
  • The mock engine and the injection generator were written by the same authors — mock results say nothing about Jev.
  • Byte costs are zlib sizes of PDS ASCII records; flight encodings, packetization and real relay allocations differ.
  • Twenty sols of one season at one site; baselines use seven trailing sols.
  • Multi-sensor correlated injections of a few Pa / K over minutes are usually not detected: they sit inside natural sol-to-sol variability at Gale.
  • No hardware, power or timing constraints of flight processors are modelled.

Type-safe ≠ correct

Bounded outputs guarantee that an answer is one of the allowed options with a probability attached. They do not guarantee that the answer is right. Jev's documentation notes weakness with raw numbers and dates, so every numeric feature is paired with a deterministic qualitative descriptor, raw rows are never sent, and low-confidence answers are routed to rules. Misclassification is still possible and is the reason actions are owned by code and every decision is reproducible from the audit log.

Reproducibility

Config is versioned by content hash; every change is recorded with a diff. Each decision stores the event, the engine's raw answers, the objective and the config version, and the Audit page recomputes utility and action exactly from those inputs. Benchmarks store seeds, injections, labels and per-label outcomes. Re-querying a real model may produce different answers; stored answers are the record.

Run the benchmark →