H1 SPLIT

Persistence is not spawning.

A successful runtime test of ExtraEncounterZone +0x0C will validate save/load rebinding only. It will not validate encounter selection, leveled lists, actor levels, or spawn generation.

Explicit status boundary

H1-SLStatic complete

Runtime: pending

Gameplay relevance: persistence only

H1-GPStatic open

Runtime: not ready

Gameplay relevance: encounter-zone consumption and spawning

H1-SL / Encounter-zone save/load lifecycle

Static complete / runtime pending

The static chain is recovered from the plaintext GOG analysis artifact. The Steam runtime remains the verification target.

serialized zone ID
  -> 0x00428150 ExtraDataList::LoadGame
     -> extra-data type 0x74
     -> 0x00432E60 ExtraEncounterZone construction/reuse
     -> 0x0040FF60 BaseExtraList::AddExtra candidate
     -> 0x008648A0 form-ID/load-buffer path candidate
     -> 0x004839C0 opaque form/handle lookup
     -> TESForm -> BGSEncounterZone cast
     -> ExtraEncounterZone +0x0C
     -> 0x00416BE0 rebind or remove on failure
WHAT IS ESTABLISHED

The receiver is a BaseExtraList/ExtraDataList load context with a save-game buffer. The cast result is stored at the extra-data object's +0x0C; 0x00428150 returns void.

WHAT IS NOT ESTABLISHED

No evidence from this chain reaches CELL encounter selection, leveled-list evaluation, actor level selection, or spawn generation. The exact 0x004839C0 return semantics remain open.

Runtime prediction

With an available ECZN, the saved identifier should resolve to a non-null BGSEncounterZone* in +0x0C. With the ECZN unavailable, lookup/cast should fail and the existing cleanup path should remove the extra data. The test is deliberately a persistence test.

Open the H1-SL source notebook ->

OPEN INVESTIGATION

H1-GP / Encounter-zone gameplay consumption

Static open / runtime not ready

Find the separate path that turns a CELL/reference context into an effective encounter zone, reads zone properties, selects leveled actors/lists, and makes a spawn decision.

BGSEncounterZone readers  ---------+
                                   +--> shared consumer/context
spawn and leveled-list callers ----+

Search from both ends. On the ECZN side, follow non-save/load reads of BGSEncounterZone +0x18 and uses of ExtraEncounterZone +0x0C. On the spawn side, work backward from leveled-actor/list selection and actor-level functions. Promote names only when the evidence supports them.

First pass: form-type and string anchors identify the search frontier, but the recovered artifacts do not yet expose a verified ECZN-reader/leveled-selection intersection. This is an open coverage gap, not evidence that no gameplay consumer exists.

Open the H1-GP source notebook ->

Research boundary

Known ECZN record parsing at 0x00525D40, owner-form initialization at 0x00525F00, worldspace initialization at 0x005845E0, and the 0x00432E90 comparator are useful anchors, but none is currently a proven gameplay-spawn consumer.

The detailed correction ledger remains available in the original H1 source notebook ->.

Parallel investigation tracks

H1-SL save/load lifecycle -> runtime verification

H1-GP gameplay consumption -> static discovery

BUG-001 VATS projectile 0% -> causal runtime experiment