From bf97363fcad6da6450738f3fae407381f42f8335 Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sun, 19 Apr 2026 02:29:20 -0700 Subject: [PATCH] Narrow event trigger bridge to nondirect framing --- crates/rrt-runtime/src/smp.rs | 10 ++++++++++ docs/rehost-queue.md | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index a79b8fb..5b42025 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -9546,6 +9546,11 @@ fn parse_event_runtime_collection_summary_with_tag_width( "decoded grouped rows already reach the 0x00431b20 dispatch strip in this collection even though the current inspection surface recovered no trigger/control kind bytes for those records" .to_string(), ); + if nondirect_compact_record_count == records.len() { + control_lane_notes.push( + "every currently decoded dispatch-strip row in this collection still sits in the nondirect compact 0x4e99/0x4e9a/0x4e9b family with null [event+0x7ef], so the direct full-record 0x4e21/0x4e22 framing path is not currently bridging trigger-kind control bytes for these mutation-capable rows".to_string(), + ); + } } control_lane_notes.push(format!( "0x00431b20 dispatch-strip opcodes present in decoded grouped rows = {:?}", @@ -22335,6 +22340,11 @@ mod tests { assert!(summary.control_lane_notes.iter().any(|line| { line.contains("decoded grouped rows already reach the 0x00431b20 dispatch strip") })); + assert!(summary.control_lane_notes.iter().any(|line| { + line.contains("every currently decoded dispatch-strip row") + && line.contains("0x4e99/0x4e9a/0x4e9b") + && line.contains("0x4e21/0x4e22") + })); assert!( summary .control_lane_notes diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index f0ebf10..5a248f2 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -259,6 +259,13 @@ Working rule: `Game Variable 1`, `Company Variable 1..4`, and `Player Variable 1`, so the next pass can focus on that smaller subset instead of the full 24-row compact collection while avoiding the earlier overclaim that opcode `4` alone already proves a placed-structure mutation row + - the sampled-map framing split is narrower now too: + targeted real-map inspections of `Texas Tea.gmp`, `British Isles.gmp`, and `Germany.gmp` + still show their entire event-runtime collections as nondirect compact + `0x4e99/0x4e9a/0x4e9b` rows with `records_with_trigger_kind = 0`, even when grouped rows + already reach the grounded `0x00431b20` dispatch strip. That means the direct full-record + `0x4e21/0x4e22` parser path is not currently bridging `[event+0x7ef]` for the ordinary + mutation-capable rows in those sampled maps. - cross-map probing now gives a better static-analysis lead too: `British Isles.gmp` shows no current `0x00431b20` dispatch-strip rows, `Germany.gmp` stays on `Game Variable 1` plus `Company Variable 3..4`, while `Texas Tea.gmp` adds `Economic Status`