Files
airdef/docs/IMPLEMENTATION-STATUS.md
T
chexit e7934a1ebb
build / mod (push) Failing after 22s
release / windows (push) Failing after 2s
Give the enemy a structured intent and a durable route queue (#127)
Stage 2 of #127. A smart drone now carries why it is aimed where it is
(Intent: plan, sead, react, replace) apart from the aim bookkeeping
(unit, since, switches, confidence). Assignments are throttled per
adaptive tick and per contact, a fresh disclosure replaces an aim only
after a hold, within a switch cap and when the change is worth a new
route, and a killed aim is replaced as a separate, lower-priority
decision. The queue is bounded and taken by priority (plan > sead >
react > replace); unknown land is no longer free in a replanned route.

The autosave now carries the air state: the drones in flight, the launch
queue, every pending job with its id, aim, unit, version, priority,
intent and relief version, the contacts the jobs were chosen from and
the relief snapshots they plan over. The format is a versioned `air 1`
section; older saves read as before, scenarios do not carry the sky,
stale, ghost and duplicate jobs are cancelled on load, and the section is
bounded (512 drones, 512 route points, 4096 contacts, 8 reliefs, 900 KB).
A periodic save waits while a raid is only being planned.

enemy_picture() now explains targets and pending jobs (aims, aimed_by,
pending_jobs, reason, work_per_tick) in English, and intel_bench records
the queue and intent evidence next to completion, losses and failures.
2026-11-06 18:36:20 +03:00

18 KiB
Raw Permalink Blame History

Состояние исходных 16 задач

Ветка kimi-work, 6 ноября 2026. Issues остаются открытыми по просьбе владельца. «Реализовано» ниже означает проверенный объём кода, а не закрытие issue и не подтверждение всех платформ.

Новый проверенный объём: продолжение пяти задач 4 ноября. #87: typed battery/world/damage diagnostics и адаптеры текста; #91: общий content/sound catalog для Rust и Python; #102: измеренный fuel, API29 light/source milestones, API30 camera-status и изоляция камер; #96: массовый deterministic offline capture; #115: authored Lancet/Х-101 и кадры инстансов. Текущий engine pin — API30; старые номера/числа ниже описывают предыдущие этапы. Проблема нормалей модели #123 исправлена в engine 45b43f00d; парные HD-кадры и ночная проверка Lancet записаны в галерее.

Issue Реализовано Что остаётся для полной приёмки
#72 Upstream Horizon 0.2.97 объединён с форком; сохранена история; локальные тесты и Metal-полигон Windows/Linux, native HDR, сравнительная производительность
#87 Каноническое SDK-free ядро airdef-core, используется модом и сценариями Дальнейшее отделение текстового/визуального вывода домена от адаптера
#88 Типизированный журнал измеренных переходов; read-only Snapshot для Smoke/Shown; записанные пожары, позы, пуски и зажигание Перевести оставшиеся model/audio adapters и режиссёра на общий снимок; замер полной 10-минутной записи
#89 Session владеет Live/Replay/Export; явные часы/поколения; единый cleanup; задержанный звук следует часам показа; выход в заголовок завершает показ одним cleanup (хук frame, Session::world_left); движок освобождает temp/лог ошибки энкодера и не трогает готовый MP4 Реальный короткий MP4 проверен 4 ноября (звук/видео, отмена, ошибка SDK и энкодера, повторный запуск, совпадение кадров и хвоста очереди, сохранность прежнего MP4). Остаётся: 10-минутный экспорт; приёмка Windows/Linux
#91 Общий каталог доступности и потребители меню/инвентаря; явный RM48U-профиль; корректные подписи очередей; catalog/specs.json — единственный источник числовых строк, из него генерируются Rust-таблицы для мода и airdef-core, CI проверяет свежесть Варианты комплексов (разные ракеты/профили по батареям) и игровая приёмка; каталог остаётся статичными данными, не динамическим ECS
#92 Authored overrides, проверка ссылок/PNG/границ, manifest, безопасная транзакционная генерация; registry/texture/icon modules Дальнейшее ручное улучшение контента относится к #115
#96 Акустические пути; измеренные синтетические occlusion/echo/reverb fixtures; лицензии и исходные notices в архивах; настоящий MP4 с акустикой: пары on/off, статусы ready, окклюзия/поглощение и диффузный wet-остаток в замкнутой геометрии Прослушивание, игровой массовый звук/CPU, чистый хвост/RT60 в MP4; точность RT60 пока по допуску 35%, не 15%
#102 Pinned engine/API30, packer/build identity; smoke/acoustics/capture-owner/light/source/owner-scoped camera milestones; fallback/владение; WASM27 и flat stress271; измеренный callback fuel; JSON provenance/failure tests; Metal/no-audio smoke; URL/Git-регрессия; camera-ready по закодированному кадру с per-run/per-world сбросом; GPU-приёмка monitor/main-view на Metal/offscreen (Apple M5) Старое69-шаговое утверждение о перекрытии отозвано; визуальная/Windows-GPU приёмка картинки камер, полные query/voice/peak budgets, GPU/готовый MP4 и Windows-приёмка остаются
#104 Движок вынесен в chexit/horizon-airdef, ветка airdef; AirDef использует точный gitlink Отдельная Windows-проверка миграции старого standalone checkout
#107 ПУ оценивается по наблюдениям: обратный курс не выдаёт точную ПУ Повторная игровая проверка сценариев с маневрирующими целями
#110 Изменения чанков инвалидируют акустические снимки/кэш; включено в pin и проверено engine-тестами Внешняя игровая приёмка на целевых машинах
#111 Вне области расчёта источник переходит на fallback вместо старой стены; проверено engine-тестами Внешняя игровая приёмка на целевых машинах
#114 Навигация учитывает footprint и окончательную authored-геометрию; остановка перед unread frontier; угловые пересечения Массовая игровая проверка всех новых шасси на сложном рельефе
#115 Три пилота с кадрами до/после, спокойные материалы; authored-проход по боевым и вспомогательным машинам Крупные планы и точность прототипов ещё промежуточные; остальные летательные аппараты/ракеты, анимации, дальние виды и FPS
#116 Streaming не освобождает busy-guard работающего acoustic worker; проверено engine-тестами Внешняя игровая приёмка на целевых машинах
#118 Физический С-400/RM48U, четыре общие ячейки, конечные запасы; доставка и обратный вывоз ТЗМ, резерв/отмена, возврат снятой ПВО; обе фазы вывозного маршрута сохраняются; carrier/крышки/выброс/зажигание/разгон в записи; фантомное ПВО удалено Визуальная приёмка пуска и маршрутов на сложном рельефе; другие носители не добавлены без подтверждённого профиля
#128 Невыполнимый возврат RM48U (ПУ движется/повреждена, маршрут недоступен, заявку уже везёт другая ТЗМ, у склада нет места) больше не блокирует ТЗМ: заявка сохраняется, свободная ТЗМ исполняет независимые заявки на доставку; выполнимый возврат снова в приоритете; консервация боеприпасов и save-restore посреди маршрута покрыты регрессиями Игровая приёмка маршрутов на сложном рельефе остаётся за #118
#129 Единые стадии пуска: выброс без мотора (cold 20/24 тика у С-400/С-500, 8 у IRIS-T/Тора), зажигание в текущей позиции, departure с плавным ростом тяги/темпа поворота, наведение только после cold + boost; рельсовые ракеты получили spool тяги без холодного выброса, P1-SUN — без струи; RM48U согласован на 20 тиков; live/replay/export читают записанное зажигание; pk, максимальные скорости и коллизии не менялись Парные replay-MP4 до/после и кадры сняты на одном мире/seed/сценарии (Metal/offscreen); измеренный сдвиг первой вспышки 0,233 → 0,900 с. Остаётся человеческая визуальная оценка композиции, very-close план выброса; live-видео, Windows/Linux и живое прослушивание не проверялись

Для #118 RM48U — явно условный Minecraft-профиль. Существование сочетания опирается на сообщение ведомства, а игровые параметры не выдаются за реальные. ground-stock — команда подготовки sandbox-сценария, по умолчанию запас нулевой; это не автономное пополнение и не производственная экономика.

Новые находки внешнего ревью и причины отказа от неверных замечаний: REVIEW-FOLLOWUP-2026-11-02.md. Картинки и ограничения художественного прохода: MODEL-PILOTS.md.

Дополнительно по просьбе владельца: раздельная батарея и холодный пуск. Есть отдельные ПУ С-400/С-500, роли общей РЛС, цепочка подсказка → собственное измерение → пуск, сохранение конфигурации и запись крышек. Это не закрывает оставшиеся пункты художественной и платформенной приёмки.

Дополнительные задачи из ревью

Issue Реализовано Границы и оставшаяся приёмка
#119 Три read-only луча в известной геометрии ослабляют непрямой blast для корпуса/узлов/объектов; проёмы дают частичное воздействие; прямой контакт сохранён Unknown/stale: прежний урон без защиты, нулевое ожидание; partial blocks считаются занятыми кубами; GUI-проверка разрушения укрытия ещё нужна
#120 Конечное горение, powered/coast, сопротивление и снижение доступного манёвра, один остаточный pk по фактической скорости; swept-встреча; события burnout/energy loss; согласованное прекращение факела/дыма/звука Игровой профиль, без аэродинамики и реальных параметров; сравнительная выборка 12 рейдов и расширенная сетка 48 рейдов (6 вариантов × 8 seed, батареи/дальности/классы) записаны в measurements; без подтверждённого дефекта параметры не менялись; прослушивание остаётся
#121 On/Off в команде и карте, save/replay; Off не создаёт own measurements и сохраняет сетевой приём; раскрытие работающего радара наблюдателем; SEAD использует last-known и возраст Условный наблюдатель по расстоянию, без радиотехнической модели и ошибки пеленга; выбор на карте ещё не проверен в GUI
#122 Воспроизведены два класса: tick fuel exhaustion на двух максимальных составах, HD (полный обход height-cache на каждом взрыве заменён удалением нужных ключей; max135.3M/300M) и остановка в UI event на втором крупном приказе (переснимок known_units на каждом дроне заменён одним снимком на приказ и O(журнал+группировка); max command 32.9M/1e9, /stats до/после совпал); нативные тесты эквивалентности и второго приказа; WASM fixture с 4 принятыми приказами; callback diagnostics/profile Требуется приёмка на Windows; без подтверждённого build identity нельзя утверждать ту же причину пользовательского сеанса; FPS/GPU не измерялись
#127 Этапы 1–2. Картина: журнал раскрытий заменён картой контактов (Intel.contacts: последнее «пуск/излучение/глушение», место, время, метка эмиссии, наблюдённая гибель, счётчик увиденных пусков), уверенность — функция возраста (Confirmed/Probable/Doubtful, TTL 6000), угроза и цены читают только published-параметры и факты наблюдений (launcher-only без донора «слеп»), уничтожение учится только из BSA. Structured intent: Intent (Plan/Sead/React/Replace) и Aim (юнит, since, switches, confidence) отделены от random-выбора; throttle SWITCH_HOLD=160, SWITCH_CAP=3, ASSIGN_PER_TICK=16, ASSIGN_PER_CONTACT=6, цена смены SWITCH_GAIN=120; в полёте цель меняется только когда картинка её убила/забыла. Durable queue: автосейв пишет версионированную секцию air 1 — дроны, очередь запуска, задания (id, дрон, цель, юнит, версия, приоритет, намерение, версия рельефа), контакты, RLE-рельеф; очередь ограничена 256, устаревшие/фантомные/дублирующие задания отменяются при загрузке (JOB_TTL=1200), картина задания восстанавливается на свою версию, старые saves читаются (пустое небо), сценарии воздух не несут, Live/Replay не смешиваются. Неизвестная земля не бесплатна (Relief.unknown=6 у повторного плана). Объяснимость: enemy_picture() дополнен aims/pending reason/aimed_by/pending_jobs без русского текста в core. Метаморфные тесты скрытых изменений (включая нагрев/замок РЭБ), save/restore посреди незавершённой очереди, детерминизм seed, 40+ массовый ретаргет. Замеры: docs/measurements/issue-127-intent-queue-{baseline,result}.json GUI поверх enemy_picture(), игровая приёмка сохранения налёта на Windows/Linux, оценка баланса ew-adaptive (kills 59→58/59→58/56→63, потери 3→3/3→4/4→2 — следствие throttle, параметры не менялись)

По #127 реализованы карта контактов, структурированное намерение с throttle и durable-очередь: autosave хранит дронов, очередь запуска, задания с картиной и рельефом своей версии, поэтому незавершённый ретаргет продолжается после перезахода. Старые saves без секции air читаются как прежде (пустое небо), сценарии воздушное состояние не несут, replay по-прежнему хранит траектории. Ракеты-перехватчики, площадки запуска, промежуточный план, статистика волны и RNG не сохраняются — это ограничение записано в handoff.

Точные коммиты, формат сохранения, тесты и порядок продолжения: CODEX-HANDOFF.md. Формальный open-статус не меняется после реализации.