The crossing, frame by frame
Seemorgh operator console · Overview · 1 The crossing · 2 Sensors · 3 Fusion · 4 AI layer · 5 Checks · 6 Beyond the scenario
A hostile drone flies south toward the ground station at 60 m/s, holding 320 m. A friendly interceptor climbs north to meet it at 59 m/s. Their horizontal paths close at about 118 m/s and pass within 143 m at t=74. In every one of the fifteen crossing frames, the engine kept them as two correctly classified tracks. At the closest point, it did so by refusing one report it couldn’t place.
At t=74 the interceptor is 69 m lower, but association works in the horizontal plane only, so for the engine the two aircraft are 143 m apart and nothing else. At that separation the long-range radar’s ellipse of a few hundred metres covers both aircraft, and so can a plot’s. A fused picture that is going to go wrong goes wrong here: one track absorbing the other’s reports, or one aircraft vanishing into the other.
Part of the Seemorgh operator console project.
The fifteen frames
In every frame from t=67 to t=81, the engine produced one hostile track, one friendly track and the unknown contact, each correctly classified, with the hostile at priority 1.
| t | Separation | Hostile σ | Friendly σ | Reports left out |
|---|---|---|---|---|
| 67 | 841 m | ±31.7 m | ±3.1 m | — |
| 68 | 734 m | ±30.5 m | ±3.2 m | — |
| 69 | 631 m | ±23.2 m | ±3.2 m | — |
| 70 | 493 m | ±24.1 m | ±3.2 m | — |
| 71 | 413 m | ±30.5 m | ±3.1 m | — |
| 72 | 291 m | ±21.6 m | ±3.3 m | — |
| 73 | 183 m | ±22.4 m | ±3.3 m | — |
| 74 | 146 m | ±37.5 m | ±3.2 m | one of the drone’s plots |
| 75 | 175 m | ±29.3 m | ±3.0 m | one of the interceptor’s plots |
| 76 | 199 m | ±25.2 m | ±3.3 m | — |
| 77 | 373 m | ±21.0 m | ±3.1 m | — |
| 78 | 500 m | ±24.7 m | ±3.4 m | — |
| 79 | 622 m | ±26.8 m | ±3.4 m | — |
| 80 | 725 m | ±27.9 m | ±3.4 m | — |
| 81 | 844 m | ±27.9 m | ±3.0 m | — |
Separation is between the two fused positions, so it carries the hostile track’s noise. Reports from real objects only; the three clutter plots in each frame are always left out.
The friendly track hardly notices the crossing: its precision tracker keeps it at about ±3 m throughout. The hostile track has no sharp sensor, so its σ moves with whichever reports it gets.
t=74: the plot that fitted the wrong aircraft
On the map, the withheld plot sits close to the drone, about 27 m from the drone’s fused position. That isn’t what the engine compares it with. Plots attach against groups seeded from the identity-bearing reports, before anything is fused. Against those, the plot is about 51 m from the interceptor’s C2 report and 67 m from the drone’s. C2 reports carry 60 m of noise per axis, and at t=74 the interceptor’s C2 report happens to sit about 76 m from its own fused position, toward the drone.
Metres aren’t what decides, though. The engine uses the statistical distance to each group’s best-fitting member. For the interceptor’s group that is its C2 report: 51 m against a combined σ of about 91 m. For the drone’s group it is the long-range radar track: 166 m away, but with an ellipse of a few hundred metres that makes 166 m look close.
On 30 October 2026 the frame was rerun read-only. The rerun imported the engine unchanged, measured its association steps from outside, and reproduced the recorded tracks exactly.
| Candidate group | To its best-fitting member | To its sharpest member | Passes both gates (< 9.21)? |
|---|---|---|---|
| Friendly interceptor | 0.32 (its C2 report) | 6.50 (the precision track) | Yes |
| Hostile drone | 0.40 (its long-range radar track) | 0.55 (its C2 report) | Yes |
| Unknown contact | 1,413 | — | No |
The best fit was the wrong aircraft. The second-best was only 1.27 times the best, well inside the factor of 2 the ambiguity rule requires, so the plot joined neither group.
A rule that took the best fit would have put the drone’s return into the friendly track. That would have moved the friendly track’s position by only about half a metre, since its precision tracker dominates. The damage would have been to the evidence: the friendly track would have listed one of the hostile drone’s returns among the reports it rests on, at exactly the moment an operator most needs that list to be right.
FT-001’s evidence panel in the recorded replay at t=74: what the hostile track rests on. The panel lists source systems, so the drone’s remaining plot keeps raw_plots on the list.
What leaving it out cost
The drone’s track at t=74 rests on one plot instead of two. Its modelled σ is ±37.5 m, the highest it reaches in the whole run: in the other 90 frames it ranges from ±21.0 m to ±34.4 m, with a mean of ±26.2 m. Its confidence heuristic, 0.755, is also its lowest of the run. That is consistent with the missing plot, though no rerun with the plot forced in was made, so it isn’t isolated.
The actual position didn’t suffer. Against the scenario’s truth, the drone’s fused position at t=74 is 11.8 m off, against a run average of 30.9 m. The engine became less sure of itself at the crossing without becoming less accurate, which is the right direction for an error to go.
Three withheld reports in the whole run
Across all 91 frames the engine received 1,092 reports from real objects. It left out exactly three:
- t=40: one of the interceptor’s plots. The aircraft are 4 km apart, so this isn’t the crossing ambiguity. Why it was left out wasn’t measured.
- t=74: one of the drone’s plots, measured above.
- t=75: one of the interceptor’s plots, the frame after. Not measured.
What the tests assert here
The scenario encodes in every report’s ID which object produced it. The engine never reads those IDs; the tests decode them to check the engine’s output against the truth. The tests require:
- in all 91 frames, that no track’s identity-bearing reports come from two objects, and that each object is exactly one, correctly classified track
- at t=73, 74 and 75, that every report in every track comes from one object, plots and RF fixes included
- at seven crossing frames, exactly one hostile and one friendly track
The test file’s own comments record that full plot attribution at the crossing was originally expected to fail. Requiring a plot to fit the group’s sharpest member, and withholding ambiguous plots, made it pass. Coverage and gaps are on How it was checked.
The decision at t=74 is drawn out as a reusable rule in the note When a report fits two tracks, leave it out.
Basis: the recorded frames t=0 to t=90 in the public replay data; the read-only rerun of t=74 on 30 October 2026, which matched the recording; the timeline tests and audit in the FUSE package at the export commit named in the replay README (private source); and the scenario’s stated truth paths. Separations, ranges and errors to truth are computed from the recorded positions. The half-metre shift is an estimate from the recorded information weights, not a rerun.
Previous: Overview · Next: Five sensors that disagree
