Files
airdef/docs/IMPLEMENTATION-STATUS.md
T
chexit f33b799551 Record previous-frame motion for mod models (#124)
Advance to engine 7a73e8d26: separate previous-position streams and a depth-read-only motion pass for mod models, with matching alpha cutouts and a debug view.

Co-Authored-By: Kimi Code <noreply@moonshot.ai>
2026-11-14 21:06:02 +03:00

19 KiB
Raw 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 до/после совпал); OOM в note_sams (до: 384000 SamKey/27 MiB в одной полной записи 64 РЛС; после: бюджет 32768, адаптивное прореживание без остановки записи; WASM 24002 тика/64 РЛС/60 малых волн прошёл с прежним лимитом 64 MiB); нативные регрессии и callback diagnostics/profile Требуется приёмка на Windows; без подтверждённого build identity нельзя утверждать ту же причину пользовательского сеанса; FPS/GPU не измерялись
#124 Motion foundation и object transforms: engine 7a73e8d26; Rg16Float current→previous motion в render-пикселях с jitter; TAA/TAAU используют его при совпавшей opaque depth; mod-модели имеют previous-frame transforms и отдельный read-only-depth motion pass с alpha cutout; HORIZON_HD_DEBUG_MOTION; 23 HD + layout, mods/no-mods check, реальный Metal pipeline и движущаяся С-400 проверены Это ещё не DLSS: ванильные сущности/ветер остаются camera-only; нужны linear-HDR граница, общий backend/reset и SDK. dlss_wgpu 6.0.0 совместим по wgpu30, но требует Vulkan+NGX SDK и имеет Windows build fixes; реальный RTX не проверялся; FG отдельно
#130 Первый небольшой backport: upstream f7b77fbc8 перенесён как engine 94b572cd2; oversized staging allocations округляются до степени двойки и переиспользуются, копируются только фактические байты; 3 upload/GPU readback-теста прошли на Metal Полная миграция на Nightly не начата; VSync/pacing, дальний рельеф и другие кандидаты остаются; Windows/Vulkan и долгий игровой RSS-профиль не проверялись
#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-статус не меняется после реализации.