From 3bac9a0e0ac5767f0d3569efd504cab4f7b6c198 Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sun, 19 Apr 2026 00:08:58 -0700 Subject: [PATCH] Bound startup compact trigger-kind ownership --- crates/rrt-runtime/src/smp.rs | 24 ++++++++++++++++++------ docs/rehost-queue.md | 14 ++++++++++++-- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index b2a2833..0667470 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -4778,6 +4778,8 @@ fn build_periodic_company_service_trace_report( "direct local writer census now shows the grounded [site+0x276] write side clustering under live mutation families such as 0x004269b0 / 0x00426a10, the create-side 0x0040ef10 / 0x0040f6d0 strip, and the bulk reassignment families 0x00426dce..0x00426ea1 and 0x00430040..0x004300d6 rather than under the known replay strip".to_string(), "direct local control-flow reconstruction now shows those same writer families hanging under the 0x00431b20 opcode dispatcher over 0x0061039c: opcodes 0x04..0x07 dispatch to 0x00430040, opcodes 0x08/0x10..0x13 dispatch to 0x00426d60, and opcodes 0x0d/0x16 dispatch to 0x0042fc90".to_string(), "0x0042fc90 itself iterates the live placed-structure collection 0x0062b26c, filters rows through 0x0040c990 plus optional company match [site+0x276], and then dispatches row vtable slot +0x70, which keeps that branch on the live application side rather than replay".to_string(), + "the trigger-kind field itself is now bounded as an ordinary loaded per-event lane rather than a startup-only special class: restore-side loader 0x00433130 repopulates live event collection 0x0062be18 from packed chunk family 0x4e21/0x4e22, and the event-detail editor strip 0x004d90ba..0x004d91ed writes [event+0x7ef] across the full 0x00..0x0a range through controls 0x4e98..0x4ea2, including kind 8 at 0x004d91b3".to_string(), + "that keeps 0x00444d92 -> 0x00432f40(kind 8) on the ordinary loaded runtime-effect pipeline too: world bring-up is servicing pre-existing rows from 0x0062be18 rather than a one-off startup-only record class synthesized outside the collection".to_string(), ], blockers: vec![ "current atlas evidence now grounds one tuple-backed owner path too: loader tuple field [+0x0c] reaches [site+0x276] through 0x0046f073 / 0x004707ff -> 0x0040ef10, but the classified 0x004707ff caller belongs to multiplayer transport selector-0x13 rather than ordinary save-load restore, so a non-transport persisted source family is still needed for shellless acquisition".to_string(), @@ -4785,7 +4787,7 @@ fn build_periodic_company_service_trace_report( "the paired collection-side triplet serializer 0x00413440 is ruled down too, so the missing ordinary restored-row owner seam likely sits outside the currently bounded direct allocator/finalize/store families and the tagged 0x36b1/0x36b2/0x36b3 load-save strip".to_string(), "the load-side stream owner 0x00413280 is ruled down to cached-source/candidate replay through vtable slot +0x40 and 0x0040ce60, so the missing ordinary restored-row owner seam still sits beyond the current stream-load bridge too".to_string(), "the checked ordinary restore ordering is ruled down too: 0x00413280 stream load, 0x00481210 dynamic side-buffer refresh, and 0x004133b0 local-runtime replay all sit on the bring-up strip without re-entering 0x004134d0 / 0x0040f6d0 / 0x0040ef10 for already-restored rows".to_string(), - "the grouped opcode dispatcher 0x00431b20 is narrower rather than ruled down now: it is still only reached through scenario runtime-effect service 0x004323a0 -> 0x00432f40 via 0x00432317, but that service loop is itself called from world bring-up at 0x00444d92 with trigger kind 8 under shell-profile latch [0x006cec7c+0x97], so 0x0061039c reads as a startup-time live runtime-effect application lane rather than an ordinary tagged restore owner".to_string(), + "the grouped opcode dispatcher 0x00431b20 is still not a tagged restore owner, but the remaining uncertainty is narrower now than 'is kind 8 synthetic': restore-side 0x00433130 reloads ordinary live event rows into 0x0062be18 and the event-detail editor exposes [event+0x7ef] across 0x00..0x0a including kind 8, so the open question is which loaded kind-8 rows can actually reach the placed-structure mutation opcodes under 0x00431b20 rather than whether kind 8 is a special startup-only class".to_string(), ], }, SmpServiceConsumerHypothesis { @@ -28764,12 +28766,22 @@ mod tests { .blockers .iter() .any(|line| line.contains("0x00431b20") - && line.contains("0x004323a0") - && line.contains("0x00432f40") - && line.contains("0x00432317") - && line.contains("0x00444d92") + && line.contains("0x00433130") + && line.contains("0x0062be18") + && line.contains("[event+0x7ef]") && line.contains("kind 8") - && line.contains("0x006cec7c+0x97")) + && line.contains("special startup-only class")) + ); + assert!( + trace.near_city_acquisition_projection_hypotheses[0] + .evidence + .iter() + .any(|line| line.contains("0x00433130") + && line.contains("0x0062be18") + && line.contains("0x4e21/0x4e22") + && line.contains("0x004d90ba..0x004d91ed") + && line.contains("0x4e98..0x4ea2") + && line.contains("0x004d91b3")) ); assert_eq!( trace diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index a851f88..786d725 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -226,6 +226,14 @@ Working rule: called from world bring-up at `0x00444d92` with trigger kind `8` under shell-profile latch `[0x006cec7c+0x97]`; so `0x0061039c` currently reads as a startup-time live runtime-effect application lane rather than an ordinary tagged restore owner + - that `kind 8` branch is ordinary in one important way now too: + restore-side loader `0x00433130` repopulates the live event collection `0x0062be18` from packed + chunk family `0x4e21/0x4e22`, and the event-detail editor strip + `0x004d90ba..0x004d91ed` writes trigger field `[event+0x7ef]` across the full `0x00..0x0a` + range through controls `0x4e98..0x4ea2`, including kind `8` at `0x004d91b3`; so the remaining + startup compact-effect question is no longer whether kind `8` is a special synthetic class, but + which loaded kind-`8` rows in `0x0062be18` can actually reach the placed-structure mutation + opcode families under `0x00431b20` - the `[site+0x27a]` companion lane is grounded now too: it is a live signed scalar accumulator rather than a second owner-identity seam, with zero-init at `0x0042125d` and `0x0040f793`, accumulation at `0x0040dfec` and `0x00426ad8`, direct set on @@ -234,9 +242,11 @@ Working rule: identify which non-transport persisted source family outside the currently bounded direct allocator/finalize/store families, the save-side `0x00413440` serializer, the load-side `0x00413280` cached-source bridge, the checked ordinary replay strip - `0x00444690 -> 0x004133b0 -> 0x0040ee10`, and the startup-time runtime-effect dispatcher lane + `0x00444690 -> 0x004133b0 -> 0x0040ee10`, and the already-bounded loaded runtime-effect lane `0x00444d92 -> 0x00432f40(kind 8) -> 0x004323a0 -> 0x00431b20` feed the tuple or companion - restore calls that are sufficient to repopulate `[site+0x276]` for shellless acquisition + restore calls that are sufficient to repopulate `[site+0x276]` for shellless acquisition; the + remaining runtime-effect subquestion is now which loaded kind-`8` rows can carry the + placed-structure mutation opcodes rather than whether kind `8` is synthetic - the second is narrower in the same way: the checked-in `0x36b1/0x36b2/0x36b3` triplet seam and the `0x4a9d/0x4a3a/0x4a3b` side-buffer seam still do not serialize `[site+0x310/+0x338/+0x360]`