Changes for the latest full-run reports:
1009740 -> A76E90 -> 9F1290 checks membership; 9F2A00 includes active players with flag bit 0 clear. Earlier messages left this reference absent. The public Lua API validates this as type 70, independently of type-34 damage filters.Installed 18 files into the closed game at 11:24, with backup build/finale-followup-backup-20260906-112405. DLL SHA-256: 1ca1f37ea2735aeb0dab6d4a7522937e3cc9c66a5a09b297448253081887f97c. Save, settings and SDK files were preserved. Manifest: build/finale-followup-installation.json.
Validation: Release DLL built; 21 portable C++ tests and all five Lua suites pass. The full route uses 233 durable variables, at most 61 intents and 13,000 mock-instrumented Lua instructions per callback. Added coverage for engagement reference encoding, multi-volume effect filters, fixed controller assignments, and staging arrival before ending playback. No game was launched or stopped.
Gameplay verification remains required: beam/screen visuals, exact Controller task geometry, escape damage amounts, visible banner refresh, and completion of both staged bookends. The automated checks validate script progression and wire shapes; they do not prove these visual/native behaviors. The tube/noclip issue was left alone as requested.
Installed 2026-09-06T10:46:06.446791; backup /home/millie/Documents/Sunrise-builds/mission-ember/build/foundry-script-backup-20260906-104606.
Only mission_ember/cinder.lua changed in the game. DLL/settings/save unchanged.
Live playtest fault at t617130: cinder.lua:122: attempt to call a nil value (method 'find').
The production sandbox removes string pattern functions. Replaced the prefix search with
exact checks for the three foundry groups. The full-route harness now removes the same
string functions during callbacks: it reproduced the original fault, then passed after the fix.
The full route still peaks at 228 variables, 61 intents/callback, two timers and 13,000 mocked
instructions/callback. No tube behavior changes; user identified tube deaths as a noclip issue.
This run confirmed refinery cell consumption and healthy entity reclamation through the foundry. The script fault prevented validating the reactor finale. No game launch performed.
Installed 2026-09-06T10:29:48.150688 — DLL bed8bd2ac98f4f39e0229c0535540c2360b6697c609360bb3aab792a0efab8c4.
Backup /home/millie/Documents/Sunrise-builds/mission-ember/build/reactor-finale-backup-20260906-102948; all 18 files hash-verified. Game closed; settings/save/SDK preserved.
Reference review, changes and validation.
Live confirmation still required for final-area bridge polarity, beam/screen VFX, alarm/shutter cadence, and audible music selection. Music section mapping and pacing are reconstructed, not original recovered Lua.
Installed 2026-09-06T09:55:13.047971 — DLL d6bc68793c009a883a420095a7c908a2a60a71336aea204aca2e6cc51559fbd4.
Backup /home/millie/Documents/Sunrise-builds/mission-ember/build/replication-gate-backup-20260906-095512; 18 files hash-verified. Settings/save/SDK preserved.
Game was closed throughout installation; launch remains manual.
09:40/09:41 read-only captures found 57 then 93 detached authority records, all waiting for the remote host. Native entity view +8/+9/+10 was 1/1/0, pending packet list empty, and server packet/ACK counters advancing. Membership field6 (mask_6) was omitted. Native 4DF650 reads that mask; 1702580 passes its member bit to 1703910, which calls 16E5F30 to set parent view +178 (entity subview +10). 1712E70 refuses all transmission while that byte is zero. The new membership encoder explicitly publishes the remote host bit, or zero when no host is advertised. Sizes increased by 32 bits.
Also corrected msg25 sequencing: the earlier area purges freed records but logged
incorrect epoch sequence (first at t79981, then every area purge). Native 170B030
requires the entity manager's own epoch +1. This is separate from msg44/common
replicationEpoch. New binding-owned authorityEpoch starts at zero, increments only
after the authenticated response is published, and refuses overflow at 255. Exact
client-requested masks are retained; msg33 remains excluded.
New 15-second ev=entity_replication stage=census diagnostic reports authority record
count (capacity512), detached records, enabled views, pending deletions, packet-bearing
views, and the native authority epoch. Reads only; native deletion/ACK handlers own frees.
Validation: 20 portable native tests, five Lua suites, full cross-compiled DLL and
git diff --check passed. No live validation of this candidate yet. Next check: kill
opening enemies and verify enabled=1 and detached/pending deletions fall, then cross
into Refinery and confirm successive purge epochs without assertions. Full mission
Bird resolution remains unconfirmed. The prior run reached reason15 at612/1024
simulation records despite successful area reclamation and fusion-cell consumption.
Installed 2026-09-06T09:23:06.986888 — DLL 8d8772ec2c61bd60421f4f8b0600dc30697160fcf1c31040304b277a6bf8824c.
Backup /home/millie/Documents/Sunrise-builds/mission-ember/build/authority-cleanup-backup-20260906-092306; 18 files hash-verified. Settings/save/SDK preserved.
Client abandoned-slot and purge requests (26/27) now receive exact-mask native purge (25) responses with connection/session/epoch checks. Msg33 live authority transfers are excluded. Replication epoch state advances when msg44 publishes. Valid transport ACKs release outgoing contributions independently of unsupported incoming gameplay lanes, preventing an exhausted packet ring from blocking further acknowledgements. Native record census logs changes every 15 seconds, including below high pressure. Accepted cell deposit explicitly consumes the pickup with a newer inactive Auth generation; recovery stays disabled after completion.
19 portable tests, five Lua suites and cross-compiled DLL passed. Full route:221 variables,
60 intents/event,1 timer,12000 mocked instructions/event. Native reclamation/Bird resolution
and carried-cell removal still require live confirmation. Latest failure was1024 records,
with742 detached records in the1019-record capture. See build/full-mission-audit/PLAYTEST-20260906.md.
Installed 2026-09-06T08:55:26.045462 — DLL 54c842f6d41c86e2ae675d8176ae0196c15c809bddb8e9b6059106c7fc05358b.
Backup /home/millie/Documents/Sunrise-builds/mission-ember/build/native-cleanup-backup-20260906-085525;18 files hash-verified. Settings/save preserved. No game launch/stop.
All-zero squad requests now select native destruction (.18=0), with a fresh generation,
instead of the previous kill-only path (.18=1). Covers existing encounter retirements and
checkpoint resets; positive spawn requests are unchanged. Native simulation-record usage
is logged at high pressure and on recovery.17 portable tests/build passed; Bird resolution
requires live test. Pool remains1024. Refinery/Sunside fixes below remain installed.
Main objective wording remains authored: Find and disable... until reactor; then Sabotage..., Deliver the final blow..., Escape... . User was informed; no speculative HUD change applied.
Installed 2026-09-06T08:48:06.799329 — DLL e628a3bf733b40546b459f5c944e6589f7a7f87df756292a66d12a750e0686fd.
18 files hash-verified; backup /home/millie/Documents/Sunrise-builds/mission-ember/build/refinery-fix-backup-20260906-084806. Settings/save preserved; no game launch/stop.
Cell ownership decoding now uses required raw64 (80809ACC flags0x21 are custom, not optional).
Removed inverted enable_use override: F32CD0 confirms native+704=false permits unfiltered use.
Sunside indoor checkpoint/darkness/dialogue moved beyond the far door; outdoor spawn preload remains.
17 portable tests and5 Lua suites passed. Needs live verification. Bird remains reason14 native
simulation records1024/1024; user asks about increasing pool allocation, investigation active.
Installed 2026-09-06T08:15:31.534338;18 files hash-verified. Backup /home/millie/Documents/Sunrise-builds/mission-ember/build/opening-regression-backup-20260906-081531. Settings/save unchanged; game was closed and was not launched.
Fixed missing-Sense-payload eligibility that faulted the mission before later opening triggers. Restored the working generic lever interaction; explicit use override is now receptacle-only. 17 native tests and opening/full-route Lua regressions pass; fresh live test required.
Installed 2026-09-06T07:37:29.613768: DLL and17 Lua files, all18 SHA-256 verified.
Backup build/playtest-fixes-backup-20260906-073729. Manifest build/playtest-fixes-installation.json.
DLL 8d28a8a686cc97c32dc08c510e5b640098f7f8dba729755af37de83e8623ce45. SDK/settings/save preserved. No game launch or stop.
Refinery/drill/cell recovery, end-of-drill hatch, interceptor-use door, objective mapping, clamshell/core progression, and native music support are implemented and built. See playtest audit for exact mechanisms and evidence. Valid partial Sense packets now preserve complete object/damage/life receipts. Reactor targets also accept guarded native present/alive-to-dead receipts. Clamshell power/lighting and alarm cues are wired; music uses authored section bits with inferred milestone timing.
17 portable tests and all five Lua suites pass. The current candidate still requires live verification of insertion, boarding, shield visuals, core progression and audible music transitions. The earlier Bird pool-exhaustion cause remains unresolved. This is not a claim of a finished mission.
DLL SHA256 1d33c97e9baec406afe12c614f11f2e81b87bfc1b24eef99b6bd01f540afb78e. Backup build/full-mission-backup-20260906-013148.
All 2130 DLL, SDK and script files were staged and SHA-256 verified.
Settings/save were preserved; the game was not launched or stopped.
Installer /tmp/install-ember-full-mission.py; durable manifest
build/full-mission-installation.json.
The implemented route now continues from the verified Powerhouse through Processing, Sunside, Foundry, Light's End, both reactor sides, core, cell overload, escape and the two ending cinematic states. The root controller dispatches native object-use/ownership and damage receipts. Ending completion/skip incidents advance only once; lifetime6 is selected after the second movie, based on the native completion/reward branch.
The regenerated SDK is build/sdk-mission-complete. Audit:
162 squad sensors,173 runnable definitions, zero sensors without definitions. Eleven
Processing sensors legitimately point to two authored rule descriptors. Scoped source
resolution now separates campaign and arcade reuse; Lua addresses every sensor once.
The new120 later squads all retain authored combat objectives and task-group bounds.
Processing includes native cell pickup/deposit, staged defense, machinery, debris, hatch objects and exit. Cinder includes ready rooms, exterior/retreat squads, chamber/meat-grinder/ ascent, Foundry and beam restrictions. Apex includes access/security, Interceptor, vent and core objects, native damage monitoring, reinforcements, overload and escape scenes. Cell recovery is generation-aware and waits while its region is unloaded. Missing target health or an initial zero cannot advance destruction. Completed areas preserve the current forward objective on backtracking.
Checkpoint sets: Mercury 9C58857A/64; Processing 4B27745D/56; ready room2
82328D63/40; Foundry 782CAF4C/40; reactor entrance DF59C25C/0; escape
45920385/0. These are package spawn sets, not invented coordinates. Reactor reset
publishes removals first and repopulates on the first playable post-wipe client update.
The native countdown/3-versus30-second respawn policy is unchanged by the later route.
Validation: Windows DLL built;16 portable CTest tests passed; five Lua suites passed, including the full route using the final generated SDK, every later checkpoint, skipped narrow volumes, backtracking, lost cells, duplicate cinematic receipts and stale damage. Full-route simulation:213 later variables (Powerhouse suite63),59/63 intents per busiest event,12,000/100,000 Lua instructions per event including the mock,1/32 timers peak. All162 authored squad sensors are mapped exactly once. Simulator population reports exercise native member lanes; a simulation is not evidence of actual actors appearing.
This is an installed full-route implementation candidate, not a completed live playthrough. The user-confirmed landing baseline is preserved. Later placements, AI task choices, pickup consumption/expiry/co-op ownership, object animations and authored spawn-set suitability must be checked in the game. Native navpoint display, visible respawn timer, Darkness Consumes You presentation, total wipe timing and multi-client membership also await manual validation.
Vent timing is reconstructed18s open/8s closed, not recovered retail timing. The native lethal target effect is applied only after a confirmed health-zero receipt; it is not an invulnerability switch. The thermal/exposure system is incomplete: deck heat shimmer and scoped grinder damage are wired, but sunlight-versus-cover damage, Foundry/core thermal hazards and the timed escape-failure damage policy are not fully reconstructed. Beam restrictions are wired; propulsion relies on the map's native behavior and remains unverified. The optional catwalk secret lever and three skybox flyby objects retain the existing baseline. Final STM/CNN movie ordering and lifetime6's post-movie behavior need a live check. Do not call the whole mission retail-equivalent or fully playable until those checks pass.
Earlier status entries below are historical; the installed build above supersedes them.
Candidate DLL SHA256 7e58c4d61dfb4e6996f29a59a0c340ff3bacf3ded99b55e4b5dea0c6fbb338f0.
Backup build/nav-wipe-backup-20260906-000436; installer /tmp/install-ember-nav-wipe.py.
Nine runtime/script files installed and SHA-verified. Settings/save unchanged; no game launch/stop.
Type68 now accepts set_directive{directive=..., navpoint=context:slot(authored_type47)}.
Native100A6E0 consumes Auth80804F6B .11 /80804F70 .0 as the target ClientRef.
Mode2 uses native route/direct destination selection; empty markers carry the proper
811C9DC5 fallback-name sentinel. Landing Lua publishes Mercury approach, Ghost-console,
and helipad approach targets outside active encounters. Targets retire on combat/arrival,
streaming away and wipe cleanup; completed areas do not re-arm them by backtracking.
This is encounter-based combat gating, not a recovered player threat-meter edge.
The type13 Sense decoder now reports native death-with-Ghost evidence. Joined private sessions sharing the exact destination descriptor (including its selection nonce) supply alive/dead/unknown counts; public residents are excluded. Loading/unknown peers block all-dead detection. This uses Sunrise's current private cohort representation; multi-client fireteam membership and simultaneous wiping still require a live co-op test.
All dead during darkness publishes type35's native three-second countdown, then arms the E51D80 membership hard-wipe machine. Host state1 starts it; client state2 triggers encounter reset; client4 is held until reset outputs are staged, then host4 releases it. The authored Mercury spawn set9C58857A replaces mission arrival for the checkpoint. Bridge devices retract, Ghost is re-enabled at a new generation, bridge combat resets; completed approach encounters and the lever remain complete. Rescanning starts a fresh ship lifecycle. Per-attempt timers reject old unload/departure/countdown events.
Validation: Windows DLL build; native wire tests for navpoint encoding, player life, visible3/30-second respawn policy and wipe3/2/1/0 timer; Lua tests for revival cancellation, unknown-peer refusal, ordered reset/release, repeated checkpoints, old receipts and ship replay, plus existing encounter/AI/controller regressions. The countdown timer uses host-stepped native clamped values rather than an invented client-clock epoch. Native HUD marker appearance, countdown presentation, Darkness Consumes You fade, checkpoint spawn and co-op behavior await manual gameplay validation. Earlier entries below are historical build notes, not the current implementation state.
User confirmed the old delay appeared as Finding Spawn Location, with no visible
countdown. DC3770/DC1A20 enforce a late spawn-location hold; they do not own the HUD
respawn timer. Removed that detour and restored participation +736's bypass.
The native death-timer initializer12E9330 reads BF2480(player datum)+4, converts
IEEE half through F32350, and stores a duration at player+64. HUD1677E60 reads
that timer through12EE500 (rounded seconds) and12EE590 (fractional seconds).
BF2480 -> BF4380 resolves type13 Auth+736, as established by FA00D0's binding.
Therefore Auth80804F30 .3 ->80804F31 .3 (native+740) now explicitly carries
half30 (4F80) during darkness, half3 (4200) outside it. This adds16 body bits
only for a scripted darkness policy. The adjacent optional timer and independent
awaiting-client-sync flags are preserved. Unscripted participation bodies are unchanged.
Validation: Windows DLL build, darkness-zone wire regression covering both durations, loading suppression, release/re-entry, unscripted behavior and following-field alignment; Lua controller regression; diff check. Installed eight runtime/script files with SHA verification and a backup, preserving settings/save. No game launched or stopped. The visible countdown needs the user's manual test. Checkpoint wipe is still unfinished.
DLL SHA256 30e0b6738d9a59d467857511d95a02dbe6652ae28c9b7a4470022f3021d2d0b6.
Backup build/visible-respawn-backup-20260905-232608.
Installer /tmp/install-ember-visible-respawn.py; manifest /tmp/ember-visible-respawn-manifest.json.
Wipe investigation: F9CC60 publishes type13 Sense80804F2F .0 ->808094E4 .5 (nativeSense+11) from player+2112==-1 AND a valid handle from352310(player+80). This is stronger death evidence than missing actors during loading. No player_died4053 incident was present in the latest archived run. Existing VM peers are destination peers, not proven fireteam members; do not blindly use their count for a fireteam wipe. Hard-wipe globals still publish mode1=-1 and an inactive timer. An actual checkpoint reset must also rearm the relevant encounter, ship generations and timers exactly once; ordinary region return remains one-and-done.
User confirmed ship exits work in the subsequent manual test. Archived log:
build/first-encounter-audit/ship-exit-respawn-test-20260905.log.
All four ships logged native action7B0D3643/index4 starting; live metadata uniquely
resolved group07EBF354. The countdown correction does not change ship behavior.
Recovered exact FNV-1 names in resource 80FE21CE:
enter_90 4182A2AF / index0, enter_25 4A82B0FF / index1,
enter_45 4482A76D / index2; exit_90 820D414B / index3,
exit_25 7B0D3643 / index4, exit_45 7D0D39A9 / index5.
This replaces the earlier unmapped-action hypothesis. The shallow exit_25 is selected
and the user has now confirmed the departure works.
Lua now sends one play_actor_action at second-path completion. The actor generation
stays1; action revision advances from2 to3. It retires at revision3 completion or death,
not revision2 completion. A separate four-bit variable prevents repeats after duplicate
receipts or script reload. The existing6-second unload delay and4-second departure hold,
A/B manifests, empty C/D ships, working doors and encounter progression are retained.
Native wire: root80807DA1, .6 one kind9 command,254 bits. It carries group, action, empty additional identity, absent spatial target and mode/marker -1. Composition keeps the completed delivery request and actor generation. New API is documented in the Lua contract and accepted by the server's bounded Auth validators.
The native consumer is A97800 -> AB4030 -> A054C0 -> A889E0. The group name is not guessed: for an empty-group exit request on actor80FE22FC only, the A054C0 hook searches that live actor's native metadata for exactly one group containing the authored variant. It passes the recovered group back through the original native lookup, retaining both native output indices. Missing/ambiguous tables fall back to original behavior. The latest live run confirmed unique group07EBF354 resolution. All unrelated actors/requests pass through.
Hooks1023F00 and10245C0 observe native sequence start/stop. They do not force playback,
completion, deletion, or change controller state. Logs: harvester_exit stage=resolve
(unique/result), harvester_action stage=start (active index), and stage=stop.
The stop log can also represent cancellation; compare it with revision3 Sense completion
and the visible effect. Exact executable prefixes guard all new detours.
Validation: Windows DLL build; mission Auth composition/action validation test including preserved cargo/generation and malformed padding; existing path packet regression; Lua controller (61 durable variables), encounter and AI tests; diff check. Controller covers duplicate/reloaded path receipts, action-running receipts and one retirement per completed action. No game launched or stopped. Eight installed files SHA-verified; settings/save preserved.
DLL SHA256 96601b6c1a71dd7f930499f4af39265ca08da0f9d8b69d4c53dc5f1aef1ab3d3.
Backup build/native-exit-backup-20260905-225739.
Installer /tmp/install-ember-native-exit.py; manifest /tmp/ember-native-exit-manifest.json.
All-dead checkpoint wipe remains unfinished from the earlier scope; this update focuses
on the ship departure request. Earlier skip and3/30-second respawn changes remain installed.
User explicitly requires30 seconds while darkness is active and3 seconds otherwise. DC1A20 hook now selects30/3 via native E4C110 instead of falling back to content's possibly-negative delay. Type13 Auth retains the native timer in BOTH states when hasDarknessPolicy is set; the previous unrestricted bypass would skip the3 seconds. Missions without a scripted darkness policy retain their existing participation body. Initial spawn and loading suppression remain native. All-dead checkpoint resets and ship exit effects are still unfinished; native timing/HUD awaits the manual test.
Build, darkness-zone wire test (activation/release/re-entry/loading/unscripted cases),
mission controller regression and diff check passed. Eight installed files hash-verified;
settings/save unchanged; no game launch or stop.
DLL SHA256 8a962d5061a3f4dd00535fe3af634ed86e360ad94efd9a32fc24919fd8314ee6.
Backup build/respawn-3-30-backup-20260905-223418.
Installer /tmp/install-ember-respawn-3-30.py; manifest /tmp/ember-respawn-3-30-manifest.json.
Harvester doors are user-confirmed working. Ship exit visual remains unresolved; no entrance-effect replay has been implemented. Working ship timing/cargo and opening combat progression were retained.
cinematic_skip: SObject3338, FNV-1 7352DAFE, type17/schema808087BF.
Native1069BE0 checks the active/skippable cinematic and emits it through106A530,
the same payload builder as cinematic_started5239 and cinematic_finished1685.
Existing game logs already contained two ignored3338 requests. The host now
resolves this exact cinematic ClientRef and emits cinematicSkipRequested. Lua
uses the same idempotent stop/select-landing-state handoff as natural completion.
A later finished notification or repeated Escape cannot repeat that handoff.
The native DC3770 respawn gate compares elapsed time since player+1928 against DC1A20's delay. New guarded darkness_respawn hook returns30 seconds while the native E4C110 darkness flag is active, otherwise preserving the authored delay. It keeps the native gate/timer and initial-spawn bypass. Neither visible HUD countdown nor multiplayer behavior has been verified. All-dead checkpoint reset is NOT implemented in this test build; the delay alone is not a team-wipe policy.
To verify player identity before writing a wipe reducer, bounded read-only player_lifecycle logs retain incident payload chunks, sending session, primary row, and lifecycle target mask. The death can be an EXTRA target of a combat incident; do not equate sender with victim. Known targets:1121 player_spawned, 439 player_respawned,7117 player_resurrected (schema80806437),4053 player_died (schema8080645A),5896 hard_wipe (schema808087B7). No reset is triggered from an unverified death field. Required policy:30-second respawn while a teammate lives; all members dead => wipe to beginning of latest objective; retain earlier cleared sections except when deliberately resetting the selected checkpoint.
Next manual test: Escape during intro, then a death after Ghost extends the bridge/activates darkness. Capture the lifecycle payload and actual respawn delay. No game launch or stop by the agent.
DLL SHA256 ccc0ed14ad0beec131a81056c7a70d3753f6f7e56b498ba4ac71249c7e5c049b.
Full DLL build, incident payload test and three Lua suites passed; diff check clean.
Eight DLL/Lua files installed and SHA256 verified. Settings/save unchanged.
Backup build/skip-respawn-test-backup-20260905-223142.
Installer /tmp/install-ember-skip-respawn.py, manifest /tmp/ember-skip-respawn-manifest.json.
User reports all opening enemy spawns correct and darkness clears correctly. Harvester doors are now user-confirmed working. The remaining opening blocker is the visible exit effect. Keep the successful Lua spawn/timing/progression behavior stable. The user explicitly suggests replaying the entrance effect before deletion as a reversible exit experiment; this is authorized, but the actual entrance-effect trigger is NOT yet identified or implemented.
The 19:32 hook installed but emitted no per-release reports. Its filter had two incorrect assumptions: source-root+4 is a resource-header field, not the owning actor tag; native resolution from the live delivery instance points to class8080670A, not8080670B. The new filter matches all four captured ships against the actual extracted resource.
Read-only manual bridge capture: ship-runtime-20260905-195257 through 195317.
Summary: build/first-encounter-audit/animation-live-summary-20260905.json (150 component
samples). Delivery advances0 ->3/published1 ->5 ->0. Its four bindings+80/+160/+240/+320
are all invalid references in live memory AND the authored80FE22FC overrides. Forcing
these actions cannot open this model's doors. Separate80FE21CE controller has13 populated
sequence bindings but active-action stayed-1 in our 1Hz samples. This does not rule out
an action shorter than the sampling interval. Mapping saved in harvester-action-map.json.
Found actual door names in model controller80FE22CB: source starts0x198, dropship_doors
at file0x368 is FNV-1 D784D6F6, and doors at0x388 is FNV-1 80296344. Export80FE2309
binds the former to class80803D06/feature10;80FE230A binds the latter to feature9.
These are authored names, not invented native action IDs. Exact target semantics still
require a visual test.
Replaced the empty-action experiment with a102A5B0 delivery-stage hook. Before native
stage1, request named scalar doors=1; before stage0 after delivery, request doors=0.
Use native576420(entity, &nameHash, alignedFloat4), the same route used by A9BFA0's actor
set-channel command. Source/tag checks match only80C0E5D2/class8080670A. Native stage
arguments/result, manifest, flight timing, progression and actor retirement are retained.
Log harvester_doors reports installation and requested values, NOT proof of visible motion.
Installed DLL SHA256 0667a285b63e64ded6b752c1d0c9736fdfbe976fa73e04470973b9c618cbc31a.
Build and three Lua suites passed; exact hook/helper prefixes and corrected source filter
verified using extracted binary plus all four live delivery captures; diff check clean.
Installer /tmp/install-ember-model-doors.py, manifest /tmp/ember-model-doors-manifest.json.
All eight installed files verified. Backup build/model-doors-experiment-backup-20260905-200649.
Game was confirmed closed; no launch or stop. Settings/save unchanged. The user has now
confirmed visible door motion. Read-only capture watcher stopped after the four ships retired.
User explicitly authorized trying the embedded component at troop release and reverting
if it breaks. Added client/hooks/harvester_drop/harvester_drop_experiment.cpp, activated
only with mission scripting enabled. Exact native prologues guard the hook/helpers;
the release callback additionally checks source-root 80FE22FC and delivery source
80C0E5D2/class 8080670B. This is a temporary native experiment, not a verified door API.
Hook 102A920 immediately before native passenger release. Resolve the authored stage2
pre-drop binding at delivery runtime+240 and invoke C7AFA0(binding, 3D30F0) even when
zero native wait skipped that action. If previous published stage is2, native already
started it and the hook does not restart it. Invalid binding logs unbound and is skipped.
Keep native release arguments/result, manifest, timing and cleanup. Generic component
activation through 44E340 already occurs in native 1029330; this experiment forces
the separate action rather than merely repeating that existing activation call.
Log event harvester_drop_experiment reports installation and each matched release:
invoke, already_started, unbound, or exception. Actual door motion is unverified.
Build passed; all three Lua suites passed; exact guard bytes checked against extracted
game image; diff check clean. Game was closed and was neither launched nor stopped.
Installed SHA256 14f196a2202dfc80219dfed80308201879607df621e6e7d385fa4e99750a7dfe.
All eight DLL/script files verified with /tmp/ember-drop-action-manifest.json by
/tmp/install-ember-drop-action.py. Backup of previous DLL/scripts/settings:
build/drop-action-experiment-backup-20260905-193242. Settings/save unchanged.
This installation ALSO includes the previously pending near-side squad changes,
six-second total unload timer (three additional seconds), and Bird diagnostic below.
Revert the experiment at source by removing its activation call; the backup restores
the previous installed runtime and scripts if the entire test build must be rolled back.
The absence of a named type23 ship-door slot does not rule out an embedded control. The user's model-component suggestion is valid. Offline inspection found two separate mechanisms in the native delivery component; neither is yet verified as the door animation:
1029330 calls 44E340(component, source+96, true); state0 clears it.
Its package binding runs through 80C0E5D2, the 80FE22C9 instance override, and
815B963A (component class 80803C23, feature6). 44E340 resolves that binding and
calls 590B10 with category3. The lever animation setter DF6C70 uses sibling
44E3C0, which reaches the same helper with category0 and a different binding type.
594CF0 changes component bit masks; 56FD30 updates entity category bitmaps.
This is evidence of shared component-activity machinery, not evidence that category3
or feature6 means "open doors". Do not expose a guessed door switch from these numbers.C7AFA0.
That function checks the resolved handle at binding+56, returns if it is invalid,
otherwise resolves the component and invokes the supplied callback. Start callback
3D30F0 supplies float0 to 58E420, which forwards to 58E260; reset/stop callback
587970 clears sequence state and releases its tracked child references via 58E630.
Native stage replication 1028FB0 also switches these actions. These stage bindings
are stronger animation candidates, but their actual Harvester targets still need mapping.Evidence is in build/first-encounter-audit/live-44e340.c, live-44e3c0.c,
live-590b10.c, live-594d70.c, live-56fd30.c, live-1028fb0.c, and the raw
disassembly at the listed RVAs in native-readable.exe. Old slab captures contain
source/component references; do not mistake those for the separately allocated delivery
runtime or treat guessed "door" capture offsets as verified animation components.
No gameplay patch or installation was made for this investigation.
Candidate DLL SHA256 d7d296ef67e8defe3d0a30c65e73a68446fe414b4480d0096d6cd078addfef0b.
Release linked; three Lua suites passed; diff check clean. Peak durable variables60.
Installer /tmp/install-ember-prebridge-bird.py, frozen file manifest
/tmp/ember-prebridge-bird-manifest.json. Game PID368720 still running at pre-install check;
user asked to close it. This was the earlier blocked installation check; these changes
are now included in the 19:32 experiment installation above.
BRIDGE_VIGNETTE_SUPPORT_A/B_SQUAD into required Mercury combat. Their
authored anchors (-420.5,79.5,-36.5) and (-420.5,73.5,-36.5) sit at the near end, not the far
monster closets. The eight required squads now gate Ghost. Keep their original bridge
AI objective14/task-group cost selection. Optional Crimson Shadow remains lever-only.build/first-encounter-audit/bridge-clear-bird-test-20260905.log.
The new diagnostic reads native failure reason at the log site before generic reason12
replaces it, and counts the separate1024-record simulation bitmap. Original code maps
reason11 to state heap,14 to simulation records,15 to authority records. Getter16CC5D0
is called read-only behind an exact-byte build guard and SEH; bitmapRVA030B0340 verified
against170B2B0 disassembly. No allocation/init hooks or speculative capacity fixes added.
Bird is NOT fixed yet; next reproduction must capture this specific reason.Ship-door answer: existing transition API accepts exact type23/device class80804F45.
The named Harvesters are type2 actors with embedded delivery/animation components and
have no named type23 door binding in this SDK. The lever call cannot be applied directly;
we still need a verified native actor/component animation command. No ship-door/warp
animation claim or guessed hash in this update.
Lua changes tested against installed DLL
13513b002ab38633560f16e59e6dcd2984165540830816c9bba5640cf8d4161b.
Three Lua suites passed, diff check clean. Peak durable variables 60. No native code change.
Installed with /tmp/install-ember-hover-and-lever.py after confirming Destiny closed.
All seven installed script hashes verified against /tmp/ember-hover-script-hashes.json.
Backup: build/hover-lever-darkness-backup-20260905-185535. Runtime, settings and save
unchanged. No game launch or process stop. Manual validation of these changes is pending.
f6ffb59e slot7) with the existing accepted
type-4 lever interaction. Initialize position0 with snap; move to position1 without snap
on use. The object's interaction and the visual animation are distinct native components.User confirmed the previous build's lever interaction and improved despawn timing live.
Archived test log build/first-encounter-audit/lever-hold-darkness-test-20260905.log shows
bridge and Landing Sun cleared, but helipad retained 1+2+2 living actors. Passenger member
squad f6ffb59e/type1/slot26 also last reported alive1/consumed0 (t263045); its lingering
population is not explained by the helipad scope error. If the next test looks empty but
remains restricted, capture that actor's actual position/state before claiming all native
squads are clear. Do not silently remove it from completion requirements.
Harvester door/warp animations remain unresolved from the prior task. This change adds hover time and the Mercury lever's authored animation; it does not invent ship animations.
DLL SHA256 13513b002ab38633560f16e59e6dcd2984165540830816c9bba5640cf8d4161b.
Backup build/lever-and-packet-batch-backup-20260905-183010. Installer checked the real
process namespace, confirmed Destiny closed and verified all eight installed file hashes.
Save retained; SDK, declarations and mission scripting enabled. User launches manually.
LANDING_MERCURY_DOOR_BUTTON_OBJECT now spawns at its package transform.
New typed set_interactable_object Auth carries entry zero plus registered interaction
child 80804FB8. Native F32220 requires that child before publishing reply 80804FB7;
F33A90 -> F36640 sets runtime+720 after accepted use. Auth revision zero leaves control
of that latch with native use, rather than forcing a false latch on every publication.
Exact-object on_event_object_interacted starts optional squads and opens the door once.
Removed the proximity-triggered door transition and bonus spawn.Evidence: archived latest log build/first-encounter-audit/lever-delay-test-20260905.log.
Actor callbacks had queued_ms=0, so prior derived-event batching alone did not explain the
remaining delays. Exit-start/retirement acknowledgements still lagged staged commands by
roughly 12–34 seconds. These logs do not isolate client application versus reporting latency.
Validation: release linked; all 12 portable CTest checks and three Lua suites passed; diff check clean. New fixtures cover registered object Sense, duplicate use, stale generation, partial packets, blocked response ordering, main combat completion without bonus combat, wrong lever identity, proximity rejection, and no replay after reload/return.
Remaining: manual validation of the native lever and latency change. Harvester doors and animated warp-out are NOT fixed in this build. Current retirement is native deletion. Actor command kind 6 only edits a six-element behavior-tag set; kind 8 edits a transform; neither has been established as a door/warp action. Harvester behavior imports map to 80B3B399 and its component templates, extracted under the audit tags directory. No speculative parameter hash or damage-based retirement mode has been installed. Capture native delivery/door components during the user's next manually launched bridge encounter.
DLL SHA256 ee769dd010e9ab6a65b4f144e3f283ae88c823496520eba41d05919e7659b56c.
Backup build/encounter-accounting-backup-20260905-174651; installer checked Destiny closed
in the real process namespace and verified eight installed hashes. Save retained; SDK,
declarations and mission scripting enabled. No game launch or stop.
Reviewed recording /home/millie/2026-09-05 17-04-12.mp4, including bridge and refinery
transition. Respawning Restricted banner appears after the console. Archived corresponding
log in build/first-encounter-audit/bridge-darkness-test-20260905-1704.log. All four
retire-generation receipts eventually arrive. Delay from staged retirement to logged receipt:
C/D about 33–34 seconds, A/B about 21–22 seconds. These timestamps alone do not distinguish
client application latency from delayed host observation. Do not describe them as proven
network latency. Native deletion still has no verified warp animation.
Changes:
Latest test helipad slots 12/13/14 reached positive population at 171762–172019, zero at 174141–174701, and some repopulated afterward. Sun slots 56/57 similarly reached zero, then slot 56 repopulated. Old Lua immediately retired each group at the first combined zero. The guard fixes that premature cancellation when requests remain; the cause of initial actor losses is still unproven. Logs now include consumed totals for diagnosis.
Validation: release linked; ten portable CTest checks and three Lua suites passed; diff check clean. New regression checks cover a 1000-event burst, strict output barriers and ordering, partial accounting rejection, temporary disappearance/repopulation and late accounting deltas. Peak durable variables remains 54. Manual test of this exact installed build is outstanding.
Remaining: verify ship callbacks no longer lag, observe actual hangar deaths versus accounting, confirm darkness clears only after combat; capture live delivery/door components during the next user-launched run. Door animation and native animated warp-out remain unresolved. Additional offline RE maps command kinds 0–9 through A98E40; kind 6 (A9C060) manipulates actor behavior tags, kind 7 (A9BFA0) writes named scalar parameters via 576420. Neither is verified to be a Harvester door/warp command. Do not guess parameter hashes.
Installed at17:02; DLL SHA256 cbdc7a6eec5edcc41f382dc76635931c34db99966bdc5073137fde2a74bd35bc.
Installer confirmed game closed, backed up to build/bridge-darkness-cleanup-backup-20260905-170239,
and verified all eight installed runtime/script hashes. Save preserved, SDK/declarations and
mission scripting enabled. User launches manually; no game launch or process stop.
Latest user instruction: enable darkness only on completed Ghost interaction starting bridge
extension; release after bridge/passenger/Sun/helipad squads all clear. Earlier catwalk/pipe/
Mercury combat is excluded. Release outside landing; return to cleared area cannot reactivate.
Controller tests cover initial disable, stale/incomplete scans, duplicate scan, last remaining
hangar squad, completed return, reload and unfinished earlier fights not blocking release.
Native set_darkness_zone uses exact type35/class808099BD/schema808099BF. E4C110 reads
Auth .0; E4C0A0 additionally compares lifetime native+12 against current bubble. Roster
assembly derives policy from its final SDK Auth estate, pairs lifetime .5 with region/8 (64→8),
and clears participation+736 delay bypass while active. Wipe countdown remains inactive:
hardwipe .3=-1, nested .4 timer inactive. This is NOT verified full checkpoint/wipe recovery;
manual death/restriction/HUD testing is still required. No claim that this fixes Bird.
Live observation proved all four entry/exit revisions acknowledged. Each A/B had two native cargo refs; C/D had none. All four outgoing disabled bodies reached native Auth, but actor indices stayed live minutes later. Root cause: live Auth callback AB6E20 invokes AB71E0, which retires only on generation CHANGE; AB7350's enabled=false only inhibits creation. Previous AB78B0-based assumption described a different callback and was insufficient. Retirement now advances generation1→2 at second path completion and sends empty delivery manifest in the SAME update to avoid old cargo replay after the lifecycle reset. Native mode0 uses AB89A0 detach and 56A8F0 destruction. Visual warp animation is not established; this fixes the demonstrated missing cleanup, pending manual verification. Do not claim doors fixed: native delivery completes without the user observing door opening. Mode1 was inspected and routes through damage/death handling (3BD720/B43090/DDA5C0); do not assume it means warp.
Sun and helipad groups now start with bridge activation (five squads), once each; seven deck defenders retain their crossing trigger. A/B unload delay remains3000ms. No ship timing change. Native header/codec tests nine CTest passed; all three Lua suites passed. Release build passed. Peak54 durable variables; native limit512. Generated Lua declarations now include deliver_squads. Capture archive: build/first-encounter-audit/harvester-two-carriers-20260905-1623.log; live snapshots ship-runtime-20260905-162329 through163042. Reviewed user's local recording 2026-09-05 16-23-18.mp4; ships visibly park after flying. No causal proof for random deaths yet.
Installed DLL SHA256 d240bb7f528a3f97885e861e0ba2cdf380efad85d4fd78398a18e59a6252a3ea.
Backup build/two-carriers-transport-backup-20260905-161841; eight runtime/script hashes verified.
Installer confirmed Destiny closed; save preserved; SDK/declarations and mission scripting on.
User launches manually. No game launch or process stop.
deliver_squads native manifest1..8 exact distinct same-registry squads.
Two refs are one187-bit payload, preventing second-squad assignment replacing the first.
Existing single-squad API remains supported. A/B wait for native delivery completion and
positive population from both of their squads. C/D depart after their arrival timer without
waiting for a nonexistent delivery. All retire once on second path completion.ev=ember_transport stage=auth_staged slot=... bits=... body=...
for only the four Ember members. Next run compare outgoing exit revision2 with live Auth
+256 and Sense +396. Use /tmp/ember-capture-door-details.py while ships remain alive; the
linked-block base calculation now wraps subtraction to64bits (previous Python overflow).
Prior parked snapshots152740..153138 showed authority TRUE for all four ships; do not
assume missing entity authority without new evidence. Door boolean mapping previously
traced via44E340 actually uses generic component enable/disable through590B10/594D70;
it is not established as an open-door animation command.Validation: Release built, eight CTest plus three Lua suites passed. Tests cover two refs surviving exit-program replacement, duplicate/empty manifest rejection, 2999/3000ms boundary, independent empty-ship exits, both passenger squads per carrier, transit/reload and no replay.
Release built successfully. Candidate DLL SHA256
151a83a68a0d01b7ac66ac402cf73f782473f825b2ce4d109507395e3d986f27.
Installed and SHA-256 verified all eight runtime/script files after the installer confirmed
Destiny was closed in the real process namespace. Backup:
build/objective-delay-transport-backup-20260905-154242. Save/account progress preserved;
SDK, Lua declarations and mission scripting enabled. User launches manually. No game launch.
User explicitly requested restoring the previous arrival-based unload, delayed roughly2s, and assigning ships to objectives exactly as carried enemies are assigned. Implemented:
Live test archived as first-encounter-audit/harvester-doors-test-20260905-1533.log. Snapshots ship-runtime-20260905-152740 through153141 contain four live ship Auth/actor states. No delivery was requested in this test: the discarded device helper compared schema table index with hash, so it ignored native completion. All six device primary channels were0/sequence2 in capture
User reports Bird when killing one of the bridge-start defenders, after waiting minutes for ships that never unloaded. At t463844 native create failed with116 free entity indices and571 allocations. This favors initializer failure over exhausted index bitmap; do not assert it was caused by failed ship removal. Door animation/objective hypothesis still needs a manual test.
Portable eight CTest and three Lua suites pass; controller validates actual timer_name field, 1999ms/2000ms boundary, independent late ship, reload/transit, objective cost selection, and unchanged empty parent spawn requests. Peak53 variables, native capacity512.
User reports entry/drop working but a few seconds before bridge connection, doors remain shut, ships fail to disappear, and Bird recurs. User clarified retirement must happen immediately on completion of each ship's SECOND authored path. No timers or region-exit cleanup were added.
Installed DLL SHA-256 d64edd4463d8d0a1ecad6d53ed16d5438bd423304c6af4a155e1ad2bedb9630f.
Backup build/bridge-ready-transport-backup-20260905-152123; eight hashes verified.
User confirmed game closed, installer checked real /proc, save retained, SDK/declarations and
mission scripting enabled. No game launch or stop. User tests manually.
transport-doors-latest.log captures 16EE180->170F190 via B428D0/3BD440/4D7110. Creation can
fail in allocator1711D10 OR initializer170B0F0. Existing allocator exhaustion is now warn;
each bounded retail failure stack also logs current free count and allocation count. No
extra allocator hook, automatic retries, or pool-restock settings were introduced.Validation: Release build passed; nine CTest cases and three Lua suites passed. New tests cover sparse device receipts, stale generation, partially connected bridge, early and late arrivals, refinery transit during unload/departure, exact second-path retirement and replay suppression. Peak54 durable variables; native capacity512. Live visual behavior remains to be tested.
Door animation remains unresolved and unchanged in this install. Native delivery1029330 sets an authored boolean through44E340 and starts four effect bindings (+80/160/240/320 via C7AFA0 -> 3D30F0/587970); these are not established door commands. The Harvester actor80FE22FC binds delivery component template80C0E5D2, component instance ordinal15, to actor template 80FE22C9 ordinal5 through the boolean ref at actor-file0xB68. Destination definition offset1018 uses interface815B963A (80803A2B/80803A2A), implemented by actor component80803C23 feature6. Extracted assets are under first-encounter-audit/tags. Need capture that actor boolean/animation state during delivery, and entry/exit Auth plus authority while ships are alive. Do not invent an open-door hash or replace the existing Auth body without preserving path and delivery.
User confirmed that the prior build moved ships, but too late; troops fell to their deaths, some squads spawned early, ships remained above the bridge, and Bird disconnected the run. The prior candidate is not an accepted implementation.
Installed DLL SHA-256 166c596f720094c2fa9d69e70bf29bd3495a0c1a20176c4c3ec7d87e487ed8d5.
Backup build/endpoint-transport-backup-20260905-144335; all eight DLL/script hashes verified.
Installer checked the real process namespace and found the game closed. Save unchanged,
SDK/Lua declarations and mission scripting enabled. User launches manually; no game launch.
Concrete correction: the kind-3 path command used marker 0, the START of each authored curve.
Native AB0C30 indexes the curve's marker array; marker 1 is the far endpoint. Both entry and
exit now use marker 1. Read-only sequence-runtime-20260905-143010 contains all eight source
and curve assets. transport-curve-markers-20260905.json summarizes them. A entry runs from
(-380,151,-2.5) to (-365,117,-22.5), approximately 20m lower. C entry's marker parameters are
[0,5], others [0,4]; these are spline parameters, NOT flight durations in seconds.
Cargo reservations and empty parent requests now prepare before Ghost is enabled, without creating ships or ground passengers. Console completion extends the bridge and requests the four entry flights without first queueing later ground waves. Bridge monitors arm at this point; early bridge receipts cannot consume Lua progression. Ground bridge/Sun/helipad groups enter on 25/75/100% crossings with existing forward catch-up and once-only guards. Actual crossing behavior still needs a fresh manual test: earlier runs sometimes lacked receipts on the initial traverse, and late ground placement has previously missed streaming readiness.
Video rechecked at half-second intervals from 3:10 through 3:34.5. Ghost deployed around3:15, machinery moves during3:16–22, ships sweep into view3:24–29, and crossing combat follows. Four reference contact sheets saved under first-encounter-audit/reference-arrival/drop-*. The recording does not establish the full four-ship passenger manifest. Current one-squad-per- ship pairing remains reconstructed; passenger A-family support/melee anchors cluster near A/B entry endpoints, so original manifest deserves further verification before claiming full fidelity.
Bird remains unresolved. Archived transport-bird-20260905-1419.log contains first-session
failed sobject creation at t248202, after region transition240599–245393. Exit cursor receipts
completed230157–233507; those receipts alone cannot prove visible flight and can include native
timeout fallback. New bounded warning-level caller/stack traces preserve the native creation
failure boundary if Bird recurs, without globally enabling debug or suppressing the error.
Validation: Release build succeeded; eight CTest cases and three Lua suites passed. Packet regressions reject the former start-marker payload. Controller covers deferred preparation, scan-gated monitors/waves, arrival-only unload, independent exits, and no replay on backtracking or script reload. Peak52 variables; runtime capacity512. Flight, safe unloading, departure, full passenger composition and no Bird still require the user's fresh run.
User reports missing pre-bridge enemies; ships stationary; troops appeared in ships but fell
to their deaths; some enemies appeared on the bridge; far-side closets worked as expected.
No mission fault/capacity error in the archived native-transport-live-test.log.
The log contains zero actor_path events. Do not describe the prior candidate as successful.
Read-only captures establish the lost-state problem:
ship-runtime-20260905-130600 and the 130638..130657 series: all four named actors
exist, enabled, initialized, generation1; Auth movement revision/seed/count are all zero,
while delivery revision1 and the correct type1 squad reference are present.encounter-runtime-20260905-130934 captures both F6FFB59E and D8CE8390, 69 rows,
no read errors. Active ground squads such as F6FFB59E/33,34,36,56,57 have objectives
and task groups but zero Auth requested-count array length and generation0.actor-authority-20260905-130526 and 1307 captures preserve actor state; many actors
no longer carry squad refs. Free actor slots retain stale bytes; count live first words only.Native overrides replace complete Auth, not absent-root patches. Host now materializes these bounded mission API patches against the last transported same-ClientRef estate. Movement and delivery roots coexist; objective updates retain counts/profile/generation; retirement explicitly replaces requested counts with zero or actor enabled with false. Unsupported nested layouts are refused. Unrelated SDK APIs retain their existing behavior. Squad lease storage now allows the full 1313-bit schema, including objective and counts.
The delivery routine begins unloading. Lua now reserves troops during flight and calls
deliver_squad only after entry progress completes, then waits for native delivery completion
and positive squad evidence before requesting exit. Packed transport state now uses FIVE bits
per ship; this candidate requires a fresh mission, not reload into the four-bit live state.
Release candidate built: dce57b2cb894e3a08cc320f2657d6ed07bab08f41ed4c38db78fd4ea1614fcbd.
Installed and SHA-256 verified eight runtime/script files after the user closed the game.
Backup: build/auth-state-transport-backup-20260905-132343. Save preserved, SDK and
mission scripting enabled, no launch. Installer: /tmp/install-ember-auth-state.py.
Validation: all eight portable tests and three Lua suites pass. New test covers sequential
movement/delivery/exit/retirement, repeated AI updates preserving spawn counts and mode,
zero-count retirement, malformed/short input, and maximum-category squad lease capacity.
Live visual movement and correct unload location remain unverified for this new candidate.
User's next correction, explicitly deferred until dropships are implemented: war-beast door
must use LANDING_MERCURY_DOOR_BUTTON_OBJECT (F6FFB59E/type4/19), not proximity.
Object activation/rendering, native interaction/destruction criteria, and object/device links
need auditing. Nearby devices are lever7, screen8, door9. No object behavior changed yet.
Current object Sense decoder refuses nonempty dynamic reply lists; this is part of that audit.
Installed eight runtime/script files into the user's game, verified SHA-256 after copying.
DLL: d688af8ed3b6b738689494d34b2e5e7b15c9be97a9f6b4839a126d8474394e43.
Backup: build/one-shot-transport-backup-20260905-130149.
Save untouched; SDK and mission scripting enabled; image capture disabled. No game launch.
This supersedes the short-lived 12:52 candidate, which still had the host's old mode check.
Root cause corrected: type-2 Auth .7 is passenger delivery, not a list of flight paths.
AB6600 dispatches its type-1 squad references to interface 80807DB4. On failure it calls
4E8270 on those squads, so sending type-58 references there was structurally wrong.
Movement now uses Auth .6, one kind-3 80807F7A action; A97BB0/4FFEC0 accepts type58
and resolves the authored curve. Movement completion uses nested Sense .3/80807F6E
progress and revision. Root Sense 5/6 now remain explicitly separate delivery fields.
Harvester actor asset 80FE22FC contains component 8080670A at 0x554C. Its registered 1029330 delivery implementation collects reserved requests (102A920), creates passengers in vehicle seats (1022890), and completes after attachment handles clear (102DC80). Passenger squads now use mode3, which 4E4580 excludes from ordinary ground placement. Objective assignments and cost-driven changes preserve that mode. Codec, SDK preflight, and host submission share the same accepted-mode predicate.
Bridge completion requests bridge, landing-sun and helipad defenders before crossing volumes can trigger next-region streaming. It also reserves all four passenger squads and starts the four named ships. Each ship departs independently after movement completion, native delivery completion, and evidence its passenger squad existed. Current manifest is one squad per ship in roster order; original passenger-to-ship pairing is not established by the shared names. There is no timed ground-spawn fallback. Native completion can include cancellation/timeout; these receipts still require visual confirmation and actor capture in the next user-run test.
Completed encounters now replace their native requested counts with zero exactly once. Their durable phase prevents subsequent placements and AI reassignment. Advancing route progress suppresses old, previously skipped triggers on backtracking; objectives/dialogue cannot rewind. Successful ship exit (or a dead ship) sends a disabled member body: AB78B0 releases the actor and AB7350 prevents recreation when retained Auth is replayed. These rules persist through region transit and a script reload in the same mission session. A new Director mission starts a new session; save/checkpoint resume of all stages is not implemented.
Validation: Release build completed; seven portable CTest cases and all three Lua suites passed. Production msg-6 fixtures distinguish delivery changes from actual action progress and reject truncated input. Reservation and retirement encodings are checked independently. Controller regressions cover independent departures, duplicates, clearing all 38 ground/passenger squads, zero-count retirement, ship retirement, refinery transit/reload/return, and late early triggers. Peak durable variables: 51 under the former 64 limit; installed runtime still supports 512.
Next manual acceptance: fresh mission, initial landing/door/console/bridge preserved; see ships actually follow entry and exit curves, carry and unload every passenger, then see all far-side groups before refinery. Kill passengers and backtrack after clear. Capture native ship movement/delivery/Auth and far-side actors while powerhouse registry is still loaded. Visible flight, full compositions/placement, and return behavior remain unverified in-game.
User manually launched and crossed into the refinery. No script/capacity fault in the
archived build/first-encounter-audit/capacity-512-live-test.log; structured squad/flight
summary is alongside it. User reports no visible post-bridge enemies. Do not treat server
spawn staging or positive Sense populations as proof of correct visible placement.
Cutscene completed at t=112840. Catwalk actor capture actor-authority-20260905-120413
confirms native objective D8CE8390/type3/index0, revision 1, assigned task groups, computed
costs, and AI area refs. Mercury groups cleared and Ghost completion started bridge/ships.
All four entry paths stop in 12–14 ms; exits stop in 13 ms. Read-only captures saved before
and after ship creation: ship-runtime-20260905-120639, ship-runtime-20260905-120724; full actor snapshot
at 120724 contains all four ships. Both 120820 and 120857 are empty after registry unload;
they do not contain member, Auth or entity evidence.
Bridge 25/75/100 triggers fired at t=369200/386691/390960 without fault; corresponding spawn and objective commands staged. First positive populations for bridge slots 38/39 arrived at 399270/399470; 33/34/35 at 400133/399983/400746 (about 30 seconds late). Slots 36/37 reported zero only. Need explain delayed population and actual placement, and missing sun/helipad groups; capacity is no longer blocking callbacks. All four passenger groups reached zero after previously positive counts without the old disconnect before the user continued into refinery.
Native ship capture resolves all eight type58 path refs to class 80807D9B objects, excluding missing registry mapping at capture time. All four ship members show generation/actor state consistent with spawned ships, delivery revision 2, inactive, dead=false, initialized=true. The later helper supports Auth/entity capture, but 120820 contains no rows. This does not prove readiness at first dispatch. Those old revision/state fields described delivery, not movement. No game files changed during this monitoring turn; no launch/shutdown or memory writes.
User reports almost all enemy behavior now works, but stationary ships, missing passenger
and post-bridge enemies, then mission variable capacity exceeded. Run archived as
build/first-encounter-audit/ai-working-flight-cancel-capacity.log. The bridge 25% trigger
faulted while creating encounter state, preventing later mission callbacks.
Raised the shared C++ mission variable capacity from 64 to 512 at the user's request. All variable-count fields are size_t; VM, transactional state, and SDK capacity publication use the shared constant. Also packed per-squad AI assignments into 12 five-bit lanes per integer. Full-route regression reproduces exhaustion with the previously installed scripts; updated scripts peak at 57 variables under the original 64-slot test budget. A fresh mission is required; an already faulted run is not migrated.
Release build, all seven portable tests, three Lua suites, and whitespace check passed.
Installed and SHA-256 verified eight DLL/script files, preserving save and enabling SDK and
mission scripting. Backup: build/capacity-512-backup-20260905-120000.
DLL SHA-256: 004fcd781af52bc8eaa3fc2e56be9ab447d0ef23335902fb0f576c2ac844eaf2.
No game launch or shutdown.
Flights remain unresolved: all four entry paths report active then inactive within 13–15 ms; exit paths also stop within 14–16 ms. Current transport interprets this transition as arrival, but it is not evidence of a completed flight. All four passenger group slots reported positive population, which does not establish complete composition or correct boarding/unloading. Need a read-only capture of stationary ships during the next manual run to inspect path resolution, actor readiness and component dispatch. No speculative flight change installed.
User confirmed bridge extension, then reported stationary ships spawning only on the return bridge crossing and a world disconnect after killing passengers. The installed baseline had no flight requests and used Bridge 25% as its spawn trigger. Candidate moves ship creation to Ghost completion and starts all four named members on their authored entry sequences. Native path-state receipts gate passenger creation, then exit sequences. Passenger attachment/unload is still incomplete: this candidate creates passengers at their authored ground anchors after arrival. Native flight/cancellation behavior requires the user's test.
Actor capture build/first-encounter-audit/actor-authority-20260905-112423 contains 10 full
actors and five catwalk squad blocks. Actor and squad-owner authority bits are true. Squad
Auth root 0 is unset, so they are not assigned to an authored combat objective.
Derived objective assignment: 4E2A90 copies root 0 to squad +1520, root 13 to +1540, and root 16 to +1532. 4EC710 links the squad into the selected objective group. AB8510 / A99FA0 computes group costs for squads matching the objective's registry/ref; 4EB8E0 clamps costs at 2040, and 4E84E0 echoes the completed calculation revision into Sense root 1. AB83D0 / A9AD70 then selects native tasks within assigned groups; 4E2C40 applies the combat-area reference to the squad AI group and refreshes its actors.
Candidate assigns all 38 ground/passenger squads to their corresponding same-registry objective, initially group -1, revision 1. Retained native costs select the lowest reachable authored group, preserving ties. This selection policy is reconstructed, not recovered retail host code. Bounds from objective source +136: catwalk 17 (80B3CA03), Mercury 11 (80B3DCC1), bridge 14 (80B3C8D6), pipe 3 (80B3DCC7), sun 4 (80B3DCC4), helipad 4 (80B3DDB2). Cost-only Sense deltas retain population counts so AI updates cannot manufacture deaths.
Disconnect log archived as build/first-encounter-audit/dropship-kill-disconnect.log:
t=339052 four failed sobject creations, then prerequisite failure and world cleanup. No
verified fix yet. Existing lease-release diagnostic setting is unchanged: its applicability
to this run has not been established.
Validation: Release DLL build, all seven portable tests, three Lua suites, whitespace check.
DLL SHA-256: b14c56923797150227f9b1e9b1feaa4b8198dde40c669a5ab65406624407bda6.
Installed and SHA-256 verified at 11:44. Backup: build/objective-flight-backup-20260905-114409.
Save retained; SDK and mission scripting enabled. No game launch.
User confirmed the beast door opens and the Ghost console is scannable, but the bridge
stays retracted. Archived that run as build/first-encounter-audit/console-scannable-no-bridge.log.
All eleven Mercury squads cleared and console enable Auth was staged at t=278017.
There were no decoded Ghost Sense receipts. The native msg-6 decoder lacked the
80804D3E branch, so the new Lua completion handler could never receive its reports.
Added the exact required boolean, raw float and biased signed generation fields from SDK schema 80804D3E and native E4A590. Independent complete packet fixtures now run through the production decoder and Ghost state reader: initial, active half-progress, and completed generation 2; a truncated packet is rejected. The test failed with the old decoder's partial status and passes with the fix. Both Lua suites and all six portable tests pass; Release DLL build and whitespace checks pass.
Installed and hash-verified DLL/scripts with backup
build/ghost-decoder-backup-20260905-104521. DLL SHA-256:
26611bdea79a39305d2fcda7a64ec06627c5a07ec9af8ee64e009d393cb42dc3.
No save edits or game launch. Fresh manual run still needed to confirm that completing
the native scan triggers all six bridge animations. AI and transport work remains open.
User confirmed the opening cinematic and player arrival work. Preserve that path.
Installed Release DLL and five Lua files, with source/installed SHA-256 verification.
Backup: build/bridge-console-backup-20260905-103443.
DLL: eed579d58c7131090bb87d6b7521b9ef8063f4c5a95f70ff68dc3a0a88bf83c9.
Save files were not modified. SDK and mission scripting remain enabled. Native image
capture is now disabled because the complete image has been archived. No game launch.
This candidate initializes all six bridge devices to position 1 (retracted inferred from native value passthrough and the user's observation that position 0 was extended), opens the beast door at the authored Mercury 40% trigger, and enables the native Ghost console only after all eleven Mercury squads report real populations and then clear. The squad state flag previously called removal_flag is not a reliable unload indicator: observed real kills set it, and it no longer suppresses death accounting. Exact type-65 Auth and retained partial Sense fields connect console completion to animated bridge extension.
Validation: Release build current, git diff whitespace check clean, both Lua suites pass, and all six portable CTest tests pass. These are implementation checks; bridge direction, door timing and native console completion still require a fresh manual mission test. AI movement/idle and carrier/passenger attachment remain unresolved and are not fixed by this candidate. In the prior run, Mercury bonus-anchor squad slot 42 remained alive.
Transport investigation checkpoint: type-2 Auth root 7 carries an authored sequence list and revision; native AB6600 resolves it and starts actor sequences, with Sense revision and active fields at offsets 448/452. This is distinct from loose squad creation or adopting an existing actor. No transport change has been installed. Squad Auth root 0 is not proven to reference a dropship; its resolved target expects a controller layout, so do not implement a carrier link through that field on this evidence.
The manual run failed before cinematic activation. Installed log at t=52632 reports
landing.lua:52: attempt to call a nil value (global 'pairs'). Sunrise deliberately removes
unordered iteration from its mission sandbox; the standalone Lua test had left it available.
Both controller uses now iterate an explicit route-ordered array with ipairs, including the
squad-state callback. The regression disables pairs and next before loading the controller:
it reproduced the exact old fault and passes the full route/reload test with this fix.
No native DLL change or save reset is required. Start a fresh mission instance after installation.
The user's manual run also produced a complete native image dump (zero unreadable bytes).
It and the fault log are preserved under build/first-encounter-audit for offline investigation.
Correction to the earlier spawn investigation: powerhouse_landing_mercury is NOT the mission
start. It is the later console combat platform. The authored default set (0x2EA8FB98) has
an opening three-point cluster around (-400, -192, -1.9), surrounded by the
powerhouse_catwalk_002_dialog_trigger_volume; the catwalk progress volumes then lead north.
That is the new selected set. Actual native spawn selection still needs the user's fresh run.
The Lua route now binds all 42 powerhouse squads once in nine groups. The first five are the catwalk entry squads; 15%/35%/100% catwalk crossings stage mid-catwalk, pipe and Mercury. Pipe 40% starts cue 2. Bridge 25% stages bridge/dropship/passenger groups; bridge 75% stages landing-sun, and bridge 100% stages helipad. Later crossings catch up skipped narrow volumes. These choices are reconstructed policy using authored spatial identities and the reference video, not a claim that the packages contain recovered retail host conditions.
Fixed a native Sense reader bug: a presence-gated alive-count field exists as a DecodedValue row even when omitted. Checking only the row pointer interpreted that omission as zero. The reader now requires a present root count. Added squad population receipts, exact resolved player-trigger identities, and bounded change-only bridge/console Sense diagnostics.
Validation: two Lua suites pass (cinematic ordering, all 42 roster entries, route progression, exact-trigger matching, skipped volumes, removal, repeat/reload guards); all five portable CTest tests pass, including omitted/zero/nested/invalid alive-count cases; six SDK inspector tests pass. All 42 squad bindings and seven route triggers resolve against the generated SDK. These checks do not prove live actor creation, native AI, Ghost interaction or bridge movement.
MissionDocs were reviewed. The Forest race switch is specific to Omega/Vex and is not suitable for Ember/Cabal. The documented member-bound actor path needs native verification before applying it to harvesters and other named Ember members; loose squad requests alone do not establish their correct creation/attachment. Ghost-console Auth semantics and bridge direction also remain unresolved. No automatic console completion or bridge opening was added.
User constraint: apply and save to the installed game, but NEVER launch it automatically. The next manual boot will use Sunrise's existing native-image diagnostic to supply readable code for offline analysis; disable the diagnostic once captured. Existing save/settings, scripts and DLL are backed up before installation. SDK and mission scripting remain enabled.
Installed and SHA-256 verified the Release DLL and all five Ember Lua files.
Save/account state compared equal before and after this installation. Backup:
build/powerhouse-route-backup-20260905-090720. DLL SHA-256:
26edd28c539beb6444c6181684154c1e43abb8940cf26c3d5eec87cfd54bcfac.
The installed diagnostic flag is enabled for the next MANUAL boot. No game launch was made
after the user's manual-launch-only instruction. Next validation: fresh Director launch,
cinematic completion, grounded starting platform, catwalk/pipe population and AI, then console.
The next playtest confirmed the movie completes and the player spawns, but in the wrong place under the map. Logs now resolve both cinematic notifications and arm the transition to state 64. The installed arrival override selected the cinematic region without an explicit spawn set.
The native build-data catalogue contains a three-point landing set whose hash matches
powerhouse_landing_mercury (0x9C58857A). Its points align with later Mercury anchors. The claim that this was the opening area
was incorrect; see the correction above. Settings now explicitly select that set while retaining
bubble 6/state 49 for the movie; Lua still selects playable state 64 after termination.
The spawn-binding filter previously discarded explicit sets when their activity package was absent from the scenario's direct package list. That list does not inventory transitive references. Explicit overrides now retain their documented precedence; inferred spawn sets keep the existing package filter. Both roster and global-state publishers use this helper.
Validation: all four portable CTest tests passed, including explicit override precedence,
absent/zero overrides and the existing inferred-set filtering behavior. The Release DLL built
successfully and the native settings probe accepted the updated configuration with SDK and
mission scripting enabled. Installed and verified the root DLL and arrival setting, preserving
other preferences. Backup: build/landing-spawn-backup-20260905-081125.
The selected landing position still requires a fresh in-game test after the cinematic.
Playtest confirmed the arrival movie plays, but the player remained black after fade-out.
Both native notifications arrived (targets 5239 and 1685); the mission runtime rejected each
as cinematic absent. Inspection of the retained records showed zero-filled payloads and
ClientRefs decoded as registry 0, type -1, slot -32768.
Root cause: incident::validate advanced past selector, optional words and payload without
retaining their contents. It now reads and stores those fields through the bit reader,
including unaligned payloads. This restores the source identity needed to deliver the exact
cinematic-termination event to Lua and select landing state 64. Player-trigger events used
the same discarded payload path. Cinematic resolution now logs the source identity and
successful start/termination for the next playtest.
Validation: the new regression fails against the original parser and passes with the fix. It covers every payload alignment, maximum selector/payload lengths, truncated frames, optional fields, cinematic encode/parse/decode/catalogue resolution and player-trigger decode. All three portable CTest tests and the Lua handoff test pass; Release build passed.
Installed and SHA-256 verified the rebuilt root DLL. Previous DLL is in
build/cinematic-handoff-backup-20260905-075750. No SDK or settings regeneration was needed.
The restored notification path still needs the next in-game spawn test.
The sections below this update record earlier playtest builds. Current investigation found that the offline SDK generator omitted the scenario-layout catalogue needed by container and spatial extraction. Initializing it and rebuilding the Ember shard recovered 83 additional squad definitions: 160 definitions, 138 runnable, across 162 squad sensors. Thirteen sensors still have no definition, and eleven processing sensors each have two refused alternatives. See the complete squad census and the timestamped video comparison.
The production generator now prepares the missing catalogue in offline mode, waits for it in game mode, and rejects cached shards that lack placement context for a known map stem.
The controller draft uses the separate arrival-cinematic state (49), waits for its exact termination event, then selects playable state 64. Bridge reset is delayed until region 64 is held. Region-less client deltas preserve encounter ownership. Arrival dialogue waits for spawn settlement; the console-guidance cue follows combat clear. Regression tests pass, but these changes have not yet been validated visually in game.
The Ghost console interaction, later encounter activation, later dialogue and full mission completion are still unfinished. The reference video begins after arrival and cannot verify the identity of the arrival movie. No claim of complete 1AU parity is made.
Validation: Release build, both Lua controller/encounter suites, six Python SDK checks and
eight sanitized production-linker regressions pass. A fresh native offline process loaded
the scenario catalogue itself and rebuilt the old cache successfully into build/sdk-corrected
(138 runnable Ember definitions). The script binds successfully to that SDK, including the
newly recovered eleventh landing squad. The runtime logs typed Ghost-link Sense fields for
the next console playtest without interpreting them as an interaction yet.
Installation completed after the game closed. The previous runtime, SDK, scripts and settings
are backed up in build/video-audit-backup-20260905-074152. All installed file hashes matched
the prepared files. Settings now select bubble 6/state 49 for cinematic arrival. A follow-up
Lua gate additionally rejects early playable-region reports before cinematic completion.
Millie supplied a separate 21-second arrival cutscene reference and specified ordinary fly-in, then the cutscene, then player spawn. The reference document records that evidence. The selected bookend asset still needs visual confirmation during play.
Workspace recovery: the parent checkout was moved to Trash during the audit. The mission
folder now has its own recovered .git directory, retaining branch mission-ember and all
prior commits. Compiler dependencies were copied into build/recovered-dependencies/xwin;
the local .xwin-cache points there. The trashed checkout was not modified.
The opening landing controller is implemented and loads with the regenerated SDK. It publishes the powerhouse state only when the client holds region 64, places the six landing squads and changes the directive after all six have been observed and cleared. It leaves bridge movement for the authored interaction. This is a development slice, not a complete implementation of 1AU.
Build: build/x64/Release/steam_api64.dll.
Regenerated SDK: build/sdk-generated.
Prepared installation overlay: build/playtest.
The overlay was installed into the game's bin/x64 directory on 2026-09-04. It contains the
rebuilt root DLL, generated SDK and opening scripts. The previous files are backed up in
build/installed-backup-20260904-224413, with an installation.json listing replaced paths.
The scripting switch server.activation.mission_scripting was already enabled; no settings
were changed. DLL, SDK-pack and entry-controller copies were checked against the prepared files.
The squad linker resolved object keys across the entire content estate. Ember and its arcade variant reuse object keys, so a spawn-rule slot in the arcade object could invalidate an exact campaign reference. The linker now restricts target descriptors to objects sharing an authored scenario with the source. Ambiguity inside a shared scenario remains a refusal.
Package evidence: decoded all 162 Ember spawner configs using the existing package reader and installed Oodle codec in an isolated Wine prefix. Their 173 valid raw references all resolve to unique slots inside Ember; 116 collide in the global slot lookup. This census establishes the scope problem; it does not establish that every spawner passes every subsequent runtime gate.
The production offline generator was run with the rebuilt code into an isolated output tree, reusing 468 matching scenario shards and publishing 1,643 Lua files. The verified output was then installed for the opening playtest, retaining the originals in the backup above.
| Ember resource | Installed SDK | Regenerated SDK |
|---|---|---|
| Squad sensors | 162 | 162 |
| Squad definitions | 31 | 77 |
| Definitions passing static placement checks | 29 | 64 |
| Sensors without a squad definition | 131 | 87 |
The six opening squads all have exact actor bindings, anchors and passing definition flags. The remaining missing definitions and refused rows require further work; the scope fix is not a claim that all mission combat is available. Static placement checks cover definition flags, member counts and the default actor-profile compatibility gate. Live lease, transport and AI behavior still require in-game validation.
Ownership is taken from SDK state/occurrence joins. This table is not a complete event-order map.
| Region | Authored name | Relevant content | Squad sensors | Passing static placement checks |
|---|---|---|---|---|
| 64 | powerhouse | Landing, bridge, catwalk, helipad | 42 | 28 |
| 56 | link | Processing encounter and machinery | 15 | 2 |
| 40 | cinder | Foundry, chamber, grinder, ascent, sunlit deck | 49 | 31 |
| 0 | apex | Interceptor/security, reactor targets, fusion-cell area and escape | 56 | 3 |
| 1, 2 | apex alternatives | Alternate authored states | 0 | 0 |
| 48, 49 | unnamed globals | Shared mission sensors and bookends | 0 | 0 |
The generated-world shard's authored-squad context vectors are empty. Its projection helper
append_scenario_graph_contexts has no caller in the current generation path. The opening
controller uses the runtime pack's squad definitions, so wiring that separate graph projection
was not included in the scope fix.
Launch campaign 1AU and check that the landing enemies appear, fight and allow the directive to reach the bridge controls. Check death and re-entry behavior without expecting complete authored checkpoint support yet. Keep the mission-script/runtime log from this run so spawn or lease refusals can be distinguished from missing AI behavior.
Then verify the bridge's interaction event and extend the controller through the next encounter. The later mission, full checkpoint/wipe handling, dialogue, cinematics, rewards and terminal completion remain unimplemented. Do not mark the mission complete on the basis of this test build.
The first opening-area test reported mission arena block could not be taken from the heap
before any events. An isolated Windows executable linked against the Release objects reproduced
it: arena initialization returned false with capacity zero. LLVM IR showed that the nothrow
byte-array new-expression had been reduced to the failure branch, with no allocation call.
An explicit ::operator new[] call preserves the allocation; the 64 MiB limit is unchanged.
The rebuilt production allocator passed allocation, growth with data preservation, capacity
refusal, free/coalescing and three release/reopen cycles under Wine. Regression source:
tests/mission_arena_test.cpp (run with Release optimization; checks do not rely on assert).
The corrected DLL is installed; backup: build/dll-before-arena-fix-20260904-230158.dll.
A fresh in-game launch is still required to verify the next mission startup stage.