Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
56 lines
3.4 KiB
JSON
56 lines
3.4 KiB
JSON
{
|
|
"verdict": "Concrete source presentation defect reproduced; minimal proposal fixes it",
|
|
"before": "All-unconscious status already replicated from RecoveryService contains30s defeat/recovery/reconnect facts. PlayerGuide skips server-designated observers; Observer ignores RecoveryStatus and deduplicates only reason/target availability, so no automatic warning reaches affected unconscious players.",
|
|
"after": "Existing observer hint appends current replicated recovery status and refreshes only when reason/availability/status changed. Cache advances only on accepted ShowCustom; close clears status; existing ownership and active/conscious gates remain unchanged.",
|
|
"production_files": [
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c"
|
|
],
|
|
"test_files": [
|
|
"tests/test_hint_delivery.py",
|
|
"tests/test_observer_ownership.py"
|
|
],
|
|
"baseline_red": "red.log:actual method compiles, fails assertion requiring updated medical warning while observer reason/target unchanged",
|
|
"proposal_green": [
|
|
"green.log",
|
|
"ownership-green.log"
|
|
],
|
|
"coverage": [
|
|
"stable message dedup",
|
|
"status changes stalled\u2192recovering\u2192reserved help\u2192clear",
|
|
"rejected hint/missing manager retry without cache advance",
|
|
"ordinary guide cannot deliver this unconscious state",
|
|
"wake closes presentation",
|
|
"old controller cannot display replacement status",
|
|
"inactive round stops hints and clears cache",
|
|
"new round uses only current status"
|
|
],
|
|
"medical_policy_changed": false,
|
|
"native_launched": false,
|
|
"target_changed": false,
|
|
"native_limits": "Getter proves accepted native hint path/state only; no claim of full-resolution readability, manual UI or multiplayer. Existing fixture itself arranges treatment/knockout, unchanged.",
|
|
"manifest": {
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": {
|
|
"working_sha256": "4acbd2b23803f1fde3701fbddffd56edd83693196f0be2fe99f3be9b79a12b3d",
|
|
"index_sha256": "31d08123fa9f49dde380354bd839d1a9deb175cdb940311b4a64dd56eeb04ed7",
|
|
"proposal_sha256": "682aa5549470c69fc72d261fbfcf9f7a04a41a66e0101b269ccc00bc282ad05d"
|
|
},
|
|
"tests/test_hint_delivery.py": {
|
|
"working_sha256": "1ec462cea5890379ad33ea3f16591896e085d1a30fd1af4a3411b14e5dc8acc3",
|
|
"index_sha256": "1ec462cea5890379ad33ea3f16591896e085d1a30fd1af4a3411b14e5dc8acc3",
|
|
"proposal_sha256": "6066e2b00e54553ac298a3f9b37060a23851f5ca5d4f98eb25e502b2c44240a6"
|
|
},
|
|
"tests/test_observer_ownership.py": {
|
|
"working_sha256": "879c6185d834c03f8d62e7e35359c8bb5f6821f6dde03c73957be2ba614947c6",
|
|
"index_sha256": "879c6185d834c03f8d62e7e35359c8bb5f6821f6dde03c73957be2ba614947c6",
|
|
"proposal_sha256": "8e485c3d2e6ae90df82cbc7829996138db8e9a5a4a42a5e2bcaa3bffa61368de"
|
|
},
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_UnconsciousCameraProbe.c": {
|
|
"working_sha256": "7d5ff3389ee806ac213db5be3a68288b3399142ccc29806df0d65b34a0b2fc3c",
|
|
"index_sha256": "7b9308c9c35413fa76a7bdc8923f99785fb393ad9d06ba4b36df4d8aa29e574b",
|
|
"proposal_sha256": "66b1c4591b0ecc67cb08418a115bb02ed2b0168b7ae970f1e0a1ea335c59dc5b"
|
|
}
|
|
},
|
|
"apply_check": true,
|
|
"workbench_only_fixture": "ERR_UnconsciousCameraProbe adds accepted-cache getter and2assertions: stage1 nonempty actual RecoveryStatus containing treatment/natural-recovery branch equals accepted hint cache; stage4 awakening clears cache. No synthetic policy/timing change."
|
|
}
|