diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 0667470..18ed215 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -4780,6 +4780,7 @@ fn build_periodic_company_service_trace_report( "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(), + "the event-detail editor family now ties that trigger-kind field to the ordinary runtime-effect builders too: selected-event control family 0x004db02a / 0x004db1b8..0x004db309 mirrors current [event+0x7ef] back into controls 0x4e98..0x4ea2 under root control 0x4e84, while editor-side builder 0x004db9e5..0x004db9f1 allocates a runtime-effect row from compact payload into 0x0062be18 through 0x00432ea0 before rebinding the selected event id".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(), @@ -4787,7 +4788,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 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(), + "the grouped opcode dispatcher 0x00431b20 is still not a tagged restore owner, but the remaining uncertainty is narrower now than 'is kind 8 synthetic' or 'does kind 8 live on a separate editor/build class': restore-side 0x00433130 reloads ordinary live event rows into 0x0062be18, the event-detail editor exposes [event+0x7ef] across 0x00..0x0a including kind 8, and the same editor family reaches ordinary runtime-effect allocator 0x00432ea0, so the open question is which loaded kind-8 rows can actually reach the placed-structure mutation opcodes under 0x00431b20".to_string(), ], }, SmpServiceConsumerHypothesis { @@ -28770,7 +28771,8 @@ mod tests { && line.contains("0x0062be18") && line.contains("[event+0x7ef]") && line.contains("kind 8") - && line.contains("special startup-only class")) + && line.contains("separate editor/build class") + && line.contains("0x00432ea0")) ); assert!( trace.near_city_acquisition_projection_hypotheses[0] @@ -28783,6 +28785,16 @@ mod tests { && line.contains("0x4e98..0x4ea2") && line.contains("0x004d91b3")) ); + assert!( + trace.near_city_acquisition_projection_hypotheses[0] + .evidence + .iter() + .any(|line| line.contains("0x004db02a") + && line.contains("0x004db1b8..0x004db309") + && line.contains("0x4e84") + && line.contains("0x004db9e5..0x004db9f1") + && line.contains("0x00432ea0")) + ); assert_eq!( trace .near_city_acquisition_runtime_backed_input_families diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 786d725..1a3af49 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -234,6 +234,13 @@ Working rule: 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 event-detail editor family tightens that one step further too: + selected-event control root `0x4e84` and refresh strip `0x004db02a / 0x004db1b8..0x004db309` + mirror current trigger field `[event+0x7ef]` back into those same `0x4e98..0x4ea2` controls, + while editor-side builder `0x004db9e5..0x004db9f1` allocates an ordinary runtime-effect row + into `0x0062be18` through `0x00432ea0`; so the remaining startup compact-effect question is no + longer whether kind `8` lives on a separate editor/build class either, but which loaded + kind-`8` rows actually carry the mutation-capable compact payloads - 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