Skip to content

OrbitFabric v0.4.0 — Contact Windows and Downlink Flow Contracts

Status: Released
Scope: Contact Windows and Downlink Flow Contracts


Summary

OrbitFabric v0.4.0 introduces the first contract-level Contact Windows and Downlink Flow slice.

This release extends the Mission Data Chain beyond Data Product and Storage Contracts:

Data Product Contract
        -> Storage Intent
        -> Downlink Intent
        -> Contact Window Assumption
        -> Downlink Flow Contract

The feature remains deliberately narrow.

It models declared contact/downlink assumptions so they can be validated, linted and documented.

It does not execute downlink.

It does not compute orbital passes.

It does not simulate RF performance.

It does not implement a ground segment.


Added

v0.4.0 adds:

optional contacts.yaml domain
Contact Profile model
Link Profile model
Contact Window model
Downlink Flow Contract model
declared contact capacity assumptions
data product eligibility for downlink flows
contact/downlink duplicate ID validation
contact/downlink semantic lint rules
generated contacts.md documentation
synthetic demo contact/downlink assumptions

New Mission Model Domain

The new optional file is:

mission/contacts.yaml

The demo mission now includes:

examples/demo-3u/mission/contacts.yaml

The domain may define:

contact profiles
link profiles
contact windows
downlink flow contracts

Lint Rules

v0.4.0 introduces the first Contact and Downlink lint rule family:

OF-CON-001  contact window references unknown contact profile
OF-CON-002  contact window references unknown link profile
OF-DL-001   downlink flow references unknown contact profile
OF-DL-002   downlink flow references unknown link profile
OF-DL-003   downlink flow references unknown data product
OF-DL-004   high-priority data product has downlink intent but no eligible downlink flow
OF-DL-005   estimated data product volume may exceed declared contact capacity

These rules remain contract-level checks.

They do not schedule contacts or execute downlink.


Generated Documentation

When contact/downlink contracts are present, OrbitFabric now generates:

generated/docs/contacts.md

The generated page documents:

contact profiles
link profiles
contact windows
declared capacities
downlink flows
eligible data products

Demo Mission

The synthetic demo-3u mission now demonstrates:

Payload Contract
        -> Data Product Contract
        -> Storage Intent
        -> Downlink Intent
        -> Contact Window Assumption
        -> Downlink Flow Contract

The demo contact/downlink assumptions are synthetic and clean-room.

They are not derived from a real mission, real ground station, real orbit or real RF link.


Validation Baseline

The release baseline is:

ruff check .
pytest
mkdocs build --strict

orbitfabric lint examples/demo-3u/mission/ \
  --json generated/reports/lint_report.json

orbitfabric gen docs examples/demo-3u/mission/

orbitfabric sim examples/demo-3u/scenarios/battery_low_during_payload.yaml \
  --json generated/reports/battery_low_during_payload_report.json \
  --log generated/logs/battery_low_during_payload.log

Expected result:

all checks passing
lint result: PASSED
docs generation: PASSED
scenario result: PASSED

Non-Goals

v0.4.0 intentionally does not introduce:

orbit propagation
TLE parsing
ground track computation
antenna pointing
RF link budget simulation
real contact scheduling
real downlink execution
onboard downlink queues
live ground links
file transfer protocols
CCSDS/PUS/CFDP implementation
Yamcs/OpenC3 runtime integration
runtime skeleton generation
ground export generation
real spacecraft operations

These are not missing pieces of v0.4.0.

They remain intentionally deferred.


Architectural Meaning

v0.4.0 completes the first declared onboard-to-ground assumption layer.

OrbitFabric can now reason about whether a high-priority data product with downlink intent has an eligible declared downlink flow and whether estimated data volume fits inside declared contact capacity.

That is the correct contract-level step before future end-to-end mission data flow evidence, runtime skeletons or ground integration artifacts.


Final Position

OrbitFabric v0.4.0 remains a Mission Data Contract framework.

Contact windows and downlink flows are contract assumptions.

They are not physical simulation and not runtime behavior.