Skip to content

v0.8.2 - Entity Index Surface

OrbitFabric v0.8.2 introduces the first Core-owned entity index surface.

The release adds deterministic entity_index.json generation from the loaded Mission Model.

It is a narrow release.

It does not introduce relationship manifests, relationship graphs, plugin behavior or Studio-specific APIs.


Purpose

The v0.8.2 goal is to let downstream tools ask a second stable question:

What contract entities are defined in this mission?

That answer must come from OrbitFabric Core.

It must not be reconstructed by downstream tools from raw YAML, generated files or human-oriented CLI output.


Added

v0.8.2 adds:

entity_index_to_dict(model, mission_dir)
write_entity_index(model, mission_dir, output_file)
orbitfabric export entity-index command
entity_index.json output
index_version 0.1
kind orbitfabric.entity_index
entity-level records
per-domain entity counts
per-domain model counts
source file metadata
required/present domain status
indexed domain status
explicit boundary flags
entity index export tests
entity index CLI tests

CLI

Generate the entity index report with:

orbitfabric export entity-index examples/demo-3u/mission/ \
  --json generated/reports/entity_index.json

Default output:

generated/reports/entity_index.json

Output

The generated report uses:

kind: orbitfabric.entity_index
index_version: 0.1

It contains:

mission identity
source mission directory
boundary flags
domain summaries
entity counts
entity records

Entity records

Each indexed entity record includes:

id
domain
entity_type
display_name
source_file
provenance
required_domain
present

Records are derived from the loaded Mission Model.

They are not derived from raw YAML scanning.


Indexed domains

v0.8.2 exports entity records for:

spacecraft
subsystems
modes
telemetry
commands
events
faults
packets
payloads
data_products
contact_profiles
link_profiles
contact_windows
downlink_flows
command_sources
commandability_rules
autonomous_actions
recovery_intents

The following domains are summarized but do not produce synthetic entity records:

mode_transitions
policies

They do not currently expose stable entity IDs in the Mission Model.


Boundary

v0.8.2 intentionally does not introduce:

new Mission Model semantics
relationship manifest
relationship graph
dependency graph
source line or column tracking
YAML node location tracking
YAML AST export
plugin API
plugin discovery
Studio-specific API
runtime behavior
ground behavior
versioned plugin surface

Relationship to v0.8.1

v0.8.1 introduced model_summary.json.

It answers:

What contract domains are present in this mission?

v0.8.2 introduces entity_index.json.

It answers:

What contract entities are defined in this mission?

The two surfaces are intentionally separate.

The model summary is domain-level.

The entity index is entity-level.

Neither surface is a relationship graph, plugin API or Studio-specific API.


Why this matters

This release prepares OrbitFabric Core for downstream inspection tools and future plugin boundaries.

The important architectural decision remains:

Core exports structured surfaces.
Downstream tools consume them.
Downstream tools do not infer contract semantics privately.

Validation

The release validation baseline is:

ruff check .
pytest
mkdocs build --strict

Manual smoke command:

orbitfabric export entity-index examples/demo-3u/mission/ \
  --json generated/reports/entity_index.json

Expected result:

Result: PASSED