Goal
Harden SmartReconnect against races, unusual battle states and long outages before release.
Scope
- Explicit reconnect state machine and transition logging.
- Cooldown and retry/backoff policy.
- Handle client already disconnected before SmartReconnect acts.
- Handle battle exit, arena change, postmortem/spectator, prebattle/loading and afterbattle states.
- Handle long local internet outage and server outage/restart.
- Ensure callbacks/observers/events are always removed on fini/transition.
- Confirm no reconnect loops after failed WGC login.
- Review grace period using real v0.1 telemetry rather than guessing.
Acceptance criteria
- No duplicate callbacks or observers after repeated battles/reconnects.
- No automatic action in replay.
- No infinite reconnect/login loop.
- One outage is bounded by configured attempt/cooldown policy.
- Every terminal path returns the controller to a known safe state.
python.log is sufficient to reconstruct the state transitions of a failed session.
Test matrix
Include threshold-boundary race, client timeout race, battle ending during reconnect, reconnect after death/spectator, server unavailable, token failure, multiple successive outages, and clean client shutdown.
Goal
Harden SmartReconnect against races, unusual battle states and long outages before release.
Scope
Acceptance criteria
python.logis sufficient to reconstruct the state transitions of a failed session.Test matrix
Include threshold-boundary race, client timeout race, battle ending during reconnect, reconnect after death/spectator, server unavailable, token failure, multiple successive outages, and clean client shutdown.