Skip to content

Commit ab99c6d

Browse files
[ConjunctionSSA] Document NaN no-conjunction contract
The engine emits NaN missKm/tcaOffsetS for pairs with no local minimum of separation in the look-ahead window. This is a deliberate sentinel, not an error, and the worst-case summary excludes such pairs. Undocumented until now, and the omission caused a unit test to compute Math.min over unfiltered values and assert against NaN.
1 parent d3279ac commit ab99c6d

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

src/plugins/conjunctionSSA/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,26 @@ Keplerian + J2 propagator (no external dependencies).
2121
- Tracked object: `utc`, `lat` (deg), `lon` (deg), `alt` (km), `speedKmS`.
2222
- Pair: `utc`, `missKm`, `tcaOffsetS`, `pc`, `primary`, `secondary`, `pairKey`.
2323

24+
## No-conjunction behaviour
25+
26+
A pair only yields a miss distance if the coarse scan finds a **local minimum**
27+
of separation inside the look-ahead window. Pairs in very different orbital
28+
regimes frequently have no such minimum in a 30-minute window.
29+
30+
When that happens the engine emits, for that pair:
31+
32+
- `missKm``NaN`
33+
- `tcaOffsetS``NaN`
34+
- `pc``0`
35+
36+
`NaN` is the deliberate sentinel for "no close approach found in this window",
37+
not an error. Open MCT renders it as a gap in the series. The
38+
`Worst-Case Conjunction` summary excludes these pairs, so the summary always
39+
reports a finite miss distance for the closest *converging* pair.
40+
41+
Consumers computing aggregates over pair telemetry must filter `NaN` first —
42+
`Math.min` over unfiltered values returns `NaN`.
43+
2444
## Condition Watch thresholds
2545

2646
- **RED — Maneuver review**: `missKm < 5` AND `pc > 1e-4`.

0 commit comments

Comments
 (0)