[enhancement] Явный lifecycle Live/Replay/Export и часы сессии вместо набора независимых Option/флагов #89
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).
Архитектурный проход по
76f680eba64b64eb28435e71ce9f22a84b0e5da1.Наблюдения
AirDefнезависимо хранитreplay,export,film_prev, текущие настройки, listener, pending audio и кэши. Запуск/остановка и смена мира вручную восстанавливают ресурсы. #83 показывает реальное недопустимое сочетание: замена Player при живом Export. #80/#84 показывают разные источники времени/камеры. Вshown_smokeдля показа реплея временно заменяютсяsim.blasts,sim.fires.listи дажеsim.tick, затем возвращаются обратно.Предложение
PresentationContext: scene time, delta, environment time, camera/listener, world/session generation. Отличать combat ticks, replay time и монотонное время UI; slow-mo/seek не меняют правила живого мира.Sim.Приёмка
Таблица переходов покрывает смену режима во время экспорта, stop, seek, world unload, ошибку энкодера/SDK и повторный запуск. После каждого выхода настройки и источники звука восстановлены ровно один раз; старые ответы/события другой сессии не применяются. Preview и MP4 используют одну камеру/listener и одну шкалу сцены. Сначала чинятся конкретные #79/#80/#83/#84, затем постепенно убирается возможность повторить их класс.
Общий порядок и зависимости: архитектурная дорожная карта.
🤖 Agent: Codex — работа Владимира (chexit).
Lifecycle: вместо независимых replay/export Option — Live/Replay/Export, где Export владеет своим playback. Stop, replacement, world change, completion и failure сходятся в end_session; успешный экспорт не отменяется при cleanup и ждёт Finishing/Done. Pending one-shots очищаются при выходе. Smoke читает recording, метод shown_smoke принимает &self и не переписывает Sim.
3 transition unit tests и существующие export/replay tests прошли (adapter 39/39). Полный PresentationContext/разделение всех часов и GPU/encoder failure integration ещё требуют отдельного этапа; реальный MP4 этим комментарием не подтверждаю.
Issue оставлен открытым согласно просьбе автора.
🤖 Agent: Codex, при участии GPT-6.1 Terra и GPT-6 Luna. Продолжение в
kimi-work: код.Добавлен неизменяемый PresentationContext: combat/UI/recording clocks, world/session generation, listener, day time и rate. Session централизует cleanup через план действий; успешный уже дренированный export не отменяется повторно. World change инвалидирует generation и в Live, а host tick сохраняется после замены Sim. Задержанные звуки используют часы показа, включая дробное время slow-mo, и отбрасываются при смене generation/domain или возврате до момента их постановки.
Проверены seek/slowmo, смена поколений, ровно один cleanup для stop/world change/failure/success и отсутствие live-данных в recorded Smoke/Shown. Локально 50 adapter unit tests, boundary и четыре сценария; настоящий WASM contract — 16 шагов. Полная игровая приёмка MP4 с ошибкой энкодера и хвостом очереди ещё нужна. Issue остаётся открытым.
🤖 Agent: Kimi Code, с участием DeepSeek.
В
kimi-workопубликованы675967ce4,cec7257ea,e6a700044; итоговый engine278f356aa.Получены настоящие MP4 (H.264 + AAC), отчёт кадров совпадает с ffprobe. Проверены отмена, отказ SDK, ошибка и повторный запуск энкодера, drain хвоста и 1920×1080. Найден и исправлен выход в заголовок во время экспорта: раньше
sec=10дал 3898 кадров/129.9 с; теперьframe+Session::world_leftвыполняют один cleanup и CancelCapture.Движок также удаляет temp/log неудачного захвата, переносит лог в текст ошибки и сохраняет прежний готовый MP4 с тем же именем (проверено SHA). Общие проверки: 66 unit + 1 boundary + 5 сценариев, WASM API30 — 27 шагов.
Остаются 10-минутный экспорт и Windows/Linux. Issue не закрываю.