Завершить state machine персонажа

This commit is contained in:
2026-08-19 03:20:24 +03:00
parent 0943caa3cc
commit 62ee6877f9
12 changed files with 463 additions and 8 deletions
+6
View File
@@ -178,6 +178,12 @@ baseline-задачи также имели явного владельца по
- content не содержит blocker-softlocks и обязательных невосстановимых объектов;
- принят `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`.
### Этап 7. Техническая стабилизация и release engineering — P0, 4–8 дней
Задачи:
+53
View File
@@ -0,0 +1,53 @@
# Stage 6 character state machine
Date: 19 August 2026
Beads task: `goon-game-character-states`
## Contract
`CharacterStateMachine` is a deterministic public model driven by the physics
facts already owned by `GameView`: alive, grounded, velocity and facing. It
publishes:
- `IDLE`, `RUN`, `JUMP`, `FALL`, `DEATH` base states;
- configured transient `TURN` and `LAND` states;
- configured command states `INTERACT` and `STUNNED`;
- priority `DEATH > STUNNED > INTERACT > locomotion`.
The model does not own collision or movement and therefore does not change the
accepted Stage 5 physics. Switch contact drives the production `INTERACT`
transition. `STUNNED` has a public command and a tested animation contract; its
production hazard source belongs to the Stage 6 hazards work.
`PhysicsConfig` remains the single source for movement, coyote/input buffer,
respawn and the new turn/land/interact/stunned durations. The config/level
physics version remains `1` because no movement or collision constant changed.
## Visual contract
Every living state maps explicitly to a `VolunteerRig.Motion`. `TURN`, `LAND`,
`INTERACT` and `STUNNED` change skeleton joints, so the states remain distinct
without relying on color. Collision dimensions stay `62 x 100`.
## TDD evidence
Separate RED cycles covered the missing state model, airborne/death states,
configured turn, configured land, interaction, stun priority, visual mapping,
GameView automation integration and the regression where interaction could
downgrade an active stun. Each RED was followed by its focused GREEN before the
next behavior was introduced.
## Final gates
- JSON validator: `10/10`, format `1`, physics `1`.
- JVM: `81`, failures `0`, errors `0`.
- `lintDebug`, `assembleDebug`, `assembleDebugAndroidTest`: GREEN.
- focused Android 16 state integration: `1/1` GREEN.
- final unfiltered Android 16 matrix: `36/36`, failures `0`, errors `0`,
`720.578 s`, on the exact final APK/test APK.
- debug APK ZIP integrity: `unzip -t` GREEN.
- debug APK SHA-256:
`d25b7dd0a06cead0d514539773acd0a84ed92bf7c2510b9b880ded2f66508581`.
The AVD was stopped after the final gate.