From 0394dc03beb4383a25fa37734ef29c85135a62f5 Mon Sep 17 00:00:00 2001 From: Aiden <68633820+awils27@users.noreply.github.com> Date: Wed, 13 May 2026 20:11:56 +1000 Subject: [PATCH] run 27 --- captures/rcp-context-90-e8.txt | 29 +++++++ captures/rcp-context-90-e9.txt | 29 +++++++ captures/rcp-context-90-ec.txt | 28 ++++++ captures/rcp-context-af-e8.txt | 29 +++++++ captures/rcp-context-af-e9.txt | 28 ++++++ captures/rcp-context-af-ec.txt | 28 ++++++ captures/rcp-context-hb-e8.txt | 29 +++++++ captures/rcp-context-hb-e9.txt | 29 +++++++ captures/rcp-context-hb-ec.txt | 28 ++++++ docs/discovery-notes.md | 154 +++++++++++++++++++++++++++++++++ docs/pt2-protocol-summary.md | 9 +- docs/pt2-state-map.md | 45 +++++++--- 12 files changed, 451 insertions(+), 14 deletions(-) create mode 100644 captures/rcp-context-90-e8.txt create mode 100644 captures/rcp-context-90-e9.txt create mode 100644 captures/rcp-context-90-ec.txt create mode 100644 captures/rcp-context-af-e8.txt create mode 100644 captures/rcp-context-af-e9.txt create mode 100644 captures/rcp-context-af-ec.txt create mode 100644 captures/rcp-context-hb-e8.txt create mode 100644 captures/rcp-context-hb-e9.txt create mode 100644 captures/rcp-context-hb-ec.txt diff --git a/captures/rcp-context-90-e8.txt b/captures/rcp-context-90-e8.txt new file mode 100644 index 0000000..e8e1f81 --- /dev/null +++ b/captures/rcp-context-90-e8.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 30 C2 +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:06:59.104 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:06:59.104 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:06:59.642 TX group=1 frame=2 len=006 00 00 E8 40 30 C2 +20:06:59.642 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:06:59.642 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 50 26 D1 07 80 7A 50 26 D1 +20:07:00.150 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:07:00.150 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:07:00.150 RX group=1 frame=3 raw 07 80 7A 50 26 D1 00 00 00 00 80 DA 00 00 00 00 80 DA +20:07:00.687 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:07:00.687 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:07:01.817 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:07:01.817 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:07:02.352 TX group=2 frame=2 len=006 00 00 E8 40 30 C2 +20:07:02.352 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:07:02.888 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:07:02.888 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:07:03.394 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:07:03.394 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-context-90-e9.txt b/captures/rcp-context-90-e9.txt new file mode 100644 index 0000000..cedc844 --- /dev/null +++ b/captures/rcp-context-90-e9.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 40 30 C3 +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:07:18.641 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:07:18.641 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:07:19.149 TX group=1 frame=2 len=006 00 00 E9 40 30 C3 +20:07:19.149 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:07:19.149 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 28 D3 5C 07 80 7A 28 D3 5C +20:07:19.687 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:07:19.687 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:07:19.687 RX group=1 frame=3 raw 07 80 7A 28 D3 5C 00 00 00 00 80 DA 00 00 00 00 80 DA +20:07:20.194 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:07:20.194 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:07:21.353 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:07:21.353 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:07:21.888 TX group=2 frame=2 len=006 00 00 E9 40 30 C3 +20:07:21.888 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:07:22.396 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:07:22.396 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:07:22.929 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:07:22.929 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-context-90-ec.txt b/captures/rcp-context-90-ec.txt new file mode 100644 index 0000000..3cf8258 --- /dev/null +++ b/captures/rcp-context-90-ec.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 EC 40 30 C6 +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:07:33.328 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:07:33.328 RX group=1 frame=1 heartbeat-compatible RX: 7 bytes, offset 0, 1 frames + 1 bytes +20:07:33.833 TX group=1 frame=2 len=006 00 00 EC 40 30 C6 +20:07:33.833 RX group=1 frame=2 ANOMALY 23 RX bytes; first mismatch at byte 5: got 07, heartbeat offset 1 expected 00 +20:07:33.833 RX group=1 frame=2 raw 00 00 00 80 DA 07 80 7B 50 26 D0 07 80 7B 50 26 D0 07 80 7B 50 26 D0 +20:07:34.372 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:07:34.372 RX group=1 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:07:34.879 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:07:34.879 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:07:36.009 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:07:36.009 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:07:36.544 TX group=2 frame=2 len=006 00 00 EC 40 30 C6 +20:07:36.544 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:07:37.078 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:07:37.078 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:07:37.586 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:07:37.586 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-context-af-e8.txt b/captures/rcp-context-af-e8.txt new file mode 100644 index 0000000..51a8c50 --- /dev/null +++ b/captures/rcp-context-af-e8.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 AF 00 80 75 +FRAME 2: 00 00 E8 40 30 C2 +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:07:54.765 TX group=1 frame=1 len=006 00 00 AF 00 80 75 +20:07:54.765 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:07:55.270 TX group=1 frame=2 len=006 00 00 E8 40 30 C2 +20:07:55.270 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:07:55.270 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 FA 50 26 51 07 80 FA 50 26 51 +20:07:55.777 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:07:55.777 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:07:55.777 RX group=1 frame=3 raw 07 80 FA 50 26 51 00 00 00 00 80 DA 00 00 00 00 80 DA +20:07:56.314 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:07:56.314 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:07:57.441 TX group=2 frame=1 len=006 00 00 AF 00 80 75 +20:07:57.441 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:07:57.947 TX group=2 frame=2 len=006 00 00 E8 40 30 C2 +20:07:57.947 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:07:58.483 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:07:58.483 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:07:58.989 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:07:58.989 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-context-af-e9.txt b/captures/rcp-context-af-e9.txt new file mode 100644 index 0000000..e1fe45f --- /dev/null +++ b/captures/rcp-context-af-e9.txt @@ -0,0 +1,28 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 AF 00 80 75 +FRAME 2: 00 00 E9 40 30 C3 +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:08:16.316 TX group=1 frame=1 len=006 00 00 AF 00 80 75 +20:08:16.316 RX group=1 frame=1 no RX bytes +20:08:16.854 TX group=1 frame=2 len=006 00 00 E9 40 30 C3 +20:08:16.854 RX group=1 frame=2 ANOMALY 24 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:08:16.854 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 28 D3 5C 07 80 7A 28 D3 5C 07 80 7A 28 D3 5C +20:08:17.391 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:08:17.391 RX group=1 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:08:17.895 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:08:17.895 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:08:19.023 TX group=2 frame=1 len=006 00 00 AF 00 80 75 +20:08:19.023 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:08:19.559 TX group=2 frame=2 len=006 00 00 E9 40 30 C3 +20:08:19.559 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:08:20.065 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:08:20.065 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:08:20.569 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:08:20.569 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-context-af-ec.txt b/captures/rcp-context-af-ec.txt new file mode 100644 index 0000000..14bcd03 --- /dev/null +++ b/captures/rcp-context-af-ec.txt @@ -0,0 +1,28 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 AF 00 80 75 +FRAME 2: 00 00 EC 40 30 C6 +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:08:31.625 TX group=1 frame=1 len=006 00 00 AF 00 80 75 +20:08:31.625 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:08:32.131 TX group=1 frame=2 len=006 00 00 EC 40 30 C6 +20:08:32.131 RX group=1 frame=2 ANOMALY 24 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:08:32.131 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7B 50 26 D0 07 80 7B 50 26 D0 07 80 7B 50 26 D0 +20:08:32.670 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:08:32.670 RX group=1 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:08:33.175 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:08:33.175 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:08:34.304 TX group=2 frame=1 len=006 00 00 AF 00 80 75 +20:08:34.304 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:08:34.841 TX group=2 frame=2 len=006 00 00 EC 40 30 C6 +20:08:34.841 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:08:35.349 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:08:35.349 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:08:35.883 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:08:35.883 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: 1 diff --git a/captures/rcp-context-hb-e8.txt b/captures/rcp-context-hb-e8.txt new file mode 100644 index 0000000..c407c97 --- /dev/null +++ b/captures/rcp-context-hb-e8.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 00 00 80 DA +FRAME 2: 00 00 E8 40 30 C2 +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:09:02.362 TX group=1 frame=1 len=006 00 00 00 00 80 DA +20:09:02.362 RX group=1 frame=1 no RX bytes +20:09:02.867 TX group=1 frame=2 len=006 00 00 E8 40 30 C2 +20:09:02.867 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:09:02.867 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 50 26 D1 07 80 7A 50 26 D1 +20:09:03.408 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:09:03.408 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:09:03.408 RX group=1 frame=3 raw 07 80 7A 50 26 D1 00 00 00 00 80 DA 00 00 00 00 80 DA +20:09:03.916 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:09:03.916 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:09:05.076 TX group=2 frame=1 len=006 00 00 00 00 80 DA +20:09:05.076 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:05.582 TX group=2 frame=2 len=006 00 00 E8 40 30 C2 +20:09:05.582 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:06.119 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:09:06.119 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:09:06.656 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:09:06.656 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-context-hb-e9.txt b/captures/rcp-context-hb-e9.txt new file mode 100644 index 0000000..683db2f --- /dev/null +++ b/captures/rcp-context-hb-e9.txt @@ -0,0 +1,29 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 00 00 80 DA +FRAME 2: 00 00 E9 40 30 C3 +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:09:22.843 TX group=1 frame=1 len=006 00 00 00 00 80 DA +20:09:22.843 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:09:23.349 TX group=1 frame=2 len=006 00 00 E9 40 30 C3 +20:09:23.349 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:09:23.349 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 28 D3 5C 07 80 7A 28 D3 5C +20:09:23.856 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:09:23.856 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:09:23.856 RX group=1 frame=3 raw 07 80 7A 28 D3 5C 00 00 00 00 80 DA 00 00 00 00 80 DA +20:09:24.392 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:09:24.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:09:25.521 TX group=2 frame=1 len=006 00 00 00 00 80 DA +20:09:25.521 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:26.027 TX group=2 frame=2 len=006 00 00 E9 40 30 C3 +20:09:26.027 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:26.561 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:09:26.561 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:09:27.068 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:09:27.068 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-context-hb-ec.txt b/captures/rcp-context-hb-ec.txt new file mode 100644 index 0000000..6c5a0e2 --- /dev/null +++ b/captures/rcp-context-hb-ec.txt @@ -0,0 +1,28 @@ +Sequence probe: 4 frames x 2 group(s) on COM5 at 38400 8N1 +FRAME 1: 00 00 00 00 80 DA +FRAME 2: 00 00 EC 40 30 C6 +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:09:39.882 TX group=1 frame=1 len=006 00 00 00 00 80 DA +20:09:39.882 RX group=1 frame=1 ANOMALY 6 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00 +20:09:39.882 RX group=1 frame=1 raw 07 80 40 40 30 ED +20:09:40.419 TX group=1 frame=2 len=006 00 00 EC 40 30 C6 +20:09:40.419 RX group=1 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:40.957 TX group=1 frame=3 len=006 00 00 00 00 80 DA +20:09:40.957 RX group=1 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:41.462 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:09:41.462 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:09:42.624 TX group=2 frame=1 len=006 00 00 00 00 80 DA +20:09:42.624 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:43.130 TX group=2 frame=2 len=006 00 00 EC 40 30 C6 +20:09:43.130 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:43.636 TX group=2 frame=3 len=006 00 00 00 00 80 DA +20:09:43.636 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:09:44.172 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:09:44.172 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: 1 diff --git a/docs/discovery-notes.md b/docs/discovery-notes.md index d99a4d3..b347187 100644 --- a/docs/discovery-notes.md +++ b/docs/discovery-notes.md @@ -5639,3 +5639,157 @@ Best current read: - no `A0` -> selector values tend to collapse into heartbeat-family transients - with `A0` -> some selector values can open structured family spaces + +### HE24: Can Something Other Than `A0` Open The `Ex` Selector Surface? + +Goal: + +- Determine whether `A0` is the main gate into the `E8` / `E9` / `EC` selector + surface, or whether other known meaningful host frames can provide similar + context. + +Strategy: + +- Keep the selector fixed. +- Change only the leading context frame. +- Use a small set of context candidates that have already shown real protocol + significance elsewhere: + - `00 00 A0 00 80 7A` as the known-good context + - `00 00 90 00 80 4A` because `90` has previously behaved like setup/context + - `00 00 AF 00 80 75` because `AF` has produced structured responses in other + sequences + - bare heartbeat `00 00 00 00 80 DA` as a minimal host-present control + +What would count as a hit: + +- a non-`A0` context causing `E8`, `E9`, or `EC` to open the same structured + branch we normally associate with `A0` +- a non-`A0` context causing a different but stable structured family +- all non-`A0` contexts collapsing to heartbeat-family transients, which would + make `A0` look much more like the main gate + +#### HE24a: `90` As Context For `E8` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E8 40 30 C2" --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-context-90-e8.txt +``` + +#### HE24b: `90` As Context For `E9` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 E9 40 30 C3" --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-context-90-e9.txt +``` + +#### HE24c: `90` As Context For `EC` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 90 00 80 4A" --frame "00 00 EC 40 30 C6" --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-context-90-ec.txt +``` + +#### HE24d: `AF` As Context For `E8` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 AF 00 80 75" --frame "00 00 E8 40 30 C2" --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-context-af-e8.txt +``` + +#### HE24e: `AF` As Context For `E9` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 AF 00 80 75" --frame "00 00 E9 40 30 C3" --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-context-af-e9.txt +``` + +#### HE24f: `AF` As Context For `EC` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 AF 00 80 75" --frame "00 00 EC 40 30 C6" --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-context-af-ec.txt +``` + +#### HE24g: Bare Heartbeat Context For `E8` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 E8 40 30 C2" --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-context-hb-e8.txt +``` + +#### HE24h: Bare Heartbeat Context For `E9` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 E9 40 30 C3" --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-context-hb-e9.txt +``` + +#### HE24i: Bare Heartbeat Context For `EC` + +```powershell +python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 EC 40 30 C6" --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-context-hb-ec.txt +``` + +Recommended run order: + +1. `HE24c` (`90 -> EC`) +2. `HE24f` (`AF -> EC`) +3. `HE24i` (heartbeat -> `EC`) +4. `HE24a` / `HE24b` (`90 -> E8/E9`) +5. `HE24d` / `HE24e` (`AF -> E8/E9`) +6. `HE24g` / `HE24h` (heartbeat -> `E8/E9`) + +That order keeps the most stateful selector (`EC`) first, which should tell us +quickly whether `A0` is special or whether there is a broader family of context +openers. + +### 2026-05-13 Non-`A0` Context Ladder Result + +Captures: + +- `captures/rcp-context-90-e8.txt` +- `captures/rcp-context-90-e9.txt` +- `captures/rcp-context-90-ec.txt` +- `captures/rcp-context-af-e8.txt` +- `captures/rcp-context-af-e9.txt` +- `captures/rcp-context-af-ec.txt` +- `captures/rcp-context-hb-e8.txt` +- `captures/rcp-context-hb-e9.txt` +- `captures/rcp-context-hb-ec.txt` + +Observed group-1 outcomes: + +| Context -> selector | Result | +| --- | --- | +| `90 -> E8` | `07 80 7A 50 26 D1` | +| `90 -> E9` | `07 80 7A 28 D3 5C` | +| `90 -> EC` | `07 80 7B 50 26 D0` | +| `AF -> E8` | `07 80 FA 50 26 51` | +| `AF -> E9` | `07 80 7A 28 D3 5C` | +| `AF -> EC` | `07 80 7B 50 26 D0` | +| `heartbeat -> E8` | `07 80 7A 50 26 D1` | +| `heartbeat -> E9` | `07 80 7A 28 D3 5C` | +| `heartbeat -> EC` | no `7B`; initial heartbeat provoked `07 80 40 40 30 ED`, then `EC` stayed heartbeat-only | + +Interpretation: + +- `A0` is **not** the only context opener for the `Ex` selector surface. +- `90` can stand in as a strong general context opener for all three tested + selectors: + - `E8` -> `7A 50 26` + - `E9` -> `7A 28 D3` + - `EC` -> `7B 50 26` +- `AF` can also open meaningful selector branches: + - `AF -> E9` matched the known `E9` family + - `AF -> EC` matched the known `EC` family + - `AF -> E8` shifted to the alternate sibling `FA 50 26` family instead of + `7A 50 26` +- Bare heartbeat is enough context for `E8` and `E9`, but **not** for `EC`. + `EC` still appears stricter and more context-sensitive than the `E8/E9` + branch pair. + +Best current read: + +- We are not looking at a single hard gate byte. +- We are looking at a broader **context-opener family**: + - `A0` + - `90` + - `AF` + - and, for at least `E8/E9`, even bare heartbeat context +- `E8` and `E9` seem easier to open than `EC`. +- `EC` may require a stronger or richer context class than plain heartbeat. +- `AF -> E8 -> FA 50 26` is especially interesting because it suggests the + context frame can influence **which sibling family** the selector opens, not + just whether it opens anything at all. diff --git a/docs/pt2-protocol-summary.md b/docs/pt2-protocol-summary.md index 712eec3..d39a368 100644 --- a/docs/pt2-protocol-summary.md +++ b/docs/pt2-protocol-summary.md @@ -290,6 +290,10 @@ Current caution: opening their known `7A` branches. - At the same time, `A0` is not sufficient to make every branch deterministic: a later `A0 -> E9` control repeat returned heartbeat only. +- A broader non-`A0` context ladder showed that `A0` is not the only opener: + `90` opened `E8`, `E9`, and `EC`; `AF` opened `E9` and `EC`, and shifted + `E8` into the sibling `07 80 FA 50 26 51` family; bare heartbeat opened `E8` + and `E9` but not `EC`. ## What We Know @@ -327,8 +331,9 @@ Current caution: - Overall, the evidence is getting stronger for selector-like host entries that open related response families, but weaker for a fully reproducible multi-turn "conversation" state. -- `A0` now looks more like part of the selection context than a purely generic - primer, but its effect is branch-dependent and not fully deterministic. +- There appears to be a small family of context openers rather than a single + magic gate byte; `EC` is stricter than `E8/E9`, and heartbeat alone was not + enough to open it. ## What We Do Not Know diff --git a/docs/pt2-state-map.md b/docs/pt2-state-map.md index f90903c..a49dfbe 100644 --- a/docs/pt2-state-map.md +++ b/docs/pt2-state-map.md @@ -123,28 +123,37 @@ The strongest current "state map" behavior lives here. Certain host-side values look less like direct commands and more like selector/context entries that open different downstream response families. -### S4: `A0`-Contexted Selector Space +### S4: Context-Opened Selector Space -Current best evidence says `A0` is not always just a neutral primer. On at -least the `EC` and `E8` branches, it appears to be part of the context that -opens the family space. +Current best evidence says the selector surface is opened not by a single magic +byte, but by a small family of host-side context setters. Observed: - `A0 + E8` can produce `7A 50 26` family output - `A0 + EC` tends to produce `7B`-family output -- `E8` without `A0` fell back to `07 80 40 40 30 ED` -- `E9` without `A0` also fell back to `07 80 40 40 30 ED` -- `EC` without leading `A0` falls back to `07 80 C0 40 30 6D` +- `90 + E8` produced `7A 50 26` +- `90 + E9` produced `7A 28 D3` +- `90 + EC` produced `7B 50 26` +- `AF + E9` produced `7A 28 D3` +- `AF + EC` produced `7B 50 26` +- `AF + E8` produced the sibling `FA 50 26` family +- bare heartbeat + `E8` produced `7A 50 26` +- bare heartbeat + `E9` produced `7A 28 D3` +- bare heartbeat + `EC` did not open `7B`; it stayed in heartbeat-family + behavior Nuance: +- `A0` is not the only opener. - `A0` is not sufficient to make every selector deterministic. - A later control repeat of `A0 + E9` produced heartbeat only, even though earlier `A0 + E9` runs produced `07 80 7A 28 D3 5C`. +- `EC` appears stricter than `E8/E9`, because heartbeat alone was enough for + `E8/E9` but not for `EC`. -Confidence: high that `A0` is contextual; medium on the exact scope of that -context. +Confidence: high that a context-opener family exists; medium-high on the exact +rules for each selector. ## `Ex` Selector Neighborhood @@ -185,12 +194,18 @@ What we know: - reproducible in group 1 - exact echo of `07 80 7A 50 26 D1` did not advance state - host-shaped mirror of `7A 50 26` did not advance state +- opened by more than one context: + - `A0` + - `90` + - bare heartbeat +- `AF` shifted this branch to sibling `FA 50 26 51` Read: - `E8` is the active selector - `7A 50 26 D1` is a downstream family response, not yet a meaningful next host turn +- context affects which sibling family `E8` opens Confidence: medium-high @@ -211,6 +226,10 @@ What we know: - without `A0`, `E9` fell back to `07 80 40 40 30 ED` - with `A0`, a later control repeat returned only heartbeat, so this branch is less deterministic than `E8` +- also opened by: + - `90` + - `AF` + - bare heartbeat Read: @@ -236,6 +255,8 @@ or Important details: - without leading `A0`, `EC` fell back to `07 80 C0 40 30 6D` +- `90` and `AF` also opened `7B 50 26` +- bare heartbeat alone did not - short and long spacing with `A0` still favored `07 80 7B 50 26 D0` - exact `7B` echo once produced: - `07 C0 2F 95 09 2E` @@ -245,7 +266,7 @@ Important details: Read: - `EC` is the most stateful selector branch seen so far -- `A0` seems to be part of its selection context +- `EC` needs a stronger context class than plain heartbeat - `7B` is the most stable downstream family on this branch - `FB` is real but currently looks like a sibling observation, not a clear reply target @@ -262,9 +283,9 @@ S1 host-present/cadence-held S2 discovery/query window -> selector/context entry S4 A0-contexted selector space - -> E8 -> B1 (7A 50 26 family) + -> E8 -> B1 (7A / FA family space) -> E9 -> B2 (7A 28 D3 family) - -> EC -> B3 (7B / FB family) + -> EC -> B3 (7B / FB family space) -> E6/E7/EB -> heartbeat-family transient -> EA / no-A0-EC -> C0-family transient ```