{ "status": "Frozen isolated proposal; working tree and index untouched", "files": { "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "4acbd2b23803f1fde3701fbddffd56edd83693196f0be2fe99f3be9b79a12b3d", "tests/test_hint_delivery.py": "1ec462cea5890379ad33ea3f16591896e085d1a30fd1af4a3411b14e5dc8acc3", "tests/test_observer_ownership.py": "f35d60fbdcdcde6bcdaaa403924fc8316d6684730c25ede6c15e619a4474a80e" }, "baseline": "baseline-manifest.json captures exact separate index/working hashes and files, including inherited Observer43 additions/2 deletions", "patch_sha256": "30358e01568a6a6693598dbe93f6a723b38bcd9395bf482e939eac95afcc015d", "results": { "red": { "exit_code": 1, "log_sha256": "88609415af870674d5da47156077cbbba0d599d587a7286e5767810d7438e065" }, "green": { "exit_code": 0, "log_sha256": "359367fd4e4c429eca157de941b568ba6c66b18e27f64d95e057fe512c73e78d" }, "hint-green": { "exit_code": 0, "log_sha256": "670a12abaa16aae6ff07d3fc7fb3492063a50cf8d78760da610705275e8f7efa" } }, "apply_check": true, "registration_needed": "tests/test_observer_ownership.py is new; parent must register in tools/check.py preserving existing edits", "sdk_evidence": { "source": "/tmp/erri-vanilla-stock/scripts/Game/Camera/SCR_ManualCamera.c", "lines": "EOnInit451-468 sets native global camera; Terminate419 only exits own components; destructor521 invokes SwitchToPreviousCamera266, which first requires exact camera current" }, "behavior": "Former local controller retains timer after replacement; awakened former body can close editor and select old body camera, or old observer may spawn camera whose native init selects globally. Guard stops only old monitor/resets recovery latches/cleans exact own observer before any those calls. Current owner normal recovery and restart monitor remain unchanged.", "test_boundary": "Actual Start/Update/Recovery/Close methods; camera/editor/hint/native scheduler doubles. Baseline compiled then fails meaningful global-camera/editor assertion. New current camera, timer, respawn placeholder and hints preserved; exact old current camera native fallback control uses live previous camera. The SDK dynamically finds previous camera: double uses pinned previous solely to model current-identity guard, not native camera-list fidelity. No engine/UI proof.", "index_own_patch": "observer-index-own.patch contains only production11line guard applied to original index baseline; main fix.patch applies against captured working tree. Parent controls staging." }