# Runtime Effect Kind-8 Late Bringup Note This note extracts the current grounded late-bringup facts for the ordinary startup runtime-effect lane, so the remaining recovery work does not have to keep jumping between the queue, the large function map note, and the broader subgraph artifacts. ## Grounded Ordering - `world_load_saved_runtime_state_bundle` `0x00446d40` directly reaches `scenario_event_collection_refresh_runtime_records_from_packed_state` `0x00433130`. - The same loader does **not** directly reach `scenario_event_collection_service_runtime_effect_records_for_trigger_kind` `0x00432f40`. - `world_entry_transition_and_runtime_bringup` `0x00443a50` is the owner above both restore and service. - Current `function-map.csv` notes for `0x00443a50` already state that: - the tagged load phase reloads event runtime records through `0x00433130` - the one-shot kind-`8` service through `0x00432f40` only runs much later in the final reactivation tail - shell-profile latch `[0x006cec7c+0x97]` is cleared after that late kind-`8` service ## Late-Tail Candidate Branches - The remaining unknown is therefore no longer abstract restore-vs-service ordering. - The remaining unknown is: - which late bringup branch or retagger between `0x00433130` reload and final kind-`8` `0x00432f40` service materializes the live mutation-capable records ## Checked Corpus Counts - The checked export `artifacts/exports/rt3-1.06/compact-event-dispatch-cluster-counts.json` now keeps the ordinary `rt3_105/maps` compact-dispatch corpus grounded without re-running the wider inspection command. - Current corpus totals are: - `41` maps scanned - `38` maps with dispatch-strip rows - `318` nondirect compact dispatch-strip rows total - `0` rows with recovered trigger kind - `10` add-building grouped occurrences across `7` descriptor keys (`Barracks`, `Bauxite Mine`, `FarmGrain`, `Furniture Factory`, `Logging Camp`, `Port01`, `Warehouse05`) - The same export now also carries the concrete carrier-map paths directly through `add_building_descriptor_map_paths` and `add_building_signature_condition_cluster_map_paths`, including: - `Texas Tea.gmp` for `548 Add Building Port01` - `Louisiana.gmp` for `563 Add Building Warehouse05` - `Alternate USA.gmp` for the repeated `FarmGrain` / `Logging Camp` `ge34` family - `Chicago to New York.gmp` and `Pacific Coastal.gmp` for the mixed `[-1:4]` cluster - The widened counts surface now also keeps the strongest full nondirect families visible beyond the add-building subset: - `dispatch_signature_condition_cluster_occurrence_counts` now shows the broadest checked family is `nondirect-ge1e-h0001-0360-0004-0100-0200-p0000-0000-0000-ffff :: [864:4]` at `36` grouped occurrences across `18` maps - the next family remains the mixed `[-1:4]` cluster at `27` grouped occurrences across `14` maps - `dispatch_signature_condition_cluster_descriptor_keys` keeps the first cluster grounded on the variable/status descriptor family (`Economic Status`, `Game Variable 1..4`, `Company Variable 1..4`) and keeps the second cluster grounded on that same family plus the two checked add-building descriptors `Barracks` and `Bauxite Mine` - That keeps the remaining late-bringup/control-lane question narrow: - ordinary loaded nondirect rows already reach the `0x00431b20` mutation strip at scale - but the missing trigger-kind lane is still the blocker above the already-grounded descriptor bridge ## Direct Trigger-Kind Gate Fresh direct disassembly now keeps that control lane explicit rather than inferred: - `0x00444d92` - calls `0x00432f40` with trigger kind `8` - then clears shell-profile latch `[0x006cec7c+0x97]` - `0x00432f40` - iterates the live runtime-effect collection - calls `0x004323a0` for each row with the requested trigger kind - records whether any row fired - if collection flag `[this+0x88]` is raised, reruns the same service loop with trigger kind `0x0a` - `0x004323a0` - returns immediately unless `[event+0x81f] == 0` - returns immediately unless `[event+0x7ef] == trigger_kind` - only after that exact compare does it continue into the compact dispatch body So the active question is no longer whether the trigger kind is a direct row gate. It is where the ordinary loaded rows get a nonzero `[event+0x7ef]` that matches the later kind-`8` or follow-on kind-`0x0a` service. ## Reload-Side Boundary The ordinary reload strip is bounded in the same negative way now: - `0x00433130` - restores tagged record families `0x4e99`, `0x4e9a`, and `0x4e9b` - reads one fixed `4`-byte scalar block through `0x00531150` - loops live rows through per-record restore helper `0x0042db20` - clears collection flag `[this+0x88] = 0` before returning - that reload path does not pass any trigger-kind argument analogous to the later `0x00432f40(kind)` service - and the per-record helper `0x0042db20` is narrower than a full metadata restore: - it conditionally rebuilds the six fixed text bands and the linked `0x1e` / `0x28` row families - it does **not** restore the event metadata band `+0x7ee..+0x80e`, including `[event+0x7ef]` - the save-side companion `0x00430d70` matches that same omission: - it writes the fixed text bands plus the linked condition/effect rows - it does **not** serialize the metadata band `+0x7ee..+0x80e` So the remaining late-bringup/control-lane frontier stays between reload and service rather than inside the already-bounded restore loop itself. ## Current Writer Census The direct writer set for `[event+0x7ef]` is narrower now too: - `0x0042d5a0` - zero-initializes the live runtime-effect record control band - clears `[event+0x7ee]`, `[event+0x7ef]`, `[event+0x7f4]`, `[event+0x81f]`, `[event+0x823]`, and `[event+0x82b]` - `0x0042e11a` - straight copy helper over the same control band - copies `[event+0x7ee/+0x7ef/+0x7f0/+0x7f4...]` from one live row into another - `0x00430b50` - the already-grounded follow-on runtime-effect builder - reaches the fresh live row through `0x00432ea0 -> 0x0042d5a0` - then seeds `[event+0x7ef]` to `2` or `3` from the current `[world+0x11]` threshold - also sets `[event+0x7f5] = 1` - `0x00443526` and `0x00443601` - the already-grounded late retags to `5` and `2` So the active periodic-company/control-lane question narrows again: - ordinary reload `0x00433130 -> 0x0042db20` does not itself pass a trigger kind - the late service strip gates strictly on `[event+0x7ef]` - and the currently grounded nonzero seed outside the scenario-name retags is the follow-on builder reached from the service/dispatch family rather than from the reload loop itself ## Ruled-Out Shell Seed Table The large remaining direct writer table is bounded now too: - `0x004d8ea0` - is the shell-side `EventConditions.win` commit helper already grounded in `function-map.csv` - resolves the currently selected live event from the editor window - writes `[event+0x7ef] = 0..10` from controls `0x4e98..0x4ea2` - also commits neighboring editor-strip fields `[event+0x7f9]`, `[event+0x7fa]`, `[event+0x7f5]`, and `[event+0x7f0]` - `0x004db120` - is the paired shell refresh helper - republishes that same `0x4e98..0x4ea2` selector band one-to-one from stored `[event+0x7ef]` So the broadest direct `0..10` trigger-kind seed family is real, but it belongs to the shell editor strip rather than to ordinary post-load simulation bringup. ## Post-Load Scenario Fixup - `shell_apply_scenario_name_specific_post_load_world_and_object_fixups` `0x00442c30` is called from `0x00443a50` at `0x00444b50`. - This branch is currently **prose-first**, not graph-first: - a direct subgraph export on `0x00442c30` collapses to the seed node - the useful evidence lives in the grounded function-map note rather than note-reference edges - The function-map note grounds several concrete mutations across collections rooted at: - `0x0062be18` - `0x0062bae0` - `0x006ada80` - `0x0062b268` ## Explicit Trigger-Kind Retags Already Grounded - `SP - GOLD` branch at `0x00443526` - rewrites `[event+0x7ef]` from `1 -> 5` - live runtime-event id `1` - gated by `[world+0x66de]` - checked payload root kind `7` with subtype byte `5` - `Labor` branch at `0x00443601` - rewrites `[event+0x7ef]` from `0 -> 2` - live runtime-event id `0x0d` - gated by `[world+0x66de]` - checked `0x3c -> 0x3d` child payload pair with the matched negative scalar sentinel ## Current Best Next Recovery Question - Which late bringup branch between: - `0x00433130` reload - `0x00442c30` scenario-name post-load fixups - and final kind-`8` `0x00432f40` - is responsible for the live kind-`8` records that already carry mutation-capable compact payloads in ordinary nondirect bundles.