From cdb8bf1cb9a3ae84ec02071ad4e9b5a644fe59a1 Mon Sep 17 00:00:00 2001 From: Aiden <68633820+awils27@users.noreply.github.com> Date: Wed, 13 May 2026 20:17:48 +1000 Subject: [PATCH] run 28 --- captures/rcp-context-90-e8-exact-7a5026.txt | 34 +++++ captures/rcp-context-90-e9-exact-7a28d3.txt | 33 +++++ captures/rcp-context-90-ec-exact-7b5026.txt | 34 +++++ captures/rcp-context-af-e8-exact-fa5026.txt | 33 +++++ captures/rcp-context-af-e9-exact-7a28d3.txt | 34 +++++ captures/rcp-context-af-ec-exact-7b5026.txt | 34 +++++ docs/discovery-notes.md | 131 ++++++++++++++++++++ docs/pt2-protocol-summary.md | 7 ++ docs/pt2-state-map.md | 13 +- 9 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 captures/rcp-context-90-e8-exact-7a5026.txt create mode 100644 captures/rcp-context-90-e9-exact-7a28d3.txt create mode 100644 captures/rcp-context-90-ec-exact-7b5026.txt create mode 100644 captures/rcp-context-af-e8-exact-fa5026.txt create mode 100644 captures/rcp-context-af-e9-exact-7a28d3.txt create mode 100644 captures/rcp-context-af-ec-exact-7b5026.txt diff --git a/captures/rcp-context-90-e8-exact-7a5026.txt b/captures/rcp-context-90-e8-exact-7a5026.txt new file mode 100644 index 0000000..e7bfc1d --- /dev/null +++ b/captures/rcp-context-90-e8-exact-7a5026.txt @@ -0,0 +1,34 @@ +Sequence probe: 5 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: 07 80 7A 50 26 D1 +FRAME 4: 00 00 00 00 80 DA +FRAME 5: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:13:31.618 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:13:31.618 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:13:32.156 TX group=1 frame=2 len=006 00 00 E8 40 30 C2 +20:13:32.156 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:13:32.156 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7A 58 26 D9 07 80 7A 58 26 D9 +20:13:32.663 TX group=1 frame=3 len=006 07 80 7A 50 26 D1 +20:13:32.663 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:13:32.663 RX group=1 frame=3 raw 07 80 7A 58 26 D9 00 00 00 00 80 DA 00 00 00 00 80 DA +20:13:33.168 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:13:33.168 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:13:33.703 TX group=1 frame=5 len=006 00 00 00 00 80 DA +20:13:33.703 RX group=1 frame=5 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:13:34.859 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:13:34.859 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:13:35.395 TX group=2 frame=2 len=006 00 00 E8 40 30 C2 +20:13:35.395 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:13:35.900 TX group=2 frame=3 len=006 07 80 7A 50 26 D1 +20:13:35.900 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:13:36.436 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:13:36.436 RX group=2 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:13:36.974 TX group=2 frame=5 len=006 00 00 00 00 80 DA +20:13:36.974 RX group=2 frame=5 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-e9-exact-7a28d3.txt b/captures/rcp-context-90-e9-exact-7a28d3.txt new file mode 100644 index 0000000..0b6cc49 --- /dev/null +++ b/captures/rcp-context-90-e9-exact-7a28d3.txt @@ -0,0 +1,33 @@ +Sequence probe: 5 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: 07 80 7A 28 D3 5C +FRAME 4: 00 00 00 00 80 DA +FRAME 5: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:14:12.073 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:14:12.073 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:14:12.608 TX group=1 frame=2 len=006 00 00 E9 40 30 C3 +20:14:12.608 RX group=1 frame=2 ANOMALY 24 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:14:12.608 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:14:13.148 TX group=1 frame=3 len=006 07 80 7A 28 D3 5C +20:14:13.148 RX group=1 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:13.656 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:14:13.656 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:14.162 TX group=1 frame=5 len=006 00 00 00 00 80 DA +20:14:14.162 RX group=1 frame=5 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:14:15.290 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:14:15.290 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:15.825 TX group=2 frame=2 len=006 00 00 E9 40 30 C3 +20:14:15.825 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:14:16.361 TX group=2 frame=3 len=006 07 80 7A 28 D3 5C +20:14:16.361 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:14:16.867 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:14:16.867 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:17.373 TX group=2 frame=5 len=006 00 00 00 00 80 DA +20:14:17.373 RX group=2 frame=5 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-90-ec-exact-7b5026.txt b/captures/rcp-context-90-ec-exact-7b5026.txt new file mode 100644 index 0000000..c6cb2fa --- /dev/null +++ b/captures/rcp-context-90-ec-exact-7b5026.txt @@ -0,0 +1,34 @@ +Sequence probe: 5 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: 07 80 7B 50 26 D0 +FRAME 4: 00 00 00 00 80 DA +FRAME 5: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:14:42.810 TX group=1 frame=1 len=006 00 00 90 00 80 4A +20:14:42.810 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:14:43.345 TX group=1 frame=2 len=006 00 00 EC 40 30 C6 +20:14:43.345 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:14:43.345 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 FB 50 26 50 07 80 FB 50 26 50 +20:14:43.852 TX group=1 frame=3 len=006 07 80 7B 50 26 D0 +20:14:43.852 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:14:43.852 RX group=1 frame=3 raw 07 80 FB 50 26 50 00 00 00 00 80 DA 00 00 00 00 80 DA +20:14:44.357 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:14:44.357 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:44.891 TX group=1 frame=5 len=006 00 00 00 00 80 DA +20:14:44.891 RX group=1 frame=5 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:14:46.019 TX group=2 frame=1 len=006 00 00 90 00 80 4A +20:14:46.019 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:46.524 TX group=2 frame=2 len=006 00 00 EC 40 30 C6 +20:14:46.524 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:47.061 TX group=2 frame=3 len=006 07 80 7B 50 26 D0 +20:14:47.061 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:14:47.598 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:14:47.598 RX group=2 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:14:48.104 TX group=2 frame=5 len=006 00 00 00 00 80 DA +20:14:48.104 RX group=2 frame=5 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-e8-exact-fa5026.txt b/captures/rcp-context-af-e8-exact-fa5026.txt new file mode 100644 index 0000000..339dc43 --- /dev/null +++ b/captures/rcp-context-af-e8-exact-fa5026.txt @@ -0,0 +1,33 @@ +Sequence probe: 5 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: 07 80 FA 50 26 51 +FRAME 4: 00 00 00 00 80 DA +FRAME 5: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 25 bytes, offset 0, 4 frames + 1 bytes +BEGIN group 1/2 +20:13:49.511 TX group=1 frame=1 len=006 00 00 AF 00 80 75 +20:13:49.511 RX group=1 frame=1 heartbeat-compatible RX: 5 bytes, offset 1, 0 frames + 5 bytes +20:13:50.046 TX group=1 frame=2 len=006 00 00 E8 40 30 C2 +20:13:50.046 RX group=1 frame=2 ANOMALY 6 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00 +20:13:50.046 RX group=1 frame=2 raw 07 80 7A 50 26 D1 +20:13:50.585 TX group=1 frame=3 len=006 07 80 FA 50 26 51 +20:13:50.585 RX group=1 frame=3 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:13:51.091 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:13:51.091 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:13:51.626 TX group=1 frame=5 len=006 00 00 00 00 80 DA +20:13:51.626 RX group=1 frame=5 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:13:52.753 TX group=2 frame=1 len=006 00 00 AF 00 80 75 +20:13:52.753 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:13:53.256 TX group=2 frame=2 len=006 00 00 E8 40 30 C2 +20:13:53.256 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:13:53.762 TX group=2 frame=3 len=006 07 80 FA 50 26 51 +20:13:53.762 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:13:54.298 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:13:54.298 RX group=2 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:13:54.805 TX group=2 frame=5 len=006 00 00 00 00 80 DA +20:13:54.805 RX group=2 frame=5 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-e9-exact-7a28d3.txt b/captures/rcp-context-af-e9-exact-7a28d3.txt new file mode 100644 index 0000000..22a7b7a --- /dev/null +++ b/captures/rcp-context-af-e9-exact-7a28d3.txt @@ -0,0 +1,34 @@ +Sequence probe: 5 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: 07 80 7A 28 D3 5C +FRAME 4: 00 00 00 00 80 DA +FRAME 5: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:14:27.674 TX group=1 frame=1 len=006 00 00 AF 00 80 75 +20:14:27.674 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes +20:14:28.208 TX group=1 frame=2 len=006 00 00 E9 40 30 C3 +20:14:28.208 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:14:28.208 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:14:28.716 TX group=1 frame=3 len=006 07 80 7A 28 D3 5C +20:14:28.716 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:14:28.716 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:14:29.251 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:14:29.251 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:14:29.756 TX group=1 frame=5 len=006 00 00 00 00 80 DA +20:14:29.756 RX group=1 frame=5 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:14:30.884 TX group=2 frame=1 len=006 00 00 AF 00 80 75 +20:14:30.884 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:31.421 TX group=2 frame=2 len=006 00 00 E9 40 30 C3 +20:14:31.421 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:14:31.957 TX group=2 frame=3 len=006 07 80 7A 28 D3 5C +20:14:31.957 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:14:32.461 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:14:32.461 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:14:32.967 TX group=2 frame=5 len=006 00 00 00 00 80 DA +20:14:32.967 RX group=2 frame=5 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-ec-exact-7b5026.txt b/captures/rcp-context-af-ec-exact-7b5026.txt new file mode 100644 index 0000000..982efba --- /dev/null +++ b/captures/rcp-context-af-ec-exact-7b5026.txt @@ -0,0 +1,34 @@ +Sequence probe: 5 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: 07 80 7B 50 26 D0 +FRAME 4: 00 00 00 00 80 DA +FRAME 5: 00 00 00 00 80 DA +BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes +BEGIN group 1/2 +20:14:59.485 TX group=1 frame=1 len=006 00 00 AF 00 80 75 +20:14:59.485 RX group=1 frame=1 no RX bytes +20:14:59.993 TX group=1 frame=2 len=006 00 00 EC 40 30 C6 +20:14:59.993 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00 +20:14:59.993 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 7B 50 26 D0 07 80 7B 50 26 D0 +20:15:00.534 TX group=1 frame=3 len=006 07 80 7B 50 26 D0 +20:15:00.534 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00 +20:15:00.534 RX group=1 frame=3 raw 07 80 7B 50 26 D0 00 00 00 00 80 DA 00 00 00 00 80 DA +20:15:01.040 TX group=1 frame=4 len=006 00 00 00 00 80 DA +20:15:01.040 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:15:01.576 TX group=1 frame=5 len=006 00 00 00 00 80 DA +20:15:01.576 RX group=1 frame=5 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:15:02.735 TX group=2 frame=1 len=006 00 00 AF 00 80 75 +20:15:02.735 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:15:03.270 TX group=2 frame=2 len=006 00 00 EC 40 30 C6 +20:15:03.270 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes +20:15:03.774 TX group=2 frame=3 len=006 07 80 7B 50 26 D0 +20:15:03.774 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:15:04.280 TX group=2 frame=4 len=006 00 00 00 00 80 DA +20:15:04.280 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes +20:15:04.816 TX group=2 frame=5 len=006 00 00 00 00 80 DA +20:15:04.816 RX group=2 frame=5 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 b347187..94baacf 100644 --- a/docs/discovery-notes.md +++ b/docs/discovery-notes.md @@ -5793,3 +5793,134 @@ Best current read: - `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. + +### HE25: Do `90` And `AF` Change Downstream Behavior Too? + +Goal: + +- Check whether `90` and `AF` only change the *first* family opened by a + selector, or whether they also change what happens when we answer that family. + +Method: + +- Use a context opener (`90` or `AF`) +- Open a known selector branch (`E8`, `E9`, or `EC`) +- Immediately send the exact downstream family frame that branch produced +- Compare whether the follow-up behavior differs by opener + +This keeps the selector and downstream family fixed while changing only the +context opener. + +What would count as a hit: + +- the same downstream exact echo behaving differently under `90` vs `AF` +- one opener causing a new second-stage family while the other falls flat +- the opener changing whether the branch drains to heartbeat or continues + +#### HE25a: `90 -> E8 -> exact 7A 50 26` + +```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 "07 80 7A 50 26 D1" --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-exact-7a5026.txt +``` + +#### HE25b: `AF -> E8 -> exact FA 50 26` + +This uses the family that `AF -> E8` actually opened. + +```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 "07 80 FA 50 26 51" --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-exact-fa5026.txt +``` + +#### HE25c: `90 -> E9 -> exact 7A 28 D3` + +```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 "07 80 7A 28 D3 5C" --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-exact-7a28d3.txt +``` + +#### HE25d: `AF -> E9 -> exact 7A 28 D3` + +```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 "07 80 7A 28 D3 5C" --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-exact-7a28d3.txt +``` + +#### HE25e: `90 -> EC -> exact 7B 50 26` + +```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 "07 80 7B 50 26 D0" --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-exact-7b5026.txt +``` + +#### HE25f: `AF -> EC -> exact 7B 50 26` + +```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 "07 80 7B 50 26 D0" --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-exact-7b5026.txt +``` + +Recommended order: + +1. `HE25e` (`90 -> EC -> exact 7B`) +2. `HE25f` (`AF -> EC -> exact 7B`) +3. `HE25c` / `HE25d` (`90/AF -> E9 -> exact 7A 28 D3`) +4. `HE25a` / `HE25b` (`90 -> E8 -> exact 7A 50 26`, `AF -> E8 -> exact FA 50 26`) + +That order keeps the most stateful selector first again, while still checking +whether opener choice changes the downstream echo behavior on the simpler `E8` +and `E9` branches. + +### 2026-05-13 Opener-Dependent Downstream Behavior Result + +Captures: + +- `captures/rcp-context-90-e8-exact-7a5026.txt` +- `captures/rcp-context-af-e8-exact-fa5026.txt` +- `captures/rcp-context-90-e9-exact-7a28d3.txt` +- `captures/rcp-context-af-e9-exact-7a28d3.txt` +- `captures/rcp-context-90-ec-exact-7b5026.txt` +- `captures/rcp-context-af-ec-exact-7b5026.txt` + +Observed group-1 outcomes: + +| Setup | Selector result | Exact-echo follow-up result | +| --- | --- | --- | +| `90 -> E8 -> exact 7A 50 26` | `07 80 7A 58 26 D9` | heartbeat only after sending `07 80 7A 50 26 D1` | +| `AF -> E8 -> exact FA 50 26` | `07 80 7A 50 26 D1` | heartbeat only after sending `07 80 FA 50 26 51` | +| `90 -> E9 -> exact 7A 28 D3` | `07 80 7A 28 D3 5C` | heartbeat only | +| `AF -> E9 -> exact 7A 28 D3` | `07 80 7A 28 D3 5C` | heartbeat only | +| `90 -> EC -> exact 7B 50 26` | `07 80 FB 50 26 50` | heartbeat only after sending `07 80 7B 50 26 D0` | +| `AF -> EC -> exact 7B 50 26` | `07 80 7B 50 26 D0` | heartbeat only | + +Interpretation: + +- No opener produced a stable second-stage reply to the downstream exact echo. +- So, for now, opener choice seems to affect the **branch entry** much more than + the **reply-to-the-branch** behavior. +- But opener choice definitely matters at the selector result level: + - `90 -> E8` shifted the response from the familiar `7A 50 26` family to the + sibling `7A 58 26 D9` + - `90 -> EC` shifted the response from `7B 50 26 D0` to the sibling + `FB 50 26 50` + - `AF -> EC` preserved the `7B 50 26 D0` branch +- `E9` looks more stable across openers than `E8` and `EC`: + both `90` and `AF` still opened `07 80 7A 28 D3 5C` + +Most important takeaway: + +- opener bytes are not just yes/no "permissions" for the selector surface +- they can change **which sibling family** a selector lands in +- but once that family appears, echoing the expected downstream frame still did + not create a reproducible next turn + +Best current model: + +- context opener selects or biases a family page +- selector byte chooses within that opened space +- downstream family frames still look more like readable responses than clear + host prompts + +Best next move: + +- when a selector result shifts under a different opener, answer the + **actually observed** downstream frame instead of the previously known sibling + frame +- the strongest immediate candidates are: + - `90 -> E8 -> exact 07 80 7A 58 26 D9` + - `90 -> EC -> exact 07 80 FB 50 26 50` diff --git a/docs/pt2-protocol-summary.md b/docs/pt2-protocol-summary.md index d39a368..49f3066 100644 --- a/docs/pt2-protocol-summary.md +++ b/docs/pt2-protocol-summary.md @@ -294,6 +294,11 @@ Current caution: `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`. +- Downstream-behavior follow-ups suggest opener choice changes the selector + result more than the reply ladder: + `90 -> E8` yielded sibling `07 80 7A 58 26 D9`, `90 -> EC` yielded sibling + `07 80 FB 50 26 50`, but the downstream exact echoes still collapsed to + heartbeat. ## What We Know @@ -334,6 +339,8 @@ Current caution: - 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. +- At the moment, opener bytes look more like family/page selectors than like + things that enable a stable multi-turn conversation after the first response. ## What We Do Not Know diff --git a/docs/pt2-state-map.md b/docs/pt2-state-map.md index a49dfbe..0f55529 100644 --- a/docs/pt2-state-map.md +++ b/docs/pt2-state-map.md @@ -142,6 +142,11 @@ Observed: - bare heartbeat + `E9` produced `7A 28 D3` - bare heartbeat + `EC` did not open `7B`; it stayed in heartbeat-family behavior +- later downstream-behavior tests showed opener choice can also bias which + sibling family appears at the selector result itself: + - `90 + E8` produced `7A 58 26` + - `90 + EC` produced `FB 50 26` + - `AF + EC` preserved `7B 50 26` Nuance: @@ -151,6 +156,8 @@ Nuance: 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`. +- opener choice has a stronger observed effect on branch entry than on + downstream reply handling Confidence: high that a context-opener family exists; medium-high on the exact rules for each selector. @@ -198,7 +205,8 @@ What we know: - `A0` - `90` - bare heartbeat -- `AF` shifted this branch to sibling `FA 50 26 51` +- `AF` has at least once shifted this branch to sibling `FA 50 26 51` +- `90` has at least once shifted this branch to sibling `7A 58 26 D9` Read: @@ -270,6 +278,7 @@ Read: - `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 +- opener choice can bias `EC` between `7B` and `FB` Confidence: medium @@ -294,6 +303,8 @@ What is still missing: - the transition from any of these branches into a stable active/session state - a deterministic multi-turn reply ladder +- evidence that the downstream family frames are actually prompts the host is + expected to answer, rather than readable blocks with no immediate follow-up ## What Feels Stable Right Now