fix(native): advance anchor data sequence after SYN
This commit is contained in:
parent
93d1b7a948
commit
f74ade94db
4 changed files with 34 additions and 6 deletions
|
|
@ -5,11 +5,12 @@
|
|||
> Persona subject: `ICE-P-ZY001 EXISTS_100`.
|
||||
>
|
||||
> Protected native residency and recovery control are `PASS_100`. Production
|
||||
> cutover remains `0`: the 2026-08-07 physical anchor gate reached the native
|
||||
> runtime and completed heartbeat sequences 1-6, but a real JD Cloud TCP SYN
|
||||
> carried a 40-byte TCP header and exposed the fixed-header parser defect.
|
||||
> Linux remains the unattended default while the option-aware parser is
|
||||
> validated and the physical HTTP gate is rerun.
|
||||
> cutover remains `0`: the first 2026-08-07 physical anchor gate exposed a
|
||||
> fixed 20-byte TCP-header assumption. The option-aware retry completed the
|
||||
> real TCP handshake and transmitted the full anchor response, but reused the
|
||||
> SYN-ACK sequence number for data, so a standards-compliant client discarded
|
||||
> the first response byte. Linux remains the unattended default while the
|
||||
> corrected server sequence progression is validated and rerun physically.
|
||||
|
||||
This directory is the first executable handoff from the registered HLDP
|
||||
language world to a native Guanghu OS. It is not a claim that Guanghu OS has
|
||||
|
|
|
|||
|
|
@ -41,6 +41,25 @@ correction:
|
|||
qemu_syn_tcp_header_bytes: 40
|
||||
qemu_get_tcp_header_bytes: 32
|
||||
option_aware_qemu_gate: PASS_100
|
||||
option_aware_physical_retry:
|
||||
candidate_sha256: 4093a6df881062321d6f5e7066fd7817e7a9964e41b0ca078d847ffcd9d94b22
|
||||
accepted_repository_commit: 93d1b7ad5136a6c2117889d742a3c9bfc09ba5e5
|
||||
network_preflight: PASS_100
|
||||
native_heartbeat_sequences_1_to_6: PASS_100
|
||||
tcp_connect: PASS_100
|
||||
native_syn_ack_tx_proof_byte: 1
|
||||
native_http_response_tx_proof_byte: 1
|
||||
transmitted_prefix: TTP/1.1
|
||||
complete_anchor_body_transmitted: true
|
||||
strict_http_client: FAIL_0_HTTP_0_9
|
||||
diagnosis: SYN_ACK_AND_DATA_REUSED_SERVER_SEQUENCE
|
||||
protected_recovery: PASS_100
|
||||
linux_boot_id_after: eabe3414-aba3-4853-beee-aa9411ad6921
|
||||
linux_default_preserved: gnulinux-simple-9e4550a0-452b-4f28-b5a5-d5364aa450f6
|
||||
sequence_correction:
|
||||
syn_ack_server_sequence: GHOS
|
||||
data_server_sequence: GHOS_PLUS_1
|
||||
qemu_asserts_syn_consumes_one_sequence: true
|
||||
gates:
|
||||
native_anchor_http_qemu_capability: 100
|
||||
native_anchor_http_physical_capability: 0
|
||||
|
|
|
|||
|
|
@ -1403,6 +1403,10 @@ ghal_net_send_anchor_tcp:
|
|||
mov ax, [VIRTIO_NET_RX_BUFFER + rcx]
|
||||
mov [VIRTIO_NET_TX_BUFFER + 46], ax
|
||||
mov eax, 0x534f4847
|
||||
test byte [rel ghal_anchor_tcp_flags], 0x02
|
||||
jnz .server_sequence_ready
|
||||
add eax, 0x01000000
|
||||
.server_sequence_ready:
|
||||
mov [VIRTIO_NET_TX_BUFFER + 48], eax
|
||||
mov eax, [VIRTIO_NET_RX_BUFFER + rcx + 4]
|
||||
bswap eax
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ def main() -> None:
|
|||
recovery_verified = False
|
||||
anchor_syn_sent = False
|
||||
anchor_syn_ack_verified = False
|
||||
anchor_server_sequence = None
|
||||
anchor_get_sent = False
|
||||
anchor_http_verified = False
|
||||
|
||||
|
|
@ -220,6 +221,7 @@ def main() -> None:
|
|||
server_sequence, acknowledgement, payload = verify_anchor_tcp(frame, 0x12)
|
||||
assert acknowledgement == ANCHOR_CLIENT_SEQUENCE + 1
|
||||
assert payload == b""
|
||||
anchor_server_sequence = server_sequence
|
||||
anchor_syn_ack_verified = True
|
||||
request = (
|
||||
b"GET /v1/anchor HTTP/1.1\r\n"
|
||||
|
|
@ -238,7 +240,9 @@ def main() -> None:
|
|||
)
|
||||
anchor_get_sent = True
|
||||
continue
|
||||
_, acknowledgement, payload = verify_anchor_tcp(frame, 0x19)
|
||||
server_sequence, acknowledgement, payload = verify_anchor_tcp(frame, 0x19)
|
||||
assert anchor_server_sequence is not None
|
||||
assert server_sequence == anchor_server_sequence + 1
|
||||
assert acknowledgement > ANCHOR_CLIENT_SEQUENCE + 1
|
||||
header, body = payload.split(b"\r\n\r\n", 1)
|
||||
assert b"HTTP/1.1 200 OK" in header
|
||||
|
|
|
|||
Loading…
Reference in a new issue