You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/KNOWN_BUGS.md
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,25 @@ Fixed/obsolete historical deep dives belong in `docs/CHANGELOG.md`.
8
8
9
9
## Active Issues
10
10
11
+
### BUG-PHYSICAL-SNR-RIG-REF: the new physical in-band SNR readout is wrong on the IONOS bench (read 4.4 dB below effective 6.7 — physically impossible) and stale after handshake
12
+
- Status: **OPEN (filed 2026-07-07; display-only — nothing consumes it).** The two-SNR model
13
+
(CHANGELOG 2026-07-07) computes physical = (P_train − N)/N with N = the burst-time
14
+
inter-chirp-gap RMS. On sim it reads 9.0 at a true 10.0 (known −1 dB training-window
15
+
geometry bias). On the rig (WGN@10) it read 4.4 vs effective 6.7 — impossible (physical ≥
16
+
effective always), so the reference is polluted: the IONOS gap noise measured ~4-5 dB hotter
17
+
than the noise present during the training span (S:N-machine tracker dynamics inside the
18
+
100 ms gap, and/or gap-window geometry on the corrected chirp positions). Also STALE: only
19
+
computed on ping-check paths (handshake), then the atomic latches — data-frame logs reprint
20
+
the connect-era value.
21
+
- Fix path: (1) move the measurement into `updateTrainingSNREstimate` where the training
22
+
geometry is exact (per-symbol span, settled FIRs); (2) characterize the IONOS gap-noise
23
+
level vs during-signal noise (one bench experiment: long chirp train, compare gap RMS vs
24
+
post-burst decay curve); (3) recompute per decoded frame, not per ping-check.
25
+
- The EFFECTIVE (routed) SNR is unaffected and remains the rate-selection input (#74).
26
+
- Context: rig effective 6.5 vs wire-truth 9.3 at WGN@10 = real hardware implementation loss
27
+
(~1.2 Hz clock/jitter wander over the 144 ms training window explains it exactly; sim reads
28
+
10.1 dead-on). The operator display should eventually show BOTH numbers.
29
+
11
30
### BUG-FILE-CRC-MISMATCH: complete 51200/51200 file assembled with WRONG CONTENT (P0)
12
31
- Status: **FIXED 2026-07-05 late evening.** Root-caused by 3-agent forensics (write-map + code audit + adversarial verify) over the preserved run; rig gate LIFTED.
13
32
- Mechanism (confirmed, single event in all logs): the LDPC false-positive BIT-FLIP SALVAGE (frame_v2.cpp Case 2). Under status.allSuccess() every CW is a VALID codeword, so the true error is a codeword DIFFERENCE (>= d_min, tens of bits) — a 1-bit "repair" can never be genuine there. The salvage searched ~5k bit positions for a 16-bit CRC syndrome match (~7.8% collision odds vs garbage), hit one at t=38.4 ("FALSE POSITIVE RECOVERED (1-bit flip frame byte 584 bit 3)"), and delivered a corrupted 616-byte chunk (file[616:1232), seq=2) that was ACKed and never resent. Receiver assembly was proven flawless (78 chunks, perfect tiling, all era boundaries exact ACK-edge requeues).
0 commit comments