Skip to content

Artifact Contract

Astraeus persists inputs, provenance, outcomes, and detailed results beneath a namespaced runs/ root. The filesystem bundle is the durable authority; the Console, Monitor, reviews, reports, and AI skills all consume these saved artifacts.

Default Roots

Workflow Default root or result
Core run runs/core/<run_id>/
Sweep runs/sweeps/<sweep_id>/
Batch runs/batches/<batch_id>/
Campaign runs/campaign/<campaign-id>/campaign_plan_result.json

CLI options can choose another root or result path. Paths recorded inside a grouped bundle remain relative to that bundle so it can be moved as one unit.

When the CLI omits a core run id, Astraeus resolves it from runtime.run_id and otherwise derives a deterministic rs-<hash> identifier. Campaign output uses campaign.campaign_id, falling back to the request file stem when needed.

Core Run Contract

A normal core bundle uses four primary contract files:

File Schema or role
runspec.json Canonical expanded RunSpec associated with the execution
run_manifest.json run_manifest_v2: product/execution provenance, warnings, artifact inventory, and hashes
metrics_summary.json metrics_summary_v3: engineering KPIs and execution quality
environment_summary.json environment_summary_v2: operational and configuration context

The execution-normalized input is also written as:

runspec/runspec_execution.json

A typical bundle is:

runs/core/<run_id>/
|-- run_manifest.json
|-- metrics_summary.json
|-- environment_summary.json
|-- runspec.json
|-- runspec/
|   |-- runspec.source.yaml
|   `-- runspec_execution.json
|-- config/
|-- states/
|-- geometry/
|-- coverage/
|-- mission/
|-- transport/
|-- activity/
|-- attitude/
|-- power/
|-- propulsion/
`-- diagnostics/

Only the families produced by the resolved stage plan and selected artifact detail appear.

Provenance And Status

run_manifest.json records:

  • run id, creation time, Astraeus version, runtime version, and revision
  • input RunSpec hash and shared run_context
  • requested/resolved stages and execution status
  • artifact families and individual artifact hashes
  • validation and execution warnings

metrics_summary.json is the first engineering-outcome read. It separates external stages from internal modules and records KPI, quality, warning, and source-artifact context. environment_summary.json records the operating and configuration profile used for the same run.

When component profiles are used, config/component_profile_resolution.json records which profile supplied each expanded block. Execution uses the concrete canonical runspec.json, not the unexpanded reference.

Artifact Families

Family Typical evidence
states/ Satellite inventory, timestamps, state vectors, and timeline metadata
geometry/ Ground and inter-satellite samples or access windows
coverage/ Point, region, fold, revisit, and aggregation results
mission/ Service or observation definitions, events, products, and KPIs
transport/ Delivery, backlog, latency, link, gateway, beam, scheduler, ISL, and route evidence
activity/ Spacecraft-facing operating and activity timelines
attitude/ Commanded and realized pointing, modes, transitions, and availability
power/ Generation, load, battery, margin, coupling, and sizing results
propulsion/ Burns, state change, mass, and propellant accounting
diagnostics/ Optional execution and resource diagnostics

Model pages define the units and interpretation of their detailed tables. An absent family normally means the stage did not run or the artifact detail did not request that output.

State Timeline

The canonical propagated-state timeline is:

states/timeline_state_vectors_teme.parquet

Required columns are:

Column Meaning
timestamp_utc Sample time in UTC
satellite_id Resolved satellite identifier
x_km, y_km, z_km TEME position components in kilometres
vx_km_s, vy_km_s, vz_km_s TEME velocity components in kilometres per second

Supporting files normally include timeline_summary.json, satellites.json, and timestamps.json; CSV state output may be present when requested. timeline_summary.json records the frame, backend metadata, step, satellite count, timestamp count, and array shapes.

The Console requires a current run contract and suitable state or model artifacts for each pane. The state timeline enables orbit views; each optional analysis pane additionally requires its own model artifacts.

Other families may contain their own event or sample timelines. Their cadence and semantics belong to the owning model, while the propagated state timeline remains authoritative for spacecraft state.

Sweep Bundle

runs/sweeps/<sweep_id>/
|-- base_runspec.json
|-- sweep_plan.json
|-- sweep_attempts.json
|-- sweep_results.json
|-- sweep_summary.json
|-- sweep_summary.csv
`-- cases/<case_id>/attempts/<attempt_id>/
File Role
sweep_plan.json Deterministic expansion and child RunSpec references
sweep_attempts.json Append-only attempt history and per-attempt outcomes
sweep_results.json Current/latest state for every planned case
sweep_summary.json Requested one-row-per-case comparison contract
sweep_summary.csv Optional convenience export of the same row model

Each attempt directory is a standard core run bundle. sweep_results.json is the selected current view; use sweep_attempts.json when execution history matters.

Batch Bundle

runs/batches/<batch_id>/
|-- batch_plan.json
|-- batch_attempts.json
|-- batch_results.json
|-- batch_summary.json
|-- batch_summary.csv
`-- cases/<case_id>/attempts/<attempt_id>/

The batch artifacts have the same responsibilities as the sweep artifacts. The difference is provenance: a batch plan references explicit independent RunSpecs rather than expanding overrides from one base input. Heterogeneous missing summary values are represented as null.

Grouped Path And Recovery Rules

  • Bundle references use forward-slash relative paths and must not escape the bundle root.
  • Planning preserves the source input and materialized canonical child specs.
  • Resume and rerun add attempts instead of overwriting earlier evidence.
  • Results select the current/latest attempt; attempts retain execution history.
  • JSON is the summary contract. CSV is an optional convenience view and does not carry richer semantics.

Campaign Artifacts

Campaign planning uses a separate self-contained result contract rather than a core run directory. See Campaign Result Contract for its status, embedded request, summaries, and optional mission side bundles.

Compatibility And Integrity

  • Review the schema version before loading or comparing an artifact.
  • Use the product version and input hash in the manifest when reproducing a result.
  • Treat a hash mismatch, missing required file, or unsupported schema as an integrity or compatibility problem; do not silently repair the bundle.
  • Derived reviews and reports may live beside a bundle; canonical JSON and Parquet artifacts remain the authoritative evidence.

The protected artifact surfaces, version window, scientific-change rules, and migration behavior are defined under Compatibility And Upgrades.