Files
EscapistsReintroduced/docs/evidence/observer-ownership-2026-10-02/native-initial-diagnosis.json
T
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

35 lines
4.0 KiB
JSON

{
"finding": "Combined normal smoke fallback disables damage handling before separate unconscious-camera probe invokes ForceUnconsciousness. The first combined assertion does not distinguish missing unconsciousness from missing camera.",
"evidence": [
"NativeSmoke.c:780 disables damage handling; no unconscious-camera selector branch or independent-fixture exclusion in combined smoke initialization.",
"NativeBaseSmoke.c:57\u201358 does exclude unconscious-camera, unlike combined fixture.",
"UnconsciousCameraProbe.c:50 invokes ForceUnconsciousness without checking/restoring damage enabled.",
"Installed CharacterDamageManagerComponent.c:208\u2013220 ForceUnconsciousness uses resilience HandleDamage(TRUE), then UpdateConsciousness.",
"Existing NativeCasualtyLoadProbe.c:114\u2013120 documents damage-protection suppression and uses synchronous exact-actor enable/restore.",
"Log05:05:28\u201331 fallback gate/cache tests,05:05:33 knockout call,05:05:34\u201335 admin fixture,05:05:36 combined observer-state+camera assertion failure."
],
"minimal_discriminator": [
"Immediately before/after ForceUnconsciousness log damageHandlingEnabled, permitUnconsciousness, resilience health, living/unconscious and exact controlled-body equality.",
"At unchanged stage1 assertion log observer reason, monitor latch, exact current controller identity, owned camera presence and current-camera equality; do not start monitor or force camera from diagnostic."
],
"scope": "Source-level fixture collision identified. Native log does not yet prove resulting resilience/medical state, so do not attribute to new ownership guard or change production based on this run. BindLocalObserver currently starts once then removes its own timer; exact controller replacement would need separate witness if medical state is genuinely unconscious. No target/native changes.",
"sha256": {
"/home/jakub/devel/escapistsrereintroduced/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "ff651e27c4a981df66f4fc5b55aadb262df75820aef707bb68c369e548c0c3be",
"/home/jakub/devel/escapistsrereintroduced/addons/core/Scripts/Game/ERR/00_Core/ERR_UnconsciousCameraProbe.c": "7d5ff3389ee806ac213db5be3a68288b3399142ccc29806df0d65b34a0b2fc3c",
"/home/jakub/devel/escapistsrereintroduced/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b",
"/tmp/erri-vanilla-stock/scripts/Game/Components/Damage/SCR_CharacterDamageManagerComponent.c": "6ab415c78ac30970089f8cece9764510d5f18f5b3b392a5772eef93cd6d059f5",
"/home/jakub/devel/escapistsrereintroduced/.build/observer-profile-0454/logs/logs_2026-10-02_05-04-32/console.log": "c601ad3616b29748555ef91d4e8986cdb5569fcae3b00c9b916e0386c24367e2"
},
"separate_followup": {
"finding": "New local controller in same surviving mode has no existing observer-monitor startup path after one-shot BindLocalObserver finishes.",
"evidence": [
"Repository-wide ERR_StartObserverMonitor call exists only in ERR_GameMode.BindLocalObserver at467; its repeat is immediately removed at468.",
"ERR_PlayerGuide.OnControlledEntityChanged starts only guide monitor.",
"Old observer timer correctly cancels itself on ownership mismatch. New controller has separate false m_ERRObserverMonitor latch but no caller."
],
"scope": "Conditional on actual local controller replacement during surviving mode; source-level missing startup path. Not proven trigger in failed native fixture, and no production change proposed yet.",
"suggested_test": "Execute actual binder with current A, replace local controller B, then ensure owned observer monitoring starts for B and stale A cleanup does not mutate B."
},
"resolution": "Parent confirmed prior passing camera fixture used project=core (-errBaseSmoke); failed invocation used combined chat (-errSmoke), which runs normal smoke/admin. Correct selector to core; no knockout behavior change warranted from this failure."
}