fix(native): advance anchor data sequence after SYN

This commit is contained in:
冰朔 2026-08-07 06:17:41 +08:00
commit f74ade94db
4 changed files with 34 additions and 6 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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