[enhancement] Уточнить контракт мира: контекст асинхронных запросов и подтверждаемые изменения рельефа #90

Closed
opened 2026-10-30 10:30:06 +00:00 by chexit · 1 comment
Owner

🤖 Filed by Codex, AI-агент Владимира (chexit).

Архитектурный проход по 76f680eba64b64eb28435e71ce9f22a84b0e5da1.

Что уже есть и чего не хватает

#43 уже реализовал query API, Collision/Sight/Sound, секции/лучи и world revisions. Не нужно делать его заново. Но высоты Ground, voxel cache WorldCache и exact-ray ответы живут разными циклами; #73–75 показывают, что идентичность запроса, неизвестность и актуальность результата ещё трактуются неодинаково.

Другой край контракта: Out.commands передаёт строковые TNT/summon-команды через command::run_quiet, тогда как симуляция считает собственный урон сразу. В этом пути мод не получает индивидуальное подтверждение, выполнилось ли изменение блоков. Ограничения сервера, незагруженный участок и отклонённая команда — не одно и то же с успешным разрушением.

Небольшие этапы

  • Query context: world/session generation, request ID, точный segment/shape, policy, revision/epoch. Отдельные Pending/Unknown/Hit/Clear/Cancelled; поздний ответ не становится ответом на новый отрезок того же entity.
  • Общий scheduler/телеметрия для полёта, датчиков, ground navigation и будущей акустики: приоритет, возраст, дедлайн, лимит. Без голодания фоновых запросов и без скрытого превращения Unknown в Clear.
  • Типизированный запрос допустимого изменения мира с result/affected-region/revision. Не обходить серверные права: Denied/Unsupported/Unloaded возвращаются явно. Начать с подтверждаемого адаптера существующего механизма; прямой block API вводить только при необходимости.
  • Разделить игровое damage event и подтверждённое изменение Minecraft-геометрии. Явно документировать singleplayer/client authority; multiplayer server authority — самостоятельный будущий проект.

Приёмка

Fixtures с задержкой/перестановкой ответов, изменением/выгрузкой чанка, сменой мира, отказом изменения блоков. Устойчивое поведение и объяснимая причина ожидания. Есть счётчики queue depth/latency/unknown/budget drops. Не откладывать P1 #73/#74 до общей переделки; использовать их как регрессии контракта.

Общий порядок и зависимости: архитектурная дорожная карта.

🤖 Filed by Codex, AI-агент Владимира (chexit). Архитектурный проход по `76f680eba64b64eb28435e71ce9f22a84b0e5da1`. ### Что уже есть и чего не хватает #43 уже реализовал query API, Collision/Sight/Sound, секции/лучи и world revisions. Не нужно делать его заново. Но высоты `Ground`, voxel cache `WorldCache` и exact-ray ответы живут разными циклами; #73–75 показывают, что идентичность запроса, неизвестность и актуальность результата ещё трактуются неодинаково. Другой край контракта: `Out.commands` передаёт строковые TNT/summon-команды через `command::run_quiet`, тогда как симуляция считает собственный урон сразу. В этом пути мод не получает индивидуальное подтверждение, выполнилось ли изменение блоков. Ограничения сервера, незагруженный участок и отклонённая команда — не одно и то же с успешным разрушением. ### Небольшие этапы - Query context: world/session generation, request ID, точный segment/shape, policy, revision/epoch. Отдельные Pending/Unknown/Hit/Clear/Cancelled; поздний ответ не становится ответом на новый отрезок того же entity. - Общий scheduler/телеметрия для полёта, датчиков, ground navigation и будущей акустики: приоритет, возраст, дедлайн, лимит. Без голодания фоновых запросов и без скрытого превращения Unknown в Clear. - Типизированный запрос допустимого изменения мира с result/affected-region/revision. Не обходить серверные права: Denied/Unsupported/Unloaded возвращаются явно. Начать с подтверждаемого адаптера существующего механизма; прямой block API вводить только при необходимости. - Разделить игровое damage event и подтверждённое изменение Minecraft-геометрии. Явно документировать singleplayer/client authority; multiplayer server authority — самостоятельный будущий проект. ### Приёмка Fixtures с задержкой/перестановкой ответов, изменением/выгрузкой чанка, сменой мира, отказом изменения блоков. Устойчивое поведение и объяснимая причина ожидания. Есть счётчики queue depth/latency/unknown/budget drops. Не откладывать P1 #73/#74 до общей переделки; использовать их как регрессии контракта. Общий порядок и зависимости: [архитектурная дорожная карта](https://gitea.maoniao.team/chexit/airdef/issues/103).
Author
Owner

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/1a69376 (запушено в main). Контекст ответов, подтверждение изменений рельефа, идентичность мира (game.world-seed), конец для зависшего дрона.

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/1a69376 (запушено в main). Контекст ответов, подтверждение изменений рельефа, идентичность мира (game.world-seed), конец для зависшего дрона.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#90