Question for the GOD LLM - XSGSY reply XENSE and connect-stall on a climbed 100¶
Context¶
Our C# node is 102 (d102). Node 100 has NOT restarted XMSG across several failed sessions, so it keeps its datagram sequence climbing (connects arrive at Flags1 0x0008/0x0009, no fresh ReachabilityRequest, and at startup 100 is still retransmitting the previous session's DCON). Two separate failures now appear. We suspect both are 100-expected-from-us sequence mismatches caused by the climbed state, but we cannot confirm the correct reply-sequence model. Recently fixed and VERIFIED separately: the LAPB odd-info-length address (0x89/0x09), the T1 retransmit tick, and a T3 keepalive flood. Those are not in question here.
All bytes below are from the runner log (both directions).
Failure 1 - list-route (XSGSY) reply is XENSE-rejected, li-rout hangs¶
100 sends an XSGSY request (XMCSM 0x0100014B):
rx 100->102 2113000E 0066 0064 0009 0100 DD 0B 210086 C4 0066 0000 0064 02A0 0100014B 0004 01020066
(Flags1=0x0009 counter=0x0B proto=DD role=0xC4 query system=0x0066=102)
tx 102->100 2113000E 0064 0066 0009 0100 DD 0B 210086 60 0064 02A0 0064 02A0 01000100 0010 01020066 02020004 03020066 04020000
(Flags1=0x0009 counter=0x0B proto=DD role=0x60 4 param blocks)
rx 100->102 2113 0007 0066 0064 0009 FFDE DE 33
(subtype=0x07 Flags1=0x0009 Flags2=0xFFDE = -34 = XENSE sequence error proto=DE)
li-rout on 100 hangs.
Our reply echoes the request's Flags1 (0x0009) and counter (0x0B) - this echo was previously VERIFIED live against a FRESH 100. Questions: 1. When 100 is at a climbed expected-from-us sequence, is echoing the request Flags1/counter still correct, or must the XSGSY reply carry OUR own outgoing sequence (100's expected-from-us)? 2. What Flags1/counter/channel does 100 actually expect for the XSGSY reply here? XENSE (-34) says the sequence is wrong; what is right? 3. Our reply rides proto DD (0xDD, derived by the seed model). The stateless ListRoutingServer default is DC (0xDC). Which channel is correct for a list-route reply, and does it depend on epoch/climbed sequence? 4. The doc notes list-route = TWO datagrams (route-table + liveness). We send ONE. Is the missing second datagram part of why 100 XENSEs, or unrelated?
Failure 2 - connect accepted but 100 never drives session-setup¶
Fresh runner, 100 connects at a climbed Flags1 (0x0008), no ReachabilityRequest:
rx 100->102 connect letter ...0008 0400 DA 0C role=0xE4 XMCSM=0x04000041 ("*TADADM" / "D102")
tx 102->100 secure/route ack ...0008 0001 DE 16 (subtype 03, echoes Flags1 0x0008, counter 0x16 = request 0x0C + 0x0A)
tx 102->100 connect-accept ...0000 0400 DA 14 (OUR Flags1 0x0000, counter 0x14 = seed, channel DA/epoch 0)
rx 100->102 RR nr=2 (LAPB acks both)
What we need back¶
The correct outgoing-sequence rule for a responder answering a 100 that has a CLIMBED expected-from-us (both the XSGSY reply and the connect-accept), and whether Failures 1 and 2 are (a) real bugs in our reply sequencing, or (b) artifacts that only a fresh XMSG restart on 100 clears. If (b), say so plainly so we stop chasing them. Mark inferred vs capture-verified.