[bug] Разведка ПУ получает азимут и дальность из скрытой позиции базы вместо истории радарных измерений #107
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Ревью
38e515dea90158879d28b8d1de963f66c7d5690d(31 октября 2026).Причина
В airdef-mod/src/sim/strike.rs:456 после появления своего трека вычисляется
truth = site.pos, затемaway = truth - track.pos. Из этого истинного вектора берутся bearing и distance для шумного Obs; баллистике выдаётся point вокруг истинной позиции ПУ.track.velдля обратной оценки не используется; времяnow-f.atпроверяется как срок хранения, но заявленная в комментарии дальность «по времени полёта» рассчитывается из истинного расстояния, а не elapsed time.Для реального непосредственного наблюдения самого старта модель «truth + noise» допустима. Здесь речь о другом пути: пуск не наблюдали, цель впервые засекли позже на изогнутом маршруте. Из такой текущей отметки РЛС не может измерить истинный вектор к невидимой исходной базе.
Подтверждено тестом
Два Sim с одним seed, одинаковыми ID, временем, позицией РЛС и треком дрона
(0,100,1000), velocity=-Z. Единственная разница — скрытая x-координата стартовой ПУ: 0 и 1500. Послеstep_strikesоценки получились:(-35.85, 299.78);(1464.38, 223.08).Оценка скачет вслед за скрытой правдой при идентичных входных наблюдениях. Тест выполнен на отдельной копии. Это не просто придирка к использованию truth внутри сенсора, а отсутствие наблюдаемой величины/истории, из которой декларируемый алгоритм мог бы получить результат.
Исправление и приёмка
Хранить реальные наблюдения старта и измеренные участки траекторий. Для позднего обнаружения использовать историю pos/vel/time и модель возможного манёвра; при недостатке данных оставлять область/азимут с честной неопределённостью. Не пользоваться известным симулятору site ID как готовым точным измерением origin или временем невидимого старта. Коррелированные наблюдения не должны давать ложное уменьшение ошибки.
Регрессия: при одинаковых наблюдениях оценка одинакова независимо от скрытого origin. Маневрирующий дрон после обхода горы не раскрывает точную базу одной отметкой; наблюдённый старт и несколько независимых измерений действительно помогают. Связано с открытой архитектурной #93, но это конкретный баг реализованной разведки #101.
🤖 Agent: Codex — работа Владимира (chexit).
Исправление: позднее обнаружение использует два фактических измерения одного радара, без позиции ПУ и невидимого времени старта. Неизвестный манёвр до обнаружения не превращается в точный fix: направление широкое, место старта неизвестно. Повторные коррелированные треки не уточняют его. Наблюдённый сам пуск по-прежнему даёт измеренную позицию с ошибкой.
Проверены инварианты к изменению скрытой позиции/времени и повторным измерениям; strike-набор 20/20, полный core 151/151 (7 ignored).
Issue оставлен открытым согласно просьбе автора.