2 Commits
Author SHA1 Message Date
John SmithandClaude 312ab23682 feat(gateway): magnitude bounds, damage grammar, typed ingress on spawn (iteration 15)
Closes audit F10 at the gateway: ac 0..30, hp 0..1000, finite speed,
typed spell-slot dict; damage expressions validated against a strict
dice grammar (sides/dice/constant caps) since the engine rolls spawned
expressions unclamped. ingress is now a strict EngineIngressEvent model
matching the engine's SCREAMING_SNAKE_CASE wire format. 18 tests
red-first; pytest 690 passed / 21 skipped. All SRD corpus callers pass.

Co-Authored-By: Claude <[email protected]>
2026-08-24 22:49:50 -04:00
John SmithandClaude 3bf115ea0e feat(gateway): strict typed spawn schema blocks smuggled combat math (iteration 2)
EngineSpawnEntity mirrors vtt-core EntityState field-for-field with
extra=forbid; malformed/smuggled spawn bodies now 422 instead of
reaching the engine. Deploy-path class attack derivation collapsed
into one disclosed helper (_derive_class_attack) pending a Rust-side
class-aware EntitySpec follow-up. 11 new tests, red-first.

Co-Authored-By: Claude <[email protected]>
2026-08-24 18:15:24 -04:00