Observation Configuration

This page is the complete authoring lookup for GenerationConfig.plan, projections, and observation. The checked combined example is unified-communications-radar.yaml.

ObservationProjectionConfig

Field

Type

Required/default

Validation

projection_id

string

required

^[A-Za-z0-9][A-Za-z0-9_.-]*$; unique in the list.

selector

string

required

Portable namespaced selector: dot-separated identifier components, no whitespace/empty component.

contract_version

strict integer

required

At least 1; must equal installed plugin exactly. Boolean/float rejected.

params

mapping

{}

Plugin’s strict ParamsModel; extra fields rejected there.

GenerationConfig.projections is optional on the model — None or a nonempty tuple — but mandatory for any generation run: require_generation_ready refuses a configuration without it, because a run declares what it observes through projections and nothing else. A projection names its own renderer, and a plan-owned fact is forbidden beside it. IDs and output order are canonicalized by projection_id.

ObservationConfig

Field

Type

Default

Validation

max_tensor_bytes

strict integer

1073741824 (1 GiB)

Greater than zero; bounds primary plus generated-coordinate tensors before and after SDS encoding.

ScenePlanConfig

The configured plan is a per-run template. Minting produces a distinct frozen ScenePlan for each run-global sample ordinal.

Field

Type

Required/default

Contract

clock

ScenePlanClockConfig

required

Shared numerical time origin and positive duration.

scene_geometry_uri

string or null

None

Absolute local path or supported file://, gs://, s3://, https://, sionna://builtin/ URI. Projection Dataproc narrows this to built-in Sionna or no world.

scene_geometry_entrypoint

string or null

None

Nonblank entrypoint for a bundle that needs one.

scene_geometry_kind

GeometryAssetKind or null

None

Needed only when suffix cannot determine a supported world kind; conflicting declarations rejected.

systems

tuple of ScenePlanSystemConfig

required

Unique nonempty system_id values.

events

tuple of ScenePlanEventConfig

required

Nonempty, unique event IDs; exactly one radar event when radar systems exist.

targets

ScenePlanTargetSamplingConfig or null

None

Required by the radar projection’s scatterer model.

Clock

Field

Type

Validation

time_origin_s

finite float

Numerical plan origin. It is not asserted to be UTC, TAI, Unix time, or any civil timescale.

duration_s

positive finite float

Contains every event window; must equal the communications scene.duration_s.

Systems

Field

Type

Validation

system_id

string

Nonblank and unique.

domain

communications or active_radar

Legacy authoring adapter translates it into versioned canonical extensions.

pose

GeometryPose

Position metres, roll/pitch/yaw radians, velocity metres/second; each is a finite 3-vector.

receiver_pose

GeometryPose or null

Optional observation pose.

tx_element_locations_m

tuple of 3-vectors

Required ordered local aperture coordinates.

rx_element_locations_m

tuple of 3-vectors

Required ordered local aperture coordinates.

Events

Field

Type

Validation

planned_event_id

string

Nonblank and unique.

system_id

string

Must name one configured system.

start_offset_s, stop_offset_s

finite floats

0 <= start < stop <= clock.duration_s. Offsets are relative to the clock origin.

pulse_repetition_intervals_s

positive-float tuple or null

Required for radar, absent for communications; one PRI per pulse.

waveform_reference

string or null

Must be absent at this authoring boundary unless supported by the translated contract.

comms

CommsEventConfig or null

Required for communications and forbidden for radar.

Communications event block

All text fields are nonblank. bandwidth_hz is positive; frequency_offset_hz and tx_power_dbm are finite.

Field

Type

device_id, transmitter_role, link_id, link_direction

string

emitter_key

string

class_label

string or null — fixed here, or drawn by sampling.class_labels

bandwidth_hz, frequency_offset_hz, tx_power_dbm

float or null — fixed here, or drawn by the matching sampling range

duration

fixed DurationPolicy; its value_s must equal the event window exactly

sampling

CommsSamplingConfig or null — the policy that supplies whatever is not fixed above

class_label, bandwidth_hz, frequency_offset_hz, and tx_power_dbm must each be either fixed on the event or drawn by a policy; CommsSamplingConfig carries class_labels (a tuple to choose from), bandwidth_hz (a positive range), and frequency_offset_hz / tx_power_dbm (ranges). An event that leaves one of the four neither fixed nor sampled is refused, and the error names exactly which.

Target sampling

Field

Type/default

Validation

count_min, count_max

integer

1 <= min <= max <= 999.

position_min_m, position_max_m

finite 3-vectors

Componentwise min <= max.

velocity_min_m_s, velocity_max_m_s

(0,0,0) defaults

Componentwise min <= max.

rcs_min_dbsm, rcs_max_dbsm

0.0 defaults

Finite representable dBsm; min <= max.

phase_min_deg, phase_max_deg

0.0 defaults

Finite; min <= max.

The authored system/domain fields are a compatibility adapter. The minted ScenePlan core is domain neutral: systems, activities, and entities carry strict versioned extension blocks interpreted by projection owners.