Выделить CorpseManager

This commit is contained in:
2026-08-19 03:43:20 +03:00
parent 62ee6877f9
commit cc3b5902cc
8 changed files with 436 additions and 69 deletions
+6 -4
View File
@@ -179,10 +179,12 @@ baseline-задачи также имели явного владельца по
- принят `goon-game-milestone-production`.
Статус на 19 августа 2026: Stage 6 начат в изолированном production stream.
Первый foundation slice `goon-game-character-states` завершён: явные
Idle/Run/Turn/Jump/Fall/Land/Interact/Stunned/Death transitions, configured
timings и отдельные non-color animation poses прошли 81 JVM-тест и финальную
Android 16 matrix `36/36`. Следующий foundation slice — `CorpseManager`.
Завершены первые два foundation slice. `goon-game-character-states` добавил
явные Idle/Run/Turn/Jump/Fall/Land/Interact/Stunned/Death transitions.
`goon-game-corpse-manager` перенёс регистрацию, transforms, FIFO budget, reset,
save/restore и diagnostics тел в отдельного владельца без изменения физики и
геометрии. Последний gate: 84 JVM-теста и Android 16 matrix `37/37`.
Следующий foundation slice — event-driven `PuzzleSystem`.
### Этап 7. Техническая стабилизация и release engineering — P0, 4–8 дней
+50
View File
@@ -0,0 +1,50 @@
# Stage 6 CorpseManager
Date: 19 August 2026
Beads task: `goon-game-corpse-manager`
## Contract
`CorpseManager` is the single owner of bodies in one active level. It provides:
- bounded registration with stable IDs and deterministic FIFO eviction;
- explicit remove and level-reset lifecycle operations;
- composable `PINNED`, `FROZEN`, and `CONDUCTIVE` transformations;
- body physics facts needed by collision, moving-platform, save, and restore code;
- immutable lifecycle diagnostics for automation and regression tests.
`GameView` remains the high-frequency physics adapter, but it no longer creates,
owns, evicts, resets, or restores bodies through an internal collection. The
manager exposes an unmodifiable live view, so callers can update owned body facts
without being able to change collection membership.
The body budget and FIFO policy preserve the accepted Vertical Slice behavior.
Restart and level changes clear active bodies through the manager; save/restore
re-registers bodies and then reapplies their stored transformations. No level
geometry, movement, collision constant, or death signature changed.
## TDD evidence
Separate RED cycles covered the missing manager contract, removal/reset
diagnostics, mutable physics facts plus composable transformations, rejection of
foreign bodies, and the missing `GameView` automation hook. Each RED was followed
by its focused GREEN before the next behavior was introduced.
The Android integration test creates a real level-10 saw body through production
input, verifies manager registration, restarts the level through the public game
surface, and verifies that manager reset owns the cleanup.
## Final gates
- JSON validator: `10/10`, format `1`, physics `1`.
- JVM: `84`, failures `0`, errors `0`, skipped `0`.
- `lintDebug`, `assembleDebug`, `assembleDebugAndroidTest`: GREEN.
- focused Android 16 lifecycle: `1/1` GREEN.
- final unfiltered Android 16 matrix: `37/37`, failures `0`, errors `0`,
skipped `0`, `427.237 s`, on the exact final APK/test APK.
- debug APK ZIP integrity: `unzip -t` GREEN.
- debug APK SHA-256:
`982fcf312f10bf23feb3a8794b708b61002012a3706c94ebb4320fefb36fb889`.
The dedicated AVD was stopped after the final gate.