docs: hand off catalog, model, API29 and acoustics continuation
build / mod (push) Failing after 20s
build / mod (push) Failing after 20s
Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
@@ -31,6 +31,8 @@ python3 tools/airdef.py play # запустить (аргументы игр
|
||||
```
|
||||
|
||||
`all` синхронизирует URL сабмодуля из `.gitmodules`, включая обновление со старого upstream.
|
||||
Продолжение 4 ноября: [модели, границы ядра, общий каталог, API29 и массовая акустика](docs/CONTINUATION-2026-11-04.md).
|
||||
|
||||
Диагностика в игре: `/airdef capabilities` показывает доступность API, принятие запроса и
|
||||
подготовку дыма, акустики и захвата именно этого мода. Подготовка не означает готовый GPU-кадр или MP4.
|
||||
Для разработчика: `python3 tools/airdef.py test-wasm` — лёгкий ABI-тест;
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# Акустика AirDef: реализация, проверки и разбор Sound Physics Remastered (#96)
|
||||
|
||||
4 ноября добавлен opt-in массовый offline capture fixture: 100 движущихся двигателей и до
|
||||
16 импульсных источников, настоящие `Audio::tick_acoustics`/`film_mix`, две одинаковые дорожки,
|
||||
сброс хвоста при новом capture. Release на Apple M5: p50 3.55 мс, p95 4.30 мс, max 5.57 мс
|
||||
на 50 мс аудио. Геометрия и сэмплы синтетические; это не полный игровой CPU/GPU/FPS и не MP4.
|
||||
[Команда, результат и оставшаяся приёмка](CONTINUATION-2026-11-04.md),
|
||||
[JSON и SHA дорожки](measurements/mass-acoustics-2026-11-04.json).
|
||||
|
||||
Сначала приведён текущий статус реализации. Разбор SPR и первоначальный план ниже сохранены как
|
||||
история решений; формулировки будущего времени в плане не заменяют текущий статус. При расхождении прав код.
|
||||
|
||||
|
||||
@@ -4,7 +4,13 @@
|
||||
Рабочая ветка `kimi-work`; issues не закрывать, публиковать комментарии с коммитом и проверками.
|
||||
Движок — отдельный `chexit/horizon-airdef`, ветка `airdef`, подключён точным gitlink `horizon/`.
|
||||
|
||||
## Текущее состояние: 3 ноября 2026
|
||||
## Текущее состояние: 4 ноября 2026
|
||||
|
||||
Последнее продолжение пяти задач: [CONTINUATION-2026-11-04.md](CONTINUATION-2026-11-04.md).
|
||||
Движок `57f8b2853c4443f7e3ff5701600cbb262b53118f`, API29. В этом файле ниже сохранён
|
||||
исторический журнал предыдущих серий; старые SHA и числа тестов не заменяют новую контрольную точку.
|
||||
|
||||
### Контрольная точка 3 ноября
|
||||
|
||||
Код предыдущих четырёх задач интегрирован до `6e2d661`. Продолжение #102/обратного вывоза
|
||||
опубликовано до `aab3e78`; последнее продолжение расследования налётов — `2932364`.
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
# Продолжение 4 ноября: #115, #87, #91, #102, #96
|
||||
|
||||
Рабочая ветка `kimi-work`. Все issues оставлены открытыми. Работа выполнена Codex с GPT-6.1 Terra.
|
||||
Движок опубликован в `horizon-airdef:airdef`, текущий pin
|
||||
`57f8b2853c4443f7e3ff5701600cbb262b53118f`, API **29**.
|
||||
|
||||
## Изменения
|
||||
|
||||
- **#115:** authored-модели «Ланцета» и Х-101: сегментные стреловидные крылья,
|
||||
детали носа/корпуса. Элементы 17→49 и 22→30 соответственно; игровые параметры не менялись.
|
||||
`5366988`, `cfae0c1`, `914f723`. [Кадры и ограничения](AIRCRAFT-MODELS.md).
|
||||
`tools/model-preview` воспроизводит реальный `set-models`, `glow=false`; установленный
|
||||
stone-template блок не подходит для оценки света динамической модели. Полосы яркости
|
||||
на наклонных сегментах вынесены в [#123](https://gitea.maoniao.team/chexit/airdef/issues/123).
|
||||
- **#87:** `375fdf2`, `cb73cb7`, `0c870c1`: типизированный `BatteryStatus`, отчёт кэша мира
|
||||
и причины повреждений отделены от русского форматирования. Команда/карта/монитор используют
|
||||
адаптеры `battery_view`, `world_view`, `why_view`. Порядок и тексты сохранены.
|
||||
Это постепенное разделение: `CheckReason::Text`, сообщения `Out` и часть представления в ядре остаются.
|
||||
- **#91:** `eea1b36`, `1553976`, `daa9ed7`: `catalog/content.json` — идентичности техники,
|
||||
предметы и метаданные иконок; `catalog/sounds.json` — звуковые события, дальности и far-варианты.
|
||||
`gen_catalog.py` создаёт Rust-константы, Python-регистрации читают тот же источник;
|
||||
CI проверяет актуальность. Сохранены порядок позиционных сейвов, все 35 звуковых событий,
|
||||
OGG и порядок общего RNG синтезатора. Числовые `DroneSpec`/`SamSpec` остаются типизированным
|
||||
источником в Rust; полного переноса всех характеристик в JSON не было.
|
||||
- **#102:** `63aefc7`: `test-budgets` включает настоящий `--fuel-profile` и сохраняет
|
||||
`measured_fuel.callbacks`, включая ошибки. Отсутствие запрошенных счётчиков запрещает success.
|
||||
В движке `6230ec703`/`d8fa77b00` добавлены API28 point-lights-status и API29 sound-sources-status.
|
||||
Свет: заявка → cache → обработка main-view HD списка; звук: заявка → фактический apply
|
||||
source manager при live/offline output. Отдельные run/world/source epochs, clear/reload и
|
||||
отсутствие output проверены настоящими Wasmtime-гостями. Это не обещание пикселя/слышимости.
|
||||
`/airdef capabilities` показывает оба состояния (`c1a595b`).
|
||||
`57f8b2853` также устраняет коллизию камер: texture targets, scheduler, HUD/canvas/corner и
|
||||
main-view адресуются `(run_serial, local_id)`. Проверены два настоящих гостя с одинаковым ID,
|
||||
поиск target и scheduler, компиляция клиента. Camera-ready API и GPU-проверка ещё не добавлены.
|
||||
- **#96:** engine `e44ad82a9`: opt-in `audio::tests::export_moving_mass_raid` проводит
|
||||
100 движущихся двигателей и 16 импульсных источников через настоящие `Audio::tick_acoustics`
|
||||
и `film_mix`: эхо/реверб, камера, инвалидация и смена epoch, новый capture без старого хвоста.
|
||||
Два 6-секундных прогона дают одинаковые float-сэмплы; ненулевая дорожка, finite/peak и reset
|
||||
проверяются assertions. Сэмплы и геометрия синтетические, устройство звука не открывается.
|
||||
Release на Apple M5: step+mix на 50 мс аудио — p50 **3.55 мс**, p95 **4.30 мс**, max **5.57 мс**.
|
||||
[Отчёт и SHA дорожки](measurements/mass-acoustics-2026-11-04.json).
|
||||
Это не замер полного игрового CPU/GPU, не Windows FPS и не готовый MP4.
|
||||
|
||||
## Проверки и продолжение
|
||||
|
||||
Объединённый core release: **193 unit**, 7 ignored, **8 сценариев**; адаптер: **64 unit**,
|
||||
**1 boundary**, **5 сценариев**. Генераторы catalog/models, asset pipeline, sound references,
|
||||
границы моделей и 6 тестов provenance/failure отчёта проверяются отдельно. Лёгкий WASM — 27 шагов.
|
||||
Тяжёлый default fixture — 271 шаг с двумя принятыми налётами; его текущий отчёт пишет
|
||||
`python tools/airdef.py test-budgets` в `.horizon-cache/wasm-budget-report.json`.
|
||||
|
||||
Не завершены: субъективное прослушивание, настоящий MP4 с акустикой, полный 10-минутный
|
||||
replay/export, расширенная модельная/ночная/FPS приёмка, camera-ready milestone и полные
|
||||
query/voice/peak-memory бюджеты. Старый допуск broadband RT60 35% не ужесточался до 15%.
|
||||
Попытка живого MP4 в этом проходе не дала проверенного файла и за приёмку не считается;
|
||||
изолированные процессы закрыты. Продолжать с текущего pin, не с временных пакетов агентов.
|
||||
|
||||
Обновление Windows прежнее: `git switch kimi-work`, `git pull --ff-only`,
|
||||
`python tools/airdef.py all`, `python tools/airdef.py play`.
|
||||
+9
-2
@@ -63,7 +63,7 @@ runtime закреплённого движка. Используется вре
|
||||
|
||||
## Акустика и владение захватом (API 27)
|
||||
|
||||
Текущий pin: `f95f03c08ec2916a0e5bd3b2d4a2a790e7937b47` (API 27). Новые
|
||||
Текущий pin: `57f8b2853c4443f7e3ff5701600cbb262b53118f` (API 29). Акустические
|
||||
`render.acoustics-status` и `render.capture-owner-status` возвращают поколение,
|
||||
`available`, `enabled`, `request-accepted`, `prepared` и причину. В игре всё это показывает
|
||||
`/airdef capabilities`. Отсутствие запроса, выключение, ожидание backend и ошибка различаются.
|
||||
@@ -132,7 +132,14 @@ offscreen-профиля Metal. При `HORIZON_ACOUSTICS=1` + `HORIZON_NO_AUDIO
|
||||
enabled/request=true, prepared=false, awaiting-backend; HD smoke переходит в ready после подготовки
|
||||
основного кадра. Это не замер производительности и не прослушивание.
|
||||
|
||||
Остаток #102: аналогичные статусы света/камер/источников звука, полные query/voice/peak budgets,
|
||||
API28/29 добавляют отдельные `point-lights-status` и `sound-sources-status`: свет подтверждается
|
||||
после cache/main-view HD обработки, звук — после source-manager apply с live/offline output.
|
||||
Заявки привязаны к запуску мода и поколению мира; звук также к source epoch. Clear/reload/выход
|
||||
снимают подтверждение. Это не GPU fence, загрузка сэмпла, наличие голоса или слышимость.
|
||||
Камеры и их targets теперь изолированы по `(run_serial, local_id)` вместо глобального ID.
|
||||
Camera-ready API пока отсутствует; проверки хоста не заменяют GPU-приёмку.
|
||||
|
||||
Остаток #102: статус камер, полные query/voice/peak budgets,
|
||||
GPU/готовый MP4 и платформенная приёмка. Эти результаты текущими тестами не объявляются выполненными.
|
||||
|
||||
## Измеренный fuel и массовые взрывы
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
# Состояние исходных 16 задач
|
||||
|
||||
Ветка `kimi-work`, 3 ноября 2026. Issues остаются открытыми по просьбе владельца.
|
||||
Ветка `kimi-work`, 4 ноября 2026. Issues остаются открытыми по просьбе владельца.
|
||||
«Реализовано» ниже означает проверенный объём кода, а не закрытие issue и не подтверждение всех платформ.
|
||||
|
||||
Новый проверенный объём: [продолжение пяти задач 4 ноября](CONTINUATION-2026-11-04.md).
|
||||
#87: typed battery/world/damage diagnostics и адаптеры текста; #91: общий content/sound catalog
|
||||
для Rust и Python; #102: измеренный fuel, API29 light/source milestones и изоляция камер;
|
||||
#96: массовый deterministic offline capture; #115: authored Lancet/Х-101 и кадры инстансов.
|
||||
Текущий engine pin — API29; старые номера/числа ниже описывают предыдущие этапы.
|
||||
Новая оставшаяся проблема нормалей модели — #123.
|
||||
|
||||
| Issue | Реализовано | Что остаётся для полной приёмки |
|
||||
|---|---|---|
|
||||
| #72 | Upstream Horizon 0.2.97 объединён с форком; сохранена история; локальные тесты и Metal-полигон | Windows/Linux, native HDR, сравнительная производительность |
|
||||
@@ -12,7 +19,7 @@
|
||||
| #91 | Общий каталог доступности и потребители меню/инвентаря; явный RM48U-профиль; корректные подписи очередей | Единый источник всех чисел, звуков и Python-регистраций; проверка вариантов комплексов |
|
||||
| #92 | Authored overrides, проверка ссылок/PNG/границ, manifest, безопасная транзакционная генерация; registry/texture/icon modules | Дальнейшее ручное улучшение контента относится к #115 |
|
||||
| #96 | Акустические пути; измеренные синтетические occlusion/echo/reverb fixtures; лицензии и исходные notices в архивах | Прослушивание, игровой массовый звук/CPU, акустика реального MP4; точность RT60 пока по допуску 35%, не 15% |
|
||||
| #102 | Pinned engine/API27, packer/build identity; smoke/acoustics/capture-owner milestones; fallback/владение; WASM26 и flat stress271 с двумя принятыми налётами и проверенными184 воздушными на тике2102; JSON provenance/failure tests; Metal/no-audio smoke; URL/Git-регрессия | Старое69-шаговое утверждение о перекрытии отозвано; статусы света/камер/sound sources, полные query/voice/peak budgets, GPU/готовый MP4 и Windows-приёмка остаются |
|
||||
| #102 | Pinned engine/API29, packer/build identity; smoke/acoustics/capture-owner/light/source milestones; fallback/владение; WASM27 и flat stress271; измеренный callback fuel; JSON provenance/failure tests; Metal/no-audio smoke; URL/Git-регрессия; owner-scoped camera targets | Старое69-шаговое утверждение о перекрытии отозвано; статус камер, полные query/voice/peak budgets, GPU/готовый MP4 и Windows-приёмка остаются |
|
||||
| #104 | Движок вынесен в `chexit/horizon-airdef`, ветка `airdef`; AirDef использует точный gitlink | Отдельная Windows-проверка миграции старого standalone checkout |
|
||||
| #107 | ПУ оценивается по наблюдениям: обратный курс не выдаёт точную ПУ | Повторная игровая проверка сценариев с маневрирующими целями |
|
||||
| #110 | Изменения чанков инвалидируют акустические снимки/кэш; включено в pin и проверено engine-тестами | Внешняя игровая приёмка на целевых машинах |
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"audio_ms_per_tick": 50,
|
||||
"audio_sha256": "8b5eeabb2585e2d8b2524a9fe992b028b2eba8c413f5c822d2a68ef352689b25",
|
||||
"capture_reset": "next capture produced exact zero samples",
|
||||
"channels": 2,
|
||||
"command": "HORIZON_ACOUSTICS_OUT=/scratch cargo test --release --manifest-path horizon/Cargo.toml -p horizon-client --no-default-features --lib -j 2 audio::tests::export_moving_mass_raid -- --ignored --nocapture",
|
||||
"fixture_commit": "e44ad82a9",
|
||||
"gpu_or_windows_fps_measured": false,
|
||||
"machine": "Apple M5 / macOS arm64",
|
||||
"max_direct_cells_per_tick": 4056,
|
||||
"max_echo_cells_per_tick": 36835,
|
||||
"max_sources": 116,
|
||||
"output_device": false,
|
||||
"profile": "release",
|
||||
"rate": 48000,
|
||||
"real_mp4_checked": false,
|
||||
"rust": "1.99.1",
|
||||
"sample_determinism": "two full runs compared sample-for-sample in the test",
|
||||
"schema": 1,
|
||||
"scope": "synthetic geometry and samples through production Audio::tick_acoustics and film_mix, excludes game snapshot construction and GPU/encoder",
|
||||
"seconds": 6,
|
||||
"step_plus_mix_ms_max": 5.573375,
|
||||
"step_plus_mix_ms_p50": 3.551625,
|
||||
"step_plus_mix_ms_p95": 4.297167,
|
||||
"synthetic": true,
|
||||
"ticks": 120
|
||||
}
|
||||
Reference in New Issue
Block a user