docs(net): Campaign N - the retail reliable-transport port
The #260 investigation ended in a full root cause: acdream cannot survive a single lost UDP packet in either direction. Outbound: the server''s RequestRetransmit lists are parsed and consumed nowhere, and no sent-packet cache exists - one lost C2S datagram permanently stalls ACE''s ordered stream (actions void, position updates void, new areas never stream: the whole #260/#256 symptom set). Inbound: the ISAAC keystream is burned in arrival order, so one lost S2C datagram permanently desyncs the cipher. Loopback ACE never drops packets, which is why every historical gate passed. The campaign doc pins the port target from the named retail decomp (SentPacketStore/FlowQueue resend with reused ISAAC keys, the inbound pre-drawn-key NAK set, the 2.0s cumulative ack / 0.6s NAK shared-gate sweep, constants), the ACE constraint table Coldeve enforces (the 256-key crypto window, the exactly-AckSequence watermark rule, the cleartext-NAK requirement), the Transport/ class design, slices N0-N6 with per-slice gates and Fable/Opus review assignments, the landmine list, and eight divergence-register rows for the pieces that are unsafe against ACE''s watermark hole. #260 updated to point here; its memory half is closed as benign (mapped-pak page residency + designed cache ceilings - measured, not a leak). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
b2b5e3d54a
commit
b63d41b4e0
2 changed files with 275 additions and 3 deletions
|
|
@ -99,11 +99,23 @@ Copy this block when adding a new issue:
|
|||
|
||||
## #260 — Portal-network wedge: outbound actions die + native/GPU memory climbs
|
||||
|
||||
**Status:** OPEN — investigated 2026-07-29 (two-agent report-only pass over the
|
||||
captured evidence); fix authorized by the user. **Verdict: two separate roots.**
|
||||
**Status:** ROOT-CAUSED 2026-07-29 — **fix in flight as Campaign N**
|
||||
([`docs/plans/2026-07-29-network-transport-campaign.md`](plans/2026-07-29-network-transport-campaign.md)).
|
||||
The wedge is missing packet-loss recovery in BOTH directions: (a) no outbound
|
||||
retransmission — ACE's `RequestRetransmit` lists are parsed and consumed
|
||||
nowhere, no sent-packet cache exists, so one lost C2S datagram permanently
|
||||
stalls ACE's ordered processing of everything we send (actions void, position
|
||||
updates void → ACE stops streaming new areas → the #256 invisible portals);
|
||||
(b) the inbound ISAAC keystream is burned in ARRIVAL order
|
||||
(`PacketCodec.TryDecodeBorrowed` consumes before comparing), so one lost S2C
|
||||
datagram permanently desyncs the inbound cipher and silences inbound. Local
|
||||
ACE is loopback (zero loss) — every historical gate was structurally blind.
|
||||
The memory half is CLOSED as benign: WS +2.5 GB vs private +0.7 GB over a
|
||||
session = mapped-pak page residency (27.85 GB mmap) + GPU caches filling to
|
||||
designed ceilings and plateauing; no leak.
|
||||
**Severity:** HIGH (renders the client unplayable after sustained portal use)
|
||||
**Filed:** 2026-07-29 (instrumented Coldeve session, Vulkan backend)
|
||||
**Component:** WorldSession outbound boundary + Vulkan resource lifecycle
|
||||
**Component:** Core.Net reliable transport (both directions)
|
||||
**Supersedes framing of:** #256 (invisible portal-network objects) and #257
|
||||
(~1.5 GB working set) — both are facets of this.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue