feat(fifa17): add Rust FUT session/capability state machine (empty My Packs)
Ports the novel per-session empty-My-Packs capability negotiation — proven live on staging and currently Python-only (fifa17-recon/tools/utas_server.py) — into the production Rust FIFA17 adapter as a pure, dependency-free state machine (openfut-adapter-fifa17 fut::store_session). It owns: per-login X-UT-SID session table, single-use (ip,persona) launcher capability hand-off (pending), capability binding (bound/pending/ignored-late), the once-per-session clean-v1 vs sentinel freeze, TTL reaping, and fail-closed rules (unknown/expired/ambiguous/late/cross-session/sid-ip-mismatch -> sentinel). The clock and SID entropy are injected so it is fully unit-testable. The full Python capability-negotiation matrix A-R is ported as Rust unit tests (21 pass). Python remains the behavioural oracle. The delicate _pack_body UTAS wire shaping, /ut/auth persona-adoption, /store/purchasegroup catalogue assembly and the store BUY path are deliberately NOT ported here (documented gap); wiring the three routes into openfut-utas-host without splitting store authority is the remaining bounded slice toward full Rust authority. No production deployment.
This commit is contained in:
@@ -12,3 +12,4 @@ pub mod owned_query;
|
||||
pub mod squad;
|
||||
pub mod squad_ext;
|
||||
pub mod squad_projection;
|
||||
pub mod store_session;
|
||||
|
||||
Reference in New Issue
Block a user