Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
56 lines
4.5 KiB
JSON
56 lines
4.5 KiB
JSON
{
|
|
"verdict": "no_demonstrated_new_defect",
|
|
"scope": "Bounded read-only review of account-scoped partial escape, reconnect handoff, all-incapacitated and all-dead defeat against current documented requirements. No speculative fix or repeated broad admission rewrite.",
|
|
"findings": [
|
|
{
|
|
"source": "ERR_ExtractionService.Tick / GameMode.ServerTick",
|
|
"evidence": "Extraction samples living original participant bodies in the exact helicopter, including unconscious and reserved disconnected bodies, freezes UUID results, resolves before subsequent defeat work, and ServerTick rechecks Active immediately afterwards. No demonstrated partial-escape versus defeat ordering error."
|
|
},
|
|
{
|
|
"source": "ERR_PlayerRoster.HasSurvivor / ERR_RecoveryService.Tick",
|
|
"evidence": "Reserved living bodies prevent all-dead defeat; only conscious reserved bodies count as potential rescuers. Incapacitated reserved bodies still require treatment/improvement/viable native recovery. Empty-server state resets the stalled timer; connected stalled teams retain the documented 30-second grace."
|
|
},
|
|
{
|
|
"source": "ERR_SpawnLogic.OnPlayerAuditSuccess_S / ObserveAfterLoss / OnPlayerDisconnected_S",
|
|
"evidence": "Audit binds account identity, republishes personal escape result, resolves native reconnection before new admission. Delayed loss checks exact controller, identity, and absence of a living controlled body; disconnect removes pending admission and connection binding while retaining the round account/life."
|
|
},
|
|
{
|
|
"source": "ERR_PlayerMedical.ERR_CanRecoverNaturally / docs/recovery.md",
|
|
"evidence": "Bleeding, absent/zero-rate regeneration and fully healed zones do not count as natural recovery; blood or permitted resilience regeneration can defer defeat through native delay. This agrees with the documented recovery rule."
|
|
}
|
|
],
|
|
"existing_coverage_read": [
|
|
"test_recovery_policy.py evaluates survivor/reservation classifications and 30-second/empty-server policy",
|
|
"test_progression_identity.py checks canonical actor restoration and preserves unconscious carried intel",
|
|
"test_escape_result_wording.py checks personal outcome and late refresh rather than stale transient end IDs",
|
|
"test_native_end_lifecycle.py exercises successor end cleanup while preserving native end data"
|
|
],
|
|
"limits": [
|
|
"No tests or compilers executed in this review.",
|
|
"No native launches, process inspection/manipulation, multiplayer/JIP/reconnect or manual-play qualification.",
|
|
"Existing acceptance ledger still marks remote and twelve-player scenarios unqualified; lack of native proof is not itself a demonstrated source defect."
|
|
],
|
|
"patch": null,
|
|
"regression_proposal": null,
|
|
"writes": [
|
|
"/tmp/erri-base-review-0558/lifecycle.json"
|
|
],
|
|
"source_sha256": {
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "89a29c03ba225acbbb9fa3c58a721aced91a77bc0c77046d697005a6d7c48bb9",
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b",
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "86f9a7769e3ccb19fc61127fe2fee2ad0dd825487a5cd59f334de8b9741c93cf",
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9",
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerMedical.c": "270454d50235bc28df9bba4fde2689934578874c4eca9560afb9f0f6324d7215",
|
|
"addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "47a39c951be71bfcf1cc50526d507d0f9d8ef2fc09408697b6fe6b0dc5a529e2",
|
|
"docs/player-lifecycle.md": "35fd066a50ddb2bcc78d4a448811e0763263cb0605161ccf43713b5e4a5f9cf0",
|
|
"docs/recovery.md": "026b513982530b8d65a6a1459e8707cd4abaf56450abc00f8449cf01fc660d0d",
|
|
"docs/acceptance.json": "b58e56be792c7ac2cb792a70e0b560989e59b1607fe9533f6f852e2171df9408",
|
|
"tests/test_recovery_policy.py": "adc4966ab92f0849d08636d93da5bd02b9162d1ad7369b325a1a357903abaa55",
|
|
"tests/test_progression_identity.py": "2fb3725aa735e00b20ba7a4ac45f8e087d4346c58a176bee091bab0a9755c1df",
|
|
"tests/test_escape_result_wording.py": "7b3613cccd4f24d3ef4665dfc1854cfc958a69018a59f9b8090617f0185a82a8",
|
|
"tests/test_native_end_lifecycle.py": "8b187723c9039e68e3e590c812c91dcffe1e5917d4e450ed798dc177888fda7a",
|
|
"tests/test_player_medical.py": "e4b3140a3afc0161db53f261e5480e51f1ca09f85657e25b0efb7dbba3336e3f",
|
|
"tests/test_spectator_recovery.py": "8bb59c51df003e24532ad9476af4c8ff3b7f4276dca25e8162b91eb77c7b67c2"
|
|
}
|
|
}
|