Data dictionary
Generated from schema/tma.yaml at build time by gen-markdown-datadict. Do not edit; change the schema.
Units
| Class | Slot | Unit (UCUM) |
|---|---|---|
| BearingErrorModel | ar_sd_rad | rad |
| BearingErrorModel | ar_tau_s | s |
| BearingErrorModel | bias_sd_rad | rad |
| BearingErrorModel | bias_tau_s | s |
| CurvePoint | t_since_zig_s | s |
| DetectionRow | timestamp_s | s |
| MetricsRecord | position_window_m_median | m |
| MetricsRecord | position_window_m_p90 | m |
| NaiveMeans | speed_mps | m/s |
| NormalisationConstants | bearing_rate_scale_rad_s | rad/s |
| Observation | bearing_rad | rad |
| Observation | timestamp_s | s |
| ParameterRanges | target_manoeuvre_after_zig_s | s |
| ParameterRanges | target_manoeuvre_margin_s | s |
| ParameterRanges | target_manoeuvre_spacing_s | s |
| ParameterRanges | zig2_delay_s | s |
| PlatformState | course_rad | rad |
| PlatformState | speed_mps | m/s |
| PlatformState | timestamp_s | s |
| PlatformState | x_m | m |
| PlatformState | y_m | m |
| PredictionRow | course_rad | rad |
| PredictionRow | course_sd_rad | rad |
| PredictionRow | range_m | m |
| PredictionRow | speed_mps | m/s |
| PredictionRow | speed_sd_mps | m/s |
| PredictionRow | timestamp_s | s |
| PredictionRow | vx_sd_mps | m/s |
| PredictionRow | vy_sd_mps | m/s |
| PredictionRow | x_m | m |
| PredictionRow | y_m | m |
| ScenarioMetadata | mean_range_m | m |
| ScenarioMetadata | min_range_m | m |
| ScenarioMetadata | zig_time_s | s |
| ScenarioParameters | dt_s | s |
| ScenarioParameters | noise_sigma_rad | rad |
| ScenarioParameters | ownship_course0_rad | rad |
| ScenarioParameters | ownship_speed_mps | m/s |
| ScenarioParameters | ownship_turn_rate_rad_s | rad/s |
| ScenarioParameters | target_bearing0_rad | rad |
| ScenarioParameters | target_course_rad | rad |
| ScenarioParameters | target_manoeuvre_angle_rad | rad |
| ScenarioParameters | target_manoeuvre_time_s | s |
| ScenarioParameters | target_range0_m | m |
| ScenarioParameters | target_speed_mps | m/s |
| ScenarioParameters | target_turn_rate_rad_s | rad/s |
| ScenarioParameters | window_s | s |
| ScenarioParameters | zig2_angle_rad | rad |
| ScenarioParameters | zig2_delay_s | s |
| ScenarioParameters | zig_angle_rad | rad |
| TargetManoeuvre | start_time_s | s |
metamodel version: 1.12.0
version: 0.21.0
Single source of truth for every data type in the TMA via ML proof of concept (constitution principle I). Frame: local flat-earth Cartesian, x east, y north, metres, origin at ownship's window-start position. Bearings and courses are true, clockwise from north, radians in [0, 2π). Speeds in m/s. Times in seconds since window start. All stored floats are float32-rounded.
ERD Diagrams
Component 1 (BearingErrorModel, Continuation, DatasetHeader...)
Component 2 (ChangeDecision, DetectorThreshold, ModelDigest...)
Component 3 (Detection, DetectionRow)
Component 4 (DetectionHeader, PredictionHeader, PredictionInput)
Component 5 (GateCheck, GateVerdict)
Component 6 (GateRecomputation, GateScoring)
Component 7 (NaiveMeans, NaiveModel)
Component 8 (Prediction, PredictionRow)
Standalone Classes
These classes are completely isolated with no relationships and are not used as base classes:
| Class | Description |
|---|---|
| CurvePoint | One point of an error-vs-time-since-zig curve (curves.csv row). |
| FeatureLayout | Documents the model tensors (not stored as records). inputs [N, 240, 10]: bearing_sin, bearing_cos, own_x_km, own_y_km, own_course_sin, own_course_cos, own_speed_scaled, time_scaled, valid, window_mask; the derived feature set appends bearing_rate_scaled, rate_valid, intercept_scaled [N, 240, 13]. targets [N, 240, 6]: log_range_km, course_sin, course_cos, speed_scaled, x_km, y_km. loss_mask [N, 240]: window_mask and t ≥ zig_time. Features file format 2 also embeds the source DatasetHeader and the source dataset SHA-256. |
| MetricsRecord | Metric values for one estimator on one slice at one evaluation point. |
| PairedComparison | A model and a reference estimator compared on rows both answered (converged and finite), with each estimator's coverage reported separately (spec 003 R9). |
Classes
BearingErrorModel
Realistic bearing error (generator 0.6.0, SRD Annex C §C.14), added to the white noise of noise_sigma_rad: a first-order autoregressive (Gauss–Markov) term and a slowly varying bias, itself a Gauss–Markov process with a long time constant. Both start in their stationary distribution and are drawn every sample (dropped ones included) from the scenario's own stream (sub-index 2), so the geometry and the white noise are those of 0.5.0 for the same seed.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| ar_sd_rad | 1..1 | float | Stationary sd of the correlated term. |
| ar_tau_s | 1..1 | float | Time constant of the correlated term. |
| bias_sd_rad | 1..1 | float | Stationary sd of the drifting bias. |
| bias_tau_s | 1..1 | float | Time constant of the drifting bias. |
Referenced by:
- ParameterRanges : parameterRanges__bearing_error 0..1
- ScenarioParameters : scenarioParameters__bearing_error 0..1
ChangeDecision
The single change of the iteration's change round, fixed from validation evidence and committed before phase B trains (spec 003 R5).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| calibrations | 0..* | UncertaintyCalibration | The frozen post-hoc interval multipliers of each estimator and output a G7 decision names (schema 0.20.0, spec 018), fitted on validation; tma-g7 refuses others. |
| carried_model | 0..1 | string | G4: the manifest id of the one carried network (Annex B §B.4); tma-g4 refuses network predictions from another model. |
| carried_models | 0..* | string | G5 (spec 012, schema 0.16.0): the manifest ids of the carried trackers (one or both of T1 and T2, Annex C §C.5), each with its own plan in plans, in the same order; tma-g5 refuses tracker predictions from any other model. |
| carried_set_rule | 1..1 | string | |
| change | 1..1 | string | e.g. feature_set: derived |
| decided_at | 1..1 | string | |
| detector_thresholds | 0..* | DetectorThreshold | The frozen alarm threshold of each detector a G6 decision names (schema 0.19.0, spec 017), set on validation at the matched false-alarm rate; tma-g6 refuses others. |
| fresh_test_count | 0..1 | integer | The dataset count whose test split a re-score scores (the plan's dataset.fresh_test.count; schema 0.11.1); tma-g2 refuses a plan with another count. |
| git_commit | 1..1 | string | |
| model_digests | 0..* | ModelDigest | The frozen carried models a re-score scores, by manifest id, with the SHA-256 of each one's weights.bin, manifest.json and model.json; tma-g2 refuses a re-score whose carried set or any of those files differs. |
| phase_a_experiment | 1..1 | string | |
| plan | 0..1 | string | The plan this decision pre-registers (configs/<…>/plan.json). Required from iteration 3 (spec 007): tma-g2 scores a test split only with the decision that names its plan. |
| plans | 0..* | string | G5: the plan of each carried tracker (configs/phase4/ |
| rationale | 1..1 | string | Validation evidence cited. |
| reference_estimator | 0..1 | string | G4 (spec 010, schema 0.13.0): the frozen reference tracker's estimator name, which encodes every tuning parameter (e.g. imm-cv0-ct0.03-w0.003-s0.0001-r4); tma-g4 refuses reference predictions with another name. |
| rescore_of | 0..1 | string | The experiment directory of the inconclusive gate this decision re-scores (SRD §7: one re-score on a larger fresh-seed test set; e.g. experiments/20261024-i4-g2). When present, tma-g2 runs in re-score mode (--rescore-of): the frozen carried models are bound by model_digests instead of by training ancestry, the re-scored gate must be inconclusive and not itself a re-score, and the fresh test seed must differ from its test seed. |
| stalled | 1..1 | boolean | Any gated criterion failed or was inconclusive on validation. |
| test_seed | 0..1 | string | Dataset seed of the test split the decision commits to (the plan's fresh_test seed, or its dataset seed); tma-g2 checks it against the plan. |
Continuation
The committed model a seeded continuation started from (scripts/train-continue.mjs; spec 003 decision 14, spec 004 decision 15). Its epoch records up to best_epoch are kept in the continued run's manifest, with their val_loss as recorded under the earlier config.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| best_epoch | 1..1 | integer | |
| git_commit | 0..1 | string | The source model's training-code commit, when it recorded one. |
| rescored_val_loss | 0..1 | float | The source's best weights re-scored under the continued run's loss, written by tma-train when it resumed (spec 004 FR-002). With best_epoch and best_val_loss it makes the kept weights auditable: a run whose best_epoch is the source's must have best_val_loss equal to this value and weights_digest equal to the source's. |
| val_loss | 1..1 | float | The source's best-epoch validation loss under the source's config. |
| weights_digest | 1..1 | string | SHA-256 of the weights the continuation resumed from (the source's best epoch). |
Referenced by:
- ModelManifest : modelManifest__continued_from 0..1
CurvePoint
One point of an error-vs-time-since-zig curve (curves.csv row).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| course_deg_median | 0..1 | float | |
| estimator | 1..1 | string | |
| gross_error_rate | 1..1 | float | |
| n | 1..1 | integer | |
| non_converged_rate | 0..1 | float | |
| range_rel_median | 0..1 | float | Absent when not finite (more than half the rows non-converged), as in MetricsRecord. |
| range_rel_p90 | 0..1 | float | |
| speed_kt_median | 0..1 | float | |
| t_since_zig_s | 1..1 | float |
DatasetHeader
First record of every dataset file.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| created_by | 1..1 | string | Command line that produced the file. |
| dataset_seed | 1..1 | string | Decimal uint64 string. |
| generator_git_commit | 0..1 | string | Commit of the checkout that ran tma-generate (absent before schema 0.8.0). |
| generator_git_dirty | 0..1 | boolean | True when that checkout had uncommitted changes (only allowed with --allow-dirty; absent before schema 0.8.0). |
| generator_version | 1..1 | string | |
| index_end | 1..1 | integer | Last scenario index (exclusive). |
| index_start | 1..1 | integer | First scenario index (inclusive). |
| parameter_ranges | 1..1 | ParameterRanges | |
| record | 1..1 | RecordKind | |
| redraw_count | 1..1 | integer | Geometries rejected for violating min_range_m. |
| scenario_count | 1..1 | integer | |
| schema_version | 1..1 | string | |
| split | 1..1 | Split |
Referenced by:
- DatasetRef : datasetRef__header 1..1
- ModelManifest : modelManifest__source_dataset_header 0..1
DatasetRef
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| digest | 0..1 | string | SHA-256 of the dataset file (absent in manifests written before schema 0.4.0). |
| header | 1..1 | DatasetHeader | |
| path | 1..1 | string |
Referenced by:
- ExperimentManifest : experimentManifest__datasets 1..*
Detection
One detector's per-timestep scores for one scenario (schema 0.19.0).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| detector | 1..1 | string | |
| record | 1..1 | RecordKind | |
| rows | 1..* | DetectionRow | |
| scenario_index | 1..1 | integer |
DetectionHeader
First record of every detection file (schema 0.19.0).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| dataset_digest | 1..1 | string | SHA-256 of the truth file. |
| detector | 1..1 | string | |
| inputs | 0..* | PredictionInput | The prediction files the scores were computed from, with their SHA-256s. |
| record | 1..1 | RecordKind | |
| schema_version | 1..1 | string |
DetectionRow
One detector's score at one timestep (schema 0.19.0, spec 017). Larger means a manoeuvre is more likely; an alarm is the score at or above the detector's threshold.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| score | 1..1 | float | The detector's statistic at this timestep (units depend on the detector). |
| timestamp_s | 1..1 | float |
Referenced by:
- Detection : detection__rows 1..*
DetectorThreshold
One detector's frozen alarm threshold (schema 0.19.0, spec 017).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| detector | 1..1 | string | |
| threshold | 1..1 | float |
Referenced by:
- ChangeDecision : changeDecision__detector_thresholds 0..*
EpochRecord
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| epoch | 1..1 | integer | |
| seconds | 1..1 | float | Cumulative wall time. |
| train_loss | 1..1 | float | |
| val_loss | 1..1 | float |
Referenced by:
- ModelManifest : modelManifest__epochs 1..*
EstimatorRef
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| name | 1..1 | string | |
| settings_json | 1..1 | string | Estimator settings as JSON. |
Referenced by:
- ExperimentManifest : experimentManifest__estimators 1..*
ExperimentManifest
Everything needed to reproduce an experiment run.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| id | 1..1 | string | |
| command_lines | 1..* | string | |
| created | 1..1 | string | ISO 8601 timestamp. |
| datasets | 1..* | DatasetRef | |
| estimators | 1..* | EstimatorRef | |
| generator_version | 1..1 | string | |
| git_commit | 1..1 | string | |
| git_dirty | 0..1 | boolean | True when the working tree had uncommitted changes (absent before schema 0.4.0). |
| node_version | 0..1 | string | Node.js version that ran the experiment (byte identity is promised per pinned Node). |
| normalisation | 0..1 | NormalisationConstants | |
| schema_version | 1..1 | string |
FeatureLayout
Documents the model tensors (not stored as records). inputs [N, 240, 10]: bearing_sin, bearing_cos, own_x_km, own_y_km, own_course_sin, own_course_cos, own_speed_scaled, time_scaled, valid, window_mask; the derived feature set appends bearing_rate_scaled, rate_valid, intercept_scaled [N, 240, 13]. targets [N, 240, 6]: log_range_km, course_sin, course_cos, speed_scaled, x_km, y_km. loss_mask [N, 240]: window_mask and t ≥ zig_time. Features file format 2 also embeds the source DatasetHeader and the source dataset SHA-256.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| feature_set | 0..1 | FeatureSet | Absent means raw. |
| input_channels | 1..* | string | |
| rows | 1..1 | integer | |
| target_channels | 1..* | string |
FloatRange
Closed interval [min, max].
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| max | 1..1 | float | |
| min | 1..1 | float |
Referenced by:
- ParameterRanges : parameterRanges__dropout_fraction 1..1
- ParameterRanges : parameterRanges__los_offset_rad 0..1
- ParameterRanges : parameterRanges__ownship_speed_mps 1..1
- ParameterRanges : parameterRanges__ownship_turn_rate_rad_s 0..1
- ParameterRanges : parameterRanges__target_manoeuvre_angle_abs_rad 0..1
- ParameterRanges : parameterRanges__target_range0_m 1..1
- ParameterRanges : parameterRanges__target_speed_change_abs_mps 0..1
- ParameterRanges : parameterRanges__target_speed_change_rate_mps2 0..1
- ParameterRanges : parameterRanges__target_speed_mps 1..1
- ParameterRanges : parameterRanges__target_turn_rate_rad_s 0..1
- ParameterRanges : parameterRanges__window_s 1..1
- ParameterRanges : parameterRanges__zig2_delay_s 0..1
- ParameterRanges : parameterRanges__zig_angle_abs_rad 1..1
- ParameterRanges : parameterRanges__zig_fraction 1..1
GateCheck
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| name | 1..1 | string | |
| ci_high | 0..1 | float | Upper bound of the bootstrap interval. |
| ci_level | 0..1 | float | Interval coverage, e.g. 0.95. |
| ci_low | 0..1 | float | Lower bound of the bootstrap interval. |
| detail | 1..1 | string | |
| result | 1..1 | GateResult | |
| threshold | 0..1 | float | Limit the statistic is tested against. |
| value | 0..1 | float | Statistic tested (e.g. median range error). |
Referenced by:
- GateVerdict : gateVerdict__checks 1..*
GateRecomputation
One estimator re-computed by a gate on a sample of scenarios (schema 0.18.0).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| estimator | 1..1 | string | |
| sample_sha256 | 1..1 | string | SHA-256 (hex) of the sampled scenario indices, comma-separated in ascending order. |
| scenarios | 1..1 | integer | Number of scenarios re-computed. |
Referenced by:
- GateScoring : gateScoring__recomputed 0..*
GateScoring
What a test-split gate verdict was scored against (schema 0.18.0; tma-g5 writes it as scoring.json beside verdict.json). tma-g5 refuses to score a decision and test seed that another experiment's scoring.json already records, unless it names that experiment (repeat_of).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| decision | 1..1 | string | Path of the decision record, from the repository root. |
| decision_sha256 | 1..1 | string | SHA-256 (hex) of the decision record. |
| gate | 1..1 | GateId | |
| recomputed | 0..* | GateRecomputation | The estimators whose rows the gate re-computed on a seeded sample of scenarios from their declared settings, byte-identical to their files (absent in records backfilled for experiments scored before schema 0.18.0). |
| repeat_of | 0..1 | string | The earlier experiment that scored the same decision and test seed, named with tma-g5 --repeat-of (a reproduction, not a second chance at the gate). |
| test_seed | 1..1 | string | |
| truth_sha256 | 1..1 | string | SHA-256 (hex) of the test split file. |
GateVerdict
Machine verdict for a gate; the team review records the final decision.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| checks | 1..* | GateCheck | |
| decided_by | 1..1 | string | |
| gate | 1..1 | GateId | |
| result | 1..1 | GateResult |
ManoeuvreSpan
Where one target manoeuvre lies in a scenario's samples (generator 0.5.0).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| end_index | 1..1 | integer | First timestep after it completes. |
| kind | 1..1 | ManoeuvreKind | |
| start_index | 1..1 | integer | First timestep after it starts. |
Referenced by:
- ScenarioMetadata : scenarioMetadata__manoeuvres 0..*
MetricsRecord
Metric values for one estimator on one slice at one evaluation point.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| course_deg_median | 0..1 | float | |
| course_deg_p90 | 0..1 | float | |
| estimator | 1..1 | string | |
| excluded | 1..1 | integer | |
| gross_error_rate | 0..1 | float | |
| n | 1..1 | integer | |
| non_converged_rate | 0..1 | float | Fraction of rows with no estimate (scored +∞; explains absent medians/P90). |
| point | 1..1 | string | "final" or "zig+ |
| position_m_mean | 0..1 | float | Mean position error over converged rows (non-converged rows count in gross_error_rate). |
| position_window_m_median | 0..1 | float | Median over scenarios of each scenario's mean position error over its predicted rows (time-late window-mean position, SRD §5; reported, not gated). |
| position_window_m_p90 | 0..1 | float | 90th percentile over scenarios of the same per-scenario mean. |
| range_rel_median | 0..1 | float | |
| range_rel_p90 | 0..1 | float | |
| slice | 1..1 | string | "overall" or e.g. "range_band=5-10km". |
| speed_kt_median | 0..1 | float | |
| speed_kt_p90 | 0..1 | float |
ModelDigest
A trained model named by its manifest id and the SHA-256 of its files (schema 0.11.0; manifest and model.json digests from 0.11.1).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| manifest_sha256 | 1..1 | string | SHA-256 (hex) of the model's manifest.json (schema 0.11.1). |
| model | 1..1 | string | The model's manifest id. |
| model_json_sha256 | 1..1 | string | SHA-256 (hex) of the model's model.json, its topology (schema 0.11.1). |
| weights_sha256 | 1..1 | string | SHA-256 (hex) of the model's weights.bin; equals its manifest weights_digest. |
Referenced by:
- ChangeDecision : changeDecision__model_digests 0..*
ModelManifest
Everything needed to reproduce and identify a trained model.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| id | 1..1 | string | |
| best_epoch | 1..1 | integer | |
| best_val_loss | 0..1 | float | The validation loss a later epoch must beat, under this manifest's config: the best epoch's val_loss, or, after a continuation changed the loss, the best weights re-scored under the new loss (spec 004 FR-002). Persisted so a chained job resumes against the same value. Absent before schema 0.8.2 (then the best epoch's recorded val_loss). |
| complete | 1..1 | boolean | False while training is in progress (checkpoint). |
| config | 1..1 | TrainingConfig | |
| continued_from | 0..1 | Continuation | Present when the run was seeded from a committed model (absent before schema 0.8.2). |
| cpu_model | 1..1 | string | |
| epochs | 1..* | EpochRecord | |
| g0_experiment | 0..1 | string | Id of the G0 experiment whose verdict the training guard accepted. |
| generator_version | 1..1 | string | |
| git_commit | 0..1 | string | Commit of the training code, read when training started (absent before schema 0.6.0). |
| git_dirty | 0..1 | boolean | True when the working tree had uncommitted changes when training started (absent before schema 0.6.0). |
| node_version | 1..1 | string | |
| normalisation | 1..1 | NormalisationConstants | |
| parameter_count | 1..1 | integer | |
| schema_version | 1..1 | string | |
| source_dataset_header | 0..1 | DatasetHeader | Header of the dataset the train features came from (lineage; absent before schema 0.8.0). |
| stop_reason | 0..1 | StopReason | |
| tf_interop_threads | 0..1 | integer | TF_NUM_INTEROP_THREADS in force when training ran (absent: unset). |
| tf_intraop_threads | 0..1 | integer | TF_NUM_INTRAOP_THREADS in force when training ran (absent: unset, so the TensorFlow default of one per core). |
| tfjs_node_version | 1..1 | string | |
| train_features_digest | 1..1 | string | |
| val_features_digest | 1..1 | string | |
| wall_s | 1..1 | float | |
| weights_digest | 1..1 | string | SHA-256 of best-epoch weights. |
NaiveMeans
Training-set means used by the naive baseline for one prediction mode.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| course_cos | 1..1 | float | |
| course_sin | 1..1 | float | |
| log_range_km | 1..1 | float | Mean of ln(range in km). |
| n | 1..1 | integer | Number of labels averaged. |
| speed_mps | 1..1 | float |
Referenced by:
- NaiveModel : naiveModel__final 1..1
- NaiveModel : naiveModel__per_timestep 1..1
NaiveModel
Naive baseline (SRD §5): predicts training-set means. final uses each scenario's last-sample label; per_timestep uses every post-zig label.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| final | 1..1 | NaiveMeans | |
| per_timestep | 1..1 | NaiveMeans | |
| schema_version | 1..1 | string | |
| train_digest | 1..1 | string | SHA-256 of the train file. |
NormalisationConstants
Fixed scaling constants computed from the train split's input channels only.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| bearing_rate_scale_rad_s | 0..1 | float | 90th percentile of |trailing least-squares bearing rate| over train inputs; required for the derived feature set. |
| computed_from | 1..1 | string | Always "inputs_only". |
| position_scale_km | 1..1 | float | |
| speed_scale_mps | 1..1 | float | |
| time_scale_s | 1..1 | float | |
| train_header_digest | 1..1 | string | SHA-256 of the train header. |
Referenced by:
- ExperimentManifest : experimentManifest__normalisation 0..1
- ModelManifest : modelManifest__normalisation 1..1
Observation
One bearing from ownship to target. Stone Soup analogue Detection. When valid is false (dropout) bearing_rad is 0 and must be ignored.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| bearing_rad | 1..1 | float | |
| timestamp_s | 1..1 | float | |
| valid | 1..1 | boolean |
Referenced by:
- Scenario : scenario__observations 1..*
PairedComparison
A model and a reference estimator compared on rows both answered (converged and finite), with each estimator's coverage reported separately (spec 003 R9).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| course_deg_median | 0..1 | float | |
| course_deg_median_ref | 0..1 | float | |
| coverage_estimator | 1..1 | float | Answered / scored. |
| coverage_reference | 1..1 | float | Answered / scored. |
| estimator | 1..1 | string | |
| gross_error_rate | 0..1 | float | |
| gross_error_rate_ref | 0..1 | float | |
| n_common | 1..1 | integer | |
| point | 1..1 | string | |
| range_rel_median | 0..1 | float | |
| range_rel_median_ref | 0..1 | float | |
| range_rel_p90 | 0..1 | float | |
| range_rel_p90_ref | 0..1 | float | |
| reference | 1..1 | string | |
| slice | 1..1 | string | |
| speed_kt_median | 0..1 | float | |
| speed_kt_median_ref | 0..1 | float |
ParameterRanges
Ranges from which ScenarioParameters are drawn. Initial ownship course, target bearing and target course are always uniform on [0, 2π); zig sign is uniform ±.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| bearing_error | 0..1 | BearingErrorModel | Generator 0.6.0: the same realistic bearing error for every scenario with σ > 0, recorded in its parameters; a noise-free scenario (σ = 0) has none. Absent: white noise only, as 0.5.0. |
| dropout_fraction | 1..1 | FloatRange | |
| dt_s | 1..1 | float | |
| los_offset_rad | 0..1 | FloatRange | Angle off the line of sight, on the other bow, after an across_los turn; required when zig_rule is across_los. |
| min_range_m | 1..1 | float | Geometries closer than this at any sample are redrawn. |
| noise_sigma_rad_values | 1..* | float | σ drawn uniformly from this set. |
| ownship_speed_mps | 1..1 | FloatRange | |
| ownship_turn_rate_rad_s | 0..1 | FloatRange | Turn rate drawn uniformly per scenario; absent means an instantaneous zig. |
| range_distribution | 1..1 | RangeDistribution | |
| target_course_change_count_weights | 0..* | float | Generator 0.5.0 (SRD Annex C §C.2): probabilities of 0, 1, 2, … target course changes (summing to 1). Present: every scenario draws its manoeuvres this way, with target_manoeuvre_angle_abs_rad, target_turn_rate_rad_s, target_manoeuvre_after_zig_s and target_manoeuvre_margin_s, and target_manoeuvre_fraction must be absent. |
| target_manoeuvre_after_zig_s | 0..1 | float | Earliest start of the target's turn, after the first sample on leg 2. |
| target_manoeuvre_angle_abs_rad | 0..1 | FloatRange | Absolute target course change; the sign is uniform ±. |
| target_manoeuvre_fraction | 0..1 | float | Probability a scenario's target makes one course change (generator 0.4.0, SRD Annex B §B.2); absent means the target always holds course, as generators 0.1.0–0.3.0. When present, every scenario draws the manoeuvre parameters (so the PRNG is consumed alike) and the window must fit a turn whether or not one is made. |
| target_manoeuvre_margin_s | 0..1 | float | Least time from the end of the target's turn to the end of the window, so the gate point (manoeuvre + 5 min) is reached. |
| target_manoeuvre_spacing_s | 0..1 | float | Least time from the end of one target manoeuvre to the start of the next. |
| target_range0_m | 1..1 | FloatRange | |
| target_speed_change_abs_mps | 0..1 | FloatRange | Absolute speed change; its sign is uniform ±, flipped if the new speed would leave target_speed_mps (redrawn if both signs would). |
| target_speed_change_fraction | 0..1 | float | Probability of one target speed change (generator 0.5.0). |
| target_speed_change_rate_mps2 | 0..1 | FloatRange | Magnitude of the target's acceleration during a speed change. |
| target_speed_mps | 1..1 | FloatRange | |
| target_turn_rate_rad_s | 0..1 | FloatRange | Target turn rate, drawn uniformly per scenario. |
| window_s | 1..1 | FloatRange | |
| zig2_delay_s | 0..1 | FloatRange | Delay from the start of leg 2 to the second turn; absent means one zig. The second zig follows zig_rule (and uses the same turn rate as the first). |
| zig_angle_abs_rad | 1..1 | FloatRange | |
| zig_fraction | 1..1 | FloatRange | |
| zig_rule | 0..1 | ZigRule | How each zig is chosen; absent means random (generators 0.1.0–0.2.0). Under across_los zig_angle_abs_rad is still drawn but not used. |
Referenced by:
- DatasetHeader : datasetHeader__parameter_ranges 1..1
PlatformState
One platform state. Stone Soup analogue GroundTruthState.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| course_rad | 1..1 | float | |
| speed_mps | 1..1 | float | |
| timestamp_s | 1..1 | float | |
| x_m | 1..1 | float | |
| y_m | 1..1 | float |
Referenced by:
- Track : track__states 1..*
Prediction
One estimator's output for one scenario.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| estimator | 1..1 | string | |
| mode | 1..1 | PredictionMode | |
| record | 1..1 | RecordKind | |
| rows | 1..* | PredictionRow | |
| scenario_index | 1..1 | integer |
PredictionHeader
First record of every prediction file.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| dataset_digest | 1..1 | string | SHA-256 of the truth file. |
| estimator | 1..1 | string | |
| inputs | 0..* | PredictionInput | The prediction files a derived estimator was built from, such as a hybrid's tracker and network files (schema 0.17.0; written by tma-hybrid-track). Gates check each against the files they are given. |
| mode | 1..1 | PredictionMode | |
| model_weights_sha256 | 0..1 | string | SHA-256 (hex) of the weights.bin of the model that made these predictions (schema 0.17.0; written by tma-model-predict). Gates check it against the bound model. |
| record | 1..1 | RecordKind | |
| schema_version | 1..1 | string |
PredictionInput
One input file of a derived prediction file: its estimator and the SHA-256 of the whole file (schema 0.17.0).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| estimator | 1..1 | string | |
| sha256 | 1..1 | string | SHA-256 (hex) of the input file. |
Referenced by:
- DetectionHeader : detectionHeader__inputs 0..*
- PredictionHeader : predictionHeader__inputs 0..*
PredictionRow
An estimator's target estimate at one timestep.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| converged | 1..1 | boolean | |
| course_rad | 1..1 | float | |
| course_sd_rad | 0..1 | float | Stated standard deviation of the course estimate (schema 0.20.0, spec 018): from a tracker's covariance by the delta method, written only under the -sd name suffix. |
| iterations | 0..1 | integer | |
| log_range_sd | 0..1 | float | Standard deviation of the estimator's log range (natural log; about the relative range error), from a velocity_gaussian network (spec 012). Absent for other estimators. |
| p_manoeuvre | 0..1 | float | The estimator's probability that the target's turn has started by this timestep (velocity_two_hypothesis networks only; spec 011). Absent for other estimators. |
| range_m | 1..1 | float | |
| speed_mps | 1..1 | float | |
| speed_sd_mps | 0..1 | float | Stated standard deviation of the speed estimate (schema 0.20.0, spec 018). |
| timestamp_s | 1..1 | float | |
| vx_sd_mps | 0..1 | float | Standard deviation of the estimated east velocity (velocity_gaussian only). |
| vy_sd_mps | 0..1 | float | Standard deviation of the estimated north velocity (velocity_gaussian only). |
| x_m | 1..1 | float | |
| y_m | 1..1 | float |
Referenced by:
- Prediction : prediction__rows 1..*
Scenario
One ownship-vs-target run over a window.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| metadata | 1..1 | ScenarioMetadata | |
| observations | 1..* | Observation | |
| ownship | 1..1 | Track | |
| record | 1..1 | RecordKind | |
| target | 1..1 | Track |
ScenarioMetadata
Seed, parameter draws and derived slicing keys for one scenario.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| index | 1..1 | integer | Scenario index within the dataset. |
| manoeuvre_index | 0..1 | integer | First timestep after the target's turn completes (generator 0.4.0; absent when the target holds course). Gate G4 counts time from here, as earlier gates count from zig_index. Under generator 0.5.0, after the last manoeuvre completes. |
| manoeuvre_start_index | 0..1 | integer | First timestep after the target's turn starts (generator 0.4.0; absent when the target holds course). Under generator 0.5.0, after the first manoeuvre starts. |
| manoeuvres | 0..* | ManoeuvreSpan | Generator 0.5.0: each target manoeuvre's sample span, in time order (present, possibly empty, only under 0.5.0). |
| mean_range_m | 1..1 | float | |
| min_range_m | 1..1 | float | |
| parameters | 1..1 | ScenarioParameters | |
| samples | 1..1 | integer | Number of timesteps (60–240). |
| seed | 1..1 | string | Scenario seed as a decimal uint64 string. |
| turn2_start_index | 0..1 | integer | First timestep after the second turn starts (absent with one zig or no turn rate). |
| turn_start_index | 0..1 | integer | First timestep after the turn starts (absent for an instantaneous zig). |
| zig2_index | 0..1 | integer | First timestep on leg 3, after the second turn completes (absent with one zig). Gate times still count from zig_index. |
| zig_index | 1..1 | integer | First timestep on leg 2 (with a rate-limited turn, the first after it completes). |
| zig_time_s | 1..1 | float |
Referenced by:
- Scenario : scenario__metadata 1..1
ScenarioParameters
The random draws that define one scenario.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| bearing_error | 0..1 | BearingErrorModel | Realistic bearing error (generator 0.6.0); absent = white noise only. |
| dropout_fraction | 1..1 | float | Probability each bearing is missing. |
| dt_s | 1..1 | float | Bearing interval. |
| noise_sigma_rad | 1..1 | float | Bearing noise σ; 0 = noise-free. |
| ownship_course0_rad | 1..1 | float | Ownship course on leg 1. |
| ownship_speed_mps | 1..1 | float | |
| ownship_turn_rate_rad_s | 0..1 | float | Ownship turn rate at the zig (rate-limited turn, spec 003 US6). Absent or 0: the course changes instantaneously, as in generator 0.1.0. |
| target_bearing0_rad | 1..1 | float | True bearing at window start. |
| target_course_rad | 1..1 | float | |
| target_manoeuvre_angle_rad | 0..1 | float | Signed target course change; positive is clockwise. |
| target_manoeuvre_time_s | 0..1 | float | Target course change (generator 0.4.0, SRD Annex B §B.2): time the target's turn starts, a whole number of samples. Absent: the target holds course. |
| target_manoeuvres | 0..* | TargetManoeuvre | Target manoeuvres in time order (generator 0.5.0, SRD Annex C §C.2), none overlapping. Present (possibly empty) only under generator 0.5.0 ranges; then the single-turn fields above are absent. |
| target_range0_m | 1..1 | float | Range at window start. |
| target_speed_mps | 1..1 | float | |
| target_turn_rate_rad_s | 0..1 | float | Target turn rate through its course change. |
| window_s | 1..1 | float | Window length; multiple of dt_s. |
| zig2_angle_rad | 0..1 | float | Signed course change at the second zig; positive is clockwise. |
| zig2_delay_s | 0..1 | float | Second zig (generator 0.3.0, spec 007): time from the first sample on leg 2 to the start of the second turn. Absent: one zig, two legs. |
| zig_angle_rad | 1..1 | float | Signed course change at the zig; positive is clockwise. |
| zig_fraction | 1..1 | float | Zig time as a fraction of the window. |
Referenced by:
- ScenarioMetadata : scenarioMetadata__parameters 1..1
TargetManoeuvre
One target manoeuvre (generator 0.5.0). A course change is an arc at constant speed; a speed change is constant acceleration on a constant course.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| change | 1..1 | float | Signed change: course in rad (positive clockwise) or speed in m/s (positive faster). |
| kind | 1..1 | ManoeuvreKind | |
| rate | 1..1 | float | Magnitude of the rate of change, rad/s (course) or m/s² (speed). |
| start_time_s | 1..1 | float | Time the manoeuvre starts, a whole number of samples. |
Referenced by:
- ScenarioParameters : scenarioParameters__target_manoeuvres 0..*
Track
Time-ordered states of one platform. Stone Soup analogue GroundTruthPath.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| id | 1..1 | TrackId | |
| states | 1..* | PlatformState |
Referenced by:
TrainingConfig
Hyperparameters and seeds for one training run (SRD §4; constitution III).
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| id | 1..1 | string | Estimator name used in predictions. |
| batch_size | 1..1 | integer | |
| bucket_batches | 0..1 | integer | Batches per length-bucketing group (default 16). |
| feature_set | 0..1 | FeatureSet | Input channel set; absent means raw. Must match the features files. |
| kernel_size | 0..1 | integer | Causal CNN kernel size. |
| layers | 0..1 | integer | Stacked layers: causal CNN conv layers (no dilation; default 3), or recurrent layers for instantaneous and time_late (default 1; each returns sequences; spec 003 R20). |
| learning_rate | 1..1 | float | |
| length_bucketing | 0..1 | boolean | Length bucketing (research R15; default false). Each group of bucket_batches batches of the epoch's seeded permutation is sorted by valid length, cut into batches whose rows are trimmed to the longest window, and the batch order is shuffled with a seed derived from train_seed and the epoch. The model takes a variable time dimension. Not for mlp. |
| loss_weight_course | 1..1 | float | |
| loss_weight_manoeuvre | 0..1 | float | Weight of the turn-probability cross-entropy term (velocity_two_hypothesis only; spec 011). Absent means 1. |
| loss_weight_range | 1..1 | float | |
| loss_weight_speed | 1..1 | float | |
| max_epochs | 1..1 | integer | |
| max_wall_s | 1..1 | float | Wall-clock cap in seconds. |
| model_kind | 1..1 | ModelKind | |
| output_parameterisation | 0..1 | OutputParameterisation | Output encoding; absent means course_speed. With velocity, loss_weight_speed weights each velocity component and loss_weight_course is unused (spec 008). |
| patience | 1..1 | integer | Epochs without validation improvement before stopping. |
| shuffle_labels | 1..1 | boolean | Permute targets across scenarios (leakage check). |
| tfjs_threads | 0..1 | integer | TensorFlow intra-op and inter-op thread count, set by tma-train through TF_NUM_INTRAOP_THREADS and TF_NUM_INTEROP_THREADS before tfjs-node loads. Absent: the TensorFlow default (one per core) or whatever the environment sets. |
| train_limit | 0..1 | integer | Use only the first N training scenarios (tests and smoke runs). |
| train_seed | 1..1 | string | Decimal uint64; derives initializer seeds and batch order. |
| units | 1..1 | integer | LSTM units (per direction), conv filters or dense width. |
| velocity_scale_mps | 0..1 | float | Velocity scale in m/s for the velocity parameterisation (required with it): the top of the generator's target speed range, a constant of the problem, never a truth statistic. |
Referenced by:
- ModelManifest : modelManifest__config 1..1
UncertaintyCalibration
One estimator's post-hoc interval multipliers for one output (schema 0.20.0, spec 018): the calibrated q-interval is the estimate ± multiplier × the stated standard deviation.
Attributes
| Name | Cardinality: | Type | Description |
|---|---|---|---|
| estimator | 1..1 | string | |
| output | 1..1 | string | "log_range", "course" or "speed". |
| q50 | 1..1 | float | Multiplier for the 50% interval. |
| q90 | 1..1 | float | Multiplier for the 90% interval. |
Referenced by:
- ChangeDecision : changeDecision__calibrations 0..*
Slots
| Name | Cardinality/Range | Used By |
|---|---|---|
| bearingErrorModel__ar_sd_rad Stationary sd of the correlated term. | 1..1 float | |
| bearingErrorModel__ar_tau_s Time constant of the correlated term. | 1..1 float | |
| bearingErrorModel__bias_sd_rad Stationary sd of the drifting bias. | 1..1 float | |
| bearingErrorModel__bias_tau_s Time constant of the drifting bias. | 1..1 float | |
| changeDecision__calibrations The frozen post-hoc interval multipliers of each estimator and output a G7 decision names (schema 0.20.0, spec 018), fitted on validation; tma-g7 refuses others. | 0..* UncertaintyCalibration | |
| changeDecision__carried_model G4: the manifest id of the one carried network (Annex B §B.4); tma-g4 refuses network predictions from another model. | 0..1 string | |
| changeDecision__carried_models G5 (spec 012, schema 0.16.0): the manifest ids of the carried trackers (one or both of T1 and T2, Annex C §C.5), each with its own plan in plans, in the same order; tma-g5 refuses tracker predictions from any other model. | 0..* string | |
| changeDecision__carried_set_rule | 1..1 string | |
| changeDecision__change e.g. feature_set: derived | 1..1 string | |
| changeDecision__decided_at | 1..1 string | |
| changeDecision__detector_thresholds The frozen alarm threshold of each detector a G6 decision names (schema 0.19.0, spec 017), set on validation at the matched false-alarm rate; tma-g6 refuses others. | 0..* DetectorThreshold | |
| changeDecision__fresh_test_count The dataset count whose test split a re-score scores (the plan's dataset.fresh_test.count; schema 0.11.1); tma-g2 refuses a plan with another count. | 0..1 integer | |
| changeDecision__git_commit | 1..1 string | |
| changeDecision__model_digests The frozen carried models a re-score scores, by manifest id, with the SHA-256 of each one's weights.bin, manifest.json and model.json; tma-g2 refuses a re-score whose carried set or any of those files differs. | 0..* ModelDigest | |
| changeDecision__phase_a_experiment | 1..1 string | |
| changeDecision__plan The plan this decision pre-registers (configs/<…>/plan.json). Required from iteration 3 (spec 007): tma-g2 scores a test split only with the decision that names its plan. | 0..1 string | |
| changeDecision__plans G5: the plan of each carried tracker (configs/phase4/ | 0..* string | |
| changeDecision__rationale Validation evidence cited. | 1..1 string | |
| changeDecision__reference_estimator G4 (spec 010, schema 0.13.0): the frozen reference tracker's estimator name, which encodes every tuning parameter (e.g. imm-cv0-ct0.03-w0.003-s0.0001-r4); tma-g4 refuses reference predictions with another name. | 0..1 string | |
| changeDecision__rescore_of The experiment directory of the inconclusive gate this decision re-scores (SRD §7: one re-score on a larger fresh-seed test set; e.g. experiments/20261024-i4-g2). When present, tma-g2 runs in re-score mode (--rescore-of): the frozen carried models are bound by model_digests instead of by training ancestry, the re-scored gate must be inconclusive and not itself a re-score, and the fresh test seed must differ from its test seed. | 0..1 string | |
| changeDecision__stalled Any gated criterion failed or was inconclusive on validation. | 1..1 boolean | |
| changeDecision__test_seed Dataset seed of the test split the decision commits to (the plan's fresh_test seed, or its dataset seed); tma-g2 checks it against the plan. | 0..1 string | |
| continuation__best_epoch | 1..1 integer | |
| continuation__git_commit The source model's training-code commit, when it recorded one. | 0..1 string | |
| continuation__rescored_val_loss The source's best weights re-scored under the continued run's loss, written by tma-train when it resumed (spec 004 FR-002). With best_epoch and best_val_loss it makes the kept weights auditable: a run whose best_epoch is the source's must have best_val_loss equal to this value and weights_digest equal to the source's. | 0..1 float | |
| continuation__val_loss The source's best-epoch validation loss under the source's config. | 1..1 float | |
| continuation__weights_digest SHA-256 of the weights the continuation resumed from (the source's best epoch). | 1..1 string | |
| curvePoint__course_deg_median | 0..1 float | |
| curvePoint__estimator | 1..1 string | |
| curvePoint__gross_error_rate | 1..1 float | |
| curvePoint__n | 1..1 integer | |
| curvePoint__non_converged_rate | 0..1 float | |
| curvePoint__range_rel_median Absent when not finite (more than half the rows non-converged), as in MetricsRecord. | 0..1 float | |
| curvePoint__range_rel_p90 | 0..1 float | |
| curvePoint__speed_kt_median | 0..1 float | |
| curvePoint__t_since_zig_s | 1..1 float | |
| datasetHeader__created_by Command line that produced the file. | 1..1 string | |
| datasetHeader__dataset_seed Decimal uint64 string. | 1..1 string | |
| datasetHeader__generator_git_commit Commit of the checkout that ran tma-generate (absent before schema 0.8.0). | 0..1 string | |
| datasetHeader__generator_git_dirty True when that checkout had uncommitted changes (only allowed with --allow-dirty; absent before schema 0.8.0). | 0..1 boolean | |
| datasetHeader__generator_version | 1..1 string | |
| datasetHeader__index_end Last scenario index (exclusive). | 1..1 integer | |
| datasetHeader__index_start First scenario index (inclusive). | 1..1 integer | |
| datasetHeader__parameter_ranges | 1..1 ParameterRanges | |
| datasetHeader__record | 1..1 RecordKind | |
| datasetHeader__redraw_count Geometries rejected for violating min_range_m. | 1..1 integer | |
| datasetHeader__scenario_count | 1..1 integer | |
| datasetHeader__schema_version | 1..1 string | |
| datasetHeader__split | 1..1 Split | |
| datasetRef__digest SHA-256 of the dataset file (absent in manifests written before schema 0.4.0). | 0..1 string | |
| datasetRef__header | 1..1 DatasetHeader | |
| datasetRef__path | 1..1 string | |
| detectionHeader__dataset_digest SHA-256 of the truth file. | 1..1 string | |
| detectionHeader__detector | 1..1 string | |
| detectionHeader__inputs The prediction files the scores were computed from, with their SHA-256s. | 0..* PredictionInput | |
| detectionHeader__record | 1..1 RecordKind | |
| detectionHeader__schema_version | 1..1 string | |
| detectionRow__score The detector's statistic at this timestep (units depend on the detector). | 1..1 float | |
| detectionRow__timestamp_s | 1..1 float | |
| detection__detector | 1..1 string | |
| detection__record | 1..1 RecordKind | |
| detection__rows | 1..* DetectionRow | |
| detection__scenario_index | 1..1 integer | |
| detectorThreshold__detector | 1..1 string | |
| detectorThreshold__threshold | 1..1 float | |
| epochRecord__epoch | 1..1 integer | |
| epochRecord__seconds Cumulative wall time. | 1..1 float | |
| epochRecord__train_loss | 1..1 float | |
| epochRecord__val_loss | 1..1 float | |
| estimatorRef__name | 1..1 string | |
| estimatorRef__settings_json Estimator settings as JSON. | 1..1 string | |
| experimentManifest__command_lines | 1..* string | |
| experimentManifest__created ISO 8601 timestamp. | 1..1 string | |
| experimentManifest__datasets | 1..* DatasetRef | |
| experimentManifest__estimators | 1..* EstimatorRef | |
| experimentManifest__generator_version | 1..1 string | |
| experimentManifest__git_commit | 1..1 string | |
| experimentManifest__git_dirty True when the working tree had uncommitted changes (absent before schema 0.4.0). | 0..1 boolean | |
| experimentManifest__id | 1..1 string | |
| experimentManifest__node_version Node.js version that ran the experiment (byte identity is promised per pinned Node). | 0..1 string | |
| experimentManifest__normalisation | 0..1 NormalisationConstants | |
| experimentManifest__schema_version | 1..1 string | |
| featureLayout__feature_set Absent means raw. | 0..1 FeatureSet | |
| featureLayout__input_channels | 1..* string | |
| featureLayout__rows | 1..1 integer | |
| featureLayout__target_channels | 1..* string | |
| floatRange__max | 1..1 float | |
| floatRange__min | 1..1 float | |
| gateCheck__ci_high Upper bound of the bootstrap interval. | 0..1 float | |
| gateCheck__ci_level Interval coverage, e.g. 0.95. | 0..1 float | |
| gateCheck__ci_low Lower bound of the bootstrap interval. | 0..1 float | |
| gateCheck__detail | 1..1 string | |
| gateCheck__name | 1..1 string | |
| gateCheck__result | 1..1 GateResult | |
| gateCheck__threshold Limit the statistic is tested against. | 0..1 float | |
| gateCheck__value Statistic tested (e.g. median range error). | 0..1 float | |
| gateRecomputation__estimator | 1..1 string | |
| gateRecomputation__sample_sha256 SHA-256 (hex) of the sampled scenario indices, comma-separated in ascending order. | 1..1 string | |
| gateRecomputation__scenarios Number of scenarios re-computed. | 1..1 integer | |
| gateScoring__decision Path of the decision record, from the repository root. | 1..1 string | |
| gateScoring__decision_sha256 SHA-256 (hex) of the decision record. | 1..1 string | |
| gateScoring__gate | 1..1 GateId | |
| gateScoring__recomputed The estimators whose rows the gate re-computed on a seeded sample of scenarios from their declared settings, byte-identical to their files (absent in records backfilled for experiments scored before schema 0.18.0). | 0..* GateRecomputation | |
| gateScoring__repeat_of The earlier experiment that scored the same decision and test seed, named with tma-g5 --repeat-of (a reproduction, not a second chance at the gate). | 0..1 string | |
| gateScoring__test_seed | 1..1 string | |
| gateScoring__truth_sha256 SHA-256 (hex) of the test split file. | 1..1 string | |
| gateVerdict__checks | 1..* GateCheck | |
| gateVerdict__decided_by | 1..1 string | |
| gateVerdict__gate | 1..1 GateId | |
| gateVerdict__result | 1..1 GateResult | |
| manoeuvreSpan__end_index First timestep after it completes. | 1..1 integer | |
| manoeuvreSpan__kind | 1..1 ManoeuvreKind | |
| manoeuvreSpan__start_index First timestep after it starts. | 1..1 integer | |
| metricsRecord__course_deg_median | 0..1 float | |
| metricsRecord__course_deg_p90 | 0..1 float | |
| metricsRecord__estimator | 1..1 string | |
| metricsRecord__excluded | 1..1 integer | |
| metricsRecord__gross_error_rate | 0..1 float | |
| metricsRecord__n | 1..1 integer | |
| metricsRecord__non_converged_rate Fraction of rows with no estimate (scored +∞; explains absent medians/P90). | 0..1 float | |
| metricsRecord__point "final" or "zig+ | 1..1 string | |
| metricsRecord__position_m_mean Mean position error over converged rows (non-converged rows count in gross_error_rate). | 0..1 float | |
| metricsRecord__position_window_m_median Median over scenarios of each scenario's mean position error over its predicted rows (time-late window-mean position, SRD §5; reported, not gated). | 0..1 float | |
| metricsRecord__position_window_m_p90 90th percentile over scenarios of the same per-scenario mean. | 0..1 float | |
| metricsRecord__range_rel_median | 0..1 float | |
| metricsRecord__range_rel_p90 | 0..1 float | |
| metricsRecord__slice "overall" or e.g. "range_band=5-10km". | 1..1 string | |
| metricsRecord__speed_kt_median | 0..1 float | |
| metricsRecord__speed_kt_p90 | 0..1 float | |
| modelDigest__manifest_sha256 SHA-256 (hex) of the model's manifest.json (schema 0.11.1). | 1..1 string | |
| modelDigest__model The model's manifest id. | 1..1 string | |
| modelDigest__model_json_sha256 SHA-256 (hex) of the model's model.json, its topology (schema 0.11.1). | 1..1 string | |
| modelDigest__weights_sha256 SHA-256 (hex) of the model's weights.bin; equals its manifest weights_digest. | 1..1 string | |
| modelManifest__best_epoch | 1..1 integer | |
| modelManifest__best_val_loss The validation loss a later epoch must beat, under this manifest's config: the best epoch's val_loss, or, after a continuation changed the loss, the best weights re-scored under the new loss (spec 004 FR-002). Persisted so a chained job resumes against the same value. Absent before schema 0.8.2 (then the best epoch's recorded val_loss). | 0..1 float | |
| modelManifest__complete False while training is in progress (checkpoint). | 1..1 boolean | |
| modelManifest__config | 1..1 TrainingConfig | |
| modelManifest__continued_from Present when the run was seeded from a committed model (absent before schema 0.8.2). | 0..1 Continuation | |
| modelManifest__cpu_model | 1..1 string | |
| modelManifest__epochs | 1..* EpochRecord | |
| modelManifest__g0_experiment Id of the G0 experiment whose verdict the training guard accepted. | 0..1 string | |
| modelManifest__generator_version | 1..1 string | |
| modelManifest__git_commit Commit of the training code, read when training started (absent before schema 0.6.0). | 0..1 string | |
| modelManifest__git_dirty True when the working tree had uncommitted changes when training started (absent before schema 0.6.0). | 0..1 boolean | |
| modelManifest__id | 1..1 string | |
| modelManifest__node_version | 1..1 string | |
| modelManifest__normalisation | 1..1 NormalisationConstants | |
| modelManifest__parameter_count | 1..1 integer | |
| modelManifest__schema_version | 1..1 string | |
| modelManifest__source_dataset_header Header of the dataset the train features came from (lineage; absent before schema 0.8.0). | 0..1 DatasetHeader | |
| modelManifest__stop_reason | 0..1 StopReason | |
| modelManifest__tf_interop_threads TF_NUM_INTEROP_THREADS in force when training ran (absent: unset). | 0..1 integer | |
| modelManifest__tf_intraop_threads TF_NUM_INTRAOP_THREADS in force when training ran (absent: unset, so the TensorFlow default of one per core). | 0..1 integer | |
| modelManifest__tfjs_node_version | 1..1 string | |
| modelManifest__train_features_digest | 1..1 string | |
| modelManifest__val_features_digest | 1..1 string | |
| modelManifest__wall_s | 1..1 float | |
| modelManifest__weights_digest SHA-256 of best-epoch weights. | 1..1 string | |
| naiveMeans__course_cos | 1..1 float | |
| naiveMeans__course_sin | 1..1 float | |
| naiveMeans__log_range_km Mean of ln(range in km). | 1..1 float | |
| naiveMeans__n Number of labels averaged. | 1..1 integer | |
| naiveMeans__speed_mps | 1..1 float | |
| naiveModel__final | 1..1 NaiveMeans | |
| naiveModel__per_timestep | 1..1 NaiveMeans | |
| naiveModel__schema_version | 1..1 string | |
| naiveModel__train_digest SHA-256 of the train file. | 1..1 string | |
| normalisationConstants__bearing_rate_scale_rad_s 90th percentile of |trailing least-squares bearing rate| over train inputs; required for the derived feature set. | 0..1 float | |
| normalisationConstants__computed_from Always "inputs_only". | 1..1 string | |
| normalisationConstants__position_scale_km | 1..1 float | |
| normalisationConstants__speed_scale_mps | 1..1 float | |
| normalisationConstants__time_scale_s | 1..1 float | |
| normalisationConstants__train_header_digest SHA-256 of the train header. | 1..1 string | |
| observation__bearing_rad | 1..1 float | |
| observation__timestamp_s | 1..1 float | |
| observation__valid | 1..1 boolean | |
| pairedComparison__course_deg_median | 0..1 float | |
| pairedComparison__course_deg_median_ref | 0..1 float | |
| pairedComparison__coverage_estimator Answered / scored. | 1..1 float | |
| pairedComparison__coverage_reference Answered / scored. | 1..1 float | |
| pairedComparison__estimator | 1..1 string | |
| pairedComparison__gross_error_rate | 0..1 float | |
| pairedComparison__gross_error_rate_ref | 0..1 float | |
| pairedComparison__n_common | 1..1 integer | |
| pairedComparison__point | 1..1 string | |
| pairedComparison__range_rel_median | 0..1 float | |
| pairedComparison__range_rel_median_ref | 0..1 float | |
| pairedComparison__range_rel_p90 | 0..1 float | |
| pairedComparison__range_rel_p90_ref | 0..1 float | |
| pairedComparison__reference | 1..1 string | |
| pairedComparison__slice | 1..1 string | |
| pairedComparison__speed_kt_median | 0..1 float | |
| pairedComparison__speed_kt_median_ref | 0..1 float | |
| parameterRanges__bearing_error Generator 0.6.0: the same realistic bearing error for every scenario with σ > 0, recorded in its parameters; a noise-free scenario (σ = 0) has none. Absent: white noise only, as 0.5.0. | 0..1 BearingErrorModel | |
| parameterRanges__dropout_fraction | 1..1 FloatRange | |
| parameterRanges__dt_s | 1..1 float | |
| parameterRanges__los_offset_rad Angle off the line of sight, on the other bow, after an across_los turn; required when zig_rule is across_los. | 0..1 FloatRange | |
| parameterRanges__min_range_m Geometries closer than this at any sample are redrawn. | 1..1 float | |
| parameterRanges__noise_sigma_rad_values σ drawn uniformly from this set. | 1..* float | |
| parameterRanges__ownship_speed_mps | 1..1 FloatRange | |
| parameterRanges__ownship_turn_rate_rad_s Turn rate drawn uniformly per scenario; absent means an instantaneous zig. | 0..1 FloatRange | |
| parameterRanges__range_distribution | 1..1 RangeDistribution | |
| parameterRanges__target_course_change_count_weights Generator 0.5.0 (SRD Annex C §C.2): probabilities of 0, 1, 2, … target course changes (summing to 1). Present: every scenario draws its manoeuvres this way, with target_manoeuvre_angle_abs_rad, target_turn_rate_rad_s, target_manoeuvre_after_zig_s and target_manoeuvre_margin_s, and target_manoeuvre_fraction must be absent. | 0..* float | |
| parameterRanges__target_manoeuvre_after_zig_s Earliest start of the target's turn, after the first sample on leg 2. | 0..1 float | |
| parameterRanges__target_manoeuvre_angle_abs_rad Absolute target course change; the sign is uniform ±. | 0..1 FloatRange | |
| parameterRanges__target_manoeuvre_fraction Probability a scenario's target makes one course change (generator 0.4.0, SRD Annex B §B.2); absent means the target always holds course, as generators 0.1.0–0.3.0. When present, every scenario draws the manoeuvre parameters (so the PRNG is consumed alike) and the window must fit a turn whether or not one is made. | 0..1 float | |
| parameterRanges__target_manoeuvre_margin_s Least time from the end of the target's turn to the end of the window, so the gate point (manoeuvre + 5 min) is reached. | 0..1 float | |
| parameterRanges__target_manoeuvre_spacing_s Least time from the end of one target manoeuvre to the start of the next. | 0..1 float | |
| parameterRanges__target_range0_m | 1..1 FloatRange | |
| parameterRanges__target_speed_change_abs_mps Absolute speed change; its sign is uniform ±, flipped if the new speed would leave target_speed_mps (redrawn if both signs would). | 0..1 FloatRange | |
| parameterRanges__target_speed_change_fraction Probability of one target speed change (generator 0.5.0). | 0..1 float | |
| parameterRanges__target_speed_change_rate_mps2 Magnitude of the target's acceleration during a speed change. | 0..1 FloatRange | |
| parameterRanges__target_speed_mps | 1..1 FloatRange | |
| parameterRanges__target_turn_rate_rad_s Target turn rate, drawn uniformly per scenario. | 0..1 FloatRange | |
| parameterRanges__window_s | 1..1 FloatRange | |
| parameterRanges__zig2_delay_s Delay from the start of leg 2 to the second turn; absent means one zig. The second zig follows zig_rule (and uses the same turn rate as the first). | 0..1 FloatRange | |
| parameterRanges__zig_angle_abs_rad | 1..1 FloatRange | |
| parameterRanges__zig_fraction | 1..1 FloatRange | |
| parameterRanges__zig_rule How each zig is chosen; absent means random (generators 0.1.0–0.2.0). Under across_los zig_angle_abs_rad is still drawn but not used. | 0..1 ZigRule | |
| platformState__course_rad | 1..1 float | |
| platformState__speed_mps | 1..1 float | |
| platformState__timestamp_s | 1..1 float | |
| platformState__x_m | 1..1 float | |
| platformState__y_m | 1..1 float | |
| predictionHeader__dataset_digest SHA-256 of the truth file. | 1..1 string | |
| predictionHeader__estimator | 1..1 string | |
| predictionHeader__inputs The prediction files a derived estimator was built from, such as a hybrid's tracker and network files (schema 0.17.0; written by tma-hybrid-track). Gates check each against the files they are given. | 0..* PredictionInput | |
| predictionHeader__mode | 1..1 PredictionMode | |
| predictionHeader__model_weights_sha256 SHA-256 (hex) of the weights.bin of the model that made these predictions (schema 0.17.0; written by tma-model-predict). Gates check it against the bound model. | 0..1 string | |
| predictionHeader__record | 1..1 RecordKind | |
| predictionHeader__schema_version | 1..1 string | |
| predictionInput__estimator | 1..1 string | |
| predictionInput__sha256 SHA-256 (hex) of the input file. | 1..1 string | |
| predictionRow__converged | 1..1 boolean | |
| predictionRow__course_rad | 1..1 float | |
| predictionRow__course_sd_rad Stated standard deviation of the course estimate (schema 0.20.0, spec 018): from a tracker's covariance by the delta method, written only under the -sd name suffix. | 0..1 float | |
| predictionRow__iterations | 0..1 integer | |
| predictionRow__log_range_sd Standard deviation of the estimator's log range (natural log; about the relative range error), from a velocity_gaussian network (spec 012). Absent for other estimators. | 0..1 float | |
| predictionRow__p_manoeuvre The estimator's probability that the target's turn has started by this timestep (velocity_two_hypothesis networks only; spec 011). Absent for other estimators. | 0..1 float | |
| predictionRow__range_m | 1..1 float | |
| predictionRow__speed_mps | 1..1 float | |
| predictionRow__speed_sd_mps Stated standard deviation of the speed estimate (schema 0.20.0, spec 018). | 0..1 float | |
| predictionRow__timestamp_s | 1..1 float | |
| predictionRow__vx_sd_mps Standard deviation of the estimated east velocity (velocity_gaussian only). | 0..1 float | |
| predictionRow__vy_sd_mps Standard deviation of the estimated north velocity (velocity_gaussian only). | 0..1 float | |
| predictionRow__x_m | 1..1 float | |
| predictionRow__y_m | 1..1 float | |
| prediction__estimator | 1..1 string | |
| prediction__mode | 1..1 PredictionMode | |
| prediction__record | 1..1 RecordKind | |
| prediction__rows | 1..* PredictionRow | |
| prediction__scenario_index | 1..1 integer | |
| scenarioMetadata__index Scenario index within the dataset. | 1..1 integer | |
| scenarioMetadata__manoeuvre_index First timestep after the target's turn completes (generator 0.4.0; absent when the target holds course). Gate G4 counts time from here, as earlier gates count from zig_index. Under generator 0.5.0, after the last manoeuvre completes. | 0..1 integer | |
| scenarioMetadata__manoeuvre_start_index First timestep after the target's turn starts (generator 0.4.0; absent when the target holds course). Under generator 0.5.0, after the first manoeuvre starts. | 0..1 integer | |
| scenarioMetadata__manoeuvres Generator 0.5.0: each target manoeuvre's sample span, in time order (present, possibly empty, only under 0.5.0). | 0..* ManoeuvreSpan | |
| scenarioMetadata__mean_range_m | 1..1 float | |
| scenarioMetadata__min_range_m | 1..1 float | |
| scenarioMetadata__parameters | 1..1 ScenarioParameters | |
| scenarioMetadata__samples Number of timesteps (60–240). | 1..1 integer | |
| scenarioMetadata__seed Scenario seed as a decimal uint64 string. | 1..1 string | |
| scenarioMetadata__turn2_start_index First timestep after the second turn starts (absent with one zig or no turn rate). | 0..1 integer | |
| scenarioMetadata__turn_start_index First timestep after the turn starts (absent for an instantaneous zig). | 0..1 integer | |
| scenarioMetadata__zig2_index First timestep on leg 3, after the second turn completes (absent with one zig). Gate times still count from zig_index. | 0..1 integer | |
| scenarioMetadata__zig_index First timestep on leg 2 (with a rate-limited turn, the first after it completes). | 1..1 integer | |
| scenarioMetadata__zig_time_s | 1..1 float | |
| scenarioParameters__bearing_error Realistic bearing error (generator 0.6.0); absent = white noise only. | 0..1 BearingErrorModel | |
| scenarioParameters__dropout_fraction Probability each bearing is missing. | 1..1 float | |
| scenarioParameters__dt_s Bearing interval. | 1..1 float | |
| scenarioParameters__noise_sigma_rad Bearing noise σ; 0 = noise-free. | 1..1 float | |
| scenarioParameters__ownship_course0_rad Ownship course on leg 1. | 1..1 float | |
| scenarioParameters__ownship_speed_mps | 1..1 float | |
| scenarioParameters__ownship_turn_rate_rad_s Ownship turn rate at the zig (rate-limited turn, spec 003 US6). Absent or 0: the course changes instantaneously, as in generator 0.1.0. | 0..1 float | |
| scenarioParameters__target_bearing0_rad True bearing at window start. | 1..1 float | |
| scenarioParameters__target_course_rad | 1..1 float | |
| scenarioParameters__target_manoeuvre_angle_rad Signed target course change; positive is clockwise. | 0..1 float | |
| scenarioParameters__target_manoeuvre_time_s Target course change (generator 0.4.0, SRD Annex B §B.2): time the target's turn starts, a whole number of samples. Absent: the target holds course. | 0..1 float | |
| scenarioParameters__target_manoeuvres Target manoeuvres in time order (generator 0.5.0, SRD Annex C §C.2), none overlapping. Present (possibly empty) only under generator 0.5.0 ranges; then the single-turn fields above are absent. | 0..* TargetManoeuvre | |
| scenarioParameters__target_range0_m Range at window start. | 1..1 float | |
| scenarioParameters__target_speed_mps | 1..1 float | |
| scenarioParameters__target_turn_rate_rad_s Target turn rate through its course change. | 0..1 float | |
| scenarioParameters__window_s Window length; multiple of dt_s. | 1..1 float | |
| scenarioParameters__zig2_angle_rad Signed course change at the second zig; positive is clockwise. | 0..1 float | |
| scenarioParameters__zig2_delay_s Second zig (generator 0.3.0, spec 007): time from the first sample on leg 2 to the start of the second turn. Absent: one zig, two legs. | 0..1 float | |
| scenarioParameters__zig_angle_rad Signed course change at the zig; positive is clockwise. | 1..1 float | |
| scenarioParameters__zig_fraction Zig time as a fraction of the window. | 1..1 float | |
| scenario__metadata | 1..1 ScenarioMetadata | |
| scenario__observations | 1..* Observation | |
| scenario__ownship | 1..1 Track | |
| scenario__record | 1..1 RecordKind | |
| scenario__target | 1..1 Track | |
| targetManoeuvre__change Signed change: course in rad (positive clockwise) or speed in m/s (positive faster). | 1..1 float | |
| targetManoeuvre__kind | 1..1 ManoeuvreKind | |
| targetManoeuvre__rate Magnitude of the rate of change, rad/s (course) or m/s² (speed). | 1..1 float | |
| targetManoeuvre__start_time_s Time the manoeuvre starts, a whole number of samples. | 1..1 float | |
| track__id | 1..1 TrackId | |
| track__states | 1..* PlatformState | |
| trainingConfig__batch_size | 1..1 integer | |
| trainingConfig__bucket_batches Batches per length-bucketing group (default 16). | 0..1 integer | |
| trainingConfig__feature_set Input channel set; absent means raw. Must match the features files. | 0..1 FeatureSet | |
| trainingConfig__id Estimator name used in predictions. | 1..1 string | |
| trainingConfig__kernel_size Causal CNN kernel size. | 0..1 integer | |
| trainingConfig__layers Stacked layers: causal CNN conv layers (no dilation; default 3), or recurrent layers for instantaneous and time_late (default 1; each returns sequences; spec 003 R20). | 0..1 integer | |
| trainingConfig__learning_rate | 1..1 float | |
| trainingConfig__length_bucketing Length bucketing (research R15; default false). Each group of bucket_batches batches of the epoch's seeded permutation is sorted by valid length, cut into batches whose rows are trimmed to the longest window, and the batch order is shuffled with a seed derived from train_seed and the epoch. The model takes a variable time dimension. Not for mlp. | 0..1 boolean | |
| trainingConfig__loss_weight_course | 1..1 float | |
| trainingConfig__loss_weight_manoeuvre Weight of the turn-probability cross-entropy term (velocity_two_hypothesis only; spec 011). Absent means 1. | 0..1 float | |
| trainingConfig__loss_weight_range | 1..1 float | |
| trainingConfig__loss_weight_speed | 1..1 float | |
| trainingConfig__max_epochs | 1..1 integer | |
| trainingConfig__max_wall_s Wall-clock cap in seconds. | 1..1 float | |
| trainingConfig__model_kind | 1..1 ModelKind | |
| trainingConfig__output_parameterisation Output encoding; absent means course_speed. With velocity, loss_weight_speed weights each velocity component and loss_weight_course is unused (spec 008). | 0..1 OutputParameterisation | |
| trainingConfig__patience Epochs without validation improvement before stopping. | 1..1 integer | |
| trainingConfig__shuffle_labels Permute targets across scenarios (leakage check). | 1..1 boolean | |
| trainingConfig__tfjs_threads TensorFlow intra-op and inter-op thread count, set by tma-train through TF_NUM_INTRAOP_THREADS and TF_NUM_INTEROP_THREADS before tfjs-node loads. Absent: the TensorFlow default (one per core) or whatever the environment sets. | 0..1 integer | |
| trainingConfig__train_limit Use only the first N training scenarios (tests and smoke runs). | 0..1 integer | |
| trainingConfig__train_seed Decimal uint64; derives initializer seeds and batch order. | 1..1 string | |
| trainingConfig__units LSTM units (per direction), conv filters or dense width. | 1..1 integer | |
| trainingConfig__velocity_scale_mps Velocity scale in m/s for the velocity parameterisation (required with it): the top of the generator's target speed range, a constant of the problem, never a truth statistic. | 0..1 float | |
| uncertaintyCalibration__estimator | 1..1 string | |
| uncertaintyCalibration__output "log_range", "course" or "speed". | 1..1 string | |
| uncertaintyCalibration__q50 Multiplier for the 50% interval. | 1..1 float | |
| uncertaintyCalibration__q90 Multiplier for the 90% interval. | 1..1 float |
Enums
FeatureSet
Model input channel sets (spec 003 R6).
| Text | Meaning: | Description |
|---|---|---|
| derived | None | raw plus bearing_rate_scaled, rate_valid and intercept_scaled (13 channels), computed causally from bearings and ownship states up to each row. |
| raw | None | Iteration-1 layout, 10 input channels. |
Used by
GateId
| Text | Meaning: | Description |
|---|---|---|
| G0 | None | Pipeline verified. |
| G1 | None | |
| G2 | None | |
| G3 | None | |
| G4 | None | Better than the tuned tracker after a target turn (SRD Annex B §B.4). |
| G5 | None | An end-to-end tracker better than the re-tuned reference overall, at most 10% worse when settled (SRD Annex C §C.5). |
| G6 | None | A manoeuvre detector from frozen models faster than a CUSUM on the reference's innovations at matched false alarms (SRD Annex C §C.12). |
| G7 | None | Calibrated uncertainty: the fused tracker's recalibrated intervals cover their nominal level and are narrower than the reference's (SRD Annex C §C.13). |
Used by
GateResult
| Text | Meaning: | Description |
|---|---|---|
| fail | None | |
| inconclusive | None | The 95% bootstrap interval straddles the threshold (G1 report, T033). |
| pass | None |
Used by
ManoeuvreKind
What a target manoeuvre changes (generator 0.5.0, SRD Annex C §C.2).
| Text | Meaning: | Description |
|---|---|---|
| course | None | A rate-limited course change at constant speed (an arc). |
| speed | None | A constant-acceleration speed change on a constant course. |
Used by
ModelKind
Model families of SRD §4.
| Text | Meaning: | Description |
|---|---|---|
| causal_cnn | None | Causal 1-D CNN control for the instantaneous variant. |
| instantaneous | None | Causal single-layer LSTM (operator's running solution). |
| learned_gain_filter | None | Phase 4 tracker T1 (spec 012, SRD Annex C §C.4): a constant-velocity filter with a bearings-only update whose gain a GRU of units computes each step, in one declared filter layer (constitution 1.3.0). Reads the raw feature set; outputs the velocity parameterisation. |
| mlp | None | MLP over the flattened window, control for the time-late variant. |
| time_late | None | Bidirectional LSTM over the whole window. |
Used by
OutputParameterisation
How the model's four output channels encode the target's course and speed (spec 008).
| Text | Meaning: | Description |
|---|---|---|
| course_speed | None | log_range_km, course_sin, course_cos, speed / speed_scale_mps (iterations 1–3). |
| velocity | None | log_range_km, vx / velocity_scale_mps, vy / velocity_scale_mps, and a fourth channel that carries no loss and is ignored; course and speed are derived from (vx, vy). |
| velocity_gaussian | None | Spec 012 (phase 4, tracker T2): six channels per row. log_range_km, vx, vy (as velocity), then the log-variance of each, trained by the Gaussian negative log-likelihood. The reported estimate is the mean; prediction rows carry the standard deviations (log_range_sd, vx_sd_mps, vy_sd_mps), reported and their calibration measured, never gated. |
| velocity_two_hypothesis | None | Spec 011 (phase 3b): seven channels per row. log_range_km, vx, vy (as velocity) under the hypothesis that the target has not turned; the same under the hypothesis that it has; and a logit of P(the target's turn has started by this row). Each hypothesis is trained only on rows where it is true (the label comes from the stored truth course); the logit by binary cross-entropy. The reported estimate is the more probable hypothesis's, never an average. |
Used by
PredictionMode
| Text | Meaning: | Description |
|---|---|---|
| final | None | One row at the last timestep of the window. |
| per_timestep | None | One row per post-zig timestep using bearings up to that time. |
Used by
RangeDistribution
| Text | Meaning: | Description |
|---|---|---|
| log_uniform | None | |
| uniform | None |
Used by
RecordKind
Discriminator for records in NDJSON files.
| Text | Meaning: | Description |
|---|---|---|
| detection | None | One Detection (schema 0.19.0, spec 017). |
| header | None | Dataset or prediction file header (first line). |
| prediction | None | One Prediction. |
| scenario | None | One Scenario. |
Used by
- DatasetHeader datasetHeader__record 1..1
- DetectionHeader detectionHeader__record 1..1
- Detection detection__record 1..1
- PredictionHeader predictionHeader__record 1..1
- Prediction prediction__record 1..1
- Scenario scenario__record 1..1
Split
Dataset split. Train/validation/test are 80/10/10 by scenario index.
| Text | Meaning: | Description |
|---|---|---|
| heldout | None | Held-out geometry with parameter ranges outside training. |
| test | None | |
| train | None | |
| validation | None |
Used by
StopReason
| Text | Meaning: | Description |
|---|---|---|
| diverged | None | |
| early_stopping | None | |
| max_epochs | None | |
| wall_clock | None |
Used by
TrackId
| Text | Meaning: | Description |
|---|---|---|
| ownship | None | |
| target | None |
Used by
ZigRule
How each zig's direction and size are chosen (generator 0.3.0, spec 007).
| Text | Meaning: | Description |
|---|---|---|
| across_los | None | Turn across the line of sight: the new course puts the target on the other bow at an angle off drawn from los_offset_rad, by the shorter turn. Uses the true bearing at the last sample before the turn. |
| random | None | Size from zig_angle_abs_rad, side uniformly ±, regardless of the target. |