Data Specification — Project VELA
Everything the demo needs is public. Verify licenses on download; summaries below are working notes, not legal advice.
1. Telemetry datasets
1.1 ESA Anomalies Dataset (ESA-AD) — primary
- Source: Zenodo DOI
10.5281/zenodo.12528696; benchmark codegithub.com/kplabs-pl/ESA-ADB. - What: Multi-year real telemetry from three ESA missions (two benchmarked), annotated by ESOC spacecraft operations engineers: anomalies, rare nominal events, communication gaps, plus telecommand streams. Irregular timestamps, varying sampling rates — keep them; do not naively resample away reality.
- Use: Mission 1 = training + demo replay. Mission 2 = held-out generalization check.
- Preprocessing (
vela/ingest/esa_adb.py): channel selection config; forward-fill only within source sampling tolerance; z-score per channel using training split only; persist split manifests (data/manifests/*.json) with sha256 of every file — reproducibility is a selling point. - License: check Zenodo record on download; cite the ESA-ADB paper in any public material.
1.2 NASA SMAP / MSL (Hundman et al.)
- Source:
github.com/khundman/telemanom(NASA JPL). Labeled anomalies from Soil Moisture Active Passive satellite and Mars Science Laboratory rover. - Use: cross-dataset sanity check for detection layer; classic literature comparison numbers.
1.3 OPS-SAT (ESA)
- Source: ESA/Zenodo — search “OPS-SAT anomaly dataset” (Kotowski et al. released one via the same KP Labs group). Smaller; nanosatellite-class dynamics.
- Use: demo variety — shows the pipeline isn’t overfit to one spacecraft class.
2. Knowledge-graph sources (for the demo spacecraft)
The demo needs a plausible, honest knowledge graph. Strategy: build a reference cubesat-class KG from public engineering documents and clearly label it “reference spacecraft” in the UI — never claim it is the ESA mission’s real design (that design is not public).
- NASA Fault Management Handbook (NASA-HDBK-1002) — failure-mode taxonomy skeleton.
- Public cubesat FMECA/reliability templates (university mission docs — e.g., published cubesat critical design reviews) — component→failure-mode→signature triples.
- ECSS standards catalogue (ecss.nl) — subsystem vocabulary and procedure structure conventions (registration may be required; standards are reference material, do not redistribute).
- Yamcs demo spacecraft (“simulator” mission in Yamcs quickstart) — gives a consistent channel/command namespace to bind the KG to for the live-integration path.
- Past anomaly cases: seed
anomaly_caseswith structured summaries of publicly documented smallsat anomalies (peer-reviewed lessons-learned papers, conference proceedings — SmallSat conference digital commons is rich). Store{summary, subsystem, signature, resolution, source_ref}. Paraphrase; store references, not copied text.
2b. Channel binding for anonymized telemetry (the demo’s one approximation — make it explicit, provable, and gated)
ESA-ADB channels and telecommands are anonymized; the real spacecraft design is not public. Therefore:
- Reference ontology (
VELA-REF-1): the demo KG is a fully-cited reference spacecraft assembled from the public sources in §2. Every node cites its public source. Agents traverse this, never a pretended “real” Mission 1 design. - Binding layer:
(:TelemetryChannel {id:"esa-m1:channel_44"})-[:BOUND_TO {basis, confidence, reviewed_by, date}]->(:RefSensor). Bindings are proposed byvela/ingest/bind_channels.pyusing (a) the dataset’s own structural metadata (channel groups, priorities, telecommand-target relations — use verbatim, cite the dataset), and (b) statistical profiling: value ranges, periodicity, correlation clusters, command-response coupling. Proposals land in a human-review TSV; only approved bindings load, each withconfidence ∈ [0,1]and a one-linebasis. - Epistemic gating:
channels_to_componentsresolves throughBOUND_TOand returns binding metadata so the validator can discount weak paths. Any verdict that rests solely on bindings with confidence < 0.5 must returninsufficient— never a confident narrative. EveryInvestigationReportincludes an “Assumed bindings” appendix listing each binding relied upon, with confidence and basis. - Exact-binding paths: the Yamcs demo-sat / NOS3 sim configuration has bindings exact by construction (we define the spacecraft), and customer pilots bind from their telemetry database + ICDs — no inference. Demo talk-track: “the reference bindings are the only approximation here, and they disappear on your spacecraft.”
3. Data contracts (internal)
class TelemetrySample(BaseModel): satellite: str; channel: str; ts: datetime; value: float; quality: str # raw|derivedclass TelecommandRecord(BaseModel): satellite: str; command: str; ts: datetime; args: dict; source: strclass AnomalyEvent(BaseModel): event_id: UUID; satellite: str; channels: list[str] t_start: datetime; t_end: datetime; score: float detector: Literal["ecod","gat","ensemble"] suppressed_as_command_response: boolclass Citation(BaseModel): kind: Literal["doc","kg","case","telemetry"] ref: str # e.g. "manual:eps-guide#4.2.1", "kg:FailureMode/FM-EPS-007" sha256: str | Noneclass InvestigationReport(BaseModel): event: AnomalyEvent verdict: str; confidence: Literal["low","medium","high"] narrative: str # every sentence maps to ≥1 citation citations: list[Citation] procedure_draft: list[ProcStep] # each step: text + citations, or UNGROUNDED flag audit_log_ref: str4. Storage & hygiene
- Raw data:
data/raw/(git-ignored, DVC-tracked). Processed:data/processed/keyed by manifest hash. - Nothing customer-derived ever enters the repo, embeddings included. Pilot data lives in a per-customer encrypted volume; contractual default = we keep zero copies post-pilot.
make datadownloads and verifies all public datasets end-to-end on a clean machine. This is the first thing an AI coding agent should make pass.
