{ "scope": "Read-only current production release predicates; failure-time fixture diagnostic recommendation, no historical cause attribution.", "source_sha256": { "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "6ca333da6183c86d19f09d0ad2b4d789879ebad2cb43dbe7fd3eb06d6f4e5a53", "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "980d30964845600a261693cc5c5553e1472e8e54867bdc06133ff5c7b36c9128", "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "7e6d5b367f71539cdac1e5f406d650d7d06bfd26a3ce3404abfb0ac5d88d3411" }, "release_paths": { "ERR_ConvoyVehicle.Tick": "CrewValid false; existing Waypoint and now>=LegDeadline; Order false. Arrived sets Arrived without immediate individual Release; final task Stop later releases all.", "ERR_ConvoyTask.Stop": "Sets Reason and releases each original vehicle; capture, startup/admission failure, all-ended, and service Stop callers retain task reason.", "combat_resume": "Combat hold removal calls Order when not SupplyHeld; false releases unit." }, "crew_predicates": { "root": "Group and Entity present; ERR_Actors.Alive(Entity); group faction==mode.EnemyFaction.", "driver": "Original Driver CanFight, non-player and native GetVehicleIn tree includes original Entity.", "members": "Each original member Alive, non-player and ERR_Actors.Group(member)==original Group. No passenger-consciousness/seat requirement in CrewValid." }, "bounded_snapshot": [ "Once on failure: task Ready/Stopped/Reason, failing array index and unit.Index, original entity identity match, mode Active/current identity.", "Unit Released/Arrived/Registered, entity present+Alive, Group present+enemy faction, current CrewValid and Captured (only after safe null guards).", "Route presence/count/index, now/LegDeadline, own Waypoint/current native waypoint presence and equality, entity position and distance from frozen origin.", "Driver identity/presence/Alive/CanFight/Player/current Group, aboard entity and PartOf original tree.", "For original Members (cap19): index, identity, Alive, Player, Group equality. Optional native seat/CanFight useful context but label separately from release predicate.", "Current combat held/supply token+held/intercept token+active; these values may already be cleared by Release." ], "cautions": [ "Release clears own waypoint, combat/supply/intercept flags and unregisters group; their absence afterward cannot establish the trigger.", "Order can fail native waypoint spawn; a later null Waypoint is not evidence of that failure because Release also deletes it.", "Crew state can change after release; diagnostics are current-state evidence, not proof of earlier predicate.", "Do not invoke Order, Tick, Release or any action to obtain diagnostics. Keep one failure readout, bounded exact original arrays and <=6 PrintFormat arguments per line.", "Missing vehicle/actor/group must be null-guarded; SeatDiagnostic currently assumes group exists, so do not call it unguarded for loss." ], "tests_run": false, "native_run": false, "target_writes": false, "draft_review": { "result": "Scope and API approved; recommend splitting two7argument rows to<=6 and parent-planned task/route context.", "patch_sha256": "5198ebf6959db1f0354e656d57d24cd3245af8629cb2e520f5de78b47ec71e62", "source_sha256": "0156fb019a5e4d2741c1a6aba0bffeca71af4a57ae1308e62b2ae348c3e901d5", "notes": [ "All APIs already appear in production or same fixture. No new traversal beyond bounded original Members.", "New !vehicle failure guard prevents null record dereference at existing proof boundary.", "Earlier stopped-task branch reports task Reason without this per-vehicle helper; failure-time snapshot is not historical release tracing." ] } }