Docs: 07-21 G6+G4 build spec + session log (H); guidelines shipped-notes; CLAUDE.md tick-source clause; validation-harness fixture notes

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 12:35:29 -07:00
parent c5f73c52dd
commit a5302a7eae
5 changed files with 240 additions and 2 deletions
@@ -87,6 +87,17 @@ DOES propagate into parented children's `LocalToWorld` (verified live on 6.5.0).
- Forcing an animation pose: disable the drive system, write params via `AnimatorParametersAspect`; measure
ground-contact via feet-Y only on non-deformed geometry.
## EditMode fixtures for prediction-gated systems (07-21, AbilityFireSystemConeTests)
- **`NetworkTime.Flags` is INTERNAL** — a system gated on `IsFirstTimeFullyPredictingTick` silently no-ops in any
plain test world (default Flags = 0). Fixture fix: box the struct + `typeof(NetworkTime).GetField("Flags",
NonPublic|Instance).SetValue(boxed, NetworkTimeFlags.IsInPredictionLoop | IsFirstTimeFullyPredictingTick)`.
Test-only; never reflect internals in shipped code.
- **Input-buffer presses**: an `InputBufferData<PlayerInput>` entry with a set `InputEvent` keeps answering
`GetDataAtTick` for every later tick — it re-fires the moment a cooldown re-opens (the MeleeComboTests C6
lesson, buffer-shaped). Always push a press at T **and a release (default command) at T+1**.
- Damage paths gated `WorldUnmanaged.IsServer()` need `new World(name, WorldFlags.Game | WorldFlags.GameServer)`.
## Test-run mechanics
- `run_tests(mode="EditMode", assembly_names=["ProjectM.Tests.EditMode"])` → poll `get_test_job`