Save runs only on logout (no periodic timer) and as serial awaits (no transaction) -> crash = data loss; partial-save races (gold debited, item not added). (D-C7/D-H8)
C++: Player::SaveToDB wraps a single CharacterDatabaseTransaction; periodic save interval.
Rust target: session.rs:21656-21685 save path. Done: periodic save + atomic multi-statement save; crash leaves consistent state.
Part of the PORT_PLAN. State: docs/migration/STATE.md · Defects: docs/migration/EXISTING-CODE-DEFECTS.md.
Done = runs live + byte/opcode-clean vs a C++ capture of the same action + exercised on a running server + C++ refs cited (STATE.md §5). 1 issue = 1 PR.
Save runs only on logout (no periodic timer) and as serial awaits (no transaction) -> crash = data loss; partial-save races (gold debited, item not added). (D-C7/D-H8)
C++: Player::SaveToDB wraps a single CharacterDatabaseTransaction; periodic save interval.
Rust target: session.rs:21656-21685 save path. Done: periodic save + atomic multi-statement save; crash leaves consistent state.
Part of the PORT_PLAN. State: docs/migration/STATE.md · Defects: docs/migration/EXISTING-CODE-DEFECTS.md.
Done = runs live + byte/opcode-clean vs a C++ capture of the same action + exercised on a running server + C++ refs cited (STATE.md §5). 1 issue = 1 PR.