diff --git a/captures/rcp-pairtest-e8-0030.txt b/captures/rcp-pairtest-e8-0030.txt new file mode 100644 index 0000000..02f50c3 --- /dev/null +++ b/captures/rcp-pairtest-e8-0030.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E8 00 30 82 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:39:53.782 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:39:53.782 RX group=1 frame=1 no RX bytes +20:39:54.287 TX group=1 frame=2 len=006 00 00 E8 00 30 82 +20:39:54.287 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:39:54.287 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 40 26 C1 07 80 7A 40 26 C1 +20:39:54.794 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:39:54.794 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:39:54.794 RX group=1 frame=3 raw 07 80 7A 40 26 C1 00 00 00 00 80 DA 00 00 00 00 80 DA +20:39:55.330 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:39:55.330 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:39:56.459 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:39:56.459 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:39:56.964 TX group=2 frame=2 len=006 00 00 E8 00 30 82 +20:39:56.964 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:39:57.501 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:39:57.501 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:39:58.009 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:39:58.009 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-e8-2030.txt b/captures/rcp-pairtest-e8-2030.txt new file mode 100644 index 0000000..0a149e1 --- /dev/null +++ b/captures/rcp-pairtest-e8-2030.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E8 20 30 A2 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:40:08.231 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:40:08.231 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:40:08.767 TX group=1 frame=2 len=006 00 00 E8 20 30 A2 +20:40:08.767 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:40:08.767 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 FA 48 26 49 07 80 FA 48 26 49 +20:40:09.275 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:40:09.275 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:40:09.275 RX group=1 frame=3 raw 07 80 FA 48 26 49 00 00 00 00 80 DA 00 00 00 00 80 DA +20:40:09.812 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:40:09.812 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:40:10.941 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:40:10.941 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:40:11.447 TX group=2 frame=2 len=006 00 00 E8 20 30 A2 +20:40:11.447 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:40:11.983 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:40:11.983 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:40:12.489 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:40:12.489 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-e8-40d0.txt b/captures/rcp-pairtest-e8-40d0.txt new file mode 100644 index 0000000..105cdf2 --- /dev/null +++ b/captures/rcp-pairtest-e8-40d0.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E8 40 D0 22 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:40:29.148 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:40:29.148 RX group=1 frame=1 no RX bytes +20:40:29.683 TX group=1 frame=2 len=006 00 00 E8 40 D0 22 +20:40:29.683 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:40:29.683 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 50 3A CD 07 80 7A 50 3A CD +20:40:30.222 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:40:30.222 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:40:30.222 RX group=1 frame=3 raw 07 80 7A 50 3A CD 00 00 00 00 80 DA 00 00 00 00 80 DA +20:40:30.727 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:40:30.727 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:40:31.886 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:40:31.886 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:40:32.423 TX group=2 frame=2 len=006 00 00 E8 40 D0 22 +20:40:32.423 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:40:32.927 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:40:32.927 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:40:33.432 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:40:33.432 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-e8-6080.txt b/captures/rcp-pairtest-e8-6080.txt new file mode 100644 index 0000000..544c55a --- /dev/null +++ b/captures/rcp-pairtest-e8-6080.txt @@ -0,0 +1,28 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E8 60 80 52 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes +BEGIN group 1/2 +20:40:43.482 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:40:43.482 RX group=1 frame=1 no RX bytes +20:40:44.018 TX group=1 frame=2 len=006 00 00 E8 60 80 52 +20:40:44.018 RX group=1 frame=2 ANOMALY 6 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00 +20:40:44.018 RX group=1 frame=2 raw 07 80 7A 58 30 CF +20:40:44.524 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:40:44.524 RX group=1 frame=3 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:40:45.061 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:40:45.061 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:40:46.191 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:40:46.191 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:40:46.698 TX group=2 frame=2 len=006 00 00 E8 60 80 52 +20:40:46.698 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:40:47.234 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:40:47.234 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:40:47.741 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:40:47.741 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 1 diff --git a/captures/rcp-pairtest-e9-0030.txt b/captures/rcp-pairtest-e9-0030.txt new file mode 100644 index 0000000..e4b8db4 --- /dev/null +++ b/captures/rcp-pairtest-e9-0030.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E9 00 30 83 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes +BEGIN group 1/2 +20:41:10.505 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:41:10.505 RX group=1 frame=1 no RX bytes +20:41:11.011 TX group=1 frame=2 len=006 00 00 E9 00 30 83 +20:41:11.011 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:41:11.011 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 20 D3 54 07 80 7A 20 D3 54 +20:41:11.550 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:41:11.550 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:41:11.550 RX group=1 frame=3 raw 07 80 7A 20 D3 54 00 00 00 00 80 DA 00 00 00 00 80 DA +20:41:12.055 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:41:12.055 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:41:13.215 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:41:13.215 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:41:13.752 TX group=2 frame=2 len=006 00 00 E9 00 30 83 +20:41:13.752 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:41:14.257 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:41:14.257 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:41:14.764 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:41:14.764 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-e9-2030.txt b/captures/rcp-pairtest-e9-2030.txt new file mode 100644 index 0000000..0607dfc --- /dev/null +++ b/captures/rcp-pairtest-e9-2030.txt @@ -0,0 +1,28 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E9 20 30 A3 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes +BEGIN group 1/2 +20:41:25.811 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:41:25.811 RX group=1 frame=1 no RX bytes +20:41:26.347 TX group=1 frame=2 len=006 00 00 E9 20 30 A3 +20:41:26.347 RX group=1 frame=2 ANOMALY 6 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00 +20:41:26.347 RX group=1 frame=2 raw 07 80 7A 24 D3 50 +20:41:26.856 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:41:26.856 RX group=1 frame=3 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:41:27.392 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:41:27.392 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:41:28.520 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:41:28.520 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:41:29.025 TX group=2 frame=2 len=006 00 00 E9 20 30 A3 +20:41:29.025 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:41:29.563 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:41:29.563 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:41:30.069 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:41:30.069 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 1 diff --git a/captures/rcp-pairtest-e9-40d0.txt b/captures/rcp-pairtest-e9-40d0.txt new file mode 100644 index 0000000..b82afdf --- /dev/null +++ b/captures/rcp-pairtest-e9-40d0.txt @@ -0,0 +1,28 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E9 40 D0 23 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes +BEGIN group 1/2 +20:41:39.923 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:41:39.923 RX group=1 frame=1 no RX bytes +20:41:40.429 TX group=1 frame=2 len=006 00 00 E9 40 D0 23 +20:41:40.429 RX group=1 frame=2 ANOMALY 6 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00 +20:41:40.429 RX group=1 frame=2 raw 07 80 7A 28 DD 52 +20:41:40.936 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:41:40.936 RX group=1 frame=3 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:41:41.472 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:41:41.472 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:41:42.600 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:41:42.600 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:41:43.106 TX group=2 frame=2 len=006 00 00 E9 40 D0 23 +20:41:43.106 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:41:43.643 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:41:43.643 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:41:44.148 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:41:44.148 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 1 diff --git a/captures/rcp-pairtest-e9-6080.txt b/captures/rcp-pairtest-e9-6080.txt new file mode 100644 index 0000000..a79f9c6 --- /dev/null +++ b/captures/rcp-pairtest-e9-6080.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 E9 60 80 53 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:41:53.820 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:41:53.820 RX group=1 frame=1 no RX bytes +20:41:54.326 TX group=1 frame=2 len=006 00 00 E9 60 80 53 +20:41:54.326 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:41:54.326 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 2C D8 53 07 80 7A 2C D8 53 +20:41:54.864 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:41:54.864 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:41:54.864 RX group=1 frame=3 raw 07 80 7A 2C D8 53 00 00 00 00 80 DA 00 00 00 00 80 DA +20:41:55.369 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:41:55.369 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:41:56.525 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:41:56.525 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:41:57.062 TX group=2 frame=2 len=006 00 00 E9 60 80 53 +20:41:57.062 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:41:57.599 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:41:57.599 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:41:58.104 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:41:58.104 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-ec-0030.txt b/captures/rcp-pairtest-ec-0030.txt new file mode 100644 index 0000000..faa0825 --- /dev/null +++ b/captures/rcp-pairtest-ec-0030.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 EC 00 30 86 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes +BEGIN group 1/2 +20:42:08.132 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:42:08.132 RX group=1 frame=1 no RX bytes +20:42:08.638 TX group=1 frame=2 len=006 00 00 EC 00 30 86 +20:42:08.638 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:42:08.638 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7B 40 26 C0 07 80 7B 40 26 C0 +20:42:09.177 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:42:09.177 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:42:09.177 RX group=1 frame=3 raw 07 80 7B 40 26 C0 00 00 00 00 80 DA 00 00 00 00 80 DA +20:42:09.683 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:42:09.683 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:42:10.843 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:42:10.843 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:11.380 TX group=2 frame=2 len=006 00 00 EC 00 30 86 +20:42:11.380 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:42:11.886 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:42:11.886 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:12.423 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:42:12.423 RX group=2 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-ec-2030.txt b/captures/rcp-pairtest-ec-2030.txt new file mode 100644 index 0000000..27c73f5 --- /dev/null +++ b/captures/rcp-pairtest-ec-2030.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 EC 20 30 A6 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:42:25.854 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:42:25.854 RX group=1 frame=1 no RX bytes +20:42:26.389 TX group=1 frame=2 len=006 00 00 EC 20 30 A6 +20:42:26.389 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:42:26.389 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7B 4C 26 CC 07 80 7B 4C 26 CC +20:42:26.929 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:42:26.929 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:42:26.929 RX group=1 frame=3 raw 07 80 7B 4C 26 CC 00 00 00 00 80 DA 00 00 00 00 80 DA +20:42:27.434 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:42:27.434 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:42:28.593 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:42:28.593 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:29.100 TX group=2 frame=2 len=006 00 00 EC 20 30 A6 +20:42:29.100 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:29.606 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:42:29.606 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:30.144 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:42:30.144 RX group=2 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-ec-40d0.txt b/captures/rcp-pairtest-ec-40d0.txt new file mode 100644 index 0000000..903f3c2 --- /dev/null +++ b/captures/rcp-pairtest-ec-40d0.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 EC 40 D0 26 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:42:40.170 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:42:40.170 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:42:40.706 TX group=1 frame=2 len=006 00 00 EC 40 D0 26 +20:42:40.706 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:42:40.706 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 FB 50 3A 4C 07 80 FB 50 3A 4C +20:42:41.215 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:42:41.215 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:42:41.215 RX group=1 frame=3 raw 07 80 FB 50 3A 4C 00 00 00 00 80 DA 00 00 00 00 80 DA +20:42:41.752 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:42:41.752 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:42:42.882 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:42:42.882 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:43.387 TX group=2 frame=2 len=006 00 00 EC 40 D0 26 +20:42:43.387 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:43.924 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:42:43.924 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:42:44.432 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:42:44.432 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/captures/rcp-pairtest-ec-6080.txt b/captures/rcp-pairtest-ec-6080.txt new file mode 100644 index 0000000..522bb81 --- /dev/null +++ b/captures/rcp-pairtest-ec-6080.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 90 00 80 4A +FRAME 2: 00 00 EC 60 80 56 +FRAME 3: 00 00 00 00 80 DA +FRAME 4: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:42:55.428 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:42:55.428 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:42:55.933 TX group=1 frame=2 len=006 00 00 EC 60 80 56 +20:42:55.933 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:42:55.933 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7B 58 30 CE 07 80 7B 58 30 CE +20:42:56.480 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:42:56.480 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:42:56.480 RX group=1 frame=3 raw 07 80 7B 58 30 CE 00 00 00 00 80 DA 00 00 00 00 80 DA +20:42:57.017 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:42:57.017 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 1 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +BEGIN group 2/2 +20:42:58.144 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:42:58.144 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:58.649 TX group=2 frame=2 len=006 00 00 EC 60 80 56 +20:42:58.649 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:59.155 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:42:59.155 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:42:59.690 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:42:59.690 RX group=2 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +GROUP 2 TAIL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +Anomalies: 2 diff --git a/docs/discovery-notes.md b/docs/discovery-notes.md index ebe65b3..4f0a4ef 100644 --- a/docs/discovery-notes.md +++ b/docs/discovery-notes.md @@ -6266,3 +6266,143 @@ Best current model after HE27: - the protocol surface is more parameterized than we first thought - but we still do not have a stable proof that the downstream family frames are host prompts rather than readable response blocks + +### HE28: Off-Grid Pair Test + +Goal: + +- Test whether the two payload bytes behave more like an accepted **pair code** + than two semantically independent fields. + +Idea: + +- We already know these combinations are meaningful on several branches: + - `00 80` + - `20 D0` + - `40 30` + - `60 30` +- Now try mixed combinations that were **not** part of the known-good set: + - `00 30` + - `20 30` + - `40 D0` + - `60 80` + +What would count as a hit: + +- mixed pairs behaving just like nearby known-good pairs, which would support + more independent byte meanings +- mixed pairs mostly collapsing to heartbeat/transients or producing odd + outliers, which would support the "2-byte code" model +- one branch accepting mixed pairs while another rejects them, which would mean + pairing rules are selector-specific + +Checksums: + +- `E8 00 30` -> `00 00 E8 00 30 82` +- `E8 20 30` -> `00 00 E8 20 30 A2` +- `E8 40 D0` -> `00 00 E8 40 D0 22` +- `E8 60 80` -> `00 00 E8 60 80 52` +- `E9 00 30` -> `00 00 E9 00 30 83` +- `E9 20 30` -> `00 00 E9 20 30 A3` +- `E9 40 D0` -> `00 00 E9 40 D0 23` +- `E9 60 80` -> `00 00 E9 60 80 53` +- `EC 00 30` -> `00 00 EC 00 30 86` +- `EC 20 30` -> `00 00 EC 20 30 A6` +- `EC 40 D0` -> `00 00 EC 40 D0 26` +- `EC 60 80` -> `00 00 EC 60 80 56` + +Keep the opener fixed to the strongest baseline opener for each local map: + +- use `90 00 80` before `E8`, `E9`, and `EC` + +#### HE28a: Off-grid selector pairs on `E8` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E8 00 30 82" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e8-0030.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E8 20 30 A2" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e8-2030.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E8 40 D0 22" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e8-40d0.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E8 60 80 52" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e8-6080.txt +``` + +#### HE28b: Off-grid selector pairs on `E9` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E9 00 30 83" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e9-0030.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E9 20 30 A3" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e9-2030.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E9 40 D0 23" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e9-40d0.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E9 60 80 53" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-e9-6080.txt +``` + +#### HE28c: Off-grid selector pairs on `EC` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 EC 00 30 86" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-ec-0030.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 EC 20 30 A6" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-ec-2030.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 EC 40 D0 26" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-ec-40d0.txt +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 EC 60 80 56" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 2 --frame-interval 0.20 --read-after-frame 0.30 --read-after-group 0.8 --log captures/rcp-pairtest-ec-6080.txt +``` + +Recommended order: + +1. `HE28c` (`EC` off-grid pairs) +2. `HE28a` (`E8` off-grid pairs) +3. `HE28b` (`E9` off-grid pairs) + +That keeps the most expressive selector first, where the pair-code hypothesis is +most likely to show itself clearly. + +### 2026-05-13 Off-Grid Pair Result + +This ladder weakens the strict "only a few accepted 2-byte pair codes" model. + +#### `E8` off-grid pairs under `90 00 80` + +| Selector payload | Result | +| --- | --- | +| `E8 00 30` | `07 80 7A 40 26 C1` | +| `E8 20 30` | `07 80 FA 48 26 49` | +| `E8 40 D0` | `07 80 7A 50 3A CD` | +| `E8 60 80` | `07 80 7A 58 30 CF` | + +#### `E9` off-grid pairs under `90 00 80` + +| Selector payload | Result | +| --- | --- | +| `E9 00 30` | `07 80 7A 20 D3 54` | +| `E9 20 30` | `07 80 7A 24 D3 50` | +| `E9 40 D0` | `07 80 7A 28 DD 52` | +| `E9 60 80` | `07 80 7A 2C D8 53` | + +#### `EC` off-grid pairs under `90 00 80` + +| Selector payload | Result | +| --- | --- | +| `EC 00 30` | `07 80 7B 40 26 C0` | +| `EC 20 30` | `07 80 7B 4C 26 CC` | +| `EC 40 D0` | `07 80 FB 50 3A 4C` | +| `EC 60 80` | `07 80 7B 58 30 CE` | + +Interpretation: + +- The RCP did **not** reject the off-grid mixed combinations. +- Instead, it returned structured, checksum-valid sibling families in a highly + systematic way. +- That makes the strongest current model: + - these are still two separate bytes on the wire + - and their meanings appear at least partly compositional, not just a small + fixed whitelist of accepted pair codes +- In other words, the "strict 2-byte enum only" hypothesis is weaker now. +- A more likely model is: + - selector command chooses a region + - first payload byte strongly influences one axis/page + - second payload byte also influences the returned subtype/data bytes + - some selectors, especially `EC`, can still flip whole sibling families (`7B` + vs `FB`) depending on the combination + +Best current takeaway: + +- the `state/value` bytes are meaningful +- they are not behaving like arbitrary filler +- but they also are not behaving like only four hardcoded legal pair tokens +- they look more like a small 2-byte parameter space with selector-specific + mapping rules diff --git a/docs/pt2-protocol-summary.md b/docs/pt2-protocol-summary.md index 6ecbf11..2e4bf6e 100644 --- a/docs/pt2-protocol-summary.md +++ b/docs/pt2-protocol-summary.md @@ -307,6 +307,10 @@ Current caution: with fixed command bytes, changing opener or selector `state/value` fields systematically shifted the returned families and payloads, especially on the `E8`, `E9`, and `EC` branches. +- An off-grid pair ladder weakened the strict "only known legal pairs work" + model: mixed combinations like `00 30`, `20 30`, and `40 D0` still produced + structured sibling responses, so the payload bytes now look more like a small + parameter space than a tiny whitelist of accepted pair tokens. ## What We Know diff --git a/docs/pt2-state-map.md b/docs/pt2-state-map.md index 1a0f4e4..2a3cb73 100644 --- a/docs/pt2-state-map.md +++ b/docs/pt2-state-map.md @@ -213,9 +213,43 @@ Observed examples: - `EC 20 D0` -> `E4 40 30` - `EC 40 30` -> `FB 50 26` - `EC 60 30` -> `7B 58 26` +- off-grid mixed pairs still produced structured families rather than rejection: + - `E8 40 D0` -> `7A 50 3A` + - `E9 40 D0` -> `7A 28 DD` + - `EC 40 D0` -> `FB 50 3A` + - `EC 00 30` -> `7B 40 26` That strongly suggests the `state/value` fields are not filler. They likely select a page, subtype, class, or data register within the selector space. +It also weakens the idea that only a tiny fixed whitelist of pair codes is +accepted; the space appears more compositional than that. + +## Family Classification Table + +This table is a practical aid for reading captures. It separates: + +- target families: structured families that appear to be intended branch results +- sibling families: alternate structured results in the same selector space +- fallback families: repeatable collapse/transient outcomes that usually mean + context or parameters were not what the branch wanted +- heartbeat-only: no useful branch opened + +| Selector / context area | Target families | Sibling families | Fallback families | Notes | +| --- | --- | --- | --- | --- | +| `E8` family space | `07 80 7A 50 26 D1`, `07 80 7A 40 30 D7`, `07 80 7A 48 3A D5`, `07 80 7A 58 26 D9`, `07 80 7A 50 3A CD`, `07 80 7A 40 26 C1`, `07 80 7A 58 30 CF` | `07 80 FA 50 26 51`, `07 80 FA 48 26 49` | `07 80 40 40 30 ED`, `07 80 C0 40 30 6D` | `E8` usually lives in the `7A` family; some opener/payload combinations flip it into sibling `FA`. | +| `E9` family space | `07 80 7A 28 D3 5C`, `07 80 7A 20 D8 5F`, `07 80 7A 24 FD 7E`, `07 80 7A 2C D3 58`, `07 80 7A 20 D3 54`, `07 80 7A 24 D3 50`, `07 80 7A 28 DD 52`, `07 80 7A 2C D8 53` | none clearly separated yet | `07 80 40 40 30 ED` | `E9` has been the most internally consistent: it stays in `7A` while the trailing bytes move with parameters. | +| `EC` family space | `07 80 7B 50 26 D0`, `07 80 7B 58 26 D8`, `07 80 7B 40 26 C0`, `07 80 7B 4C 26 CC`, `07 80 7B 58 30 CE` | `07 80 FB 50 26 50`, `07 80 FB 40 30 56`, `07 80 FB 50 3A 4C`, `07 80 E4 40 30 49`, `07 C0 2F 95 09 2E` | `07 80 C0 40 30 6D`, `07 80 40 40 30 ED` | `EC` is the richest and touchiest branch. It can land in `7B`, `FB`, or `E4` families depending on context and payload. | +| Heartbeat-context transients | none | none | `07 80 40 40 30 ED`, `07 80 40 60 30 CD`, `07 80 C0 40 30 6D` | These show up when traffic shape or context is recognized but does not open the intended structured branch. | +| Query/discovery surface | `07 80 68 40 30 C5`, `07 80 6C 40 30 C1`, `07 80 6D 20 D8 48` | `07 80 E8 40 30 45` and related context-sensitive variants | heartbeat-only after one-shot window is spent | This area still looks more like one-shot readable blocks than selector-space family behavior. | + +Working rule of thumb: + +- if the family is `7A`, `7B`, `FB`, `FA`, or `E4`, you are probably still in a + meaningful selector/result space +- if the family is `40`/`C0` after a branch attempt, you probably hit a + fallback/transient outcome +- if you only get heartbeat, the branch likely did not open or the one-shot + window was already gone ## Downstream Family Branches