Commit fc75b5b
feat(arq): keepalive ACK — break the marginal-SNR anchor-wait no-ACK stall (ULTRA_KEEPALIVE_ACK, default off)
BUG-ANCHOR-WAIT-NO-ACK-STALL: at marginal SNR, burst heads (corr 0.15-0.32)
fall below the sync weak_accept floor (~0.45) → rejected in full-anchor-wait →
NO ACK emitted → sender waits the full 44.68 s RTO. MPG@25 batch measured this
as the top throughput drag (~+30% prize).
Fix: the receiver re-emits its current cumulative ACK when its ACK side has
gone silent > 25 s during an active file receive (rx_base_seq_>0 &&
last_rx_more_data_). The sender resends holes on ANY tone-burst ACK (turn
boundary), so a re-ACK converts the 44 s RTO into a fast turnaround (~19 s
saved/stall). No new protocol; routes through listen-before-ACK gating.
Threshold 25 s > max burst airtime (window-16 ≈ 21.5 s) so it only fires on a
genuine stall, not mid-legit-burst — no channel-busy plumbing needed for v1.
v2 (filed): channel-gated shorter threshold for a bigger saving.
Verified: ctest 86/86 (default-off byte-identical); sim good@20 PASS 2770.
Rig A/B at MPG@25 next (the stall is a marginal-SNR phenomenon the sim can't
reproduce).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019btwFxDt7D19SZSqPYvZnk1 parent 9a97dbd commit fc75b5b
3 files changed
Lines changed: 46 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4413 | 4413 | | |
4414 | 4414 | | |
4415 | 4415 | | |
| 4416 | + | |
| 4417 | + | |
| 4418 | + | |
| 4419 | + | |
| 4420 | + | |
| 4421 | + | |
| 4422 | + | |
| 4423 | + | |
| 4424 | + | |
| 4425 | + | |
| 4426 | + | |
| 4427 | + | |
| 4428 | + | |
| 4429 | + | |
| 4430 | + | |
| 4431 | + | |
| 4432 | + | |
| 4433 | + | |
| 4434 | + | |
4416 | 4435 | | |
4417 | 4436 | | |
4418 | 4437 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1368 | 1368 | | |
1369 | 1369 | | |
1370 | 1370 | | |
| 1371 | + | |
1371 | 1372 | | |
1372 | 1373 | | |
1373 | 1374 | | |
| |||
2044 | 2045 | | |
2045 | 2046 | | |
2046 | 2047 | | |
| 2048 | + | |
| 2049 | + | |
| 2050 | + | |
| 2051 | + | |
| 2052 | + | |
| 2053 | + | |
| 2054 | + | |
| 2055 | + | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
| 2059 | + | |
| 2060 | + | |
2047 | 2061 | | |
2048 | 2062 | | |
2049 | 2063 | | |
| |||
2056 | 2070 | | |
2057 | 2071 | | |
2058 | 2072 | | |
| 2073 | + | |
| 2074 | + | |
2059 | 2075 | | |
2060 | 2076 | | |
2061 | 2077 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
195 | 205 | | |
196 | 206 | | |
197 | 207 | | |
| |||
389 | 399 | | |
390 | 400 | | |
391 | 401 | | |
| 402 | + | |
392 | 403 | | |
393 | 404 | | |
394 | 405 | | |
| |||
0 commit comments