Results: iteration 2b (G2, second attempt)
Question: does weighting speed in the loss get the iteration-2 models to the G2 speed threshold? Iteration 2b (spec 004) keeps the data, the inputs and the architectures of iteration 2 and changes one thing: every model is continued from its committed phase-B weights with the speed term of the loss weighted 4×, to 220 epochs at most with patience 6. The best epoch is re-scored under the new loss before training resumes, so the continuation has to beat the old weights on the new scale.
The gate is judged on a fresh test split (seed 202, same count and ranges), pinned by content digest in the training plan. The iteration-2 test split (seed 201) decided the first attempt and is not used again. The 2b models are the carried set by a rule fixed before training; the phase-B weights are scored beside them on the same split and reported, never gated.
The thresholds, the σ = 1° slice, the zig + 600 s coverage and the pass / fail / inconclusive rule are as on the iteration-2 page.
Speed still fails for both models, by less. The instantaneous model is at 1.77 kt [1.68, 1.83] and the time-late model at 1.77 kt [1.67, 1.86], against 1 kt; phase B on the same scenarios is at 2.02 kt and 2.31 kt. Classical reaches 0.60 kt, at the Cramér–Rao bound.
Range and course pass for both models: 14.6% / 8.22° instantaneous and 15.8% / 8.66° time-late. The time-late model's course failure from iteration 2 is gone, and it now passes its G1 ratio check cleanly. Its "not worse than instantaneous" check fails at 2 of 19 points without an interval; the paired intervals contain the slack. Read it as the G1 caveat persisting: the time-late model is slightly worse than the instantaneous one at 17 of 19 points, not better.
By range band the models are ahead of classical beyond 10 km only at zig + 300 s, and on the σ = 1° slice only because classical's non-converged scenarios count against it; at zig + 600 s classical is better in every band. Target speeds above ownship's 15 kt map to normalised targets above 1, where the models' shrinkage is worst; the output scaling was not changed in 2b.
Full record:
review.md,
the validation note
validation.md
and the write-up.
Experiment 20261015-i2c-g2 (attempt 2; earlier attempts below): machine verdict G2 fail (agent review panel, round 2 (no rejections; no open blocker or major findings): G2 FAIL (SRD §5); speed fails for both variants (CI wholly above 1 kt: 1.77 kt [1.68, 1.83] and 1.77 kt [1.67, 1.86]); range and course pass for both; see review.md).
| Check | Result | Detail |
|---|---|---|
g2-instantaneous-range | pass | instantaneous lstm-instantaneous median range error 0.1461 vs threshold 0.2 on sigma=1deg at zig+300s; 95% CI [0.1413, 0.1520] (bootstrap, 2000 resamples, n 4682); model n 4682, excluded 329 (93.4% of the slice reach zig+300s; decision 13); naive 0.3787 (n 4682, excluded 329), classical 0.0845 (n 4682, excluded 329) |
g2-instantaneous-course | pass | instantaneous lstm-instantaneous median course error 8.2203° vs threshold 10° on sigma=1deg at zig+300s; 95% CI [7.8796, 8.5362] (bootstrap, 2000 resamples, n 4682); model n 4682, excluded 329 (93.4% of the slice reach zig+300s; decision 13); naive 90.4037 (n 4682, excluded 329), classical 3.3111 (n 4682, excluded 329) |
g2-instantaneous-speed | fail | instantaneous lstm-instantaneous median speed error 1.7669 kt vs threshold 1 kt on sigma=1deg at zig+600s; 95% CI [1.6839, 1.8334] (bootstrap, 2000 resamples, n 2973); model n 2973, excluded 2038 (59.3% of the slice reach zig+600s; decision 13); naive 4.2236 (n 2973, excluded 2038), classical 0.6025 (n 2973, excluded 2038) |
g2-time-late-range | pass | time-late bilstm-time-late median range error 0.1579 vs threshold 0.2 on sigma=1deg at zig+300s; 95% CI [0.1521, 0.1622] (bootstrap, 2000 resamples, n 4682); model n 4682, excluded 329 (93.4% of the slice reach zig+300s; decision 13); naive 0.3787 (n 4682, excluded 329), classical 0.0845 (n 4682, excluded 329) |
g2-time-late-course | pass | time-late bilstm-time-late median course error 8.6621° vs threshold 10° on sigma=1deg at zig+300s; 95% CI [8.2859, 9.0289] (bootstrap, 2000 resamples, n 4682); model n 4682, excluded 329 (93.4% of the slice reach zig+300s; decision 13); naive 90.4037 (n 4682, excluded 329), classical 3.3111 (n 4682, excluded 329) |
g2-time-late-speed | fail | time-late bilstm-time-late median speed error 1.7729 kt vs threshold 1 kt on sigma=1deg at zig+600s; 95% CI [1.6731, 1.8582] (bootstrap, 2000 resamples, n 2973); model n 2973, excluded 2038 (59.3% of the slice reach zig+600s; decision 13); naive 4.2236 (n 2973, excluded 2038), classical 0.6025 (n 2973, excluded 2038) |
g1-instantaneous | pass | lstm-instantaneous median range error 0.1579 vs limit 0.1886 (0.5 × naive 0.3772) at zig+300s; n 9342 (naive 9342), excluded 658 (naive 658); model/naive 0.418, 95% CI [0.405, 0.432] (paired bootstrap, 2000 resamples, n 9342) |
g1-time-late | pass | bilstm-time-late median range error 0.1620 vs limit 0.1886 (0.5 × naive 0.3772) at zig+300s; n 9342 (naive 9342), excluded 658 (naive 658); model/naive 0.430, 95% CI [0.419, 0.443] (paired bootstrap, 2000 resamples, n 9342) |
time-late-not-worse | fail | 2/19 points worse: t=840s 0.1390 > 0.1318; t=960s 0.1483 > 0.1405 (4 later points with n < 500 reported, not gated) |
instantaneous-beats-control | pass | lstm-instantaneous vs cnn-causal-control median range error — zig+300s: 0.1579 vs 0.2787, final: 0.1539 vs 0.2849 |
time-late-beats-control | pass | bilstm-time-late vs mlp-control median range error — zig+300s: 0.1620 vs 0.2593, final: 0.1685 vs 0.2761 |
shuffled-labels-at-naive | pass | lstm-instantaneous-shuffled median range error 0.3774 = 1.000 × naive 0.3772 (allowed 1 ± 0.1) at zig+300s; course error median 70.0° vs naive 90.8° (reported, not gated) |
Model / naive at the G1 point
Median range error of each model divided by naive's, 5 minutes after the zig, with a paired bootstrap 95% interval. G1 passes only if the whole interval is below 0.5; an interval that straddles 0.5 is inconclusive.
| Model | Ratio | 95% interval | n |
|---|---|---|---|
classical | 0.316 | [0.303, 0.331] | 9342 |
bilstm-time-late | 0.430 | [0.419, 0.443] | 9342 |
cnn-causal-control | 0.739 | [0.721, 0.758] | 9342 |
lstm-instantaneous | 0.418 | [0.405, 0.432] | 9342 |
lstm-instantaneous-shuffled | 1.000 | [0.989, 1.016] | 9342 |
mlp-control | 0.687 | [0.672, 0.707] | 9342 |
Error against time since the zig
Dashed lines are the naive and classical baselines; test split, all scenarios.
- ━ naive
- ━ classical
- ━ bilstm-time-late
- ━ cnn-causal-control
- ━ lstm-instantaneous
- ━ lstm-instantaneous-shuffled
- ━ mlp-control
Metrics by noise slice and point
Brackets: bootstrap 95% interval of the median (σ and overall slices at zig + 300 s and zig + 600 s).
| Estimator | n | Median range error | P90 range error | Median course error | Median speed error | Gross-error rate |
|---|---|---|---|---|---|---|
naive | 4682 | 37.9% [36.9%, 38.8%] | 151.9% | 90.4° [88.1°, 93.2°] | 4.17 kt [4.05 kt, 4.27 kt] | 34.8% |
classical | 4682 | 8.4% [8.1%, 8.9%] | 55.3% | 3.3° [3.1°, 3.6°] | 1.17 kt [1.11 kt, 1.24 kt] | 11.1% |
bilstm-time-late | 4682 | 15.8% [15.2%, 16.2%] | 42.4% | 8.7° [8.3°, 9.0°] | 2.12 kt [2.05 kt, 2.19 kt] | 6.9% |
cnn-causal-control | 4682 | 28.0% [26.9%, 28.8%] | 72.9% | 22.0° [21.0°, 22.7°] | 3.67 kt [3.55 kt, 3.79 kt] | 18.7% |
lstm-instantaneous | 4682 | 14.6% [14.1%, 15.2%] | 41.2% | 8.2° [7.9°, 8.5°] | 2.11 kt [2.04 kt, 2.18 kt] | 6.8% |
lstm-instantaneous-shuffled | 4682 | 38.4% [37.3%, 39.4%] | 123.6% | 70.6° [68.3°, 73.3°] | 4.15 kt [4.03 kt, 4.25 kt] | 33.8% |
mlp-control | 4682 | 26.3% [25.5%, 27.1%] | 63.4% | 15.1° [14.5°, 15.8°] | 3.24 kt [3.13 kt, 3.33 kt] | 16.1% |
By slice
Median range error by slice:
| Estimator | 0-5pct | 5-10pct |
|---|---|---|
naive | 38.7% n 4718 | 36.8% n 4624 |
classical | 11.8% n 4718 | 12.1% n 4624 |
bilstm-time-late | 16.1% n 4718 | 16.4% n 4624 |
cnn-causal-control | 28.6% n 4718 | 27.1% n 4624 |
lstm-instantaneous | 15.8% n 4718 | 15.7% n 4624 |
lstm-instantaneous-shuffled | 38.4% n 4718 | 37.0% n 4624 |
mlp-control | 26.1% n 4718 | 25.8% n 4624 |
Held-out geometry (reported, not gated)
| Estimator | n | Median range error | P90 range error | Median course error | Median speed error | Gross-error rate |
|---|---|---|---|---|---|---|
naive | 9303 | 59.6% | 69.9% | 90.0° | 4.24 kt | 76.2% |
classical | 9303 | 48.8% | ∞ | 50.9° | 9.21 kt | 49.3% |
bilstm-time-late | 9303 | 40.8% | 56.6% | 32.1° | 3.58 kt | 24.7% |
cnn-causal-control | 9303 | 54.3% | 65.6% | 49.3° | 4.10 kt | 63.9% |
lstm-instantaneous | 9303 | 38.6% | 57.1% | 34.5° | 3.58 kt | 23.2% |
lstm-instantaneous-shuffled | 9303 | 63.9% | 73.3% | 84.3° | 4.23 kt | 83.0% |
mlp-control | 9303 | 50.5% | 65.0% | 42.9° | 3.95 kt | 51.3% |
Earlier attempts
Kept on record; the latest attempt is shown above.
| Experiment | Machine verdict | Decided by | Model / naive, 95% interval |
|---|---|---|---|
20261014-i2-g2 (review) | fail | agent review panel, round 2 (no rejections; no open blocker or major findings): G2 FAIL (SRD §5); speed fails for both variants (CI wholly above 1 kt), time-late course and g1-time-late also fail; see review.md | classical 0.330 [0.316, 0.344]bilstm-time-late 0.514 [0.500, 0.529]cnn-causal-control 0.747 [0.732, 0.766]lstm-instantaneous 0.472 [0.458, 0.484]lstm-instantaneous-shuffled 1.015 [1.001, 1.029]mlp-control 0.703 [0.686, 0.720] |