# NET — Network, Protocol and Session ## Цель Реализовать точный клиентский протокол WoW 3.3.5a build 12340, изолировав транспорт и packet layout от gameplay/UI. ## NET-1. Transport - Native TCP auth/world connections, DNS/IPv4/IPv6 policy и configurable endpoints. - Non-blocking read/write, bounded buffers, packet fragmentation/coalescing. - Cancellation, connect/read/write timeouts, keepalive и orderly shutdown. - Network thread работает с bytes; domain events применяются game thread. - Proxy mode только как explicit development adapter, не основной transport. ## NET-2. Authentication - Logon challenge/proof SRP6 values и exact endian/normalization rules. - Realm list parsing, build/locale/platform fields и error mapping. - World auth digest, session key и header encryption state. - Credentials не логируются; session material очищается при disconnect. - Golden vectors и сравнение с TrinityCore/AzerothCore/Wowser/Whoa implementations. ## NET-3. Packet framework - `PacketReader/Writer` с checked boundaries и explicit endianness. - Typed opcode registry generated/validated для build 12340. - Header framing, ARC4/drop policy, zlib compressed packets. - Packed GUID, bit masks, CString/fixed strings и localized text. - Unknown/unsupported opcode telemetry rate-limited; policy зависит от criticality. - Packet handlers возвращают domain events, не меняют scenes/UI. ## NET-4. Update fields and entity lifecycle - Generated object/item/container/unit/player/gameobject/dynamicobject/corpse field descriptors. - `SMSG_UPDATE_OBJECT` blocks: values, movement, create, create2, out-of-range, near objects. - Partial mask application сохраняет неизвестные/необновлённые поля корректно. - Entity type/entry/display/faction/health/power/flags/ownership relationships. - Despawn/out-of-range/map transfer не оставляют presentation entities. ## NET-5. Movement synchronization - Полный movement flags set, timestamps, position/orientation, pitch, fall/jump, spline elevation. - Start/stop/strafe/turn/pitch/jump/fall/land/swim/fly/heartbeat packets. - Transport GUID/seat/relative coordinates и server spline movement. - Client prediction history, acknowledgements и reconciliation metrics. - Teleport/worldport handshake и map transfer. - Anti-cheat-sensitive fields формируются строго по profile; client не симулирует authoritative NPC path. ## NET-6. Session domains - Character enum/create/delete/rename/login/logout. - Time/account data/tutorial/action bars/initial spells. - Chat/channel/social/group/guild. - Combat/spells/auras/threat. - Items/inventory/loot/trade/vendor/mail/auction. - Quests/gossip/POI/taxi. - Instances/LFG/PvP/vehicles/calendar. - Каждый domain имеет отдельный handler module, fixtures и unsupported coverage report. ## NET-7. Reliability and diagnostics - State-aware disconnect reason и recovery path. - Reconnect только когда protocol/server допускает; иначе безопасный возврат к login. - Packet trace modes: metadata-only default, redacted payload для tests, encrypted secrets never. - Correlation IDs session/request/entity. - Replay transport воспроизводит timing или deterministic step mode. - Network impairment harness: latency, jitter, loss, duplication, fragmentation и abrupt close. ## NET-8. Core compatibility - Baseline protocol один, но server capabilities/quirks задаются adapter profile. - Не ветвить handlers по строке `if azerothcore` без documented capability. - Test matrix фиксирует core commit, DB revision, modules и config. - Custom opcodes располагаются в namespaced extension profile и не включены в Blizzlike335. ## NET-9. Warden compatibility - Зафиксировать фактические требования Warden у supported TrinityCore/AzerothCore profiles. - Реализовывать только compatibility с тестовыми/private server environments и документированным build 12340 flow; OpenWC не предназначен для official/retail servers. - Module challenge/response, crypto/state и platform behavior изолировать в optional security adapter. - Любое исполнение загружаемого module code sandboxed, size/hash checked и отключаемо в development profile. - Добавить fixtures и failure UX для unsupported/invalid challenge; не использовать subsystem для обхода чужих защитных механизмов. ## Tools and references - TrinityCore/AzerothCore source — authoritative server-side packet expectations. - Whoa — reverse-engineered client semantics. - Wowser — независимый auth/world proof-of-concept и test ideas. - WoWee/WowUnreal — coverage и lifecycle comparison. - Packet captures используются только легально, минимально и с redaction. ## Gate Headless client проходит auth → realm → character → world; replay создаёт одинаковые domain events; malformed packets не читаются за границы; secrets отсутствуют в logs; обе core configurations проходят contract suite.