Skip to content

Campaign Result Contract

Campaign execution writes one primary self-contained result:

runs/campaign/<campaign-id>/campaign_plan_result.json

The current schema is campaign_plan_result_v5.

Required Sections

Field Meaning
schema_version Result contract version
campaign_id Campaign identifier when present in the request
status Top-level planner outcome
selected_strategy Strategy selected for the result
summary Headline assignments, events, duration, propellant, and closure
request_snapshot Canonical request that was evaluated
selection Strategy/refinement choice and feasibility signals
campaign_summary Assignment, event, mission-burden, objective, and target summaries
reference_policy Reference and comparison policy recorded by the planner
assignments Satellite-to-asset, plane, and slot assignments
events Ordered campaign event sequence
missions Mission-level outcomes on the selected path
diagnostics Decision-path and execution diagnostics

request_snapshot is required. It makes the result reviewable without the original authoring file and is the correct input for comparison and provenance.

Status Model

Top-level status accepts:

  • success
  • partial
  • infeasible
  • failed

campaign_summary.status_class provides the engineering review class:

  • success
  • partial_success
  • infeasible
  • degraded
  • failed

The process exit status and the campaign engineering status answer different questions. A successful execution can correctly return a partial or infeasible campaign.

Review Order

  1. Read status and campaign_summary.status_class.
  2. Check target closure and residuals in campaign_summary.target_summary.
  3. Inspect assignments and overrides.
  4. Review event sequencing and total burden.
  5. Drill into non-success missions and reason codes.
  6. Use selection and diagnostics to understand why the path was chosen.

Mission solve reuse, when enabled, is reported through aggregate cache counters and diagnostics. A reused exact-signature result records provenance while the campaign contract and source mission outcome remain available for review.

Optional Mission Bundles

With mission_artifact_detail: full, Astraeus may also write:

campaign_plan_result.missions/
|-- campaign_mission_bundles_manifest.json
`-- <satellite-id>/
    |-- mission_plan_request.json
    `-- mission_plan_result.json

These side bundles support targeted drilldown; campaign_plan_result.json remains the campaign authority.

Deterministic Review

astraeus review campaign --result <campaign_plan_result.json>

The review is a deterministic reader of the saved result and writes a compact markdown assessment while leaving campaign execution unchanged.

When comparing variants, compare the embedded request snapshot, outcome class, target closure, mission burden, and sequencing—not only total duration or propellant.