# 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.
