diff --git a/rio-firmware/RIOv4_2-ANALYSIS.md b/rio-firmware/RIOv4_2-ANALYSIS.md index 5d06d8f..14b1943 100644 --- a/rio-firmware/RIOv4_2-ANALYSIS.md +++ b/rio-firmware/RIOv4_2-ANALYSIS.md @@ -531,8 +531,18 @@ first counter event — `04000000` flashes momentarily, then `E000000x` as errors accrue and the reply-latch wedge trips under load. The wedge fix plus the E0 threshold gate are what exposed the stale frame. -**RC1 first-light (burned 2026-07-19): PASS on the below-threshold -path** — a version+check exchange now leaves the display at `F0000000`. -Remaining for the RIO 4.3 christening: over-threshold check repaint -(must re-render the E0 readout), `--e0test` regression, mash +**RC1 acceptance (burned 2026-07-19): PASS on both edit-6 paths.** +Below threshold: a version+check exchange leaves the display at +`F0000000`. Over threshold: the full `--e0test` sequence reproduced the +certified behavior (held `F0000000` through four sub-threshold events, +flipped at the 5th teardown), and the closing CheckRequest — 65 status +frames — left the display at **`E0000305`**: repaint + live E0 +re-render, not the stale `04000000`. The `$3184`=03 (vs predicted 01) +pins down the counter semantics one notch further: two of the 65 check +frames hit a timeout-retry that our late ACK then rescued — so +**`$3184` counts started timeout-retry sequences** (give-ups are the +subset that exhaust all 5 retransmits), and a timeout-recovered cycle +exits via the success teardown (no `$3185`), while NAK-recovered cycles +tear down through `$DA2F` (`$3185`). Every observation from both bench +sessions fits this model. Remaining for the RIO 4.3 christening: mash spot-check. diff --git a/tools/RioSerialMonitor/E0Test.cs b/tools/RioSerialMonitor/E0Test.cs index c9d7945..49be8bf 100644 --- a/tools/RioSerialMonitor/E0Test.cs +++ b/tools/RioSerialMonitor/E0Test.cs @@ -218,8 +218,9 @@ internal static class E0Test int checkReplies = Count(chk, 0x85); Console.WriteLine($"[check ] CheckRequest sent: self-test ran (lamps flash), {checkReplies} status frame(s)."); Console.WriteLine($" Edit-6 chips repaint, then re-render the over-threshold E0 readout."); - Console.WriteLine($" >>> DISPLAY SHOULD NOW READ: {Expected(cycles, teardowns)} (may run one higher in the last pair;"); - Console.WriteLine($" 04000000 here = no edit 6 on this chip) <<<"); + Console.WriteLine($" >>> DISPLAY SHOULD NOW READ: {Expected(cycles, teardowns)} — small drift in either pair is normal"); + Console.WriteLine($" (late ACKs among the status frames start timeout retries: $3184 +1 each;"); + Console.WriteLine($" 04000000 here = no edit 6 on this chip) <<<"); await Task.Delay(3000); }