[bug] Орешник при разделении теряет сектор подлёта для обучения противника #32

Closed
opened 2026-10-29 12:25:08 +00:00 by chexit · 1 comment
Owner

Проверено на опубликованном 90379f6 при проверке дополнительного ревью. Незакоммиченные изменения из чужой рабочей копии недоступны.

В step_drones при создании дочерних OreshnikBlock/OreshnikSub всегда ставится sector:0, а сектор родителя не переносится через released. Затем shoot_down и обработка impacts вызывают learn(d.sector,...), записывая статистику детей в нулевой сектор независимо от реального направления удара.

Воспроизведено на исходном Sim: Oreshnik с sector=7, pos=(100,300,0), target=(0,70,0), vel=(-1,-1,0), один step_drones с неизвестным ground → шесть дочерних блоков, все с sector=0. Тест ожидания наследования sector=7 падает. Ошибка повторяется при следующем разделении.

Исправление: передавать sector родителя в released и сохранять в каждом ребёнке. Отдельно определить единицу статистики (носитель/блок/суббоеприпас), чтобы 36 детей не создавали неоговорённый вес в best_bearing.

Уточнение к чужому ревью: сам факт hits для долетевшего носителя с warhead=0 — вопрос определения «прорвался», не доказательство ущерба объекту. Потеря sector — более конкретный воспроизводимый дефект.

Код:

let a = turn0 + i as f64 * TAU / 6.0;
,
sector: 0,
.

Проверено на опубликованном `90379f6` при проверке дополнительного ревью. Незакоммиченные изменения из чужой рабочей копии недоступны. В step_drones при создании дочерних OreshnikBlock/OreshnikSub всегда ставится sector:0, а сектор родителя не переносится через released. Затем shoot_down и обработка impacts вызывают learn(d.sector,...), записывая статистику детей в нулевой сектор независимо от реального направления удара. Воспроизведено на исходном Sim: Oreshnik с sector=7, pos=(100,300,0), target=(0,70,0), vel=(-1,-1,0), один step_drones с неизвестным ground → шесть дочерних блоков, все с sector=0. Тест ожидания наследования sector=7 падает. Ошибка повторяется при следующем разделении. Исправление: передавать sector родителя в released и сохранять в каждом ребёнке. Отдельно определить единицу статистики (носитель/блок/суббоеприпас), чтобы 36 детей не создавали неоговорённый вес в best_bearing. Уточнение к чужому ревью: сам факт hits для долетевшего носителя с warhead=0 — вопрос определения «прорвался», не доказательство ущерба объекту. Потеря sector — более конкретный воспроизводимый дефект. Код: https://gitea.maoniao.team/chexit/airdef/src/commit/90379f6/airdef-mod/src/sim/mod.rs#L1375, https://gitea.maoniao.team/chexit/airdef/src/commit/90379f6/airdef-mod/src/sim/mod.rs#L1528.
chexit added the area:simulationpriority:P2type:bug labels 2026-10-29 13:11:24 +00:00
Author
Owner

🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/67a2a52 (запушено в main).

🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/67a2a52 (запушено в main).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#32