Bound runtime-effect per-record trigger gate

This commit is contained in:
Jan Petykiewicz 2026-04-19 02:38:53 -07:00
commit bed0ef86b0
2 changed files with 18 additions and 0 deletions

View file

@ -9529,6 +9529,9 @@ fn parse_event_runtime_collection_summary_with_tag_width(
control_lane_notes.push( control_lane_notes.push(
"the remaining non-editor [event+0x7ef] mutators are bounded away from restore too: the 0x00443200..0x004436e3 sweep searches existing live runtime-event names through 0x005a57cf (including strings like 'New Beginnings', 'Chicago to New York', 'The American', and 'Labor') and retags already-live records, so it reads as scenario-specific live maintenance rather than the missing 0x4e9a restore owner".to_string(), "the remaining non-editor [event+0x7ef] mutators are bounded away from restore too: the 0x00443200..0x004436e3 sweep searches existing live runtime-event names through 0x005a57cf (including strings like 'New Beginnings', 'Chicago to New York', 'The American', and 'Labor') and retags already-live records, so it reads as scenario-specific live maintenance rather than the missing 0x4e9a restore owner".to_string(),
); );
control_lane_notes.push(
"direct disassembly of 0x004323a0 now makes the live gate explicit too: the per-record service returns before dispatch unless one-shot latch [event+0x81f] is clear, mode byte [event+0x7ef] matches the selected trigger kind from 0x00432f40, and compact chain root [event+0x00] is nonzero; its kind-8 side path at 0x00432ca1..0x00432cb0 only calls 0x00438710 on already-live records with [event+0x7ef] == 8".to_string(),
);
} }
if records_with_trigger_kind != 0 { if records_with_trigger_kind != 0 {
control_lane_notes.push(format!( control_lane_notes.push(format!(
@ -22365,6 +22368,13 @@ mod tests {
&& line.contains("New Beginnings") && line.contains("New Beginnings")
&& line.contains("The American") && line.contains("The American")
})); }));
assert!(summary.control_lane_notes.iter().any(|line| {
line.contains("0x004323a0")
&& line.contains("[event+0x81f]")
&& line.contains("[event+0x7ef]")
&& line.contains("0x00432ca1..0x00432cb0")
&& line.contains("0x00438710")
}));
assert!(summary.control_lane_notes.iter().any(|line| { assert!(summary.control_lane_notes.iter().any(|line| {
line.contains("0x00431b20 dispatch-strip opcodes present in decoded grouped rows = [4]") line.contains("0x00431b20 dispatch-strip opcodes present in decoded grouped rows = [4]")
})); }));

View file

@ -280,6 +280,14 @@ Working rule:
but emits only the corpus-level count fields, so the next broader map-install pass no longer but emits only the corpus-level count fields, so the next broader map-install pass no longer
needs to wade through every occurrence payload just to compare descriptor or trigger-kind needs to wade through every occurrence payload just to compare descriptor or trigger-kind
coverage. coverage.
- the per-record trigger gate is explicit now too:
direct disassembly of `0x004323a0` shows the service returns before dispatch unless
one-shot latch `[event+0x81f]` is clear, mode byte `[event+0x7ef]` matches the selected
trigger-kind argument from `0x00432f40`, and the compact chain root `[event+0x00]` is
nonzero. The kind-`8` side path at `0x00432ca1..0x00432cb0` only calls `0x00438710` on
already-live records carrying `[event+0x7ef] == 8`. So the remaining ordinary bundle question
is no longer “does the service loop itself bypass the per-record trigger byte?”; it is which
later owner, if any, materializes or retags `[event+0x7ef]` for the nondirect compact rows.
- cross-map probing now gives a better static-analysis lead too: - 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 `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` `Game Variable 1` plus `Company Variable 3..4`, while `Texas Tea.gmp` adds `Economic Status`