Skip to content

Test & V&V Plan — Project VELA

Three gates. A gate must be green before spending on the next. Numbers are commitments, not aspirations — revise them consciously, in writing.

Gate 1 — Public benchmark (Weeks 4–5; Tier-0 demo metrics per PRD §5 come first and do not wait on this gate)

Protocol: ESA-ADB official pipeline and splits, Mission 1 full channel set + Mission 2 lightweight subset. Metrics exactly as the benchmark defines them — corrected event-wise F0.5 and false-alarm measures — so results are comparable to published baselines without argument.

Pass: ensemble (telecommand filter + ECOD + GAT) ≥ the ESA-ADB paper’s shipped baselines — Telemanom-ESA and DC-VAE-ESA (Kotowski et al. 2024, arXiv:2406.17826) — on Mission 1 event-wise F0.5, and total false-alarm duration reduced ≥ 30% vs the strongest single detector at matched recall (the filter’s contribution, reported separately — this is the demo’s headline number). NB: the canonical paper benchmarks no GAT and no ECOD; the often-cited “GAT ~0.78 / ECOD ~0.065” comes from a single secondary preprint (arXiv:2607.07335) at 30s resampling, and no method meets the paper’s native-resolution R8 (all score 0) — so state resampling cadence and compare against the shipped baselines, never a “published GAT number”.

Artifacts: results/bench/<git-sha>.json + auto-generated comparison table in results/bench/README.md. Every detection PR regenerates it.

Gate 2 — Fault-injection simulation (Weeks 6–8)

Rig: NASA NOS3 (cFS-based smallsat simulator) bridged to Yamcs; VELA consumes via the same adapter as production. Where NOS3 lacks a hook, fault is injected at the adapter layer with a labeled tag (honest about injection point in all reporting).

Fault matrix (minimum 12 runs; each fault at 2 severities where meaningful):

Subsystem Faults
EPS battery cell degradation (capacity fade), solar array string loss, bus undervoltage transient
AOCS reaction wheel friction increase, gyro bias drift, star tracker dropout
TTC transponder gain degradation, spurious command-response latency
TCS heater stuck-on, sensor open-circuit
OBDH memory scrub error rate rise, watchdog resets

Metrics & pass thresholds:

  • Detection latency: median < 2× channel sampling interval after fault onset (per fault class).
  • Root cause: correct failure mode in top-3 for ≥ 70% of runs; top-1 ≥ 45%.
  • Procedure quality: retired-ISRO-advisor rubric (1–5 on correctness, safety, completeness); mean ≥ 3.5, no safety score < 3.
  • Citation integrity: 100% automated pass (citation_check); any hallucinated reference = run failed regardless of other scores.
  • False-alarm honesty: ≥ 6 nominal-only runs (including command-heavy passes); false events per 24h sim ≤ 1.

Gate 3 — Shadow-mode pilot (Months 4–6, first customer)

Protocol: 60 days read-only beside the customer’s ops. VELA logs every event + investigation; weekly joint review tagging each as match / partial / miss / VELA-only-catch. No operator action ever depends on VELA output during shadow.

KPIs for the end-of-pilot report: alarm volume VELA would have suppressed (%), diagnosis agreement rate, median time-to-diagnosis VELA vs operator on matched anomalies, count of VELA-only catches confirmed real, % procedure drafts operators say they’d accept with minor edits. Contract convert trigger: pre-agree the numbers that convert pilot → paid (put them in the pilot MOU, not in a slide).

Continuous eval harness (make eval, runs in CI, both modes)

  • Golden cases: ≥ 15 frozen investigations (ESA-ADB replays + sim faults) with expert-approved reference verdicts, citations, and procedures. Diff current output vs reference: deterministic fields exact-match; narratives scored by LLM-judge rubric (verdict agreement, citation coverage, no-new-claims) with monthly human spot-check of ≥ 20% of judgments.
  • Regression rules: verdict flip on any golden case blocks merge; judge-score drop > 5% aggregate blocks merge; prompt changes require side-by-side goldens diff in PR.
  • Hostile-input suite: malformed MCP args, empty windows, gap-spanning queries, contradictory KG entries → assert structured errors and UNGROUNDED/insufficient verdicts, never confident fabrication.
  • Guardrail tests: CI greps for command-issuance surface; import-linter forbids vela/agents/ -> {neo4j,qdrant,stores} direct imports; airgap CI job runs with network egress disabled except local services.

What we deliberately do NOT test in v1

Live commanding (doesn’t exist), onboard constraints, radiation/hardware effects, and multi-satellite cross-correlation (v2). Written down so demos and sales claims stay inside the tested envelope.