{"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"pvf-dispatch-lookup","priority":"P0","status":"current-stable-b69-b74-lookup-present-branch-ports-open","category":["network-security","performance"],"summary":"Current origin/master@0139a346, current B69 origin/claude/b69@8d465fce and adjacent B74 origin/claude/b74-aicom-spend@b23f557f already replace dispatch-time Call Compile with missionNamespace getVariable plus CODE checks in both maintained Chernarus and Vanilla dispatchers. This backlog item now means finishing explicit registered allowlist/rejection logging on current stable/B69/B74-shaped targets if targeted, and porting lookup plus allowlist to older compile-shaped refs; it does not close DR-55 sender authentication or direct publicVariable channels.","sourceRefs":["origin/master@0139a346 Chernarus/Vanilla Common/Init/Init_PublicVariables.sqf:55-56,60-61 value-only registration and no allowlist","origin/master@0139a346 Chernarus/Vanilla Server_HandlePVF.sqf:14-15 missionNamespace/CODE lookup","origin/master@0139a346 Chernarus/Vanilla Client_HandlePVF.sqf:32-33 missionNamespace/CODE lookup","origin/claude/b69@8d465fce Chernarus/Vanilla Init_PublicVariables.sqf:56,61; Server_HandlePVF.sqf:14-15; Client_HandlePVF.sqf:32-33","origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla Init_PublicVariables.sqf:56,61; Server_HandlePVF.sqf:14-15; Client_HandlePVF.sqf:32-33","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend is empty for checked generic PVF dispatcher/init paths","docs/source HEAD@a0721301d4f5 Chernarus/Vanilla Server_HandlePVF.sqf:14 and Client_HandlePVF.sqf:22 still Spawn (Call Compile _script)","older compile-shaped refs remain Miksuu b8389e74, origin/perf/quick-wins@0076040f and historical a96fdda2"],"evidence":["DR-1 arbitrary-code execution trust boundary: current stable/B69/B74 remove sender-chosen compile but still lack explicit registered-handler membership and DR-55 sender authentication.","DR-38 per-message recompile/performance note: current stable/B69/B74 namespace/CODE lookup removes the dispatch-time recompile in checked maintained roots.","No maintained-root dispatcher on current stable/B69/B74 still matched Call Compile _script; no WFBE_CL_PVF_ALLOWED, WFBE_SE_PVF_ALLOWED, PVF_ALLOWED, allowlist or rejected-unregistered symbol was found in checked dispatcher/init files.","Miksuu b8389e74, perf 0076040f and historical release commit a96fdda2 still use Spawn (Call Compile _script) in both maintained roots."],"implementationShape":["On current stable/B69/B74-shaped targets, keep missionNamespace getVariable _script and typeName CODE guards already present in both dispatchers.","Add explicit server/client registered-handler allowlists matching SRVFNC*/CLTFNC* names, and reject/log names outside those lists before Spawn.","On old-shape refs, port namespace lookup plus CODE guard and the explicit allowlist together.","Keep Spawn scheduling; do not switch to Call until handlers are audited for scheduled execution needs.","Do not describe this as full PV security; it validates handler names only and leaves DR-55/direct-PV work open."],"validation":["Every _serverCommandPV and _clientCommandPV entry resolves to CODE after Init_PublicVariables.sqf.","Valid RequestJoin or RequestVehicleLock still reaches the server handler.","Valid client-bound LocalizeMessage, HandleSpecial or SetVehicleLock still reaches the targeted client.","Forged unregistered handler names no-op and log one warning.","Forged registered handler with bad payload remains tracked under the specific handler authority lane, not as dispatch closure.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Hardening-Implementation-Roadmap","Performance-Opportunity-Sweep","Networking-And-Public-Variables","Deep-Review-Findings"],"owner":"future-code-owner","updated":"2026-06-22T23:22:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"icbm-requestspecial-authority","priority":"P0","status":"pr125-177ef1385f-source-hardened-runtime-pending","category":["network-authority","gameplay-security"],"summary":"ICBM RequestSpecial authority is source-hardened in PR #125 maintained Chernarus/Takistan through server-side requester/team/commander/funds/structure/unlock/duplicate validation; exact runtime accept/reject proof and older/modded propagation remain pending.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestSpecial.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/Nuke/nukeincoming.sqf"],"evidence":["DR-27 critical forged nuke finding","McClintock PV explorer 2026-06-02"],"implementationShape":["Re-derive side, team, commander authority, module enablement, upgrade state, cost and target/base object validity server-side.","Debit funds server-side or reject the request.","Reject wrong-side, non-commander, invalid target/base and missing-upgrade payloads with compact WARNING logs.","Keep client UI as affordance only."],"validation":["Valid commander launch still works.","Forged non-commander and wrong-side requests do not spawn NukeDammage.","Invalid, dead or out-of-range object payloads are rejected.","Accepted/rejected requests produce useful server logs."],"wikiRefs":["Hardening-Implementation-Roadmap","Networking-And-Public-Variables","Feature-Status-Register"],"owner":"future-code-owner","updated":"2026-07-02T09:50:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"attack-wave-authority","priority":"P1","status":"patch-ready-current-source-unpatched-current-b741-b742-unrescued","category":["network-authority","economy","support-systems","direct-publicvariable"],"summary":"Make ATTACK_WAVE_INIT server-authoritative and protect ATTACK_WAVE_DETAILS from forged direct payloads. Current-B74.2 refresh 2026-06-24 found no rescue in docs/source HEAD@426de4570993, current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, current B69 origin/claude/b69@8d465fce, adjacent B74 origin/claude/b74-aicom-spend@b23f557f, current Miksuu b8389e748243, perf/quick-wins 0076040f, historical release a96fdda2, historical AI commander c20ce153 or historical Miksuu AttackWave 994150da. B74.2 only line-drifts source-Chernarus buy-menu/constants context; request/detail trust remains unchanged.","sourceRefs":["docs/source HEAD@426de4570993 unchanged from a764d51107de, 6d263dc21093, 1c1ea55970dc and f3e157f2 for checked Chernarus/Vanilla attack-wave request/detail/client-price paths","docs/source Chernarus/Vanilla Client/FSM/updateclient.sqf:240; Common_AttackWaveActivate.sqf:6,8; Server_AttackWave.sqf:1,5-6,15,23,27,36,38; Server/PVFunctions/AttackWave.sqf:19,23-25,40; Client_UIFillListBuyUnits.sqf:60; GUI_Menu_BuyUnits.sqf:90,261","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da same maintained-root trust shape; action updateclient.sqf:260; buy-price consumers Client_UIFillListBuyUnits.sqf:90 and GUI_Menu_BuyUnits.sqf:99,244-245,416; Chernarus constants Init_CommonConstants.sqf:547,591-593; maintained Vanilla constants :349,393-395","origin/claude/b74.2-aicom@21b62b04fee3 same request/detail trust shape; source-Chernarus buy-price anchors GUI_Menu_BuyUnits.sqf:105,250-251,422 and Init_CommonConstants.sqf:604; maintained Vanilla stays stable-shaped at GUI_Menu_BuyUnits.sqf:99,244-245,416 and Init_CommonConstants.sqf:393","git diff --name-status origin/master..origin/claude/b74.2-aicom touches only source-Chernarus GUI_Menu_BuyUnits.sqf and Init_CommonConstants.sqf among checked attack-wave paths; git diff --name-status d472da6a..origin/claude/b74.2-aicom is empty for checked attack-wave paths","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 same maintained-root request/detail/client-price trust shape; B69 Chernarus constants Init_CommonConstants.sqf:515,559-561; B74 Chernarus constants :528,572-574 and maintained Vanilla constants :349,393-395","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f8a5e same maintained-root trust shape","historical release a96fdda2, historical AI-commander c20ce153 and historical upstream AttackWave 994150da same inherited trust shape; current origin exposes no live release/*, attack-wave or support rescue heads on 2026-06-24","BattlEyeFilter/publicvariable.txt:2 only filters kickAFK"],"evidence":["DR-41 confirmed by Claude 2026-06-02: client action gate is advisory only; Common_AttackWaveActivate.sqf sends [_supply,_side] over direct publicVariableServer; Server_AttackWave.sqf trusts both values.","Forged _supply >= 70000 with SUPPLY_MAX 50000 can drive ATTACK_WAVE_PRICE_MODIFIER to 0 or negative, making side-wide unit prices free or broken.","ATTACK_WAVE_INIT and ATTACK_WAVE_DETAILS are not protected by PVF dispatcher lookup, and the repo BattlEye publicvariable filter only carries kickAFK."],"implementationShape":["Treat ATTACK_WAVE_INIT as a request, not authoritative economic state.","Server re-derives available side supply and discount inputs from authoritative side state; never use client _supply for price math.","Validate requester side and commander/support permission before starting an attack wave.","Deduct intended side-supply cost server-side or reject the request.","Clamp computed price modifier and attack-wave duration to sane ranges.","Guard ATTACK_WAVE_DETAILS so arbitrary direct-PV detail payloads cannot set active state, modifier, duration or debit.","Document replay/JIP semantics after the authority fix.","Preserve current behavior by treating 25000 as the minimum gate and spending the server-derived current side supply, unless the owner explicitly approves fixed-cost attack waves."],"validation":["Legitimate attack wave still starts and publishes expected details.","Forged exaggerated _supply, including >=70000, cannot alter modifier, duration, length or cost.","Wrong-side or unauthorized requester cannot activate attack wave for another side.","Forged ATTACK_WAVE_DETAILS cannot set active flag, modifier, duration or side-supply debit.","Late joiner behavior remains unchanged or is explicitly documented."],"wikiRefs":["Attack-Wave-Authority-Playbook","Networking-And-Public-Variables","Hardening-Implementation-Roadmap","Server-Authority-Migration-Map","Economy-Towns-And-Supply","Feature-Status-Register","Source-Fix-Propagation-Queue","Deep-Review-Findings"],"owner":"future-code-owner","playbook":"Attack-Wave-Authority-Playbook.md","updated":"2026-06-24T22:30:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"victory-endgame-correctness","priority":"P1","status":"patch-ready-branch-split-current-b741-partial-chernarus-rescue","category":["match-correctness","stats","b741-branch"],"summary":"Fix victory condition precedence, explicit winner/loser semantics, branch-dependent winner logging/WASPSTAT/client payload behavior, maintained Vanilla drift and same-tick double-endgame behavior. Current stable/B74.1 Chernarus has the guard/short-circuit rescue, but still uses condition side _x for winner state/logging; maintained Vanilla server remains gated/mixed.","sourceRefs":["docs/source HEAD@4c87efd2 Chernarus/Vanilla old-shape Server/FSM/server_victory_threeway.sqf:11,23-24,31,35-41; Client_EndGame.sqf:5-13; GUI_EndOfGameStats.sqf:5-8","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus server_victory_threeway.sqf:11-16,23-26,39-45,53,57-65; Client_EndGame.sqf:5-11; GUI_EndOfGameStats.sqf:8-9","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 maintained Vanilla server_victory_threeway.sqf:11,29,37,41-49; Client_EndGame.sqf:5-11; GUI_EndOfGameStats.sqf:5-8","origin/claude/b74.2-aicom@d472da6a has no checked victory-path delta over current stable/B74.1","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus carry the same partial guard/client shape; maintained Vanilla remains gated/mixed","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep docs/source old-shape server/client paths in both maintained roots; historical a96fdda2 also keeps old-shape evidence"],"evidence":["DR-11 winner inversion remains branch-dependent: old opposite-side logger logs all-towns as loser; current stable/B74.1 direct _x logger logs HQ/factory elimination as loser.","DR-12 threeway/non-default mode remains unimplemented; current stable/B74.1 Chernarus removes the parameter trap only for standard detection and explicitly adds no new modes, while maintained Vanilla remains gated.","DR-13 duplicate LogGameEnd PVF copy remains stale where present and should stay separate from match-outcome semantics.","DR-36 root-cause review remains valid for docs/Miksuu/perf/historical and current stable/B74.1 Vanilla; current stable/B74.1 Chernarus adds a guard/short-circuit but still lacks explicit winner/loser computation and maintained-root propagation."],"implementationShape":["Compute explicit _winnerSide and _loserSide before broadcast, WF_Winner, WASPSTAT and LogGameEnd.","Parenthesize or split HQ-elimination and all-towns clauses, then guard combined result with !WFBE_GameOver.","Break/exit after the first winner is recorded and preserve that behavior in maintained Vanilla.","Choose and document client endgame payload semantics; current B74.1-shaped targets expect winner payload, old-shaped targets expect loser payload unless Client_EndGame is updated.","Add GUER label parity if resistance-side endgame paths are supported in maintained Vanilla.","Decide whether threeway victory modes should be implemented or disabled/hidden; do not call the Chernarus parameter-trap rescue a mode implementation.","Retire duplicate dead LogGameEnd PVFunctions copy if unused, separately from the outcome fix."],"validation":["Single-side HQ/factory elimination logs the opposite side as winner once and sends the client payload matching the chosen contract.","Same-tick double elimination does not double-broadcast or overwrite WF_Winner.","All-towns victory records and displays the capturing side.","Resistance/GUER label displays correctly in every maintained root if a resistance-side endgame path is supported.","Non-default victory modes are tested or explicitly disabled.","AntiStack enabled/disabled mission-end tails still run once."],"wikiRefs":["Victory-And-Endgame-Atlas","Deep-Review-Findings","Server-Gameplay-Runtime-Atlas","Hardening-Implementation-Roadmap","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-code-owner","playbook":"Victory-And-Endgame-Atlas.md","updated":"2026-06-23T15:45:19+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"economy-authority-design","priority":"P1","status":"planned","category":["economy","network-authority"],"summary":"Pick and implement a coherent server-side authority model for spend/effect paths instead of patching each exploit in isolation.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestStructure.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestDefense.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestUpgrade.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_ProcessUpgrade.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_ChangeSideSupply.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_BuildUnit.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_BuyUnits.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_EASA.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_Service.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/WASP/actions/Action_RepairMHQDepot.sqf"],"evidence":["DR-6, DR-14, DR-16, DR-22, DR-23, DR-28 and DR-40 economy/authority class","Hardening roadmap P1 economy authority class"],"implementationShape":["Choose a server ledger model before changing individual spend paths.","Server recomputes price, side, ownership, placement, reward and upgrade dependency instead of trusting payloads.","Client menus remain affordance and feedback layers only.","Add concise accepted/rejected transaction logs."],"validation":["Legitimate construction, defense, upgrade, buy, gear/EASA, service and WASP HQ recovery flows still work.","Forged wrong-side, wrong-price and impossible-position payloads are rejected.","Hosted and dedicated locality paths both get smoke coverage.","LoadoutManager propagation is run after source mission edits."],"wikiRefs":["Hardening-Implementation-Roadmap","Economy-Towns-And-Supply","Construction-And-CoIn-Systems-Atlas","Factory-And-Purchase-Systems-Atlas","Gear-Loadout-And-EASA-Atlas"],"owner":"future-code-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"supply-mission-authority-cleanup","priority":"P1","status":"docs-source-miksuu-perf-old-shape-current-b741-b742-supply-heli-shape-smoke-pending","category":["supply-missions","pr1-readiness"],"summary":"Supply mission authority cleanup remains open and branch-scoped. Repo docs branch HEAD@915f4441c1c9 (source unchanged from 15563691), current Miksuu b8389e748243 and perf/quick-wins 0076040f keep old-shape cooldown split and broad/dead-twin gaps; current stable/B74.1 origin/master@f8a76de34, current B74.2 21b62b04, B69 and adjacent B74 seed/read LastSupplyMissionRun with default 0, use heli-aware typed command-center scan and remove/comment the dead twin in both maintained roots. Arma smoke and server-owned authority hardening remain.","sourceRefs":["repo docs branch HEAD@915f4441c1c9 Chernarus/Vanilla checked supply paths unchanged from 15563691; supplyMissionStarted.sqf:25,28 typed Base_WarfareBUAVterminal truck scan","repo docs branch HEAD@915f4441c1c9 Chernarus/Vanilla Init_Town.sqf:35 seeds lastSupplyMissionRun while isSupplyMissionActiveInTown.sqf:8 reads LastSupplyMissionRun without default","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla Init_Town.sqf:35 seeds LastSupplyMissionRun and isSupplyMissionActiveInTown.sqf:8 reads it with default 0; supplyMissionStarted.sqf:7,15-17,55,61,83 carries heli-aware typed scan and guarded killed-handler setup","origin/claude/b74.2-aicom@21b62b04 keeps the same start/cooldown anchors in both roots; source Chernarus completion line-drifts SupplyByHeli read/clear to supplyMissionCompleted.sqf:29,50 and Vanilla remains :26,:44","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match current stable for checked supply start/cooldown/dead-twin behavior","Miksuu b8389e748243 and origin/perf/quick-wins@0076040f still keep the cooldown split, broad command-center scan and WFBE_SE_FNC_SupplyMissionActive compile","historical a96fdda2/7ff18c49 carry release-line fixed cooldown plus heli-aware typed scan evidence; current origin exposes no live release/supply/heli head on 2026-06-24"],"evidence":["DR-18 supply cooldown casing is still real on docs/source, Miksuu and perf old-shape targets.","Current stable/B74-shaped refs already fixed the cooldown key/default in both maintained roots.","Current stable/B74-shaped refs carry the supply-heli typed scan, guarded killed-handler setup and dead-twin retirement/comment shape in both maintained roots.","The nearby-player 8-meter scan intentionally remains broad; this lane is not reopening that design.","Arma smoke and server-owned authority hardening remain open for every target branch before release-complete wording."],"implementationShape":["Retire supplyMissionActive.sqf compile path if still unused on the target branch.","Standardize lastSupplyMissionRun/LastSupplyMissionRun casing only where the target branch still has the split, and keep getVariable default 0.","Server recomputes reward/source from trusted truck/town state where possible.","Add loaded/unloaded state and guard/remove vehicle Killed handlers.","Keep or port the typed command-center scan deliberately; do not reopen it on current stable/B74-shaped refs without runtime evidence.","Preserve pull-based cooldown request/response because it is the good JIP model."],"validation":["Truck mission works repeatedly and after vehicle reuse.","Supply heli load/deliver/destroy and Air 4 cash-run semantics behave as intended on supply-heli branches.","JIP cooldown query returns current state without racing stale local cache.","Starter disconnect does not orphan completion tracking.","Wrong-side command-center delivery and forged cargo values reject after server-owned authority work.","Pending smoke: supply truck/heli completion at command centers and no-completion near unrelated objects."],"wikiRefs":["Supply-Mission-Architecture","Current-Work-Supply-Helicopters-PR1","Hardening-Implementation-Roadmap","Supply-Mission-Authority-Cleanup-Playbook","Performance-Opportunity-Sweep","Supply-Mission-Scan-Narrowing"],"owner":"future-code-owner","playbook":"Supply-Mission-Authority-Cleanup-Playbook.md","updated":"2026-06-24T17:20:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"factory-queue-cleanups","priority":"P2","status":"patch-ready-not-patched","category":["factory","performance","client-ux"],"summary":"Factory queue counter leak and low-entropy random token are still present in current source; public queu broadcast reduction also remains.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_BuildUnit.sqf:167-168","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_BuildUnit.sqf:365","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_BuyUnits.sqf:145-155"],"evidence":["DR-33 factory queue Perf/JIP/HC review","Current source still assigns varQueu from random(10)+random(100)+random(1000).","Current empty-vehicle branch exits before the normal queue-counter decrement."],"implementationShape":["Add local queue-counter cleanup before the empty-vehicle exit.","Replace the FIFO token with a per-client unique or monotonic token.","Leave public building queu broadcasts unchanged in the first patch; reduce or redesign those only after UI consumer review.","Propagate generated Vanilla with LoadoutManager from a checkout that satisfies branch-specific root discovery after the source patch; current source/stable/Miksuu/perf need an a2waspwarfare ancestor, while release 7ff18c49 has marker-root support."],"validation":["Repeated crewless/empty vehicle buys do not soft-lock the buyer factory queue.","Concurrent buyers cannot collide at the front token.","Queue UI remains correct while broadcast reduction remains deferred.","LoadoutManager propagation inspected; Arma smoke covers source and generated target."],"wikiRefs":["Factory-Queue-Counter-Token-Cleanup","Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Performance-Opportunity-Sweep"],"owner":"future-code-owner","playbook":"Factory-Queue-Counter-Token-Cleanup.md"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"marker-support-cleanups","priority":"P2","status":"partial-paratrooper-propagated-smoke-pending-mash-routed","category":["markers","support-systems","abandoned-code"],"summary":"Paratrooper marker callback is registered in docs/source Chernarus and maintained Vanilla, current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, B69 origin/claude/b69@8d465fce and B74 origin/claude/b74-aicom-spend@b23f557f. Arma smoke, current Miksuu/perf/restored-release rechecks, WASP marker polling old-shape propagation, modded mission drift and branch-sensitive MASH marker/deploy cleanup remain follow-ups. Use mash-marker-current-b74-refresh-2026-06-23 for the active MASH handoff and wasp-marker-wait-current-b741-b742-refresh-2026-06-23 for the WASP marker wait branch matrix.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Init/Init_Client.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/MASH/receiverMASHmarker.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/MASH/MASHMarker.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Support/Support_Paratroopers.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_PublicVariables.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/WASP/global_marking_monitor.sqf","agent-hardening-backlog.jsonl#mash-marker-current-b74-refresh-2026-06-23"],"evidence":["DR-34 MASH marker dead feature is branch-sensitive after 2026-06-23 current-B74 refresh","DR-40 WASP busy-spin nit","McClintock PV explorer: HandleParatrooperMarkerCreation emitted but was not registered on older checked targets","Codex verification superseded 2026-06-06: maintained Vanilla propagation completed with A2WASP_SKIP_ZIP=1, but current source/stable/Miksuu/perf LoadoutManager root discovery still requires an a2waspwarfare ancestor; release 7ff18c49 has marker-root support.","Codex verification 2026-06-24: docs/source HEAD@7e88d609 registers HandleParatrooperMarkerCreation at Init_PublicVariables.sqf:39 in both maintained roots; current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, B69 8d465fce and B74 b23f557f register it at :38; checked 7e88d609..HEAD, origin/master..origin/claude/b74.2-aicom, d472da6a..21b62b04 and B69..B74 diffs are empty for paratrooper sender/handler/registration paths; historical a96fdda2/7ff18c49 register at :34 without a live release/* head; current Miksuu b8389e748243 keeps sender/handler but no checked maintained-root registration; perf/quick-wins@0076040f is Chernarus-only at :40.","Codex verification 2026-06-23: current stable/B74.1 origin/master@f8a76de34, B74.2 origin/claude/b74.2-aicom@21b62b04, B69 8d465fce, B74 b23f557f and origin/feat/client-fps@709258e7 carry sleep 0.1 inside WASP/global_marking_monitor.sqf:64 in both maintained roots; docs/source HEAD@c9df2a8b7264, Miksuu b8389e748243, perf 0076040f8a5e and historical a96fdda2 remain old-shape."],"implementationShape":["For MASH, follow the 2026-06-23 B74 row: old-shape targets need either dead receiver/server PVEH removal or a server-held marker list with unique names, delete resend and explicit JIP resend/pull; current-stable/current-B69/B74-shaped targets first need an explicit deploy-revival decision.","For paratroopers, docs/source Chernarus/Vanilla and current stable/B74.1/B74.2/B69/B74 maintained roots are aligned; run Arma 2 OA smoke and keep Miksuu/perf/restored-release status explicit.","For WASP marker monitor, replace sleepless display polling with throttled waitUntil style."],"validation":["MASH deployed tents either intentionally produce markers for current and late-joining clients or no dead code remains on the target branch.","Paratrooper marker creation no longer sends an unregistered client handler after target-branch source plus Vanilla propagation.","Map double-click name-prefix still works after throttling."],"wikiRefs":["Feature-Status-Register","Abandoned-Feature-Revival-Review","WASP-Overlay","Networking-And-Public-Variables","Hardening-Implementation-Roadmap","Paratrooper-Marker-Revival","Respawn-And-Death-Lifecycle-Atlas"],"owner":"future-code-owner","playbook":"Abandoned-Feature-Revival-Review.md","updated":"2026-06-24T09:25:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"battleye-hosting-hardening","priority":"P1","status":"planned-owner-question","category":["hosting","battleye","defense-in-depth"],"summary":"Document and, if desired, ship a real BattlEye/publicVariable posture; the repo currently only contains the AFK kick feature rule.","sourceRefs":["BattlEyeFilter/publicvariable.txt","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_PublicVariables.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions"],"evidence":["DR-30 campaign-wide BattlEye gap","McClintock PV explorer 2026-06-02"],"implementationShape":["Ask server owner whether production BEpath already has filters outside the repo.","If in-repo guidance is desired, design filters for registered WFBE_PVF_* and direct channels such as kickAFK, supply missions, day/night, HQ state, attack waves and AntiStack compensation.","Do not rely on BattlEye as the only fix for client-authoritative payload handlers."],"validation":["Owner confirms production BEpath posture or accepts repo hardening gap.","Filter design allows legitimate mission traffic while constraining obvious forged channels.","Docs explicitly distinguish server-side authority from defense-in-depth filters."],"wikiRefs":["External-Integrations","Feature-Status-Register","Networking-And-Public-Variables","Hardening-Implementation-Roadmap","Server-Authority-Migration-Map","Wiki-Quality-Audit"],"owner":"server-owner-plus-future-code-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"hc-static-defense-sync","priority":"P2","status":"confirmed-low-dr42","category":["headless-client","ai","partial-feature"],"summary":"Clarify or restore static-defense HC update-back behavior; delegated gunner creation exists but client bookkeeping send-back is commented, so the server does not record HC-created static-defense units.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_DelegateAIStaticDefence.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_DelegateTownAI.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleDefense.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_OperateTownDefensesUnits.sqf"],"evidence":["Kierkegaard AI/performance explorer 2026-06-02","Claude DR-42: Client_DelegateAIStaticDefence.sqf:28 comments update-delegation-static_defence; Client_DelegateTownAI.sqf:35 does report update-town-delegation"],"implementationShape":["Decide whether static-defense delegation needs a client/HC update-back path or is intentionally fire-and-forget.","If needed, implement and register a server handler for static-defense delegation updates, then record units for cleanup/accounting/re-delegation.","If not needed, remove or comment the stale send-back reference with a clear owner note."],"validation":["Static defenses spawned/delegated through HC remain counted and cleaned up correctly or are explicitly documented as one-way.","HC disconnect does not leave stale static-defense ownership assumptions.","Docs accurately describe static defense delegation as full, partial or intentionally fire-and-forget."],"wikiRefs":["AI-Headless-And-Performance","Feature-Status-Register","Deep-Review-Findings","Function-And-Module-Index"],"owner":"future-ai-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"server-fps-hosted-loop-sleep","priority":"P2","status":"docs-stable-b742-fpsnamed-historical-guarded-july-branch-missing-miksuu-perf-open-smoke-pending","category":["performance","hosted-server","branch-status"],"summary":"DR-19 hosted/listen busy-spin is fixed in docs/source Chernarus and maintained Vanilla with two guarded publishers. Repo docs branch HEAD@4a1bc13edde6 is source-unchanged from d0161083 / a27086cd for checked FPS paths. Current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, B69, B74, live feat/client-fps, live perf/asr-ai-server-fps and historical a96fdda2 use a different fixed shape: one guarded serverFpsGUI publisher and no redundant monitorServerFPS script in both maintained roots. No current release/* or origin/dev/july-update-hosted-server-fps-loop-fix head was found on 2026-06-24. Miksuu b8389e748243 and perf/quick-wins 0076040f still keep the old two unguarded publisher loops. Arma smoke remains pending.","sourceRefs":["repo docs branch HEAD@4a1bc13edde6 source-unchanged from d0161083 / a27086cd for checked hosted-FPS paths","repo docs branch Chernarus Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/GUI/serverFpsGUI.sqf:1-9","repo docs branch Chernarus Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/serverFPS/monitorServerFPS.sqf:1-7","repo docs branch Chernarus Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Init/Init_Server.sqf:578,595","repo docs branch maintained Vanilla Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/GUI/serverFpsGUI.sqf:1-9","repo docs branch maintained Vanilla Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Module/serverFPS/monitorServerFPS.sqf:1-7","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla Server/GUI/serverFpsGUI.sqf:4 guarded; SERVER_FPS_GUI publishes at :9-10; monitorServerFPS.sqf absent; Init_Server anchors Chernarus :950,:996-998 and Vanilla :937,:983-985","origin/claude/b74.2-aicom@21b62b04 keeps the same FPS contract; source Chernarus Init_Server.sqf line-drifts to :983,:1029-1031 while maintained Vanilla remains :937,:983-985","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match the stable/B74-shaped single-publisher route in both maintained roots","origin/feat/client-fps@709258e7 and origin/perf/asr-ai-server-fps@07609ef4 keep the single guarded serverFpsGUI publisher and absent maintained-root monitor path","historical a96fdda2 Chernarus/Vanilla Server/GUI/serverFpsGUI.sqf:4 guarded; Server/Init/Init_Server.sqf:579,595-597; monitorServerFPS.sqf absent","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f Chernarus/Vanilla keep old serverFpsGUI.sqf and monitorServerFPS.sqf while-loop shapes","release/* and origin/dev/july-update-hosted-server-fps-loop-fix missing on 2026-06-24; git ls-remote FPS branch patterns matched feat/client-fps and perf/asr-ai-server-fps"],"evidence":["Before the fix, both FPS publishers looped forever with sleep only inside if (isDedicated).","Docs/source Chernarus and maintained Vanilla have an early if (!isDedicated) exitWith {}; in each publisher and still publish SERVER_FPS_GUI plus WFBE_VAR_SERVER_FPS on dedicated servers.","Current stable/B74.1/B74.2/B69/B74, live client-fps, live ASR FPS and historical a96fdda2 have the fixed single-publisher shape: guarded serverFpsGUI plus documented removal/absence of the redundant monitor path in both maintained roots.","Historical a96fdda2 matches the stable/B74-shaped single-publisher runtime surface but is historical evidence because current origin exposes no live release/* head.","Miksuu b8389e748243 and perf/quick-wins 0076040f remain old-loop-shaped in checked maintained roots.","Source and Vanilla RHUD consume SERVER_FPS_GUI; WFBE_VAR_SERVER_FPS has only stale/modded consumers in repo search."],"implementationShape":["Create or restore the July hosted-FPS target branch before code work; do not document it as current until the ref exists.","On current stable/B74-shaped/FPS-named targets, preserve the single guarded SERVER_FPS_GUI publisher and absent monitorServerFPS script unless a compatibility owner chooses otherwise.","On docs/source or old-shape targets, keep the low-risk DR-19 fix: exit non-dedicated hosts before each while loop.","Do not consolidate SERVER_FPS_GUI and WFBE_VAR_SERVER_FPS until compatibility with stale/modded consumers is intentionally decided.","Keep LoadoutManager propagation for Vanilla Takistan after source edits."],"validation":["Source-only validation passed for docs/source: both source publisher scripts have one early non-dedicated exit, one loop, one sleep 8 and no inner dedicated branch.","Static branch validation passed for current stable/B74.1, current B74.2, B69, B74, live client-fps, live ASR FPS and historical a96fdda2: checked maintained roots use guarded serverFpsGUI and no maintained-root monitorServerFPS file.","Before release-ready claims, smoke the target branch shape in Chernarus and Vanilla; static branch parity is present but runtime evidence is still pending.","Pending smoke: dedicated server still publishes expected FPS variable or variables for the chosen branch shape; hosted/listen server no longer shows scheduled busy-spin."],"wikiRefs":["Hosted-Server-FPS-Loop-Sleep","Performance-Opportunity-Sweep","AI-Headless-And-Performance","Server-Gameplay-Runtime-Atlas","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-performance-owner","updated":"2026-06-24T12:25:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"source-version-sqf-build-gap","priority":"P3","status":"current-b74-refresh-required-generated-input","category":["tooling","generated-files","source-completeness"],"summary":"Fresh docs mirror checkout HEAD@ded20d3d has no present source Chernarus or maintained Vanilla Takistan version.sqf, and checked docs/source, current stable, B69, B74, current Miksuu and perf refs do not track live Chernarus/Vanilla version.sqf files. Generated version.sqf remains a required ignored boot input that must be verified before pack/test/release claims.","sourceRefs":["docs/source HEAD@ded20d3d .gitignore:1,23","origin/master@0139a346 .gitignore:1,23","origin/claude/b69@8d465fce .gitignore:1-5,25 and version.sqf.template","origin/claude/b74-aicom-spend@b23f557f .gitignore:1-5,25 and version.sqf.template","b8389e748243 .gitignore:1,23","origin/perf/quick-wins@0076040f .gitignore:1,23","description.ext:39 on docs/Miksuu/perf; :38 on stable/B69/B74","initJIPCompatible.sqf:4","Rsc/Header.hpp:5,9,21","Tools/LoadoutManager/Data/Terrains/BaseTerrain.cs:102,346-367 on docs/Miksuu/perf; :115,359-380 on stable/B69/B74","Tools/LoadoutManager/FileManagement/FileManager.cs:92-100"],"evidence":["2026-06-23 fresh checkout Test-Path returned false for Missions/[55-2hc]warfarev2_073v48co.chernarus/version.sqf and Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/version.sqf.","git ls-tree scans found no tracked live version.sqf rows for checked Chernarus/Vanilla roots across docs/source, current stable, B69, B74, current Miksuu and perf.","B69/B74 track only a Chernarus version.sqf.template reference; live generated source version.sqf remains ignored and maintained Vanilla has no template.","description.ext and initJIPCompatible include version.sqf, so clean checkouts and target mission roots need a generated file before preprocessing."],"implementationShape":["Do not rely on local ignored version.sqf files as tracked source completeness.","Do not treat B69/B74 version.sqf.template as satisfying the live generated-input gate.","Continue treating generated terrain version output as LoadoutManager-owned.","Add pre-pack/pre-test checks that every supported target mission root has the intended version.sqf."],"validation":["Clean checkout or release workspace generates/supplies version.sqf before preprocessing.","LoadoutManager generation still writes/updates terrain-specific version output as expected.","Every supported generated Vanilla and modded mission root is checked for version.sqf before release packaging."],"wikiRefs":["Mission-Config-Version-Include-Graph","Mission-Entrypoints-And-Lifecycle","Mission-Parameters-Localization-And-Generated-Build-Inputs","Content-Structure-And-Maps","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-tooling-owner","updated":"2026-06-23T09:37:20+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"init-server-duplicate-binds","priority":"P3","status":"docs-source-miksuu-open-current-stable-b69-b74-fixed-perf-split","category":["server-init","cleanup","maintainability","branch-status"],"summary":"De-duplicate live repeated Init_Server.sqf function binds only on old-shape targets; current stable/B69/B74 already keep one live bind per checked function in both maintained roots.","sourceRefs":["docs/source HEAD@d830379768 Chernarus/Vanilla Init_Server.sqf:64,89 LogGameEnd; :69,91 PlayerObjectsList; :83,93 AwardScorePlayer; :63,88 AFK; :65,90 server-FPS; :70,92 MASH","origin/master@0139a346 Chernarus/Vanilla Init_Server.sqf:81 LogGameEnd; :86 PlayerObjectsList; :99 AwardScorePlayer; commented AFK/FPS remnants :80,:82,:104,:105","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla Init_Server.sqf:83 LogGameEnd; :88 PlayerObjectsList; :101 AwardScorePlayer; commented AFK/FPS remnants :82,:84,:106,:107","current Miksuu b8389e748243 Chernarus/Vanilla keeps the docs/source old duplicate line shape","origin/perf/quick-wins@0076040f fixes Chernarus at Init_Server.sqf:64,:69,:83 with explanatory comment around :88, but maintained Vanilla remains old-shape at :64,:89 / :69,:91 / :83,:93","historical a96fdda2 Chernarus/Vanilla Init_Server.sqf:65 LogGameEnd; :70 PlayerObjectsList; :83 AwardScorePlayer; no live origin release/* head exposed on 2026-06-22"],"evidence":["DR-43b current-B69/B74 refresh: docs/source and Miksuu still have duplicate live binds for WFBE_CO_FNC_LogGameEnd, WFBE_SE_FNC_PlayerObjectsList and WFBE_SE_FNC_AwardScorePlayer in both maintained roots.","Current stable, current B69 and adjacent B74 preserve one live bind per checked function in both maintained roots; do not reopen them for the live duplicate-bind cleanup.","Perf/quick-wins is partial propagation: Chernarus fixed, maintained Vanilla old-shape.","Commented AFK/server-FPS/MASH remnants are cleanup artifacts and vary by branch; they should not be blindly re-enabled."],"implementationShape":["For docs/source, current Miksuu or perf Vanilla targets, remove one copy of each live duplicate bind when both point at the same file.","For current stable/B69/B74 targets, preserve the one-live-bind shape and limit this lane to deliberate comment/remnant cleanup if requested.","Keep or remove commented remnants intentionally; do not re-enable duplicate compile lines.","When changing LogGameEnd, coordinate with victory/endgame cleanup DR-13/DR-36."],"validation":["Server init still defines LogGameEnd, PlayerObjectsList and AwardScorePlayer once each on the target root.","No stale commented duplicate suggests a disabled feature should be re-enabled blindly.","Victory/endgame, supply player-object and score-award paths still compile and call the intended functions.","Maintained Vanilla parity is checked after any source patch."],"wikiRefs":["Server-Init-Bind-Cleanup","Feature-Status-Register","Deep-Review-Findings","Hardening-Implementation-Roadmap"],"owner":"future-server-init-owner","updated":"2026-06-22T22:11:49+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"town-ai-vehicle-despawn-safety","priority":"P2","status":"patch-ready-current-stable-b741-b742-chernarus-only-candidate","category":["town-ai","vehicle-safety","external-report-followup","branch-status","b742"],"summary":"Harden town-AI despawn so it cannot delete a vehicle containing a player passenger/crew member who is not the group leader. Docs/source HEAD@ce3cf871e1e7 remains old-shape unsafe at server_town_ai.sqf:214 in both maintained roots. Current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, B69 and adjacent B74 carry the crew-count guard only in source Chernarus (:325 / B74.2 :337); maintained Vanilla remains leader-only at :319. Checked d472da6a..21b62b04 is empty for server_town_ai.sqf in both maintained roots. Miksuu, perf, historical release and AI fleet remain old-shape unsafe.","sourceRefs":["docs/source HEAD@ce3cf871e1e7 Chernarus/Vanilla server_town_ai.sqf:30,161,179,214,219; checked paths unchanged from 2a4020586 and 3a9ba92e","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; Chernarus server_town_ai.sqf:41,242,261,312,325,331; maintained Vanilla :41,:242,:261,:309,:319,:325","origin/claude/b74.2-aicom@21b62b04fee3 Chernarus line-drifts to :43,:254,:273,:324,:337,:343; maintained Vanilla remains stable-shaped at :319; d472da6a..21b62b04 is empty for checked server_town_ai.sqf paths","origin/master..origin/claude/b74.2-aicom modifies source Chernarus server_town_ai.sqf only among checked DR-45 paths; no maintained Vanilla payload","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match current stable for checked DR-45 behavior; B69..B74 checked path delta is empty","Miksuu master@b8389e748243 Chernarus/Vanilla server_town_ai.sqf:28,140,159,195,201","origin/perf/quick-wins@0076040f Chernarus/Vanilla server_town_ai.sqf:30,166,184,219,224","historical a96fdda2 Chernarus/Vanilla server_town_ai.sqf:28,145,164,200,206","origin/feat/aicom-fleet-improvements@cc5090bed4ad Chernarus/Vanilla server_town_ai.sqf:28,152,171,207,213","origin/claude/upstream-town-defense-diag-sync@cde1f1fc merge-base be2bbd08; delegated cleanup/diagnostics branch, not DR-45 closure; checked server_town_ai.sqf semantics match current stable","current origin exposes no live release/* head on 2026-06-24; checked refs do not contain Server_CleanupExpiredTownDefenseAssets.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions/Common_CreateTownUnits.sqf:52-58","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleEmptyVehicle.sqf:20-30"],"evidence":["External PDF triage via Dewey 2026-06-02 identified passenger-safety edge as not fully promoted.","Einstein verifier 2026-06-02 confirmed server_town_ai.sqf deletes wfbe_active_vehicles when !(isPlayer leader group _x), without checking crew/cargo/turret occupants.","2026-06-24 Codex B74.2 current-head follow-up confirmed d472da6a..21b62b04 is empty for checked server_town_ai.sqf paths, current B74.2 still guards source Chernarus only and maintained Vanilla remains leader-only at :319.","origin/claude/upstream-town-defense-diag-sync@cde1f1fc is branch-only delegated cleanup/diagnostics evidence and does not close DR-45.","False-positive caveat: Server_HandleEmptyVehicle.sqf is a separate empty-vehicle safety net and is not the source of this bug.","Current checked refs do not contain Server_CleanupExpiredTownDefenseAssets.sqf; treat older 89ae9dad helper evidence as historical unless a target branch reintroduces the helper."],"implementationShape":["Guard town-AI vehicle deletion with a full player occupancy check across crew/cargo/turret occupants, not only isPlayer leader group.","Preserve cleanup of empty AI-only town vehicles and groups.","Consider logging only under WF_Debug if a vehicle survives despawn because a player is aboard.","Use Town-AI-Vehicle-Despawn-Safety.md for the source chain, behavior-preserving guard and validation checklist."],"validation":["Town AI despawn removes empty AI vehicles/groups as before.","Vehicles with any player crew/cargo/turret occupant survive despawn or transfer safely.","Maintained Vanilla carries the same guard as source Chernarus on the target branch.","No orphaned AI groups remain after the guard."],"wikiRefs":["Town-AI-Vehicle-Despawn-Safety","AI-Headless-And-Performance","Gameplay-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ai-owner","updated":"2026-06-24T04:06:08+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"commander-reassignment-call-shape","priority":"P1","status":"current-stable-b741-b742-b69-b74-partial-source-present-docs-source-old-shape","category":["commander","server-correctness","pvf","branch-status"],"summary":"Current stable/B74.1, current B74.2 origin/claude/b74.2-aicom@21b62b04, current B69 and adjacent B74 maintained roots already unpack Server_AssignNewCommander.sqf payloads correctly; docs/source and current stable/B74-shaped full modded forks still carry old-shape helper copies. Remaining reassignment hardening is one new-commander notification owner, row-value UI identity, requester validation and old-shape target/modded-fork cleanup.","sourceRefs":["docs/developer-wiki-index@60c35c0503de Chernarus/Vanilla Server_AssignNewCommander.sqf:3-4 old helper unpacking; unchanged from 337ed166 and b44aaaf8 for checked reassignment paths","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla Server_AssignNewCommander.sqf:4-5,10 fixed helper shape plus helper notification","origin/claude/b74.2-aicom@21b62b04fee3 has no checked reassignment-path delta over origin/master or previous B74.2 d472da6ae875 for RequestNewCommander.sqf, Server_AssignNewCommander.sqf or GUI_Commander_VoteMenu.sqf","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla Server_AssignNewCommander.sqf:4-5,10 match current stable/B74.1 helper shape","git diff --name-status 0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom, d472da6ae875..origin/claude/b74.2-aicom, origin/claude/b69..origin/claude/b74-aicom-spend, 0a1ccb4d..origin/claude/b74-aicom-spend and b8530477..origin/claude/b74-aicom-spend are empty for checked maintained reassignment paths","origin/claude/trello-vote-para-guards@92101abe changes only Server_VoteForCommander.sqf among commander vote/reassignment files and is branch-only tie-break context","b8389e748243 Miksuu, origin/perf/quick-wins@0076040f, historical a96fdda2 and historical c20ce153 all use fixed helper shape in both maintained roots","all checked maintained roots still keep RequestNewCommander.sqf:14 and Server_AssignNewCommander.sqf:9/10 new-commander-assigned senders","all checked maintained roots still keep GUI_Commander_VoteMenu.sqf:33 visible-name lookup with row values stored at :63 on B74-shaped refs","current stable/B74-shaped full modded Napf/Eden/Lingor Server_AssignNewCommander.sqf:3 remain old-shape"],"evidence":["2026-06-23 current-head follow-up found current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, current B69 origin/claude/b69@8d465fce and adjacent B74 origin/claude/b74-aicom-spend@b23f557f Chernarus and maintained Vanilla use _side = _this select 0 and _commander = _this select 1.","0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom, d472da6a..origin/claude/b74.2-aicom, B69..B74 and older-B69-to-B74 commander reassignment path deltas are empty for checked Chernarus/Vanilla maintained paths.","origin/claude/trello-vote-para-guards@92101abe changes only Server_VoteForCommander.sqf among commander vote/reassignment files and does not close reassignment helper/UI/notification risks.","Docs/source HEAD@60c35c05 is unchanged from 337ed166 and b44aaaf8 for checked reassignment paths and still carries _side = _this in both maintained roots.","Miksuu b8389e748243, origin/perf/quick-wins@0076040f, historical release a96fdda2 and historical AI-commander c20ce153 all keep the fixed helper shape in maintained roots.","RequestNewCommander.sqf:14 and Server_AssignNewCommander.sqf:10 both send new-commander-assigned on current stable/B74-shaped refs, so duplicate notifications are reachable.","GUI_Commander_VoteMenu.sqf still stores row values but resolves the chosen commander by visible leader-name text.","Current stable/B74-shaped full modded Napf/Eden/Lingor forks still carry the old _side = _this helper shape."],"implementationShape":["Do not reopen helper unpacking on current stable/current B69/B74 maintained roots.","Keep exactly one new-commander-assigned SendToClients path.","Switch GUI_Commander_VoteMenu.sqf to stored row value/team identity rather than visible name text.","Patch old-shape targets separately and only claim modded parity after a deliberate modded maintenance decision."],"validation":["Manual commander reassignment updates the intended side commander.","AI commander shutdown/reset applies to the intended side if relevant.","Clients receive exactly one reassignment message.","Duplicate/similar leader names or mid-dialog team changes still select the intended row/team.","Commander vote fallback remains functional."],"wikiRefs":["Commander-Reassignment-Call-Shape","Commander-Vote-And-Reassignment-Playbook","Feature-Status-Register","Public-Variable-Channel-Index","Server-Gameplay-Runtime-Atlas"],"owner":"future-commander-owner","playbook":"Commander-Reassignment-Call-Shape.md","updated":"2026-06-23T23:01:40+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"ui-idd-collision-repair","priority":"P1","status":"docs-miksuu-perf-dialog-open-title-open-everywhere-current-b742-refreshed","category":["ui","dialogs","resource-risk","generated-missions","release-branch","b74-branch"],"summary":"Assign or formally waive unique IDD values for target branches that still duplicate EASA/Economy dialogs and overlay/action title resources, then smoke UI flows. Repo docs branch HEAD@5990557155b0, current Miksuu b8389e748243 and perf 0076040f duplicate dialog IDD 23000; current stable/B74.1 f8a76de34, current B74.2 21b62b04, B69 8d465fce, B74 b23f557f and historical a96fdda2 split EASA to 24000 in both maintained roots. Title IDD 10200 remains duplicated everywhere checked.","sourceRefs":["repo docs branch HEAD@5990557155b0 Chernarus/Vanilla Rsc/Dialogs.hpp:3211 and :3289 duplicate 23000; checked Dialogs/Titles IDD paths unchanged from edbd341e and b5219d47","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da and origin/claude/b74.2-aicom@21b62b04fee3 Chernarus/Vanilla Rsc/Dialogs.hpp:2928 EASA 24000 and :3006 Economy 23000","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match the current stable/B74-shaped dialog split in both maintained roots","miksuu/master@b8389e748243 Chernarus/Vanilla Rsc/Dialogs.hpp:3267 and :3345 duplicate 23000","origin/perf/quick-wins@0076040f8a5e Chernarus/Vanilla Rsc/Dialogs.hpp:3267 and :3345 duplicate 23000","historical a96fdda28087 Chernarus/Vanilla Rsc/Dialogs.hpp:2864 EASA 24000 and :2942 Economy 23000","docs/Miksuu/perf Rsc/Titles.hpp:44-46 and :164-165 duplicate 10200; current stable/B74.1/B74.2/B69/B74/release line-drift to :44-46 and :168-169","No checked maintained root has findDisplay 23000, findDisplay 24000 or findDisplay 10200"],"evidence":["Avicenna read-only verifier 2026-06-02 confirmed RscMenu_EASA and RscMenu_Economy both use idd 23000 in then-current source, while RscOverlay and OptionsAvailable both use idd 10200.","Codex current-head branch check 2026-06-24 verified current stable/B74.1, current B74.2, B69, B74 and historical release split EASA/Economy dialog IDs in both maintained roots; docs/Miksuu/perf remain duplicated for dialog IDs, and all checked refs still duplicate title IDD 10200.","Mission source grep found no hard-coded findDisplay 23000, findDisplay 24000 or findDisplay 10200 caller in any checked maintained root, so current risk is maintenance/runtime ambiguity rather than guaranteed visible breakage."],"implementationShape":["Treat as target-branch parity cleanup or explicit waiver, not fresh discovery.","For docs/Miksuu/perf targets, preserve or port the stable/B74-shaped/B69/B74/release EASA 24000 / Economy 23000 split across maintained roots.","For every checked target, assign a distinct idd to either RscOverlay or OptionsAvailable, or record a deliberate title-ID waiver.","Re-run the no-findDisplay 23000/24000/10200 grep before and after patching; do not introduce hard-coded display-ID lookup assumptions.","Keep title IDD cleanup separate from OptionsAvailable/EndOfGameStats currentCutDisplay ownership cleanup unless the same UI owner explicitly claims both.","Propagate or manually sync maintained Vanilla after source changes."],"validation":["EASA opens/equips/returns as before.","Economy opens and renders income/sell/supply-truck controls.","RHUD/FPS HUD and action availability icons still appear.","Endgame stat bars still populate with RHUD/FPS toggled on and off.","No display lookup ambiguity remains for 23000, 24000 or 10200, or an explicit waiver documents why any duplicate IDs are tolerated."],"wikiRefs":["UI-Resource-Parity-Cleanup","UI-IDD-Collision-Repair","Client-UI-Systems-Atlas","Feature-Status-Register","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","playbook":"UI-IDD-Collision-Repair.md","updated":"2026-06-24T09:50:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"gear-template-profile-filter","priority":"P2","status":"branch-split-docs-source-and-old-refs-unpatched-current-stable-b741-b742-save-filter-fixed","category":["gear","ui","profile-persistence","correctness"],"summary":"Fix buy-gear profile-template save filtering where the target ref still references undefined _u_upgrade. Docs/source HEAD@1d4282eca8fd is source-unchanged from 72b5f0de98f9 and 43c3ba05 for checked template paths and still has the old save-filter shape in Chernarus and maintained Vanilla. Current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, B74.2 d472da6a, B69 8d465fce and adjacent B74 b23f557f fix the save-filter comparison in both maintained roots at Client_UI_Gear_SaveTemplateProfile.sqf:34,57,82. Miksuu b8389e74, perf 0076040f, historical release a96fdda2, historical EASA QoL a66d4691 and old upstream Gear_template_error 5b056013 keep or do not address the maintained profile persistence shape.","sourceRefs":["docs/source HEAD@1d4282eca8fd Chernarus/Vanilla Client_UI_Gear_SaveTemplateProfile.sqf:33,52,75 keeps undefined _u_upgrade checks; checked template paths unchanged from 72b5f0de98f9 and 43c3ba05","origin/master@f8a76de349da and origin/claude/b74.1-aicom@f8a76de349da Chernarus and maintained Vanilla Client_UI_Gear_SaveTemplateProfile.sqf:34,57,82 use (_get select 3) on both sides of the upgrade comparison","origin/claude/b74.2-aicom@d472da6ae875, origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable for checked SaveTemplateProfile paths","Miksuu b8389e74, origin/perf/quick-wins@0076040f, historical release a96fdda2 and historical EASA QoL a66d4691 keep old save-filter shape in both maintained roots","miksuu/Gear_template_error@5b056013 changes only source-Chernarus GUI_BuyGearMenu.sqf template-selection nil guard, keeps old Chernarus profile helper shape and has no maintained Vanilla template payload"],"evidence":["Old-shape SaveTemplateProfile sets _template_upgrade from template field 3, but all three item-upgrade checks use undefined _u_upgrade.","_u_upgrade is local to Client_UI_Gear_AddTemplate.sqf, where it computes max template upgrade and writes field 3.","The bug can produce undefined-variable RPT errors and makes profile save filtering untrustworthy on old-shape refs; current stable/B74-shaped refs already have the local task-44 comparison fix."],"implementationShape":["On docs/source or old-shape refs, replace _u_upgrade in SaveTemplateProfile with (_get select 3) > _upgrade_gear in weapon, magazine and backpack checks, or intentionally use _template_upgrade if owner wants template-max semantics.","On current stable/B74-shaped targets, do not reopen the save-filter comparison unless smoke finds a regression; profile-template work should focus on the Init_ProfileGear import guard/default and owner policy around creation/display gates.","Patch source Chernarus first, then propagate Vanilla with LoadoutManager from a correctly named checkout."],"validation":["SaveTemplateProfile has no live _u_upgrade comparison, except optional comments documenting the old shape.","Allowed current-upgrade templates persist after menu close/rejoin.","Locked templates above both barracks and gear levels are not saved and produce no undefined-variable RPT error on old-shape refs.","After upgrade unlocks, the same template can persist.","Visible template list still filters through Client_UI_Gear_FillTemplates.sqf."],"wikiRefs":["Gear-Template-Profile-Filter","Gear-Loadout-And-EASA-Atlas","Client-UI-Systems-Atlas","Feature-Status-Register"],"owner":"future-gear-ui-owner","playbook":"Gear-Template-Profile-Filter.md","updated":"2026-06-23T20:04:13+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"gear-profile-import-bounds","priority":"P2","status":"confirmed-current-stable-b741-b742-and-old-refs-unpatched","category":["gear","ui","profile-persistence","correctness","generated-propagation"],"summary":"Fix Init_ProfileGear.sqf profile-template load guard so six-field legacy rows cannot be accepted and then read at index 6 for backpack data. Docs/source HEAD@1d4282eca8fd, current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, B74.2 d472da6a, B69 8d465fce, adjacent B74 b23f557f, Miksuu b8389e74, perf 0076040f, historical release a96fdda2 and historical EASA QoL a66d4691 all keep the six-field guard/index-6 read in both maintained roots. Current stable/B74-shaped refs fixed only the SaveTemplateProfile _u_upgrade comparison, not this import-bound bug.","sourceRefs":["docs/source HEAD@1d4282eca8fd Chernarus/Vanilla Init_ProfileGear.sqf:17 accepts count _x >= 6 and :25 reads _x select 6; checked template paths unchanged from 72b5f0de98f9 and 43c3ba05","origin/master@f8a76de349da and origin/claude/b74.1-aicom@f8a76de349da Chernarus and maintained Vanilla Init_ProfileGear.sqf:17,25 keep same import guard/index read shape","origin/claude/b74.2-aicom@d472da6ae875, origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable for checked Init_ProfileGear paths","Miksuu b8389e74, origin/perf/quick-wins@0076040f, historical release a96fdda2 and historical EASA QoL a66d4691 keep same import shape in both maintained roots","miksuu/Gear_template_error@5b056013 changes only source-Chernarus GUI_BuyGearMenu.sqf template-selection nil guard, keeps old Chernarus profile helper shape and has no maintained Vanilla template payload"],"evidence":["Init_ProfileGear.sqf checks count _x >= 6 before selecting fields 0 through 6.","A six-field row has valid indexes 0..5, so _x select 6 is one past the row and can produce profile-import RPT noise or fail the import path.","Maintained Vanilla Takistan currently carries the same guard/select shape across checked refs."],"implementationShape":["Either change the guard to count _x >= 7 before reading backpack data, or preserve old six-field profile rows by normalizing them with an explicit empty backpack field before validation.","Patch source Chernarus first and propagate maintained Vanilla with LoadoutManager from a checkout that satisfies branch-specific root discovery.","Keep this paired with gear-template-profile-filter but do not combine it with gear authority redesign."],"validation":["Old six-field profile rows fail closed or load with an explicit empty backpack default without an out-of-range RPT error.","Current seven-field profile rows still load, recalculate price/upgrade and replace side templates when valid.","SaveTemplateProfile still writes the expected profile namespace key.","Vanilla generated target matches source after propagation."],"wikiRefs":["Gear-Template-Profile-Filter","Gear-Loadout-And-EASA-Atlas","Feature-Status-Register"],"owner":"future-gear-ui-owner","playbook":"Gear-Template-Profile-Filter.md#import-bounds-paired-fix","updated":"2026-06-23T20:04:13+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"vehicle-cargo-equip-loop-bounds","priority":"P2","status":"branch-split-current-stable-b741-b742-b69-b74-fixed-old-shape-targets-open-2026-06-23","category":["gear","vehicle-cargo","backpacks","correctness"],"summary":"Fix inclusive cargo-application loops in Common_EquipVehicle.sqf and Common_EquipBackpack.sqf where old-shape targets still carry them. Docs/source HEAD@ebfdca96542f, current Miksuu master@b8389e748243 and historical EASA QoL a66d4691 still carry all five inclusive loops in both maintained roots. Current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, visible B74.2 d472da6a, current B69, adjacent B74 and historical release a96fdda2 fix all five loops in both maintained roots. Perf/quick-wins@0076040f fixes Chernarus only while maintained Vanilla still needs propagation.","sourceRefs":["docs/source HEAD@ebfdca96542f Chernarus and maintained Vanilla Common_EquipVehicle.sqf:27,33,39 inclusive loops; checked cargo helper paths unchanged from b2544207","docs/source HEAD@ebfdca96542f Chernarus and maintained Vanilla Common_EquipBackpack.sqf:35,41 inclusive loops","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da and origin/claude/b74.2-aicom@d472da6ae875 Chernarus and maintained Vanilla same five cargo-application lines fixed with (count(_items) - 1)","origin/claude/b69@8d465fcede7f, origin/claude/b74-aicom-spend@b23f557fc912 and historical release commit a96fdda2 fix both maintained roots","current Miksuu master@b8389e748243 and historical EASA QoL a66d4691 keep inclusive loops in both maintained roots; local d9506078 is not current Miksuu upstream","origin/perf/quick-wins@0076040f fixes all five loops in Chernarus only while maintained Vanilla keeps inclusive loops","current origin exposes no live release/*, cargo or equip rescue head on 2026-06-23; live Trello gear/EASA branches have no checked cargo-helper delta"],"evidence":["Old-shape Common_EquipVehicle.sqf loops from index 0 through count(_items) for weapons, magazines and backpacks, one past the last valid array index.","Old-shape Common_EquipBackpack.sqf repeats the same inclusive loop pattern for backpack weapons and magazines.","Client_GetVehicleContent.sqf uses the correct count(_items)-1 collector pattern, so the confirmed bug is in application helpers, not cargo collection.","Current stable/B74-shaped refs should not be reopened for this five-loop defect; current Miksuu remains old-shape until the fix is ported or upstream changes."],"implementationShape":["For any target branch that still carries inclusive loops, change all five equip loops to count(_items)-1 in source Chernarus.","Optionally wrap each loop in if (count _items > 0) for clearer empty-array behavior.","Do not combine with gear authority redesign or profile-template filtering.","Propagate maintained Vanilla only for target branches whose Vanilla root still carries inclusive loops."],"validation":["Target source has no 'for _i from 0 to count(_items) do' loops in EquipVehicle/EquipBackpack.","Vehicle weapon, magazine and backpack cargo apply exact counts.","Unit backpack weapon and magazine contents apply exact counts.","Empty cargo groups do not produce RPT out-of-range errors.","Vanilla generated target matches source after propagation where that target was old-shape."],"wikiRefs":["Vehicle-Cargo-Equip-Loop-Bounds","Gear-Loadout-And-EASA-Atlas","Client-UI-Systems-Atlas","Feature-Status-Register"],"owner":"future-gear-ui-owner","playbook":"Vehicle-Cargo-Equip-Loop-Bounds.md","updated":"2026-06-23T19:27:34+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"resistance-supply-scaffold","priority":"P2","status":"documented-owner-decision-current-b741-b742-chernarus-candidate-refreshed","category":["economy","resistance","threeway"],"summary":"Resistance/GUER supply helpers are partially scaffolded. Current stable/B74.1/current B74.2 define WFBE_L_GUE owner logic and funds-only resistance reads in both maintained roots, but only Chernarus registers wfbe_supply_temp_resistance and floors west/resistance/east negatives to 0. Maintained Vanilla remains west/east-only old-shape, and side/channel/requester validation is still absent everywhere checked. Live origin/claude/faction-tint-sidefix@32acd272f92e removes the Chernarus resistance temp-channel handler if revived without rebase. Decide whether to keep resistance supply unsupported or implement true resistance economy on the target branch.","sourceRefs":["origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus mission.sqm:4995,4998 and Vanilla :4198,4201 define LocationLogicOwnerResistance / WFBE_L_GUE","origin/master Chernarus/Vanilla Common_GetSideSupply.sqf:36-40 returns funds-only 0 for resistance","origin/master Chernarus Server_ChangeSideSupply.sqf:25-45 registers wfbe_supply_temp_resistance and :12,36,60 floors negatives to 0","origin/master maintained Vanilla Server_ChangeSideSupply.sqf:1,25 remains west/east only and old-shape at :12,36","origin/claude/b74.2-aicom@21b62b04fee3 has no checked side-supply/resistance delta versus previous B74.2 d472da6ae875 or origin/master","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f carry the same Chernarus-only candidate with mission.sqm anchors :4928,:4931","origin/claude/faction-tint-sidefix@32acd272f92e diverges at merge-base d35d7c8fb774 and removes the Chernarus wfbe_supply_temp_resistance handler","docs/source HEAD@3bedb86dca88 and current Miksuu/perf/historical old-shape refs have no checked maintained-root WFBE_L_GUE owner logic or resistance temp handler"],"evidence":["Galileo read-only verifier 2026-06-02 confirmed Common helpers have GUER scaffolding while old-shape server ChangeSideSupply registers only west/east temp channels.","Current stable/B74.1/B74.2 now include owner/read scaffolding in both maintained roots but only Chernarus has the write-handler candidate.","The candidate still trusts payload _side and lacks channel/requester validation, so it is not a DR-44 authority closure.","Live faction-tint-sidefix is regression context, not rescue evidence."],"implementationShape":["If unsupported, document and guard/log resistance supply mutations.","If enabled, add wfbe_supply_temp_resistance, payload validation, side logic ownership and three-way economy smoke on every claimed maintained root.","If faction-tint-sidefix is revived, rebase or restore the resistance handler deliberately before economy claims.","Do not add WFBE_L_GUE casually without resource update validation."],"validation":["Unsupported mode produces no silent resistance supply mutation path.","Enabled mode applies resistance income/debits, clamps overspend and JIP clients see current supply.","West/east temp channels remain unchanged.","Maintained Vanilla propagation or explicit Chernarus-only branch scope is recorded."],"wikiRefs":["Resistance-Supply-Scaffold","Economy-Authority-First-Cut","Server-Authority-Migration-Map","Feature-Status-Register"],"owner":"project-owner-plus-future-economy-owner","playbook":"Resistance-Supply-Scaffold.md","updated":"2026-06-24T00:52:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"tooling-operator-checklist","priority":"P3","status":"docs-polish","category":["tooling","deployment","agent-ops"],"summary":"Add/maintain a one-glance operator checklist for LoadoutManager path shape, 7za packaging, DiscordBot config, Extension build assumptions and Extension-vs-AntiStack split.","sourceRefs":["Tools/LoadoutManager/FileManagement/FileManager.cs","Tools/LoadoutManager/ZipManager.cs","Tools/LoadoutManager/SqfFileGenerators/SqfFileGenerator.cs","DiscordBot/src/ProgramRuntime.cs","DiscordBot/preferences_sample.json","Extension/Extension.csproj","Extension/src/SerializationManager.cs","docs/wiki/Tools-And-Build-Workflow.md","docs/wiki/External-Integrations.md"],"evidence":["Dalton tooling/integration explorer 2026-06-02"],"implementationShape":["Keep this as docs/checklist unless user asks for code changes.","Call out that LoadoutManager searches for an ancestor folder literally named a2waspwarfare.","Call out that generation can succeed before packaging fails on missing 7za.","Call out token/preferences requirements and the production-style sample path/IDs.","Call out that in-repo Extension/GLOBALGAMESTATS is not the out-of-repo A2WaspDatabase AntiStack DLL."],"validation":["Tools/build page lets an operator predict the common local-run failures before running dotnet.","External integrations page distinguishes deployment dependencies from code projects.","No secrets or sensitive tokens are introduced into docs."],"wikiRefs":["Tools-And-Build-Workflow","External-Integrations","Agent-Context"],"owner":"future-docs-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"jip-postjoin-wait-timeouts","priority":"P3","status":"documented-needs-owner-decision","category":["lifecycle","jip","robustness"],"summary":"Make the timeout-less post-join client wait chain easy to find and decide whether to add defensive timeouts/logging later.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Init/Init_Client.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/initJIPCompatible.sqf","docs/wiki/Lifecycle-Wait-Chain.md"],"evidence":["DR-37 boot/lifecycle review found the normal JIP path broadly correct but post-join waits timeout-less.","Dewey PDF triage 2026-06-02 promoted the wait-chain warning as wiki polish.","Bernoulli wait-chain audit 2026-06-02 split retrying handshake gates from no-timeout replicated-variable waits and was added to Lifecycle-Wait-Chain.md."],"implementationShape":["Document each post-join wait condition, producer and timeout/retry state.","Treat this as robustness polish unless source proves a live missing producer.","If code changes are later requested, mirror the RequestJoin 30-second retry/log pattern for fragile synced-variable waits."],"validation":["Lifecycle page shows which waits can hang silently.","Normal JIP path remains described as working and source-backed.","Any future timeout patch logs enough context to identify missing producer variables."],"wikiRefs":["Lifecycle-Wait-Chain","Mission-Entrypoints-And-Lifecycle"],"owner":"future-lifecycle-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"ui-player-map-and-localization-debt","priority":"P3","status":"new-from-2026-06-02-ui-scout","category":["ui","ux","localization"],"summary":"Create a player-facing UI map and decide whether hardcoded help/labels should move toward stringtable-driven copy.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_Help.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_BuyGearMenu.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Rsc/Dialogs.hpp"],"evidence":["Avicenna UI explorer 2026-06-02: main menu graph, stale RscMenu_Upgrade, icon-heavy Buy Gear, hardcoded Help copy"],"implementationShape":["Document UI by player menu graph first: WF_Menu to Buy Units, Buy Gear, Team, Command, Tactical, Upgrade, Economy, Service and Help.","Keep stale RscMenu_Upgrade risk documented until removed.","If localization is desired, move hardcoded help and plain-English labels into stringtable in a separate content pass."],"validation":["Wiki UI path lets a new developer find each menu by player flow and dialog class.","No stale upgrade dialog is presented as live UI.","Localization/content pass preserves existing mission copy intent."],"wikiRefs":["Client-UI-Systems-Atlas","Client-UI-HUD-And-Menus","Feature-Status-Register"],"owner":"future-docs-or-ui-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","status":"current-target-clamp-shape-fixed-requester-ledger-open","validation":["Normal income/reward still increases side supply.","Normal spend decreases side supply.","Overspend floors at zero and cannot create a windfall.","Wrong-side temp-channel payload is rejected.","Resistance temp-channel side/amount validation is smoke-covered.","Requester/server-ledger patch rejects unauthorized spend/reward attempts once implemented.","Old-shape refs are rechecked before backport claims."],"summary":"Current target origin/claude/build84-cmdcon36@6f2fc4bd10c8339fd13be087d327717ff58c85e8 already fixes side-supply negative floor, basic temp-channel shape validation, resistance handler wiring and reason parsing in both maintained roots. Remaining hardening is requester/server-ledger authority: prove who may request each signed supply delta and move spend/reward acceptance server-side flow by flow. Older docs/source, Miksuu, perf and historical/pre-cmdcon refs retain branch-specific old-shape status until rechecked.","id":"side-supply-clamp-first","evidence":["DR-22/DR-49 old-shape _change < 0 became _currentSupply - _amount, so overspend could increase supply.","origin/claude/build84-cmdcon36@6f2fc4bd10c8339fd13be087d327717ff58c85e8 Chernarus and Vanilla Common_ChangeSideSupply.sqf:8-14 parses reason/stagnation correctly and :24-26 publishes [side, amount, reason].","origin/claude/build84-cmdcon36 Chernarus and Vanilla Server_ChangeSideSupply.sqf:9-33 validates payload array/count, side type, side-vs-channel and scalar amount.","origin/claude/build84-cmdcon36 Chernarus and Vanilla Server_ChangeSideSupply.sqf:37-41 floors negatives to 0 and caps positive values.","origin/claude/build84-cmdcon36 Chernarus and Vanilla Server_ChangeSideSupply.sqf:53-64 wires west/resistance/east handlers.","DR-44 requester/server-owned acceptance remains open because the direct temp-channel handler still lacks a trusted requester."],"category":["economy","network-authority","direct-publicvariable","correctness"],"sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions/Common_ChangeSideSupply.sqf:8-14,24-26 on origin/claude/build84-cmdcon36","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_ChangeSideSupply.sqf:1-64 on origin/claude/build84-cmdcon36","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Common/Functions/Common_ChangeSideSupply.sqf:8-14,24-26 on origin/claude/build84-cmdcon36","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Functions/Server_ChangeSideSupply.sqf:1-64 on origin/claude/build84-cmdcon36"],"implementationShape":["Do not reopen the current-target clamp, cap, reason or side/channel shape patch.","Add trusted requester or server-owned acceptance per supply spend/reward flow.","Preserve west/east/resistance side-channel rejection and malformed-payload warning logs.","Keep broader economy authority work separate from this first direct-channel ledger step."],"owner":"future-code-owner","wikiRefs":["Economy-Authority-First-Cut","Economy-Towns-And-Supply","Server-Authority-Migration-Map","Hardening-Implementation-Roadmap","Deep-Review-Findings"],"priority":"P0","updated":"2026-07-02T21:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"client-skill-init-idempotency-initial-finding-2026-06-02","priority":"P2","status":"superseded-by-propagated-branch-matrix-2026-06-22","category":["client-init","performance","gameplay-balance"],"summary":"Historical initial performance-sweep finding: the then-current client init duplicated Skill_Init and could compound WFBE_C_PLAYERS_AI_MAX for Soldier. Current docs/source, stable, B69/B74 and client-fps now carry the single-init shape in both maintained roots; current Miksuu/perf and historical feat-ai remain old-shape.","sourceRefs":["historical docs/source finding Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Init/Init_Client.sqf:547 and :571-572","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/Skill/Skill_Init.sqf:39-49","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_CommonConstants.sqf:249","Client-Skill-Init-Idempotency.md#branch-status"],"evidence":["Original evidence showed Skill_Init.sqf before default gear selection and again before WFBE_SK_FNC_Apply.","Skill_Init.sqf multiplies WFBE_C_PLAYERS_AI_MAX by 1.5 for Soldier without an applied guard or base-value reset, so duplicate init can make Soldier local cap 36 instead of a single-boost 24.","Superseded 2026-06-22 by active record client-skill-init-idempotency, which routes current branch status and remaining smoke."],"implementationShape":["For old-shape targets, compile/init skill globals once before default gear selection and keep the later WFBE_SK_FNC_Apply call without rerunning Skill_Init.","Alternative for future multiple-entrypoint designs: store WFBE_C_PLAYERS_AI_MAX_BASE or WFBE_SK_V_SoldierCapApplied and make the cap mutation idempotent."],"validation":["Soldier class sees the intended one-time AI cap.","Non-Soldier classes retain the configured AI cap.","Respawn still reapplies skill effects through Client_PreRespawnHandler.sqf."],"wikiRefs":["Client-Skill-Init-Idempotency","Performance-Opportunity-Sweep","Feature-Status-Register"],"owner":"future-client-init-owner","supersededBy":["client-skill-init-idempotency"],"updated":"2026-06-22T22:10:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"send-message-call-compile-rce","priority":"P0","status":"current-target-resolved-old-refs-backport","category":["security","rce","network-authority","direct-publicvariable"],"summary":"Current target origin/claude/build84-cmdcon36@6f2fc4bd10c8339fd13be087d327717ff58c85e8 no longer call-compiles SEND_MESSAGE network text in either maintained root. b3cb26fd5 (b765 bughunt) rewrote the receiver/helper to resolve structured [stringtableKey, formatArgs] payloads with localize + format. Old docs/source, Miksuu, perf and historical/pre-cmdcon refs may still carry DR-46 until rechecked or backported.","sourceRefs":["origin/claude/build84-cmdcon36@6f2fc4bd10c8339fd13be087d327717ff58c85e8","b3cb26fd5 b765 bughunt","Chernarus and Vanilla Client/Functions/Client_onEventHandler_SEND_MESSAGE.sqf:29-42 resolves data with localize + format","Chernarus and Vanilla Common/Functions/Common_SendMessage.sqf:5-8 documents structured payloads and :28-42 mirrors the no-compile helper path","Client/FSM/updateclient.sqf still registers SEND_MESSAGE as a direct channel, so it remains outside PVF dispatcher protections"],"evidence":["Current receiver/helper code treats multi-language payloads as data and never executes _messageText.","Malformed/forged non-array multi-language payloads render empty rather than executing code.","The channel remains direct, so forged-payload regression smoke is still required even though the RCE source patch is present.","Old-shape refs should use the historical DR-46 evidence until rechecked."],"implementationShape":["For current target, preserve the structured [stringtableKey, formatArgs] contract and no-compile behavior.","For old-shape refs only, backport the receiver/helper/caller structured localization rewrite.","Optionally add the SEND_MESSAGE channel to the BattlEye publicvariable.txt allowlist with a value-shape filter as defense in depth."],"validation":["A normal localized side message still displays correctly in all languages.","A SEND_MESSAGE payload containing SQF text is displayed/ignored as data, never executed.","Artillery and ICBM friendly/enemy messages still render."],"wikiRefs":["Deep-Review-Findings","Networking-And-Public-Variables","Public-Variable-Channel-Index","SQF-Code-Atlas","Hardening-Implementation-Roadmap","Feature-Status-Register","Source-Fix-Propagation-Queue","Pending-Owner-Decisions"],"owner":"future-code-owner","updated":"2026-07-02T21:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"client-skill-init-idempotency","priority":"P2","status":"propagated-smoke-pending-current-stable-b69-b74-clientfps-refreshed","category":["client-init","performance","gameplay-balance"],"summary":"Duplicate client Skill_Init call is removed from docs/source Chernarus and maintained Vanilla, current stable origin/master@0139a346, current B69/B74 and live origin/feat/client-fps. Arma smoke remains pending. Current Miksuu, perf/quick-wins and historical feat-ai still duplicate Skill_Init before apply.","sourceRefs":["docs/source@b2738971 Chernarus Client/Init/Init_Client.sqf:547 single Skill_Init and :571 WFBE_SK_FNC_Apply","docs/source@b2738971 maintained Vanilla Client/Init/Init_Client.sqf:547 single Skill_Init and :571 WFBE_SK_FNC_Apply","origin/master@0139a346 Chernarus/Vanilla Client/Init/Init_Client.sqf:624 single Skill_Init and :647 WFBE_SK_FNC_Apply","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla Client/Init/Init_Client.sqf:805 single Skill_Init and :828 WFBE_SK_FNC_Apply","origin/feat/client-fps@709258e7 Chernarus Client/Init/Init_Client.sqf:613 single Skill_Init and :636 WFBE_SK_FNC_Apply; Vanilla :583 and :606","historical release-line a96fdda2 Chernarus/Vanilla Client/Init/Init_Client.sqf:563/:586 and 7ff18c49 :564/:587; no live origin release/* head on 2026-06-22","miksuu/master@b8389e748243 Chernarus/Vanilla Client/Init/Init_Client.sqf:560 and :584 duplicate Skill_Init before :585 apply","origin/perf/quick-wins@0076040f and historical origin/feat/ai-commander@c20ce153 Chernarus/Vanilla Client/Init/Init_Client.sqf:561 and :585 duplicate Skill_Init before :586 apply","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/Skill/Skill_Init.sqf:10","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/Skill/Skill_Init.sqf:39-49","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_PreRespawnHandler.sqf:5"],"evidence":["Single-init branches run Skill_Init.sqf once before default gear selection, preserving WFBE_SK_V_Type for class gear.","The later Skill Module block calls WFBE_SK_FNC_Apply without rerunning Skill_Init.sqf on the single-init branches.","Skill_Init.sqf still compiles WFBE_SK_FNC_Apply and still applies the one-time Soldier 1.5x local AI-cap boost.","Client_PreRespawnHandler.sqf still calls WFBE_SK_FNC_Apply on respawn, so respawn reapply remains separate from init.","Current Miksuu/perf/historical feat-ai remain patch targets if those refs are promoted or merged."],"implementationShape":["Keep the current patch shape on single-init targets: single init before default gear selection plus direct WFBE_SK_FNC_Apply call before play.","If future code reintroduces additional Skill_Init entrypoints, add an explicit idempotency guard around the Soldier cap mutation.","Do not hand-edit modded mission folders until the generated/forked mission maintenance model is resolved."],"validation":["Docs/source, current stable/B69/B74 and client-fps checked roots contain exactly one Skill_Init.sqf call and one immediate WFBE_SK_FNC_Apply call.","Pending Arma smoke: Soldier class AI cap should be the one-time boosted value; non-Soldiers should keep configured cap; respawn should retain skill actions/effects.","Recheck or restore a release ref before release-ready wording; current release evidence is historical only."],"wikiRefs":["Client-Skill-Init-Idempotency","Performance-Opportunity-Sweep","Feature-Status-Register","Current-Source-Status-Snapshot"],"owner":"future-client-init-owner","updated":"2026-06-22T22:10:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"wasp-marker-wait-cleanup","priority":"P2","status":"branch-split-stable-b741-b742-b69-b74-clientfps-throttled-docs-miksuu-perf-open-smoke-pending","category":["performance","ui","wasp","branch-status"],"summary":"WASP map marker dialog display wait is branch-split after the 2026-06-23 current-B74.1/B74.2 refresh. Docs/source HEAD@c9df2a8b7264 is unchanged from 46840f048bd4 for checked WASP paths and still needs the tiny display-54 throttle in Chernarus and maintained Vanilla. Current stable/B74.1 origin/master@f8a76de34, B74.2 origin/claude/b74.2-aicom@21b62b04, B69 origin/claude/b69@8d465fce, B74 origin/claude/b74-aicom-spend@b23f557f and origin/feat/client-fps@709258e7 already add sleep 0.1 at global_marking_monitor.sqf:64 in both maintained roots. Current Miksuu b8389e748243, perf/quick-wins 0076040f8a5e and historical a96fdda2 remain old-shape. Current origin exposes no live release/*, WASP or marker rescue heads on 2026-06-23.","sourceRefs":["docs/source HEAD@c9df2a8b7264 is unchanged from 46840f048bd4 for checked WASP paths; Chernarus/Vanilla Client/Init/Init_Client.sqf:267; WASP/global_marking_monitor.sqf:57,62,64,68-69,80 old-shape","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla Client/Init/Init_Client.sqf:397; WASP/global_marking_monitor.sqf:57,62,64-65,69-70,74,81 with sleep 0.1 at :64","origin/claude/b74.2-aicom@21b62b04fee3 keeps the throttled helper in both maintained roots; source Chernarus launch drifts to Init_Client.sqf:403 while maintained Vanilla remains :397; checked B74.2 delta is unrelated vehicle-tint/join-ACK/intro-music work","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla Client/Init/Init_Client.sqf:397; WASP/global_marking_monitor.sqf:57,62,64-65,69-70,74,81 with sleep 0.1 at :64","origin/feat/client-fps@709258e7e6f8 Chernarus Client/Init/Init_Client.sqf:308 and Vanilla :287; WASP/global_marking_monitor.sqf:57,62,64-65,69-70,74,81 with sleep 0.1 at :64","Chernarus fix commit 4805c778876daee85af8b2a93a133e03f6b165b0; maintained Vanilla propagation commit 9b49883cb936269c8fae202e524f789ac0849490","Miksuu upstream master@b8389e748243 Chernarus/Vanilla Init_Client.sqf:278; global_marking_monitor.sqf:57,62,64,68-69,80 old-shape","origin/perf/quick-wins@0076040f8a5e Chernarus/Vanilla Init_Client.sqf:279; global_marking_monitor.sqf:57,62,64,68-69,80 old-shape","historical a96fdda28087336880f052ed716ffa3d46e53f24 Chernarus/Vanilla Init_Client.sqf:282; global_marking_monitor.sqf:57,62,64,68-69,80 old-shape","git ls-remote branch scan returned no live release/*, WASP or marker rescue head on 2026-06-23"],"evidence":["Old-shape targets poll display 54 in a sleepless while loop under disableUserInput for up to two seconds.","Current stable/B74.1, B74.2, B69, B74 and origin/feat/client-fps close the hot-loop part by adding sleep 0.1 before findDisplay 54 in both maintained roots.","B74.2 line-drifts source Chernarus Init_Client.sqf but does not change WASP/global_marking_monitor.sqf behavior.","The same file already uses waitUntil with sleep 0.1 for display 12 at global_marking_monitor.sqf:80 or :81 depending on ref.","WASP helper is client-local; HC/server behavior is unchanged."],"implementationShape":["On old-shape targets, add sleep 0.1 before findDisplay 54 or intentionally refactor to a throttled waitUntil shape.","Preserve final disableUserInput false and marker dialog keyUp/keyDown handler wiring.","Do not combine with broader WASP HQ recovery authority cleanup.","On stable/B74.1/B74.2/B69/B74/client-fps, do not reopen the one-line throttle; record marker-dialog smoke or optional style refactor only."],"validation":["The target ref Chernarus and maintained Vanilla helper either contain sleep 0.1 inside the display-54 wait or deliberately refactor to throttled waitUntil.","Pending smoke: Enter prefixing, empty marker text, Escape cleanup and timeout/no-dialog input re-enable.","Static stable/B74.1/B74.2/B69/B74/client-fps source parity is present; runtime marker-dialog smoke is still pending."],"wikiRefs":["WASP-Marker-Wait-Cleanup","Performance-Opportunity-Sweep","WASP-Overlay","Codebase-Coverage-Ledger","Current-Source-Status-Snapshot","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ui-owner","updated":"2026-06-23T20:36:39+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"service-menu-affordability-guards","priority":"P2","status":"branch-split-current-b69-b74-candidate-chernarus-only","category":["service-menu","gear","ui","correctness"],"summary":"Add local action-time affordability and usable-state guards to service menu rearm/refuel/repair/heal before debit/spawn. Docs/source HEAD@e9dd7f37 is unchanged from 8906ee89/9b3fc38e/8b71e2a1 and keeps the old direct service debit shape. Current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce and adjacent B74 origin/claude/b74-aicom-spend@b23f557f partially guard service rearm/refuel in action branches, but repair/heal still only check positive price. B69/B74 are unchanged for checked paths: exact-funds EASA is allowed only in Chernarus, while maintained Vanilla stays strict. Current Miksuu b8389e748243, perf 0076040f and historical EASA QoL a66d4691 keep the older direct service debit shape.","sourceRefs":["docs/developer-wiki-index HEAD@e9dd7f37d1f5 is unchanged from 8906ee89690c, 9b3fc38e and 8b71e2a1 for checked Chernarus/Vanilla GUI_Menu_Service.sqf and GUI_Menu_EASA.sqf paths","docs/source Chernarus/Vanilla GUI_Menu_Service.sqf:198 rearm debit and :219 refuel debit remain direct; repair/heal only check positive price at :208-209 and :229-230; GUI_Menu_EASA.sqf:47-49 uses strict _funds > price","origin/master@0139a346 Chernarus/Vanilla GUI_Menu_Service.sqf:421 and :448-455 recalculate/enable from current funds; rearm/refuel action branches guard funds >= price at :484-485 and :507-508; repair/heal still gate only positive price at :496-497 and :519-520; GUI_Menu_EASA.sqf:118-120 remains strict _funds > price","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f are unchanged for checked service/EASA paths; Chernarus GUI_Menu_EASA.sqf:118 uses _funds >= price, while maintained Vanilla GUI_Menu_EASA.sqf:118 remains strict _funds > price","git diff --name-status 80d3267c..origin/claude/b69, 0094647d..origin/claude/b69 and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked Chernarus/Vanilla GUI_Menu_Service.sqf and GUI_Menu_EASA.sqf paths","git diff --name-status origin/master..origin/claude/b74-aicom-spend changes only GUI_Menu_EASA.sqf in both maintained roots among checked service/EASA paths","current Miksuu upstream master@b8389e748243 verified by git ls-remote on 2026-06-22 keeps the old direct service debit shape in checked maintained roots at GUI_Menu_Service.sqf:326,337,347,358 and strict EASA at GUI_Menu_EASA.sqf:47-49","local/origin checkpoint origin/claude/a2a3-execute-nullguard@d9506078 matches the current-stable partial service shape with line drift and is not current Miksuu upstream evidence","origin/perf/quick-wins@0076040f and historical EASA QoL a66d4691 keep old direct service debit shape in checked maintained roots","historical release a96fdda2 guards service rearm/refuel in both maintained roots but leaves repair/heal positive-price-only and EASA strict at GUI_Menu_EASA.sqf:76-78"],"evidence":["Docs/current-Miksuu/perf/QoL old-shape service actions can still debit/spawn rearm or refuel without an action-time funds guard after menu enablement.","Current stable, current B69/B74 and local d9506078 improve service rearm/refuel action branches, but repair/heal still only check that the price is positive before client-side debit/spawn.","EASA exact-funds purchases are still rejected by strict _funds > price in docs, current stable, current Miksuu, perf, historical release, QoL refs and current B69/B74 maintained Vanilla; current B69/B74 Chernarus changes this to >= but is not maintained-root closure.","This is local UI correctness evidence, not server-authority closure; full requester/funds authority remains part of economy/server hardening."],"implementationShape":["For old-shape targets, add action-time current funds >= recalculated price guards to service rearm/refuel plus the same affordability/context treatment for repair/heal.","For current-stable/B69/B74-shaped targets, finish repair/heal action-time affordability/context guards and decide whether EASA exact-funds >= should be ported to both maintained roots.","Guard each debit/spawn with price > 0, current funds >= price and current usable service context; handle Man healing separately because _canBeUsed is only defined in the vehicle branch.","Do not present this as public-server hardening; full service authority remains part of the economy/server ledger decision.","Patch source Chernarus first, then propagate maintained Vanilla with LoadoutManager from a correctly discovered repo root."],"validation":["Affordable rearm/refuel/repair/heal still debit exactly once and spawn the proper support thread.","Unaffordable actions produce no debit and no support thread.","Airborne or too-fast vehicle actions produce no debit and no support thread.","Unneeded zero-price actions produce no debit and no support thread.","Exact-funds EASA behavior follows the chosen policy in both maintained roots.","No undefined-variable or stale-selection RPT errors appear in service/EASA menu smoke."],"wikiRefs":["Service-Menu-Affordability-Guards","Gear-Loadout-And-EASA-Atlas","Client-UI-Systems-Atlas","Feature-Status-Register","Server-Authority-Migration-Map"],"owner":"future-gear-ui-owner","playbook":"Service-Menu-Affordability-Guards.md","updated":"2026-06-22T23:52:10+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"source-fix-propagation-queue","priority":"P1","status":"propagated-smoke-pending-current-stable-supply-scan-refreshed","category":["tooling","generated-missions","release-readiness"],"summary":"Tracked docs/source fixes propagated to maintained Vanilla Takistan. Supply scan status was refreshed on 2026-06-22: docs/source 15563691 carries the truck-only typed command-center scan, current stable origin/master@0139a346 carries the heli-aware typed scan, current Miksuu b8389e74 and perf/quick-wins 0076040f remain old-shape, and release evidence a96fdda2/7ff18c49 is historical. Record Arma smoke before release-complete claims.","sourceRefs":["Tools/LoadoutManager/FileManagement/FileManager.cs:140-152","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_PublicVariables.sqf:39","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Common/Init/Init_PublicVariables.sqf:39-41","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Init/Init_Client.sqf:547,571","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Client/Init/Init_Client.sqf:547,571-572","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/GUI/serverFpsGUI.sqf:1","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/serverFPS/monitorServerFPS.sqf:1","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionStarted.sqf:25-28","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Module/supplyMission/supplyMissionStarted.sqf:25-28","HEAD/source FileManager.cs:145,150-152 requires dir.Name == \"a2waspwarfare\"","origin/master@2cdf5fb8 FileManager.cs:145,150-152 same ancestor-name search","miksuu/master@89ae9dad FileManager.cs:145,150-152 same ancestor-name search","origin/perf/quick-wins@0076040f FileManager.cs:145,150-152 same ancestor-name search","origin/release/2026-06-feature-bundle@7ff18c49 FileManager.cs:145,150-152 calls IsA2WaspWarfareRoot","origin/release/2026-06-feature-bundle@7ff18c49 FileManager.cs:165-176 accepts ancestor name or Missions/[55-2hc]warfarev2_073v48co.chernarus + Tools/LoadoutManager + AGENTS.md markers"],"evidence":["Source-Fix-Propagation-Queue.md now centralizes the propagated-smoke-pending fix queue.","LoadoutManager branch scope corrected 2026-06-06: current source/stable/Miksuu/perf require an a2waspwarfare ancestor; release 7ff18c49 has marker-root discovery. A2WASP_SKIP_ZIP=1 supports propagation-only runs.","Maintained Vanilla contains paratrooper registration, duplicate Skill_Init removal, hosted FPS loop exits and supply player-object indexing. Supply scan branch status is separate: docs/source 15563691 carries the truck-only typed scan, current stable origin/master@0139a346 carries the heli-aware typed scan, and current Miksuu/perf remain broad/post-filter old-shape."],"implementationShape":["Before running Tools/LoadoutManager/dotnet run, use a checkout path that satisfies the target branch root search: current source/stable/Miksuu/perf need an a2waspwarfare ancestor; release 7ff18c49 also accepts documented repo markers.","Treat missing 7za as packaging-only if generated/copy diffs are present.","Inspect Vanilla diffs for all source-only fixes and do not claim modded propagation.","Update Source-Fix-Propagation-Queue.md and machine records after propagation/smoke."],"validation":["Vanilla Init_PublicVariables includes HandleParatrooperMarkerCreation in the client PV list.","Vanilla Init_Client has one Skill_Init call and one WFBE_SK_FNC_Apply call in the skill module block.","Vanilla server FPS publisher scripts exit on !isDedicated before loops.","Docs/source Vanilla supplyMissionStarted uses the typed truck-only command-center scan at :28; current stable Vanilla uses the heli-aware typed scan at :55,61; current Miksuu/perf still broad-enumerate and post-filter. Name the target branch before claiming typed scan status.","Paratrooper, skill, FPS and supply mission smoke are recorded."],"wikiRefs":["Source-Fix-Propagation-Queue","Tools-And-Build-Workflow","Progress-Dashboard","Feature-Status-Register"],"owner":"future-release-owner","playbook":"Source-Fix-Propagation-Queue.md","updated":"2026-06-22T13:15:51+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"integration-trust-boundary-hardening","priority":"P1","status":"canonical-audit-published","category":["integrations","security","discordbot","extension","antistack","battleye"],"summary":"Harden integration trust boundaries in the right order: DiscordBot JSON intake first, then in-repo extension write robustness, AntiStack DB return/missing-DLL guards and owner-confirmed BattlEye posture.","sourceRefs":["DiscordBot/src/ExtensionData/GameData/GameData.cs:32-56","DiscordBot/src/GameStatusUpdater.cs:9-84","DiscordBot/src/CommandHandler.cs:49-52,127-130,211","Extension/src/ExtensionMethods.cs:10-35","Extension/src/BaseExtensionClass/Implementations/GLOBALGAMESTATS.cs:13-18","Extension/src/SerializationManager.cs:20-55,79-124","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/CallExtensions/GlobalGameStats.sqf:1-23","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabase*.sqf","BattlEyeFilter/publicvariable.txt:1-2"],"evidence":["DiscordBot LoadFromFile currently deserializes database.json with TypeNameHandling.All.","The in-repo a2waspwarfare_Extension active writer serializes with TypeNameHandling.None and the mission discards the callExtension return.","Extension dead/commented load scaffold includes TypeNameHandling.Auto.","AntiStack uses a separate absent A2WaspDatabase extension and SQF wrappers compile returned strings.","The repo BattlEye filter contains only //new and 5 \"kickAFK\"."],"implementationShape":["Change DiscordBot GameData.LoadFromFile to TypeNameHandling.None and fixture-test hostile $type metadata.","Make extension writes observable by replacing async void with a safe Task or synchronous fire-and-log path; keep type-name handling disabled.","Delete or safely rewrite the dead TypeNameHandling.Auto load scaffold before persistence revival.","Add AntiStack missing-DLL, timeout and return-shape guards; do not use Arma 3-only parser advice.","Treat BattlEye filters as defense-in-depth and require production BEpath evidence before claiming shipped hardening."],"validation":["DiscordBot reads normal database.json, ignores hostile $type metadata and falls back on missing/empty files.","Extension writes first-run and existing database files without hidden async failures.","AntiStack missing-DLL/slow-extension smoke does not destabilize server loops.","BattlEye/public-server claims cite actual deployed files beyond the AFK-only repo filter."],"wikiRefs":["Integration-Trust-Boundary-Audit","External-Integrations","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-integration-owner","playbook":"Integration-Trust-Boundary-Audit.md"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"antistack-db-wrapper-hardening","priority":"P1","status":"canonical-audit-published","category":["antistack","database-extension","server-runtime","team-balance"],"summary":"Harden AntiStack A2WaspDatabase enabled-mode return handling while preserving the existing disabled-mode guards and team-swap behavior.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Init/Init_Server.sqf:72-80,85-87,597-608","Missions/[55-2hc]warfarev2_073v48co.chernarus/Rsc/Parameters.hpp:546-552","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_CommonConstants.sqf:170-171","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestJoin.sqf:49-53,89","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_OnPlayerDisconnected.sqf:151-175","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/FSM/server_victory_threeway.sqf:51-84","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabaseRetrieve.sqf:30,39-51,62-63","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabaseRequestSideTotalSkill.sqf:33,44-56,66","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabaseStore.sqf:31-33","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabaseStoreSide.sqf:46-48","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabaseSendPlayerList.sqf:63-65","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabaseFlushPlayerList.sqf:24-26","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabaseSetMap.sqf:27-29"],"evidence":["WFBE_C_ANTISTACK_ENABLED defaults on and is also nil-fallbacked for older parameter sets.","Server init starts scheduled AntiStack loops only when enabled and records antistack_state when PerformanceAudit exists.","Disabled-mode guards already exist in loop scripts, wrappers, RequestJoin, disconnect and victory paths.","All seven DB wrappers still compile extension return strings in enabled mode and select assumed array indexes.","callDatabaseRequestSideTotalSkill timeout fallback returns [1,1] while callers expect a scalar team skill."],"implementationShape":["Create a small SQF response validator helper for A2WaspDatabase returns: non-empty string, expected array, expected count, scalar response code and safe fallback.","Replace wrapper-local raw call compile reads with the helper or a validated pattern.","Add a missionNamespace degraded/circuit-breaker flag after repeated malformed or timeout responses; log once per interval.","Preserve disabled-mode behavior: no scheduled loops, skill DB check skipped, team-swap protection still active, disconnect/victory DB persistence skipped.","Fix REQUEST_SIDE_SKILL timeout fallback to scalar 0 or make callers explicitly handle fallback arrays.","Do not use Arma 3-only parseSimpleArray advice."],"validation":["AntiStack disabled: loops do not start, first join skips skill DB check but team-swap protection works, disconnect/victory skip DB persistence cleanly.","AntiStack enabled with valid DB: first-join skill check, score sampling/storage, player-list flush and compensation still work.","Missing/malformed/slow DB: no raw compile crash, degraded log is clear, join skill check falls back safely and compensation math receives scalar values.","Match end with enabled AntiStack runs or degrades score store/flush before failMission END1."],"wikiRefs":["AntiStack-Database-Extension-Audit","Integration-Trust-Boundary-Audit","External-Integrations","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-antistack-owner","playbook":"AntiStack-Database-Extension-Audit.md"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"respawn-penalty-mode5-affordability","priority":"P2","status":"canonical-atlas-published-patch-ready","category":["respawn","gear","ui","correctness"],"summary":"Clarify or patch custom-gear respawn penalty mode 5 so base/HQ respawns do not lose custom gear merely because the player lacks funds when no charge should apply.","sourceRefs":["Respawn-And-Death-Lifecycle-Atlas.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_OnRespawnHandler.sqf:54-70","Missions/[55-2hc]warfarev2_073v48co.chernarus/Rsc/Parameters.hpp:436-440","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_CommonConstants.sqf:282"],"evidence":["Mode 5 is labelled charge-on-mobile in constants and mission parameter text.","Client_OnRespawnHandler sets _charge false for base/HQ structures, but still sets _skip true when _funds < _price.","This can force default gear on a no-charge base/HQ respawn when funds are below the theoretical custom gear price."],"implementationShape":["Confirm intended owner semantics for mode 5.","If charge-on-mobile only, set _skip only when _charge is true and funds are below price.","If affordability everywhere is intended, rename/document the mode and UI wording before changing behavior.","Patch source Chernarus first, then propagate Vanilla with LoadoutManager."],"validation":["Mode 5 base/HQ respawn with insufficient funds preserves custom gear when no charge applies, if that is owner-approved behavior.","Mode 5 mobile respawn with insufficient funds falls back to default gear or otherwise rejects custom gear according to chosen semantics.","Modes 0, 2, 3 and 4 keep current custom/default gear behavior.","Respawn action menu and skill actions still reapply after death."],"wikiRefs":["Respawn-And-Death-Lifecycle-Atlas","Gear-Loadout-And-EASA-Atlas","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-respawn-ui-owner","playbook":"Respawn-And-Death-Lifecycle-Atlas.md"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"upgrade-request-authority","priority":"P1","status":"canonical-atlas-published-patch-ready","category":["upgrades","economy","server-authority","network-authority"],"summary":"Move player upgrade acceptance/debit from client-owned GUI checks into a server-side RequestUpgrade authority wrapper while preserving the existing server completion worker and UI feedback.","sourceRefs":["Upgrades-And-Research-Atlas.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_UpgradeMenu.sqf:129-172","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestUpgrade.sqf:1-5","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_ProcessUpgrade.sqf:10-89","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Config/Core_Upgrades/Upgrades_*.sqf"],"evidence":["GUI_UpgradeMenu checks commander, funds, supply and dependencies locally and deducts resources before sending RequestUpgrade.","RequestUpgrade.sqf only spawns WFBE_SE_FNC_ProcessUpgrade.","Server_ProcessUpgrade trusts side, upgrade id and level from payload before indexing TIMES and mutating side logic.","AI commander upgrade path does server-side affordability/debit separately, proving the process worker can be called from a server-owned path."],"implementationShape":["Add requester/team context following existing PV patterns.","Validate side and requester commander/team on the server.","Read current side upgrades server-side and validate requested id/current level/max level/enabled state.","Recompute dependency, cost, funds and supply from server config.","Reject duplicate running upgrades and malformed payloads before indexing config arrays.","Debit funds/supply server-side only on accepted requests, then call WFBE_SE_FNC_ProcessUpgrade.","Convert client UI debit into request/accepted feedback without irreversible local-only spend."],"validation":["Valid commander upgrade starts and completes with existing upgrade-started/upgrade-complete feedback.","Non-commander, wrong-side, invalid id, invalid level, skipped dependency and insufficient funds/supply requests reject without state mutation.","Hosted and dedicated paths preserve upgrade-running UI state.","Side config validator reports array length/index drift before upgrade expansion."],"wikiRefs":["Upgrades-And-Research-Atlas","Server-Authority-Migration-Map","Economy-Authority-First-Cut","Feature-Status-Register"],"owner":"future-upgrade-authority-owner","playbook":"Upgrades-And-Research-Atlas.md"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"town-camp-capture-reward-authority","priority":"P2","status":"canonical-atlas-published-design-lane","category":["towns","camps","economy","server-authority"],"summary":"Move town/camp capture bounty and score eligibility from client PV handlers into a server-owned reward path while preserving server-owned town/camp side transitions and marker broadcasts.","sourceRefs":["Towns-Camps-And-Capture-Atlas.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/FSM/server_town.sqf:226-241","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/FSM/server_town_camp.sqf:122-138","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/TownCaptured.sqf:37-81","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/CampCaptured.sqf:19-40"],"evidence":["server_town.sqf sets town sideID and sends TownCaptured after server-owned capture.","server_town_camp.sqf sets camp sideID and sends CampCaptured after server-owned capture.","TownCaptured.sqf and CampCaptured.sqf award client funds locally and request score after receiving capture PVFs."],"implementationShape":["Do not change town/camp side transition ownership in the reward patch.","Add server-side reward eligibility based on capture event, side, nearest participating unit/team and distance thresholds.","Make reward idempotent per capture event to avoid replay/double-pay.","Replace client-local fund mutation with server-accepted reward or keep client PVF as UI-only notification.","Preserve marker color/title feedback and JIP-visible town/camp state."],"validation":["Valid nearby town capture pays expected player/commander rewards once.","Valid nearby camp capture pays expected reward once.","Distant, wrong-side, replayed or forged reward attempts do not change funds/score.","Town/camp marker color, SV reset and sideID transitions remain unchanged."],"wikiRefs":["Towns-Camps-And-Capture-Atlas","Server-Authority-Migration-Map","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-town-reward-authority-owner","playbook":"Towns-Camps-And-Capture-Atlas.md"} {"canonicalDocs":["Commander-HQ-Lifecycle-Atlas","Server-Authority-Migration-Map"],"owner":"future-commander-hq-owner","status":"design-lane","schema":"a2waspwarfare-agent-hardening-backlog-v1","problem":"Normal MHQ repair and WASP cash HQ recovery perform funds/side effects client-side and send side-only repair requests; WASP recovery also moves the wreck and resets town SV locally. Both client actions rely on client-local repair locks, while the server worker has no first-step duplicate-entry reject before creating the replacement HQ.","validation":["dedicated commander/HQ smoke","JIP after HQ destroyed","late allied marker visible and enemy marker hidden","valid repair accepted","wrong-side/alive-HQ/far-vehicle/insufficient-funds rejects","WASP cash recovery works once if owner keeps feature","two rapid normal repair requests produce one accepted HQ repair","concurrent normal and WASP cash repair requests cannot create two HQs"],"patchShape":"Split normal repair and WASP recovery if needed. Include requester/repair-vehicle or recovery context, validate side/commander/dead-HQ/range/funds/one-time flags server-side, take and publish a server-side repair mutex before replacement creation, keep server-owned debit and town-SV side effects, preserve HQ state broadcasts and allied-only wreck markers.","id":"commander-hq-repair-authority","sourceRefs":["Client/Action/Action_RepairMHQ.sqf:5-35","Client/Action/Action_RepairMHQ.sqf:8-9","Server/PVFunctions/RequestMHQRepair.sqf:1","Server/Functions/Server_MHQRepair.sqf:7-79","Server/Functions/Server_MHQRepair.sqf:23-57","WASP/actions/Action_RepairMHQDepot.sqf:7-29","WASP/actions/Action_RepairMHQDepot.sqf:10-11"],"priority":"P1","wikiRefs":["Commander-HQ-Lifecycle-Atlas","Server-Authority-Migration-Map"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"player-object-list-and-disconnect-cleanup","priority":"P1","status":"superseded-by-propagated-row","category":["lifecycle","jip","supply-mission","antistack"],"summary":"Older player-object-list indexing finding is superseded: source Chernarus and maintained Vanilla initialize the update index before the loop; remaining lifecycle work is disconnect pruning, delete-versus-relocate cleanup and smoke.","sourceRefs":["Player-Join-Disconnect-And-AntiStack-Lifecycle.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/playerObjectsList.sqf:18","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_OnPlayerDisconnected.sqf:102,122,128-129"],"evidence":["Superseded by player-object-list-and-disconnect-cleanup-2026-06-02-propagated.","Chernarus and maintained Vanilla initialize _i before the player-list forEach.","Disconnect still deletes _old_unit before later setPos and delayed cleanup can race fast reconnects."],"implementationShape":["Use the propagated row for current patch planning.","Do not re-open the fixed _i reset shape unless a branch reintroduces it.","Continue with disconnect pruning, delete-versus-relocate semantics and reconnect/supply smoke."],"validation":["Current source and maintained Vanilla line-shape check shows _i initialized before the player-list loop.","Reconnect/supply smoke remains pending under the propagated row."],"wikiRefs":["Player-Join-Disconnect-And-AntiStack-Lifecycle","Feature-Status-Register"],"owner":"future-lifecycle-owner","playbook":"Player-Join-Disconnect-And-AntiStack-Lifecycle.md","supersededBy":["player-object-list-and-disconnect-cleanup-2026-06-02-propagated"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"marker-cleanup-restoration-fixes","priority":"P2","status":"canonical-atlas-published-patch-ready","category":["markers","cleanup","server-runtime"],"summary":"Fix mine cleaner pair removal, align garbage trash flags and verify local/global marker deletion semantics.","sourceRefs":["Marker-Cleanup-Restoration-Systems-Atlas.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/FSM/cleaners/mines_cleaner.sqf:17","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/FSM/server_collector_garbage.sqf:17","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestOnUnitKilled.sqf:51-54","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_Delete_Marker.sqf:24-25"],"evidence":["Mine cleaner removes mines = mines - _x even though tracked entries are pairs.","Collector checks wfbe_trashable while kill path sets wfbe_trashed.","Client_Delete_Marker documents local markers but calls global deleteMarker."],"implementationShape":["Remove mine pairs with mines = mines - [_x] or filter the array.","Align collector skip flag with kill path trash flag.","Decide local vs global marker delete helper behavior and smoke side visibility."],"validation":["Expired mine entries are removed cleanly.","Killed objects are not double-trashed.","Side-local marker deletion does not remove unintended markers."],"wikiRefs":["Marker-Cleanup-Restoration-Systems-Atlas","Feature-Status-Register"],"owner":"future-marker-runtime-owner","playbook":"Marker-Cleanup-Restoration-Systems-Atlas.md"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"loadoutmanager-root-packaging-hardening","priority":"P1","status":"branch-scoped-doc-corrected-current-head-refreshed","category":["tooling","generated-missions","release-readiness"],"summary":"LoadoutManager root discovery evidence now uses current stable head context. Current origin/master/local master/Miksuu 89ae9dad and perf/quick-wins 0076040f still require an ancestor folder literally named a2waspwarfare in FileManager.cs:145-152; 2cdf5fb8..89ae9dad does not change the checked LoadoutManager root/zip files. Release 7ff18c49 switches to IsA2WaspWarfareRoot and accepts either that ancestor name or repo markers at FileManager.cs:158-176. A2WASP_SKIP_ZIP=1 remains the propagation-only packaging bypass, while release packaging still needs 7za.","sourceRefs":["origin/master@89ae9dad and local source HEAD@89ae9dad current stable source refs","historical origin/master@2cdf5fb8 same FileManager.cs root-discovery and ZipManager.cs packaging shape before stable advanced","2cdf5fb8..89ae9dad has no diff in checked Tools/LoadoutManager/FileManagement/FileManager.cs or Tools/LoadoutManager/ZipManager.cs files","current stable/Miksuu FileManager.cs:140-156 FindA2WaspWarfareDirectory climbs until dir.Name == \"a2waspwarfare\" and throws if absent","current stable/Miksuu ZipManager.cs:73-76 throws when 7za env var is missing during packaging","origin/perf/quick-wins@0076040f same FileManager.cs ancestor-name discovery shape","origin/release/2026-06-feature-bundle@7ff18c49 FileManager.cs:140-156 calls IsA2WaspWarfareRoot instead of direct dir.Name checks","origin/release/2026-06-feature-bundle@7ff18c49 FileManager.cs:158-176 accepts _directory.Name == \"a2waspwarfare\" or Missions/[55-2hc]warfarev2_073v48co.chernarus + Tools/LoadoutManager + AGENTS.md markers","origin/release/2026-06-feature-bundle@7ff18c49 ZipManager.cs:73-76 still requires 7za for packaging","Source-Fix-Propagation-Queue.md documents A2WASP_SKIP_ZIP=1 for propagation-only runs"],"evidence":["Current stable origin/master/local master/Miksuu 89ae9dad and perf/quick-wins 0076040f still keep FindA2WaspWarfareDirectory climbing until dir.Name == \"a2waspwarfare\" and throwing otherwise.","Release 7ff18c49 adds IsA2WaspWarfareRoot, accepting either the ancestor name or Missions/[55-2hc]warfarev2_073v48co.chernarus + Tools/LoadoutManager + AGENTS.md markers.","A2WASP_SKIP_ZIP=1 skips _MISSIONS.7z packaging for propagation-only runs; packaging still requires 7za.","version.sqf is still generated and included by mission files, so fresh-checkout boot/pack tests should run LoadoutManager or supply the generated file."],"implementationShape":["For current source/stable/Miksuu/perf, run LoadoutManager from a path under an a2waspwarfare ancestor or port the release marker-root helper first.","Use A2WASP_SKIP_ZIP=1 for propagation-only generation/copy runs when 7za is unavailable.","Release packaging still needs 7za configured and should inspect generated version.sqf output.","If marker-root discovery is desired on current source, port release 7ff18c49 IsA2WaspWarfareRoot deliberately and update this row after source verification."],"validation":["Current-source LoadoutManager root discovery succeeds from an a2waspwarfare-named ancestor path.","Release 7ff18c49 marker-root discovery succeeds from a normal repo-marker checkout if tested.","Generated mission copy can complete without 7za when A2WASP_SKIP_ZIP=1 is set.","Packaging still works when 7za is configured."],"wikiRefs":["Mission-Parameters-Localization-And-Generated-Build-Inputs","Tools-And-Build-Workflow","Source-Fix-Propagation-Queue"],"owner":"future-tooling-owner","playbook":"Mission-Parameters-Localization-And-Generated-Build-Inputs.md","updated":"2026-06-06T23:59:55+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"support-specials-requestspecial-validation","priority":"P1","status":"partial-pr125-177ef1385f-maintained-roots-hardened-runtime-pending-residual-tags-open","category":["supports","requestspecial","server-authority","modules"],"summary":"PR #125 177ef1385f source-hardens maintained Chernarus/Takistan player support/UAV, SCUD, GUER mortar, supply-truck respawn and camp repair with server-side requester/player/team/actor/object/funds/cooldown checks. Runtime accept/reject proof, residual RequestSpecial bookkeeping tags, construction/kill authority and modded propagation remain open.","sourceRefs":["Support-Specials-And-Tactical-Modules-Atlas.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestSpecial.sqf:1","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_Tactical.sqf:262-276","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_Tactical.sqf:371-373","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_Tactical.sqf:513-527","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/UAV/uav.sqf:27-52","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:43-64","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:147-170"],"evidence":["Tactical menu owns paratroops, para-ammo and para-vehicle fee/cooldown/upgrade gates locally, then sends side/destination/team over RequestSpecial.","The old UAV module creates and debits the UAV locally, then sends side/object/team over RequestSpecial for server monitoring/cleanup.","Server_HandleSpecial trusts payload tag families for support spawns, supply-truck forced respawn, UAV cleanup and camp repair side/object state.","ICBM is intentionally split into the P0 icbm-requestspecial-authority lane and ICBM-Authority-Playbook."],"implementationShape":["Add requester identity to support requests or derive it through a validated server-owned association before accepting effects.","Re-derive side, role/commander permission, upgrade state, fee/funds, cooldown, destination bounds and target/camp/supply-truck object ownership server-side per tag.","Debit funds or reject server-side after acceptance; keep client UI gates as affordance only.","Keep ICBM/Nuke validation through ICBM-Authority-Playbook, not this support-effects lane."],"validation":["Valid paratroops, para-ammo, para-vehicle, UAV, RespawnST and repair-camp flows still work.","Forged wrong-side, insufficient-funds, missing-upgrade, cooldown-bypass and invalid-position requests reject without effects.","Forged UAV object, supply-truck side and camp-logic payloads do not damage or recreate unrelated objects.","ICBM smoke remains owned by icbm-requestspecial-authority and is not claimed fixed by this lane."],"wikiRefs":["Support-Specials-And-Tactical-Modules-Atlas","Server-Authority-Migration-Map","Feature-Status-Register","Pending-Owner-Decisions","Supply-Mission-Authority-Cleanup-Playbook"],"owner":"future-support-modules-owner","playbook":"Support-Specials-And-Tactical-Modules-Atlas.md","updated":"2026-07-02T09:50:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"player-object-list-and-disconnect-cleanup","priority":"P1","status":"partial-propagated-smoke-pending","category":["lifecycle","jip","supply-mission","antistack"],"summary":"Supply player-object list indexing is patched in Chernarus source and maintained Vanilla, but reconnect/supply smoke is still pending; disconnect delete-versus-relocate and stale cleanup races remain patch-ready.","sourceRefs":["Player-Join-Disconnect-And-AntiStack-Lifecycle.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/playerObjectsList.sqf:17-29","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Module/supplyMission/playerObjectsList.sqf:17-29","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_OnPlayerDisconnected.sqf:102,122,128-129"],"evidence":["Chernarus source and maintained Vanilla initialize _i before the player-list forEach.","Disconnect still deletes _old_unit before later setPos.","Disconnect cleanup still sleeps before clearing team variables, which can race fast reconnects."],"implementationShape":["Keep the source/Vanilla indexing patch aligned through LoadoutManager on future mission edits.","Choose delete or relocate semantics for _old_unit and remove the contradictory operation.","Before clearing wfbe_uid/wfbe_teamleader, verify the team still matches the disconnecting UID/player."],"validation":["Reconnect updates the matching WFBE_SE_PLAYERLIST row instead of row 0.","Supply mission completion still identifies the nearby player object after reconnect/JIP.","Fast reconnect cannot lose new wfbe_uid/wfbe_teamleader state.","Disconnect RPT has no deleted-object setPos errors."],"wikiRefs":["Player-Join-Disconnect-And-AntiStack-Lifecycle","Source-Fix-Propagation-Queue","Feature-Status-Register"],"owner":"future-lifecycle-owner","playbook":"Player-Join-Disconnect-And-AntiStack-Lifecycle.md"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"source-fix-propagation-queue-2026-06-02-supersedes","priority":"P1","status":"branch-scoped-smoke-pending-supply-scan-current-stable-refreshed","category":["tooling","generated-missions","release-readiness"],"summary":"The tracked docs/source fixes propagated to maintained Vanilla Takistan after the LoadoutManager run, including the truck-only typed supply command-center scan on docs/source 15563691. 2026-06-22 refresh: current stable origin/master@0139a346 carries the heli-aware typed scan, current Miksuu b8389e74 and perf/quick-wins 0076040f remain broad/post-filter, and release-line a96fdda2/7ff18c49 evidence is historical because origin exposes no live release/* head. Arma smoke remains pending.","sourceRefs":["Source-Fix-Propagation-Queue.md","Tools/LoadoutManager/FileManagement/FileManager.cs","Tools/LoadoutManager/ZipManager.cs","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Common/Init/Init_PublicVariables.sqf:39","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Client/Init/Init_Client.sqf:547,571","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/GUI/serverFpsGUI.sqf:1","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Module/serverFPS/monitorServerFPS.sqf:1","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Module/supplyMission/supplyMissionStarted.sqf:25,28 docs/source truck-only typed command-center scan; current stable uses heli-aware typed scan at :55,61","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Module/supplyMission/playerObjectsList.sqf:17","historical release-line 7ff18c49 propagated-fix set present in both maintained release roots; no live origin release/* head exposed on 2026-06-22"],"evidence":["dotnet build Tools/LoadoutManager succeeded with existing nullable warnings.","A2WASP_SKIP_ZIP=1 run completed Chernarus and Takistan generation/copy and skipped packaging.","Generated docs/source Vanilla diffs carried the checked fixes; 2026-06-22 branch-scope recheck confirmed docs/source 15563691 carries the truck-only typed supply scan, current stable origin/master@0139a346 carries the heli-aware typed scan, and current Miksuu/perf still broad-enumerate and post-filter.","Later branch matrix recheck is superseded for supply scan status: current stable now carries the heli-aware typed scan, while current Miksuu/perf remain old-shape and release-line evidence is historical.","Commander ARTY correction 2026-06-06: historical release 7ff18c49 lacks the docs/source gunner handoff but carries WFBE_CommanderArtillery marker variables and Common_GetTeamArtillery marked-vehicle discovery in both maintained roots; then-current master 89ae9dad lacked both designs."],"implementationShape":["For future source fixes, patch Chernarus first, run LoadoutManager, inspect generated diffs, then record Arma smoke.","Use A2WASP_SKIP_ZIP=1 for propagation-only runs; release packaging still needs 7za.","Before release-ready or shipped claims, name the target branch and recheck Chernarus plus Vanilla line shapes."],"validation":["Pending Arma smoke: paratrooper marker, skill init behavior, hosted/dedicated FPS publishing, supply command-center completion, reconnect/supply player-object lookup and commander ARTY target-branch discovery path."],"wikiRefs":["Source-Fix-Propagation-Queue","Tools-And-Build-Workflow","Feature-Status-Register","Progress-Dashboard"],"owner":"future-release-owner","supersedes":["source-fix-propagation-queue","server-fps-hosted-loop-sleep","client-skill-init-idempotency","player-object-list-and-disconnect-cleanup","marker-support-cleanups","supply-mission-authority-cleanup"],"updated":"2026-06-22T13:15:51+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"supply-mission-lifecycle-authority-cleanup-wave-h","priority":"P1","status":"playbook-expanded-patch-ready","category":["supply-mission","server-authority","jip","lifecycle"],"summary":"Finish supply mission lifecycle hardening after the narrow source patches: retire dead twin, normalize cooldown key/defaults and response timing, prune WFBE_SE_PLAYERLIST on disconnect, and validate/recompute client-stamped truck vars server-side before rewards.","sourceRefs":["Supply-Mission-Authority-Cleanup-Playbook.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Init/Init_Server.sqf:81","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionActive.sqf:1-66","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionStarted.sqf:1,8,65","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionCompleted.sqf:9-12,27-28","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_Town.sqf:35","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/supplyMission/supplyMissionStart.sqf:6-11,20-35","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/playerObjectsList.sqf:11-35"],"evidence":["supplyMissionActive.sqf is only compiled and has no static caller; live handler self-registers in supplyMissionStarted.sqf.","Town init seeds lastSupplyMissionRun but server reads/writes LastSupplyMissionRun.","Client sends cooldown query then immediately reads local cache before response is guaranteed.","WFBE_SE_PLAYERLIST is updated by UID but never pruned on disconnect.","Completion reads SupplyAmount and SupplyFromTown from truck variables stamped during client start."],"implementationShape":["Remove or explicitly retire WFBE_SE_FNC_SupplyMissionActive compile binding.","Use one cooldown key with getVariable default and server-side accept/reject verdict before start.","Add UID-based WFBE_SE_PLAYERLIST cleanup on disconnect and null/stale row pruning before completion lookup.","Validate requester, side, source town, vehicle class, upgrade gate and amount server-side before reward."],"validation":["Dedicated/hosted two-client supply start and completion with no duplicate handlers.","JIP cooldown query cannot race stale client cache.","Disconnect/reconnect same UID replaces/removes stale player rows and cannot complete through old unit refs.","Tampered/stale SupplyFromTown or SupplyAmount does not change reward without valid active mission state."],"wikiRefs":["Supply-Mission-Authority-Cleanup-Playbook","Supply-Mission-Architecture","Testing-Debugging-And-Release-Workflow"],"owner":"future-supply-authority-owner","playbook":"Supply-Mission-Authority-Cleanup-Playbook.md"} {"id":"request-handler-authority-triage-wave-h","priority":"P1","area":"networking-pvf","status":"backlog","owner":"future-hardening-agent","dependsOn":["pvf-dispatch-allowlist"],"summary":"After PVF dispatch allowlisting, harden registered handlers by requester identity and server-derived state: score/kill rewards, join/side selection, commander vote/reassign, MHQ repair, base-area accounting, vehicle lock and RequestSpecial subcommands.","evidence":["docs/wiki/Networking-And-Public-Variables.md#residual-authority-risks-after-dispatch-hardening","docs/wiki/Server-Authority-Migration-Map.md"],"updated":"2026-06-02T15:47:00+02:00","wikiRefs":["Networking-And-Public-Variables","Server-Authority-Migration-Map"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"request-handler-authority-matrix-2026-06-02","priority":"P1","status":"matrix-published-patch-ready-after-pvf-dispatch","category":["networking-pvf","server-authority","registered-handlers"],"summary":"The registered server PVF post-dispatch hardening queue is now source-mapped: all 13 server-bound commands are classified by current behavior, authority status and first validation rule.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_PublicVariables.sqf:9-21,50-51","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestVehicleLock.sqf:6-8","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestChangeScore.sqf:7-13","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestStructure.sqf:8-21","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestDefense.sqf:2-10","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestUpgrade.sqf:5","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:6-168"],"evidence":["Server-Authority-Migration-Map#registered-server-pvf-handler-authority-matrix","Networking-And-Public-Variables#residual-authority-risks-after-dispatch-hardening"],"implementationShape":["Patch PVF dispatch lookup first.","Then migrate high-impact registered handlers by class: RequestSpecial/ICBM, score mutation, construction/defense, upgrades, commander/MHQ, vehicle/team controls and lower-risk UI toggles.","For RequestSpecial, split tag families instead of rewriting the router in one branch."],"validation":["Each migrated handler has valid-flow smoke and forged/wrong-side/malformed payload rejection.","RequestJoin keeps team-swap protection and AntiStack-disabled behavior.","RequestSpecial ICBM rejects forged launch before support/router cleanup is claimed."],"wikiRefs":["Server-Authority-Migration-Map","Networking-And-Public-Variables","Public-Variable-Channel-Index","Feature-Status-Register"],"owner":"future-network-authority-owner","supersedes":["request-handler-authority-triage-wave-h"],"updated":"2026-06-02T19:00:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"client-pvf-runtime-jip-smoke-matrix-2026-06-02","priority":"P2","status":"matrix-published-smoke-planning","category":["networking-pvf","client-runtime","jip","ui","economy-effects"],"summary":"The registered client-bound PVF runtime matrix is source-mapped; future smoke/hardening should separate visual event-only handlers from local money/score effects and routers.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_PublicVariables.sqf:25-40,45-46","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/TownCaptured.sqf:23-80","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/CampCaptured.sqf:22-40","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/HandleSpecial.sqf:9-37","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/LocalizeMessage.sqf:49,53,67","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/HandleParatrooperMarkerCreation.sqf:9-45"],"evidence":["Networking-And-Public-Variables#registered-client-pvf-runtime-matrix"],"implementationShape":["For JIP work, add durable replay or pull state rather than assuming old client PV events replay.","For economy work, move capture/bounty/localized money effects behind server-owned reward decisions.","For UI revival, smoke SetTask and HandleSpecial tag behavior per feature."],"validation":["Late joiner sees current markers/HUD/attack-wave state through durable refresh or explicit re-send.","Capture/camp reward migration cannot be replayed by stale client events.","Paratrooper marker, SetTask and attack-wave display have feature-specific smoke records before release claims."],"wikiRefs":["Networking-And-Public-Variables","Public-Variable-Channel-Index","Client-UI-Systems-Atlas","Feature-Status-Register"],"owner":"future-client-runtime-owner","updated":"2026-06-02T19:25:00+02:00"} {"id":"hq-kill-forwarding-schema-validation","priority":"P1","area":"commander-hq","status":"backlog","owner":"future-hardening-agent","dependsOn":["request-handler-authority-triage-wave-h"],"summary":"Preserve legitimate mobile-HQ killed locality forwarding through RequestSpecial while validating payload shape, object identity and side before calling Server_OnHQKilled.","evidence":["Client/PVFunctions/HandleSpecial.sqf:34","Server/Functions/Server_HandleSpecial.sqf:114-116","Server/Functions/Server_MHQRepair.sqf:37-43"],"updated":"2026-06-02T15:47:00+02:00","wikiRefs":["Commander-HQ-Lifecycle-Atlas","Server-HandleSpecial-Request-Router-Reference","Server-Authority-Migration-Map"]} {"id":"score-funds-supply-authority-boundary","priority":"P1","area":"economy-authority","status":"backlog","owner":"future-economy-hardening-agent","dependsOn":["side-supply-clamp-first","pvf-dispatch-allowlist"],"summary":"Move score/funds/supply mutation toward server-derived award/read patterns: harden RequestChangeScore, document/replace replicated funds mutation helpers and validate side-supply temp-channel payloads before applying keyed wfbe_supply_%1 changes.","evidence":["docs/wiki/Economy-Authority-First-Cut.md","Server/PVFunctions/RequestChangeScore.sqf:3-13","Common/Functions/Common_ChangeTeamFunds.sqf:1-8","Common/Functions/Common_ChangeSideSupply.sqf:28-30","Server/Functions/Server_PV_RequestSupplyValue.sqf:1-8"],"updated":"2026-06-02T16:15:00+02:00","wikiRefs":["Economy-Authority-First-Cut","Server-Authority-Migration-Map","Public-Variable-Channel-Index"]} {"id":"antistack-launch-connect-disconnect-persistence","priority":"P1","area":"antistack-lifecycle","status":"backlog","owner":"future-lifecycle-hardening-agent","dependsOn":["antistack-db-wrapper-validation"],"summary":"Validate launch-connect client-pushed player objects before storing launch side, check/retry disconnect DB persistence, and replace stale allUnits/fallback snapshots with confirmed UID session records where practical.","evidence":["docs/wiki/AntiStack-Database-Extension-Audit.md","docs/wiki/Player-Join-Disconnect-And-AntiStack-Lifecycle.md","Server/Module/AntiStack/clientHasConnectedAtLaunch.sqf:1-15","Server/Functions/Server_OnPlayerDisconnected.sqf:151-176","Server/Module/AntiStack/flushLoop.sqf:25-45"],"updated":"2026-06-02T16:15:00+02:00","wikiRefs":["AntiStack-Database-Extension-Audit","Player-Join-Disconnect-And-AntiStack-Lifecycle"]} {"id":"commander-percent-sell-authority","priority":"P1","area":"commander-economy","status":"backlog","owner":"future-commander-authority-agent","dependsOn":["economy-ledger-design"],"summary":"Move commander income percent and structure sell/refund acceptance server-side with current-commander, side, range, class, refund and clamp validation before expanding commander economy/comeback controls.","evidence":["docs/wiki/Commander-HQ-Lifecycle-Atlas.md","Client/GUI/GUI_Menu_Economy.sqf:24-27,74-79,104-150","Server/FSM/updateresources.sqf:36-43"],"updated":"2026-06-02T16:15:00+02:00","wikiRefs":["Commander-HQ-Lifecycle-Atlas","Economy-Authority-First-Cut","Construction-And-CoIn-Systems-Atlas"]} {"id":"mash-hq-marker-cleanup-wave-i","priority":"P2","area":"respawn-markers-hq","status":"backlog","owner":"future-marker-lifecycle-agent","dependsOn":[],"summary":"Keep local MASH respawn separate from dead MASH marker sync; if revived, implement server-held/JIP-safe marker registry. Verify HQ marker deletion/locality and delete stale wreck markers when tracked objects become null; resistance HQ marker state remains unsupported.","evidence":["docs/wiki/Respawn-And-Death-Lifecycle-Atlas.md","docs/wiki/Commander-HQ-Lifecycle-Atlas.md","docs/wiki/Marker-Cleanup-Restoration-Systems-Atlas.md","Client/Init/Init_Client.sqf:132","Client/Functions/Client_Delete_Marker.sqf:24-25","Common/Functions/Common_UpdateMarker.sqf:25"],"updated":"2026-06-02T16:15:00+02:00","wikiRefs":["Respawn-And-Death-Lifecycle-Atlas","Commander-HQ-Lifecycle-Atlas","Marker-Cleanup-Restoration-Systems-Atlas"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"player-object-list-and-disconnect-cleanup-2026-06-02-propagated","priority":"P1","status":"partial-propagated-smoke-pending","category":["lifecycle","jip","supply-mission","antistack"],"summary":"Supply player-object row replacement indexing is present in source Chernarus and maintained Vanilla Takistan; reconnect/supply smoke is pending and stale disconnect row pruning remains patch-ready.","sourceRefs":["Player-Join-Disconnect-And-AntiStack-Lifecycle.md","Source-Fix-Propagation-Queue.md","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/playerObjectsList.sqf:17-29","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Module/supplyMission/playerObjectsList.sqf:17-29","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_OnPlayerDisconnected.sqf:102,122,128-129"],"evidence":["Chernarus and maintained Vanilla initialize _i before the player-list forEach.","Server_OnPlayerDisconnected still does not prune WFBE_SE_PLAYERLIST rows.","Disconnect still contains delete-then-setPos and delayed team-variable clearing risks."],"implementationShape":["Smoke the propagated index fix with same-UID reconnect and supply completion lookup.","Add UID-based disconnect pruning for WFBE_SE_PLAYERLIST.","Ignore or repair null/dead object rows before completion lookup.","Resolve delete-versus-relocate semantics for _old_unit."],"validation":["Reconnect updates the matching WFBE_SE_PLAYERLIST row instead of row 0.","Supply completion identifies the correct nearby player object after reconnect/JIP.","Disconnect RPT has no deleted-object setPos errors."],"wikiRefs":["Player-Join-Disconnect-And-AntiStack-Lifecycle","Supply-Mission-Architecture","Source-Fix-Propagation-Queue","Testing-Debugging-And-Release-Workflow"],"owner":"future-lifecycle-owner","supersedes":["player-object-list-and-disconnect-cleanup"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"construction-smallsite-logic-list-cleanup","priority":"P2","status":"patch-ready-source-unpatched-current-b742-head-refreshed","category":["construction","correctness","propagation","smoke-pending","branch-status"],"summary":"Align SmallSite construction logic cleanup with MediumSite by removing _nearLogic from wfbe_structures_logic after completion instead of appending it again. Current 2026-06-24 B74.2 head refresh: docs/source HEAD@7a7d8c48021f is unchanged from d81580cfbe61, 7562c803, 6b8eba5e and 3406ffa0 for checked construction paths; current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, Miksuu b8389e748243, perf 0076040f, historical a96fdda2, current B69 8d465fce and adjacent B74 b23f557f all keep SmallSite add/add at :70,99 while MediumSite removes at :70,114 in both maintained roots. Checked d472da6a..21b62b04 is empty for the four maintained-root SmallSite/MediumSite files.","sourceRefs":["Construction-Logic-List-Cleanup.md","docs/source HEAD@7a7d8c48021f Chernarus/Vanilla Construction_SmallSite.sqf:70,99 and Construction_MediumSite.sqf:70,114; checked paths unchanged from d81580cfbe61, 7562c803, 6b8eba5e and 3406ffa0","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da for checked logic-list lines; both maintained roots keep SmallSite add/add at :70,99 and MediumSite add/remove at :70,114","origin/claude/b74.2-aicom@21b62b04fee3 keeps the same logic-list lines in both maintained roots; d472da6a..21b62b04 is empty for the four checked construction files","origin/master..origin/claude/b74.2-aicom only adds source-Chernarus SmallSite/MediumSite structure-built stats attribution among checked construction paths and has no maintained Vanilla construction payload","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla Construction_SmallSite.sqf:70,99 and Construction_MediumSite.sqf:70,114; B69..B74 construction deltas are empty","Miksuu master@b8389e748243, origin/perf/quick-wins@0076040f and historical a96fdda28087 keep the same SmallSite add/add and MediumSite add/remove logic-list lines in both maintained roots","docs/source HEAD@7a7d8c48021f is unchanged from d81580cfbe61 for checked construction paths; d81580cfbe61..HEAD checked construction deltas are empty","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleBuildingRepair.sqf:77-81"],"evidence":["SmallSite add/add contradicts its cleanup comment.","MediumSite add/remove is the sibling pattern.","No source initializer for wfbe_structures_logic was found in the server init path, so runtime impact remains smoke-pending.","2026-06-24 current-B74.2-head refresh confirmed current B74.2 does not rescue the logic-list lines; d472da6a..21b62b04 is empty for the four maintained-root SmallSite/MediumSite files."],"implementationShape":["Patch source Chernarus Construction_SmallSite.sqf post-completion line from append to remove.","Only add nil-safe list guards if runtime proves they are needed.","Propagate maintained Vanilla through Tools/LoadoutManager with A2WASP_SKIP_ZIP=1.","Do not mix with DR-6 construction request authority hardening."],"validation":["Build one small and one medium structure on hosted or dedicated runtime.","Confirm small completion does not leave duplicate completed construction logic.","Confirm structure markers/init and JIP visibility still work.","If building repair is live or revived, confirm repair logic cleanup still removes entries."],"wikiRefs":["Construction-Logic-List-Cleanup","Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Testing-Debugging-And-Release-Workflow"],"owner":"future-construction-owner","updated":"2026-06-24T01:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"ui-rhud-endgame-currentcutdisplay-collision","priority":"P1","status":"patch-ready-source-unpatched-all-checked-refs-current-b742-head-refreshed","category":["ui","rhud","endgame","title-resource","propagation","smoke-pending","b741","b742"],"summary":"OptionsAvailable/RHUD/action icons and EndOfGameStats share uiNamespace currentCutDisplay in docs/source HEAD@aeef97665, current stable/B74.1 f8a76de34, current B74.2 21b62b04, B69 8d465fce, B74 b23f557f, current Miksuu b8389e748243, perf 0076040f and historical a96fdda2 across both maintained roots. The current-head delta d472da6a..21b62b04 is empty for checked title-handle paths, so endgame stats and RHUD/action display recovery can still point at or clear each other's title display handle.","sourceRefs":["UI-IDD-Collision-Repair.md","Client-UI-Systems-Atlas.md","docs/source HEAD@aeef976650d3 Chernarus/Vanilla Rsc/Titles.hpp:170-171,539-540; checked title-handle paths unchanged from 92b52e73 and ebfdca965","docs/source HEAD@aeef976650d3 Chernarus/Vanilla Client/Client_UpdateRHUD.sqf:89-92,190","docs/source HEAD@aeef976650d3 Chernarus/Vanilla Client/FSM/updateavailableactions.fsm:225-230","docs/source HEAD@aeef976650d3 Chernarus/Vanilla Client/GUI/GUI_EndOfGameStats.sqf:13,34-44,86-93 plus Client/GUI/GUI_SetCurrentCutDisplay.sqf:1 and GUI_ClearCurrentCutDisplay.sqf:1","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da and origin/claude/b74.2-aicom@21b62b04fee3 Chernarus/Vanilla Rsc/Titles.hpp:174-175,587-588; Client_UpdateRHUD.sqf:89-92; updateavailableactions.fsm:225-230","current stable/B74.1/B74.2 source Chernarus GUI_EndOfGameStats.sqf:15,36-46,88-95; maintained Vanilla :13,34-44,86-93","d472da6a..21b62b04 is empty for checked title-handle paths; origin/master..origin/claude/b74.2-aicom changes only source-Chernarus Client_UpdateRHUD.sqf pop-tier AI-cap text among checked files","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable for checked title-handle paths; B69..B74 title-handle delta is empty","historical a96fdda28087 Chernarus/Vanilla Rsc/Titles.hpp:174-175,587-588 and Client_UpdateRHUD.sqf:89-92,258","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f8a5e keep the docs/source title-handle shape in both maintained roots","current origin exposes no live release/*, RHUD, endgame, title or display rescue head on 2026-06-23; UI-ish branch hits are unrelated to the checked title-handle paths"],"evidence":["OptionsAvailable and EndOfGameStats both call GUI_SetCurrentCutDisplay/GUI_ClearCurrentCutDisplay.","GUI_EndOfGameStats writes controls through currentCutDisplay after cutting EndOfGameStats.","Client_UpdateRHUD keeps a one-second loop alive on docs/Miksuu/perf and a longer current stable/B74-shaped/release loop, and can re-cut OptionsAvailable when currentCutDisplay is null.","updateavailableactions.fsm also writes action icons through the shared OptionsAvailable display handle.","Current stable/B74.1/B74.2/B69/B74/release EASA dialog IDD fixes and B74.2 RHUD AI-cap display text do not change title-IDD or title-handle ownership."],"implementationShape":["Split title display keys, for example OptionsAvailable/action icons/RHUD versus EndOfGameStats.","Alternatively gate RHUD/action-icon recreation once endgame starts, but do not keep endgame stat rendering on an action-HUD-owned key.","Keep this source patch separate from broader EASA/Economy IDD cleanup unless the same UI owner explicitly claims both.","Propagate maintained Vanilla with LoadoutManager after source Chernarus changes."],"validation":["RHUD/FPS HUD appears and updates before endgame.","Action availability icons still render before endgame.","Endgame stat bars populate after match end with RHUD/FPS toggled on and off.","Unloading EndOfGameStats does not unexpectedly clear the action/RHUD display handle unless endgame intentionally disables it."],"wikiRefs":["UI-IDD-Collision-Repair","Client-UI-Systems-Atlas","Client-UI-HUD-And-Menus","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ui-runtime-owner","updated":"2026-06-23T23:59:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"victory-endgame-explicit-winner-loser-wave-s","priority":"P1","status":"patch-ready-current-b741-partial-chernarus-rescue-explicit-winner-loser-open","category":["victory","endgame","stats","correctness"],"summary":"Patch default victory detection by computing explicit winner/loser sides per branch. Current stable/B74.1 Chernarus fixes the guard/short-circuit and uses winner-payload Client_EndGame, but it still treats condition side _x as winner for WF_Winner, WASPSTAT and LogGameEnd; maintained Vanilla still has the gated/mixed server condition.","sourceRefs":["Victory-And-Endgame-Atlas.md","Deep-Review-Findings.md DR-11/DR-36","origin/master@f8a76de34 Chernarus Server/FSM/server_victory_threeway.sqf:11-16,23-26,39-45,53,57-65","origin/master@f8a76de34 maintained Vanilla Server/FSM/server_victory_threeway.sqf:11,29,37,41-49","origin/master@f8a76de34 Chernarus/Vanilla Client/Client_EndGame.sqf:5-11","origin/master@f8a76de34 Chernarus GUI_EndOfGameStats.sqf:8-9 and Vanilla GUI_EndOfGameStats.sqf:5-8","docs/Miksuu/perf/historical-a96fdda2 older-shape Server/FSM/server_victory_threeway.sqf:23-41"],"evidence":["!WFBE_GameOver only guards the all-towns clause in old-shape and current B74.1 Vanilla server loops.","Current B74.1 Chernarus short-circuits same-tick double-fire but still lacks explicit _winnerSide/_loserSide before state/logging.","Current B74.1 Client_EndGame expects winner-side payload in both maintained roots, while old-shaped targets expect loser payload and flip locally.","Server LogGameEnd expects a winner side; WF_Winner should not store a condition side."],"implementationShape":["Compute _sideEliminated and _sideWonByTowns booleans.","Guard both branches with !WFBE_GameOver.","Compute _winnerSide and _loserSide explicitly before broadcast, WF_Winner, WASPSTAT and logging.","Send the payload matching the target branch contract, preferably explicit winner side on B74.1-shaped targets.","Set WF_Winner only to explicit _winnerSide and exit after the first accepted winner."],"validation":["HQ/factory elimination logs the opposite side once.","All-towns victory logs the capturing side once.","Same-tick mutual elimination emits one endgame event and one LogGameEnd call.","Client banner/camera and GUI side label match the accepted winner semantics.","Non-zero WFBE_C_VICTORY_THREEWAY is implemented or explicitly guarded unsupported."],"wikiRefs":["Victory-And-Endgame-Atlas","Feature-Status-Register","Hardening-Implementation-Roadmap","Source-Fix-Propagation-Queue"],"owner":"future-victory-owner","updated":"2026-06-23T15:45:19+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"integration-deployment-inventory-wave-s","priority":"P2","status":"docs-and-ops-checklist","category":["integrations","deployment","discordbot","extension","antistack","battleye"],"summary":"Keep deployment documentation from conflating the in-repo GLOBALGAMESTATS extension, the absent AntiStack A2WaspDatabase DLL, DiscordBot secrets/config and production BattlEye/server config files.","sourceRefs":["Integration-Trust-Boundary-Audit.md","External-Integrations.md","Tools-And-Build-Workflow.md","DiscordBot/src/ExtensionData/GameData/GameData.cs:36-56","DiscordBot/src/ExtensionData/GameData/GameDataDeSerialization.cs:31-36","DiscordBot/src/LoggingSystem/Log.cs:63-64","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/AntiStack/callDatabase*.sqf","BattlEyeFilter/publicvariable.txt"],"evidence":["Active Discord status reader uses Preferences.Instance.DataSourcePath fallback, not FileConfiguration.DataSourcePath.","FileConfiguration live usage is logging paths.","DiscordBot still has callable TypeNameHandling.Auto helper.","Building a2waspwarfare_Extension does not provide A2WaspDatabase.","In-repo BattlEye filter is AFK-only."],"implementationShape":["Record artifact/version/path for a2waspwarfare_Extension and separate A2WaspDatabase before deployment claims.","Record DiscordBot token.txt/preferences.json source without committing secrets.","Record production BEpath plus whether scripts.txt/server.cfg/basic.cfg live outside repo.","Delete or make safe the DiscordBot Auto helper before future JSON refactors."],"validation":["Operator checklist predicts missing-token, missing-A2WaspDatabase and AFK-only BattlEye states.","External integrations page distinguishes live status reader from logging FileConfiguration.","No docs claim public-server BE hardening without production files."],"wikiRefs":["Integration-Trust-Boundary-Audit","External-Integrations","Tools-And-Build-Workflow","Tooling-Release-Readiness-Audit"],"owner":"future-integration-owner","updated":"2026-06-02T22:35:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"generated-modded-runnability-wave-s","priority":"P2","status":"owner-decision","category":["generated-missions","modded-missions","release-readiness"],"summary":"Treat Napf/eden/lingor as partial forks rather than drop-in runnable checkout missions, and keep stub terrains out of supported-release claims until regenerated or completed.","sourceRefs":["Tools-And-Build-Workflow.md","Abandoned-Feature-Revival-Review.md","Deep-Review-Findings.md DR-32","Source-Inventory.md","Tools/LoadoutManager/FileManagement/FileManager.cs:89","Tools/LoadoutManager/SqfFileGenerators/SqfFileGenerator.cs:132","Tools/LoadoutManager/Data/Terrains/BaseTerrain.cs:320"],"evidence":["Modded generation is commented out.","eden lacks tracked version.sqf; Napf lacks tracked mission.sqm and version.sqf; lingor lacks tracked mission.sqm, description.ext, initJIPCompatible.sqf and version.sqf.","smd_sahrani_a2/tavi/isladuala remain tiny stubs; dingor includes missing version.sqf."],"implementationShape":["Owner chooses regenerate-from-source, maintain selected forks manually or archive/delete stubs.","Do not claim source Chernarus fixes reach modded forks automatically.","Before modded runtime support, add generated/version inputs and mission-root completeness checks."],"validation":["Release checklist names exactly which missions are supported.","Modded mission pack either contains complete mission roots or is excluded.","Any manually maintained fork has its own PVF/authority/victory/feature drift review."],"wikiRefs":["Tools-And-Build-Workflow","Abandoned-Feature-Revival-Review","Deep-Review-Findings","Source-Inventory"],"owner":"server-owner-plus-future-release-owner","updated":"2026-06-02T22:35:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"economy-dialog-missing-controls","priority":"P3","status":"docs-miksuu-perf-open-stable-b69-b74-release-fixed-current-b74-refreshed","category":["ui","dialogs","correctness","generated-missions","b74-branch"],"summary":"Economy dialog disabled-state controller writes target IDC 23004, 23005 and 23006 in docs/source HEAD@21f0d53b, current Miksuu b8389e748243 and perf 0076040f, but the declared docs/Miksuu/perf Economy controls do not include those IDs or dashboard IDC 23020. Current stable 0139a346, B69 8d465fce, B74 b23f557f and historical a96fdda2 remove those writes and use declared dashboard IDC 23020 in both maintained roots; B74 only changes Chernarus dashboard label text versus stable among checked paths.","sourceRefs":["docs/source HEAD@21f0d53b8c89 Chernarus/Vanilla Client/GUI/GUI_Menu_Economy.sqf:7-8 writes 23004/23005/23006","docs/source HEAD@21f0d53b8c89 Chernarus/Vanilla Rsc/Dialogs.hpp:3287,3327,3339,3346 declares Economy controls 23002/23003/23008 without 23004/23005/23006 or 23020","git diff --name-status d2a3f995..HEAD and b5219d47..HEAD are empty for checked Economy controller/resource paths","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f Chernarus/Vanilla GUI_Menu_Economy.sqf:7-8 keep stale writes","origin/master@0139a3468609, origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla GUI_Menu_Economy.sqf:4,25 use 23002/23020 and Rsc/Dialogs.hpp:3070 declares 23020","historical a96fdda28087 Chernarus/Vanilla GUI_Menu_Economy.sqf:4,25 uses 23002/23020 and Rsc/Dialogs.hpp:3006 declares 23020","origin/master..B74 changes only Chernarus dashboard label text among checked Economy paths; B69..B74 and 0a1ccb4d..B74 checked Economy deltas are empty","UI-Resource-Parity-Cleanup.md"],"evidence":["Spark UI resource scout 2026-06-03 found RscMenu_Economy declares 23002, 23003 and 23008 through 23016 but not 23004 or 23005.","Mini UI scout 2026-06-04 rechecked the controller and added 23006 from the same disabled-state branch.","Codex current-B74 refresh 2026-06-23 verified docs/Miksuu/perf still have the stale writes, while current stable, B69, B74 and historical release carry the 23020 controller/control-map repair in both maintained roots."],"implementationShape":["Treat this as old-shape target parity cleanup, not fresh discovery.","Compare/import the current stable/B69/B74/release economy controller/control-map shape or remove/update the stale disabled-state writes across target maintained roots.","If adding controls instead, document the intended UI role for 23004/23005/23006 before implementation.","Do not combine with the EASA/Economy duplicate IDD fix unless owner wants a broader UI resource cleanup branch."],"validation":["Open Economy menu as commander and non-commander.","Verify disabled-state text/controls render without RPT control-not-found noise.","Smoke commander income percentage buttons, structure sell mode and supply-truck respawn button after the change.","Verify maintained Vanilla parity after propagation or manual sync."],"wikiRefs":["UI-Resource-Parity-Cleanup","Client-UI-Systems-Atlas","Client-UI-HUD-And-Menus","Feature-Status-Register","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","updated":"2026-06-23T04:45:49+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"modded-mission-conflict-markers","priority":"P2","status":"confirmed-scout-2026-06-03","category":["modded-missions","release-readiness","syntax-integrity"],"summary":"Modded mission forks contain unresolved merge-conflict markers and should not be treated as runnable release candidates.","sourceRefs":["Modded_Missions/[55-2hc]warfarev2_073v48co.Napf/description.ext:43-46","Modded_Missions/[55-2hc]warfarev2_073v48co.Napf/Common/Module/IRS/IRS_OnIncomingMissile.sqf:28-61","Modded_Missions/[55-2hc]warfarev2_073v48co.lingor/Client/Client_UpdateRHUD.sqf:19-263","Modded_Missions/[55-2hc]warfarev2_073v48co.eden/Client/Module/Skill/Skill_Apply.sqf:25-248"],"evidence":["Local scan `rg -l \"<<<<<<<|=======|>>>>>>>\" Modded_Missions` found 18 files across Napf, Lingor and Eden."],"implementationShape":["Owner chooses regenerate, repair as maintained forks or retire affected modded missions.","Remove all conflict markers before any pack/release claim.","Keep Chernarus/Vanilla source fixes separate from modded-fork repair unless a terrain-maintenance model is chosen."],"validation":["`rg -l \"<<<<<<<|=======|>>>>>>>\" Modded_Missions` returns no files for supported modded missions.","Each supported modded mission has complete bootstrap files, generated version.sqf and Arma boot smoke evidence.","Unsupported modded folders are excluded from release notes/package claims."],"wikiRefs":["Content-Structure-And-Maps","Tools-And-Build-Workflow","Testing-Debugging-And-Release-Workflow","Feature-Status-Register"],"owner":"future-release-owner","updated":"2026-06-03T23:54:14+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"camp-count-helper-zero-fallback","priority":"P3","status":"patch-ready-current-b741-b742-unpatched","category":["towns","camps","correctness","metrics","branch-status"],"summary":"Camp-count helpers still conflate real camp count with safe denominator semantics across all checked current refs. Docs/source HEAD@6b8b12df is unchanged from 91d1ccf2 / ade4d356 for checked helper/caller paths. Current stable/B74.1 origin/master@f8a76de34, B74.2 origin/claude/b74.2-aicom@21b62b04, B69 8d465fce, adjacent B74 b23f557f, current Miksuu b8389e748243, perf 0076040f and historical a96fdda2 all keep Common_GetTotalCamps.sqf:10 and Common_GetTotalCampsOnSide.sqf:16 returning 1 for zero-camp towns in both maintained roots. B74.2 source-Chernarus caller drift is unrelated pop-tier/naval/stat context, not helper closure.","sourceRefs":["docs/source HEAD@6b8b12dff8bc Chernarus/Vanilla helpers Common_GetTotalCamps.sqf:10 and Common_GetTotalCampsOnSide.sqf:16; consumers server_town.sqf:179-195, Common_GetRespawnThreeway.sqf:7, Client_GetRespawnAvailable.sqf:69 and GUI_Menu_BuyUnits.sqf:111-112; checked paths unchanged from 91d1ccf2 and ade4d356","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla helpers still exitWith {1}; consumers server_town.sqf:188-204, Common_GetRespawnThreeway.sqf:7, Client_GetRespawnAvailable.sqf:92 and GUI_Menu_BuyUnits.sqf:120-121","origin/claude/b74.2-aicom@21b62b04fee3 keeps helper fallback in both maintained roots; source Chernarus GUI_Menu_BuyUnits.sqf drifts to :126-127 through unrelated pop-tier AI-cap UI while maintained Vanilla stays :120-121","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable/B74.1 for checked helper/caller semantics","Miksuu b8389e748243, origin/perf/quick-wins@0076040f8a5e and historical a96fdda28087 all keep exitWith {1} in both maintained roots with branch-specific caller line drift","checked deltas 0139a3468609..origin/master and origin/master..origin/claude/b74.2-aicom touch only adjacent caller context; d472da6a..21b62b04, B69..B74 and docs-source helper/caller deltas are empty; no live release/camp/town rescue head exposed on 2026-06-23"],"evidence":["Camp-capture scout confirmed both helpers coerce zero counts to 1 while camp ownership and marker flows otherwise use concrete camp objects.","Current B74.1/B74.2 refresh confirmed no checked branch splits real-count versus safe-denominator semantics."],"implementationShape":["Audit callers and classify whether each needs a real count or safe denominator.","Split helpers or add an explicit safe-denominator wrapper if both semantics are needed.","Avoid changing camp-gated capture ratios without dedicated town/camp smoke.","Propagate maintained Vanilla deliberately on any gameplay fix."],"validation":["Zero-camp towns do not report inflated camp totals in UI/metrics.","Camp-gated town capture still avoids divide-by-zero and preserves intended capture behavior.","Threeway defender respawn and depot infantry-buy consumers keep expected behavior on zero, partial and all-camp towns.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Towns-Camps-And-Capture-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Respawn-And-Death-Lifecycle-Atlas"],"owner":"future-town-owner","updated":"2026-06-23T21:11:01+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"requestspecial-track-playerobject-undriven","priority":"P3","status":"confirmed-scout-2026-06-04","category":["networking","requestspecial","bookkeeping"],"summary":"Server_HandleSpecial defines a track-playerobject RequestSpecial tag, but no active Chernarus caller was found in the RequestSpecial scout.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:133-145"],"evidence":["RequestSpecial scout found active callers for connected-hc, update-teamleader, group-query, support tags, RespawnST, uav, upgrade-sync, update-clientfps, update-town-delegation, ICBM, process-killed-hq and repair-camp, but not track-playerobject."],"implementationShape":["If revived, derive requester identity and validate player-object ownership server-side before mutating player-object lists.","If obsolete, remove or comment the switch case during RequestSpecial tag cleanup.","Keep separate from the P0 ICBM authority patch unless the owner is doing a complete RequestSpecial tag audit."],"validation":["Static grep shows no unexpected active callers before deletion/commenting, or known callers have tests/smoke if revived.","Reconnect/JIP and supply player-object lookup still work through their current active paths."],"wikiRefs":["Support-Specials-And-Tactical-Modules-Atlas","Feature-Status-Register","Server-Authority-Migration-Map"],"owner":"future-networking-owner","updated":"2026-06-04T00:13:27+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"modded-missing-total-camps-helper","priority":"P2","status":"confirmed-scout-2026-06-04","category":["modded-missions","generated-missions","release-readiness","missing-reference"],"summary":"Napf, Eden and Lingor compile Common_GetTotalCamps.sqf but do not track the file, adding another modded-runnability blocker beyond missing generated bootstrap files and conflict markers.","sourceRefs":["Modded_Missions/[55-2hc]warfarev2_073v48co.Napf/Common/Init/Init_Common.sqf:52-53,127-128","Modded_Missions/[55-2hc]warfarev2_073v48co.eden/Common/Init/Init_Common.sqf:52-53,127-128","Modded_Missions/[55-2hc]warfarev2_073v48co.lingor/Common/Init/Init_Common.sqf:52-53,127-128"],"evidence":["Get-ChildItem found Common_GetTotalCamps.sqf only under source Chernarus and maintained Vanilla, while all three named modded forks compile it."],"implementationShape":["Regenerate supported modded forks from source or copy/maintain the helper intentionally as part of a declared modded maintenance model.","Keep unsupported modded folders out of release/package claims until missing helper, generated inputs and conflict markers are resolved."],"validation":["For supported modded forks, compile-preprocess reference scan finds no missing Common/Server/Client function files.","Arma boot smoke reaches common init without missing Common_GetTotalCamps.sqf errors.","Unsupported folders are clearly excluded from release notes and packaging."],"wikiRefs":["Content-Structure-And-Maps","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-release-owner","updated":"2026-06-04T00:37:08+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"factory-unit-cost-modifier-reset","priority":"P2","status":"confirmed-scout-2026-06-04","category":["factory","purchase-ui","economy","correctness"],"summary":"Buy-list unit-cost discount uses mutable global UNIT_COST_MODIFIER and does not reset it to 1 when WFBE_UP_UNITCOST is level 0.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_CommonConstants.sqf:203","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_UIFillListBuyUnits.sqf:7-16,60","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_BuyUnits.sqf:90"],"evidence":["Client_UIFillListBuyUnits.sqf sets UNIT_COST_MODIFIER only for upgrade levels 1 and 2; source and maintained Vanilla share the same shape."],"implementationShape":["Assign UNIT_COST_MODIFIER = 1 before applying upgrade-level overrides or replace the global with a local computed modifier shared by list/detail/purchase formulas.","Keep the existing buy-list/detail price-drift finding in mind when extracting a helper."],"validation":["With unit-cost upgrade 0, list and purchase price use no discount after previously viewing a discounted state.","With upgrade levels 1 and 2, discount remains 0.75/0.5 as intended.","List, detail and purchase deduction agree for infantry, vehicles and crew selections."],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register"],"owner":"future-factory-ui-owner","updated":"2026-06-04T00:37:08+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"buy-menu-price-key-alignment-branch-matrix-2026-06-05","priority":"P2","status":"patch-ready-current-head-refreshed","category":["factory","purchase-ui","economy","profile","correctness"],"summary":"Buy-menu price/key cleanup should be handled as one patch lane: selected-detail price formula, UNIT_COST_MODIFIER level-0 reset and driver-default profileNamespace key normalization. Release 7ff18c49 fixes selected-detail display in both release maintained roots and mirrors both driver keys in init/toggle/max-out/reset writes, but all checked current/stable roots still need at least modifier reset and one-key normalization.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_UIFillListBuyUnits.sqf:11,14,60","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_BuyUnits.sqf:39-42,90,95,136,154,173,261,284,308,328-341,366,373,385,465","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Client/Functions/Client_UIFillListBuyUnits.sqf:11,14,60","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Client/GUI/GUI_Menu_BuyUnits.sqf:39-42,90,95,136,154,173,261,284,308,328-341,366,373,385,465","miksuu/master@89ae9dad same maintained-root price/reset/key shape","origin/perf/quick-wins@0076040f same maintained-root price/reset/key shape","origin/release/2026-06-feature-bundle@7ff18c49 Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:284 selected-detail formula; driver-key mirror writes at :40-41,:181-183,:307-308,:352,:358,:364,:397-398,:410-411","origin/feat/buymenu-easa-qol@a66d4691 Chernarus GUI_Menu_BuyUnits.sqf:280"],"evidence":["Current docs/source, stable origin/master, upstream miksuu/master 89ae9dad and perf/quick-wins 0076040f retain all three shapes in Chernarus and maintained Vanilla.","Release 7ff18c49 fixes selected-detail formula in both release maintained roots and mirrors both driver keys in several write paths; no checked current/stable branch adds UNIT_COST_MODIFIER = 1 reset or fully normalizes the profile key."],"implementationShape":["Create one buy-unit price helper or reset UNIT_COST_MODIFIER to 1 before applying upgrade-level overrides, then use the same formula for list row, selected-detail display, affordability check and debit.","Normalize one profileNamespace key for driver-default initialization, toggle, cost/cap reads, max-out and reset.","Run LoadoutManager after source edits and inspect maintained Vanilla diffs."],"validation":["Unit-cost levels 0, 1 and 2 show expected list/detail/charge prices after switching between discounted and non-discounted states.","Low, exact and sufficient funds gates agree with charged funds.","Driver-default checkbox state matches previewed crew cost, AI-count cap, BuildUnit params, max-out and reset.","Chernarus and maintained Vanilla behave the same after propagation."],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"supersedes":["factory-unit-cost-modifier-reset","buy-unit-driver-default-profile-key-split-2026-06-04"],"owner":"future-factory-ui-owner","updated":"2026-06-06T16:50:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"destroyed-factory-purchase-no-refund","priority":"P2","status":"branch-split-old-roots-no-refund-current-b742-refund-present","category":["factory","purchase-flow","economy","correctness"],"summary":"Destroyed-factory no-refund remains true for docs/source, Miksuu, perf and historical QoL old-shape roots, but current stable/B74.1/B74.2/B69/B74 and historical a96fdda2 refund the real dead/null factory abort. Player purchase authority remains client-local everywhere checked.","sourceRefs":["repo docs branch HEAD@f9601c92e0a4 checked Chernarus/Vanilla GUI_Menu_BuyUnits.sqf and Client_BuildUnit.sqf paths unchanged from b8180bb319ed / cacd46f09163 / 4120137f / 8d611092","docs/source Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:154-156 spawns BuildUnit then debits _currentCost without passing it; Client_BuildUnit.sqf:211-214 cleans queue/counter on dead/null building without refund","HEAD and origin/claude/b74.2-aicom maintained-root grep found no RequestBuyUnit or RequestBuildUnit PVF path","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:163-165 passes/spawns/debits _currentCost; Client_BuildUnit.sqf:7 reads it and :276-280 refunds the dead/null abort","origin/claude/b74.2-aicom@21b62b04fee3 source Chernarus GUI_Menu_BuyUnits.sqf:169-171, maintained Vanilla :163-165, and both maintained roots Client_BuildUnit.sqf:276-280 refund the dead/null abort","checked d472da6a..21b62b04 is empty for the four maintained-root buy/build paths; origin/master..origin/claude/b74.2-aicom changes only source-Chernarus buy-menu AI-cap setup among checked paths","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable refund anchors for checked buy/build paths","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f keep dead/null no-refund cleanup at Client_BuildUnit.sqf:211-214 in both maintained roots; perf Chernarus crewless counter cleanup is separate"],"evidence":["GUI_Menu_BuyUnits.sqf debits with ChangePlayerFunds after spawning BuildUnit; Client_BuildUnit.sqf sleeps, removes the queue token, then exits on dead/null factory without refund."],"implementationShape":["Owner decides intended design: risk/reward loss or refund bug.","If fixing, make purchase acceptance/debit atomic with build start or add one idempotent refund path guarded against disconnect/factory-damage abuse."],"validation":["Factory destroyed before completion either intentionally consumes funds with clear UX or refunds exactly once.","Normal successful buys still debit once and create units.","Buyer disconnect and queue timeout do not duplicate refunds or leave queue counters stuck."],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-factory-ui-owner","updated":"2026-06-24T14:55:00+02:00","supersedes":["2026-06-04 universal no-refund wording"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"autowall-global-toggle-scope","priority":"P3","status":"confirmed-b742-current-head-refreshed-2026-06-24","category":["construction","coin","workflow","authority"],"summary":"Auto-wall construction preference is one global server variable, so one caller can affect later SmallSite/MediumSite construction for everyone. The 2026-06-24 B74.2 current-head refresh keeps the issue open across docs/source HEAD@de471ea5ba96, checked Miksuu b8389e748243, perf 0076040f, current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, current B69 origin/claude/b69@8d465fce, adjacent B74 origin/claude/b74-aicom-spend@b23f557f, live origin/feat/oa-auto-countermeasures@2015a632 and historical a96fdda2. Current stable/B74.1/B74.2/B69/B74 add broader no-wall exclusions, but no checked ref adds player/side/requester scoping.","sourceRefs":["docs/source HEAD@de471ea5ba96 Chernarus/Vanilla auto-wall paths unchanged from eca0e4a7, f3896116 and 89aadf8c; Init_Common.sqf:201 false; coin_interface.sqf:180,207-217 sends RequestAutoWallConstructinChange; Init_PublicVariables.sqf:21 registers it; RequestAutoWallConstructinChange.sqf:3-7 writes one global; SmallSite/MediumSite consume at :110/:125","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da for checked auto-wall behavior; Chernarus/Vanilla Init_Common.sqf:214 true; SmallSite :123; MediumSite Chernarus :163 / Vanilla :160 with AARadar plus related exclusions","origin/claude/b74.2-aicom@21b62b04fee3690d66d5a3f6939b1fda0befa354 current B74.2 head; d472da6a..21b62b04 is empty for checked auto-wall paths","origin/master..origin/claude/b74.2-aicom only adds source-Chernarus SmallSite/MediumSite structure-built stats attribution among checked construction paths and has no auto-wall gate/request-scope delta","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable/B74.1 for checked auto-wall behavior; B69..B74 checked delta empty","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep the docs/source old false-default/no-exclusion shape at Init_Common.sqf:201 and SmallSite/MediumSite :110/:125","historical a96fdda28087 initializes true at Init_Common.sqf:201 and only adds AARadar guards at SmallSite/MediumSite :110/:125","origin/feat/oa-auto-countermeasures@2015a632 initializes true at Init_Common.sqf:202 and only adds AARadar guards at SmallSite/MediumSite :110/:125 while preserving the same global RequestAutoWallConstructinChange path","Miksuu auto/wall branch scan found default/gate or stale-layout context only, not player/side/requester scoping"],"evidence":["The same global is initialized in common init, toggled via CoIn User14 and RequestAutoWallConstructinChange, and consumed by both small and medium construction workers in every checked maintained root/branch.","Current stable/B74.1/B74.2/B69/B74 broaden which structure types skip auto-wall creation, but the setting remains a single global value rather than a player, side or requester-scoped preference; checked Miksuu and perf remain old false-default/no-exclusion shape."],"implementationShape":["If auto-wall is meant as a preference, key it by side/requester and validate the toggler; if global behavior is intended, make it explicit in UI/docs and keep targeted response semantics."],"validation":["Two players or sides toggling auto-wall cannot unexpectedly affect each other's next construction unless global behavior is intended and documented.","SmallSite and MediumSite wall creation still works after the scope decision."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Server-Composition-Spawner-Function-Reference","Server-Authority-Migration-Map"],"owner":"future-construction-owner","updated":"2026-06-24T02:10:02+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"side-supply-reason-string-gate","priority":"P3","status":"patch-ready-current-b742-head-refreshed","category":["economy","logging","debuggability"],"summary":"Common_ChangeSideSupply only reads the reason string when count _this > 3, so normal three-argument calls publish the default error reason instead of the caller's audit reason. Current B74.2 origin/claude/b74.2-aicom@21b62b04 has no checked helper/reason delta versus d472da6a or current stable.","sourceRefs":["docs/source HEAD@3bedb86dca88 and current stable/B74.1/B74.2/B69/B74 Chernarus/Vanilla Common_ChangeSideSupply.sqf:8-14","current B74.2 origin/claude/b74.2-aicom@21b62b04 Server/PVFunctions/AttackWave.sqf:40","current B74.2 Chernarus supplyMissionCompleted.sqf:43,46 and maintained Vanilla :40 preserve four-argument reasons","git diff --name-status d472da6ae875..origin/claude/b74.2-aicom is empty for checked helper/reason paths"],"evidence":["AttackWave.sqf passes [side, amount, reason] to ChangeSideSupply, but Common_ChangeSideSupply.sqf reads _reason only under count > 3, same gate as includeStagnation.","Four-argument supply completion calls still preserve their formatted reason, so this is logging/audit cleanup, not authority closure."],"implementationShape":["Read _reason when count _this > 2; read _includeStagnation when count _this > 3; preserve malformed/missing-reason warnings in the server PVEH.","Patch alongside side-supply clamp/validation to keep economy logs useful."],"validation":["Three-argument ChangeSideSupply calls log their supplied reason.","Four-argument calls still respect includeStagnation.","Missing/empty reasons still produce warning/default logs."],"wikiRefs":["Economy-Authority-First-Cut","Feature-Status-Register"],"owner":"future-economy-owner","updated":"2026-06-24T00:52:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"ai-commander-upgrade-debit-order","priority":"P2","status":"current-stable-resolved-old-target-patch-ready-current-b742-head-validated","category":["ai-commander","economy","upgrades","currency"],"summary":"AI commander upgrade debit/cost lookup is resolved on current stable/B74-shaped refs but remains patch-ready on old-shape docs/source, Miksuu, perf and some side branches. Current stable/B74.1 f8a76de34, current B74.2 21b62b04, B69 8d465fce and adjacent B74 b23f557f use current-level lookup and corrected [supply,funds] debit in both maintained roots; docs/source HEAD@c70785e4be30, Miksuu and perf keep raw AI_ORDER lookup plus swapped debit.","sourceRefs":["docs/source HEAD@c70785e4be30 Chernarus/Vanilla Server_AI_Com_Upgrade.sqf:27,34,36,47,50; checked worker/menu diffs 031a253fe..HEAD and ade4d356..HEAD are empty","docs/source Chernarus/Vanilla GUI_UpgradeMenu.sqf:96-97,139-140,159 confirms [supply,funds] cost tuple and side-supply debit convention","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da for checked worker files; Chernarus/Vanilla Server_AI_Com_Upgrade.sqf:75,89,92,97,125,131-132,136","origin/claude/b74.2-aicom@21b62b04fee3 has no checked worker/menu delta over origin/master or previous d472da6a and keeps the same resolved anchors","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 have empty checked worker/menu delta and keep the same resolved anchors","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f8a5e keep old-shape raw lookup/validation/swapped debit at Server_AI_Com_Upgrade.sqf:27,34,36,47,50","historical a96fdda28087 and b061c905b7be fix debit order at Server_AI_Com_Upgrade.sqf:47,50 but keep raw cost lookup at :27","historical c20ce1534be0 fixes Chernarus lookup/debit at :27,47,50 but leaves maintained Vanilla old-shape","origin/review/aicom-deploy@43531a51, origin/notes/aicom-match-fixes@2cf2d70c and origin/fix/aicom-review-batch-2026-06-15@98d8bd15 carry resolved workers with line drift; origin/codex/ai-commander-context and origin/codex/ai-commander-logs fix Chernarus only; origin/codex/quad-ai-commander remains old-shape","current origin exposes no live release/*, feat/upgrade-queue-stacking or feat/ai-commander head on 2026-06-24"],"evidence":["2026-06-24 B74.2 current-head follow-up rechecked docs/source, current stable/B74.1, previous B74.2, current B74.2, B69, adjacent B74, Miksuu, perf, historical commits and live side branches that touch the worker.","Current stable/B74.1/B74.2/B69/B74 resolve the old current-level lookup and debit-order defect in both maintained roots.","Docs/source, current Miksuu and perf remain old-shape; live side branches are mixed and must be rechecked before use.","Historical a96fdda2/b061c905 fix debit order only; historical c20ce153 and codex context/log branches are Chernarus-only lessons."],"implementationShape":["For old-shape targets, port current stable's maintained-root worker or recreate current-level lookup plus corrected funds/supply debit.","Recheck the selected target branch before patching because live side branches have line drift and mixed Chernarus/Vanilla propagation.","Keep AI commander upgrade worker cleanup separate from player RequestUpgrade authority migration and broader autonomous commander scheduler work."],"validation":["AI commander upgrade with split currency debits side supply and AI commander funds by the intended amounts.","AI_ORDER level/cost lookup chooses the intended current level cost and does not over-index top-level upgrades.","Funds-fallback surcharge path pays supply as AI funds only when intended and logs the fallback.","Player commander upgrade path remains unchanged or is migrated server-side in a separate authority patch."],"wikiRefs":["AI-Commander-Autonomy-Audit","Upgrades-And-Research-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ai-commander-owner","updated":"2026-06-24T04:24:12+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"resource-income-payout-display-drift","priority":"P3","status":"branch-checked-source-unpatched-current-b742-21b62b04-refreshed","category":["economy","income","ui-display","balance","branch-status"],"summary":"Resource-income payout/display branch truth now routes current B74.2 through origin/claude/b74.2-aicom@21b62b04. Docs/source HEAD@f29b4a9b7900 is source-unchanged from c8ec223a / 3a32be92 / cd9ba541 for checked updateresources.sqf and Client_GetIncome.sqf paths; docs/source, Miksuu, perf and historical a96fdda2 keep the old cap guard over side supply, team paychecks and AI commander funds. Current stable/B74.1, previous B74.2 d472da6a and current B74.2 21b62b04 match for checked income tick/display files: Chernarus keeps side supply/team paychecks gated, uses hybrid-refill and supply multiplier, keeps over-cap AICOM fallback and B74.1 taper, while maintained Vanilla keeps non-hybrid/raw-supply/no-taper behavior. Client_GetIncome still omits the income-system 4 server 1.5 display multiplier everywhere checked.","sourceRefs":["docs/source HEAD@f29b4a9b7900 source-unchanged from c8ec223a / 3a32be92 / cd9ba541 for checked Chernarus/Vanilla updateresources.sqf and Client_GetIncome.sqf paths","docs/source Chernarus/Vanilla updateresources.sqf:31 guard, :42-43 system-4 multiplier, :49 side supply, :63 team paychecks, :67 AI commander funds; Client_GetIncome.sqf:24-28 omits display multiplier","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da for checked income tick/display paths","origin/claude/b74.2-aicom@21b62b04fee3690d66d5a3f6939b1fda0befa354 current B74.2 head; d472da6a..21b62b04 is empty for checked income paths and constants","current stable/B74.1/current B74.2 Chernarus updateresources.sqf:57-67 AICOM taper, :69 cap gate, :80-81 system-4 multiplier, :87 side supply with WFBE_C_ECONOMY_SUPPLY_INCOME_MULT, :101 team paychecks, :105-114 hybrid-refill under-cap AICOM cash/stipend, :126-132 over-cap fallback with taper","current stable/B74.1/current B74.2 maintained Vanilla updateresources.sqf:58 cap gate, :69-70 system-4 multiplier, :76 raw side supply, :90 team paychecks, :94-103 non-hybrid under-cap AICOM cash/stipend, :115-121 non-hybrid over-cap fallback","origin/master..origin/claude/b74.2-aicom changes source-Chernarus Init_CommonConstants.sqf only among checked income-adjacent files, including pop-tier/AICOM cap constants at :171-176; no updateresources.sqf or Client_GetIncome.sqf delta","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 checked income files are identical; Chernarus keeps hybrid-refill/supply-multiplier shape without B74.1 taper, maintained Vanilla keeps raw-supply/non-hybrid shape","miksuu/master@b8389e748243, origin/perf/quick-wins@0076040f8a5e and historical a96fdda28087 match docs/source old maintained-root payout/display shape","current origin exposes no live release/*, resource, income or economy rescue heads on 2026-06-24"],"evidence":["Economy fallback scout found both the payout guard and income-system 4 display mismatch.","2026-06-24 Codex B74.2 current-head follow-up separated docs/source old-shape, current stable/B74.1/current B74.2, B69/B74, Miksuu, perf and historical release behavior; current stable/B74.1/B74.2 remain partial/source-present branch shapes with Chernarus-only taper/hybrid/supply-multiplier drift, not full closure."],"implementationShape":["Decide intended behavior for supply cap versus side-supply growth and team paychecks before refactoring updateresources.","Preserve or deliberately change AI commander over-cap income/stipend fallback and B74.1 AICOM taper; do not ask current stable/B74.1/B74.2 to redo that fallback blindly.","Review Chernarus-only WFBE_C_ECONOMY_SUPPLY_INCOME_MULT and WFBE_C_AI_COMMANDER_HYBRID_REFILL behavior against maintained Vanilla before port/release wording.","If income system 4 multiplier is intended, update Client_GetIncome/RHUD/menu display math; if not, rebalance server payout deliberately.","Avoid bundling this with side-supply authority clamp unless balance owner approves.","Propagate maintained Vanilla whenever source Chernarus changes, or explicitly scope Chernarus-only economy behavior."],"validation":["For income systems 2, 3 and 4, displayed income matches actual paycheck after one update interval or the mismatch is explicitly accepted.","High town-supply situations do not unintentionally suppress or overpay side supply, team paychecks or commander funds.","AI commander funds update only under intended no-human-commander or hybrid-refill conditions, and the B74.1 taper only affects AICOM cash.","Smoke both capped and uncapped income ticks with commander and non-commander teams.","Smoke current Chernarus and maintained Vanilla separately because checked current stable/B74.1 files differ in taper, hybrid-refill and supply-multiplier behavior."],"wikiRefs":["Feature-Status-Register","Economy-Towns-And-Supply","Resource-Income-Tick-Distribution-Engine","Economy-Authority-First-Cut","Source-Fix-Propagation-Queue"],"owner":"future-economy-owner","updated":"2026-06-24T01:15:23+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"commander-vote-task-hq-authority-edges","priority":"P2","status":"branch-split-smoke-pending-2026-06-24","category":["commander","hq","vote","task-ui","authority"],"summary":"Commander vote restart, branch-split SetTask / Objective Ping, old town TaskSystem residue, and HQ deploy/pack all have source-backed authority/partial-feature caveats that should be handled in commander/HQ hardening.","sourceRefs":["repo docs branch HEAD@c5937045f GUI_Menu_Command.sqf:335,337,343 commented SetTask sends; Init_PublicVariables.sqf:33 registration; Client_TaskSystem.sqf present","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 GUI_Menu_Command.sqf:336,344 targeted SetTask sends; Init_PublicVariables.sqf:40 registration; Client_TaskSystem.sqf absent","origin/claude/b74.2-aicom@21b62b04 matches current stable for checked SetTask/TaskSystem shape; Chernarus Init_Client.sqf line-drifts to old-task comment residue at :119,:1023 while maintained Vanilla stays :119,:1000","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f GUI_Menu_Command.sqf:336,344 targeted SetTask sends; Init_PublicVariables.sqf:40 registration; Client_TaskSystem.sqf absent","origin/feat/naval-hvt-objectives@2e1c59317186 matches current stable for checked SetTask paths and removes the old Client_TaskSystem.sqf helper","b8389e748243, origin/perf/quick-wins@0076040f and c20ce1534be0 keep commented sends plus Init_PublicVariables.sqf:33 registration and Client_TaskSystem.sqf present","a96fdda28087 carries live Objective Ping sends and Init_PublicVariables.sqf:36 registration but no live release/* head","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu.sqf:75,91","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestCommanderVote.sqf:3-22","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestStructure.sqf:3-21","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_HQSite.sqf:17-23,80"],"evidence":["Commander fallback scout found the request paths and old commented SetTask sends; 2026-06-24 refresh splits old-shape docs/Miksuu/perf/c20 TaskSystem helper residue from current stable/B74.1/B74.2/B69/B74/naval-HVT Objective Ping sends.","Checked 86ab85b9d0b1..HEAD is empty for task/objective paths; 0139a3468609..origin/master and origin/master..origin/claude/b74.2-aicom do not change GUI_Menu_Command.sqf, Init_PublicVariables.sqf, SetTask.sqf, Client_TaskSystem.sqf presence or TownCaptured.sqf semantics."],"implementationShape":["Add requester/side/cooldown validation to commander vote restart if hardening vote flow.","On old-shape targets, either hide SetTask controls or port the current-stable Objective Ping shape deliberately; for current stable-shaped targets, add JIP/task-spam/side-audience smoke before release wording.","Treat old town TaskSystem cleanup/removal as a separate stale-code decision from Objective Ping smoke.","When hardening RequestStructure, include HQ-specific commander/range/role checks for deploy/pack."],"validation":["Vote restart works after vote timeout and cannot be forged cross-side.","Task controls are either hidden on old-shape targets or create/expire tasks reliably across selected-team and all-player-led sends without JIP/spam regressions.","Old town TaskSystem comments/helper are either deliberately removed/annotated or rebuilt with notification, JIP and spam smoke.","HQ deploy/pack accepts valid commander requests and rejects non-commander/wrong-side/out-of-range payloads."],"wikiRefs":["Feature-Status-Register","Commander-HQ-Lifecycle-Atlas","Client-UI-Systems-Atlas","Player-UI-Workflow-Map","Networking-And-Public-Variables","Abandoned-Feature-Revival-Review"],"owner":"future-commander-owner","updated":"2026-06-24T11:45:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"hc-registration-clientfps-trust-edges","priority":"P2","status":"confirmed-scout-2026-06-04","category":["ai","headless-client","delegation","authority","performance"],"summary":"HC registration can miss the candidate pool when owner id is 0, client-FPS delegation trusts claimed UID/FPS payloads, and the Arma high-command UI HCSetGroup path appears inert behind _hc_enabled=false.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Headless/Init/Init_HC.sqf:11-15","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:75-83","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:117-130","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/FSM/updateavailableactions.fsm:47,115-125","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_FNC_Delegation.sqf:153-158"],"evidence":["AI/HC fallback scout separated headless-client delegation from Arma high-command UI ownership; Codex verified the registration and client-FPS trust paths."],"implementationShape":["Add HC registration retry/delayed reconciliation if using HC mode.","Validate sender/UID/rate/shape for update-clientfps before using client-FPS delegation in public play.","Keep HCSetGroup/high-command UI revival as a separate UI-command feature, not a headless-client patch."],"validation":["HC with delayed owner id eventually registers or logs a clear unrecoverable state.","Client-FPS delegation cannot update another UID's delegator record.","High-command UI groups are not accidentally enabled by headless-client changes."],"wikiRefs":["Feature-Status-Register","AI-Headless-And-Performance","Headless-Delegation-And-Failover-Playbook"],"owner":"future-ai-hc-owner","updated":"2026-06-04T02:13:25+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"vote-help-wasp-ui-edge-cases","priority":"P3","status":"patch-ready-current-stable-b741-b742-unrescued-wasp-split-2026-06-23","category":["ui","vote","help","wasp","ux"],"summary":"Vote/help/main-menu UI cleanup is current-B74.1/B74.2 refreshed: docs/source HEAD@322ef95e is unchanged from 087152f5 and 68bd4dc5 for checked paths, and current stable/B74.1 origin/master@f8a76de34, B74.2 d472da6a, current B69 8d465fce, adjacent B74 b23f557f, Miksuu b8389e748243, perf 0076040f and historical a96fdda2 all keep inclusive vote loops, GUI_VoteMenu row-color [_i+1,0], help namespace mismatch and handler-only MenuAction 17/18 GPS zoom routes. WASP display-54 input-lock polling is tracked separately.","sourceRefs":["docs/developer-wiki-index@322ef95efc1d source-unchanged from 087152f5 and 68bd4dc5 for checked Chernarus/Vanilla vote/help/router paths; Init_Client.sqf:273; GUI_VoteMenu.sqf:29,49,61,80,82; GUI_Commander_VoteMenu.sqf:58; GUI_Menu.sqf:202,206; Rsc/Dialogs.hpp:1219,1226,3446-3447","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; Chernarus/Vanilla Init_Client.sqf:403,534; GUI_VoteMenu.sqf:29,49,61,80,82; GUI_Commander_VoteMenu.sqf:58; GUI_Menu.sqf:241,270,274; Rsc/Dialogs.hpp:1244,1252,3172-3173","origin/claude/b74.2-aicom@d472da6ae875 has no checked vote/help/router path delta versus origin/master","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla Init_Client.sqf:403,534; GUI_VoteMenu.sqf:29,49,61,80,82; GUI_Commander_VoteMenu.sqf:58; GUI_Menu.sqf:241,270,274; Rsc/Dialogs.hpp:1244,1252,3172-3173","git diff --name-status 0139a3468609..origin/master over checked vote/help/router paths returns only maintained-root Init_Client.sqf; origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked paths","current Miksuu b8389e748243 and origin/perf/quick-wins@0076040f keep the docs/FPS-HUD action-19 shape plus the same vote/help/router debt in both maintained roots","historical a96fdda2 keeps GPS action-19 shape plus the same vote/help/router debt with Chernarus/Vanilla line drift","git ls-remote --heads origin release/* feat/*vote* feat/*help* feat/*ui* feature/*vote* feature/*help* feature/*ui* *vote* *help* returned no heads on 2026-06-23","WASP-Marker-Wait-Cleanup.md owns the separate display-54 input-lock wait branch matrix"],"evidence":["git diff --name-status 0139a3468609..origin/master changes only maintained-root Init_Client.sqf among checked vote/help/router paths.","git diff --name-status origin/master..origin/claude/b74.2-aicom is empty for checked vote/help/router paths.","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend is empty for checked vote/help/router UI paths.","Fixed-string scans find MenuAction == 17/18 handlers but no MenuAction = 17/18 emitters in checked maintained roots for docs/source, current stable/B74.1, B74.2, B69 and Miksuu.","Current stable/B74.1/B74.2/B69/B74 visible MenuAction 19 is GPS enablement, not a rescue for old zoom handlers."],"implementationShape":["Change vote loops to count-1 or forEach and correct row-color writes to the intended candidate row.","Use one help dialog namespace key and either implement or remove the onUnload controller call.","Decide whether GPS zoom 17/18 should be removed/commented or deliberately reintroduced with controls.","Keep WASP marker wait and commander vote outcome policy on their dedicated routes unless a future owner explicitly widens the patch."],"validation":["Vote menu refresh does not read past WFBE_Client_Teams under empty/full slot states and row colors match candidates after vote changes.","Help menu opens/closes repeatedly without stale uiNamespace state.","Main menu HUD/FPS/GPS behavior is stable whether GPS 17/18 is removed or revived.","Commander vote outcome preview still matches the dedicated commander playbook policy.","Maintained Vanilla parity checked."],"wikiRefs":["Client-UI-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Player-UI-Workflow-Map","WASP-Marker-Wait-Cleanup"],"owner":"future-ui-owner","updated":"2026-06-23T16:40:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"spark-micro-factory-buy-authority-refund-2026-06-04","priority":"P2","status":"historical-docs-source-scout-superseded-by-branch-matrix","category":["factory","economy","authority","refunds","queue"],"summary":"June 4 docs/source scout remains useful for old-shape source: player factory purchases are client-local and docs/source did not refund the dead/null factory abort. Current branch matrix supersedes the universal no-refund claim: current stable/B74.1/B74.2/B69/B74 and historical a96fdda2 refund the real dead/null abort, while player purchase authority remains client-local.","sourceRefs":["repo docs branch HEAD@f9601c92e0a4 checked Chernarus/Vanilla GUI_Menu_BuyUnits.sqf and Client_BuildUnit.sqf paths unchanged from b8180bb319ed / cacd46f09163 / 4120137f / 8d611092","docs/source Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:154-156 spawns BuildUnit then debits _currentCost without passing it; Client_BuildUnit.sqf:211-214 cleans queue/counter on dead/null building without refund","HEAD and origin/claude/b74.2-aicom maintained-root grep found no RequestBuyUnit or RequestBuildUnit PVF path","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:163-165 passes/spawns/debits _currentCost; Client_BuildUnit.sqf:7 reads it and :276-280 refunds the dead/null abort","origin/claude/b74.2-aicom@21b62b04fee3 source Chernarus GUI_Menu_BuyUnits.sqf:169-171, maintained Vanilla :163-165, and both maintained roots Client_BuildUnit.sqf:276-280 refund the dead/null abort","checked d472da6a..21b62b04 is empty for the four maintained-root buy/build paths; origin/master..origin/claude/b74.2-aicom changes only source-Chernarus buy-menu AI-cap setup among checked paths","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable refund anchors for checked buy/build paths","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f keep dead/null no-refund cleanup at Client_BuildUnit.sqf:211-214 in both maintained roots; perf Chernarus crewless counter cleanup is separate"],"evidence":["Spark micro-scout A confirmed debit/refund/queue model using source Chernarus only and no generated mission scan."],"implementationShape":["Choose intended refund policy for destroyed/canceled factory builds.","If fixing, add atomic server acceptance or a single safe refund path resistant to disconnect/factory-damage timing.","Keep empty-vehicle group-cap behavior explicit when changing queue/cap code."],"validation":["Factory death during queued purchase does not lose funds unless intended and documented.","Buyer disconnect and normal queue completion do not double-refund or strand queue entries.","Crewed and empty vehicle purchases preserve intended group-cap behavior."],"wikiRefs":["Feature-Status-Register","Factory-And-Purchase-Systems-Atlas","Economy-Authority-First-Cut"],"owner":"future-factory-owner","updated":"2026-06-24T14:55:00+02:00","supersededBy":["factory-destroyed-purchase-refund-branch-route-2026-06-06","factory-buy-refund-current-b742-feature-status-refresh-2026-06-24"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"spark-micro-hc-registration-dedupe-2026-06-04","priority":"P2","status":"confirmed-micro-scout-2026-06-04","category":["ai","headless-client","delegation","idempotency"],"summary":"Headless-client registration appends group _hc to WFBE_HEADLESSCLIENTS_ID without a visible dedupe guard; any future retry/reconciliation fix should make registration idempotent first.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Headless/Init/Init_HC.sqf:15","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:117-128","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_OnPlayerDisconnected.sqf:22-28"],"evidence":["Spark micro-scout D confirmed HC registration, teardown and mode split paths."],"implementationShape":["Before adding retry for owner-id 0, check whether the HC group/UID is already registered and update/replace instead of blindly appending.","Add diagnostics for duplicate/stale HC candidate rows."],"validation":["Repeated connected-hc publication does not duplicate delegation candidates.","Delayed owner-id registration eventually succeeds or logs a clear unrecoverable state.","HC disconnect removes the expected candidate and leaves no duplicate stale rows."],"wikiRefs":["Feature-Status-Register","Headless-Delegation-And-Failover-Playbook","AI-Headless-And-Performance"],"owner":"future-ai-hc-owner","updated":"2026-06-04T02:47:27+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"spark-micro-vote-row-color-offset-2026-06-04","priority":"P3","status":"confirmed-micro-scout-2026-06-04","category":["ui","vote","correctness"],"summary":"Vote menu refresh has both inclusive team-loop edges and a likely row-color offset: GUI_VoteMenu scans rows then colors row [_i+1,0].","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_VoteMenu.sqf:29-30","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_VoteMenu.sqf:61-66","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_VoteMenu.sqf:74-83","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Commander_VoteMenu.sqf:58-63"],"evidence":["Spark micro-scout C traced visible vote controls and found the row-color offset in addition to the already documented inclusive loops."],"implementationShape":["Fix vote refresh loops with forEach or count-1 indexing.","Correct row-color writes so highlighted vote rows match candidate rows.","Smoke normal vote and commander vote with multiple player slots and changing vote totals."],"validation":["No out-of-range team selects under empty/full slot states.","Vote row colors match current vote leader/selection after repeated refreshes.","Commander vote reassignment still sends RequestNewCommander only from intended controls."],"wikiRefs":["Feature-Status-Register","Client-UI-Systems-Atlas","Player-UI-Workflow-Map"],"owner":"future-ui-owner","updated":"2026-06-04T02:47:27+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"stationary-defense-basearea-null-guard-2026-06-04","priority":"P2","status":"source-patched-smoke-pending","category":["construction","base-area","defenses","correctness"],"summary":"Construction_StationaryDefense formerly read _area getVariable \"weapons\" before checking whether the closest base-area lookup returned a non-null object. Source Chernarus and maintained Vanilla Takistan now default _availweapons to 0 and read base-area weapons only after !isNull _area; Arma smoke is still pending.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_StationaryDefense.sqf:12-15","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Construction/Construction_StationaryDefense.sqf:12-15","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_StationaryDefense.sqf:91-94","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_HQSite.sqf:54-58","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/PVFunctions/RequestBaseArea.sqf:1-4"],"evidence":["Spark construction scout found the original guard-order bug; Codex source-checked that current maintained source now assigns _availweapons = 0 before the guard and reads _area getVariable \"weapons\" only inside if (!isNull _area).","The same source shape is present in maintained Vanilla Takistan, so the server-side guard is propagated there.","This record does not close the client-side CoIn companion guard in coin-basearea-null-guard-pair-2026-06-04 or broader DR-6 construction authority migration."],"implementationShape":["Server-side Chernarus and maintained Vanilla Takistan guard-order patch is already applied.","Keep remaining client-side CoIn availability/decrement guard work in coin-basearea-null-guard-pair-2026-06-04.","Keep this local correctness patch separate from DR-6 construction request authority migration."],"validation":["Grouped-base defense placement with a valid base area still works and respects weapon/AI limits.","Defense placement without a valid/stale base-area logic does not throw RPT null-object errors.","Non-manned and minefield defense paths still work after the guard change."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","Server-Authority-Migration-Map"],"owner":"future-construction-owner","updated":"2026-06-04T23:28:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"requestspecial-upgrade-sync-argument-shape-2026-06-04","priority":"P3","status":"confirmed-mini-scout-2026-06-04","category":["requestspecial","upgrades","networking","correctness"],"summary":"The RequestSpecial upgrade-sync branch mixes _args and _this when reading side/id/level, making it fragile relative to the generic RequestSpecial payload shape.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:67-74"],"evidence":["Mini support scout found the branch; Codex source-checked that _side is _args select 1 while _upgrade_id and _upgrade_level are _this select 2/3."],"implementationShape":["Normalize the branch to a single payload source and document the accepted RequestSpecial argument tuple.","Keep this separate from RequestUpgrade authority migration unless the owner is doing a complete upgrade synchronization pass."],"validation":["Upgrade completion sync still flips the intended WFBE_upgrade_*_sync variable.","Malformed or short payloads fail safely without RPT select errors.","Normal player and AI commander upgrade flows still progress and notify clients."],"wikiRefs":["Support-Specials-And-Tactical-Modules-Atlas","Feature-Status-Register"],"owner":"future-networking-upgrade-owner","updated":"2026-06-04T04:32:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"construction-smallsite-logic-list-add-add-2026-06-04","priority":"P2","status":"confirmed-mini-scout-2026-06-04","category":["construction","coin","logic-list","correctness"],"summary":"Construction_SmallSite adds _nearLogic to wfbe_structures_logic at start and again after completion despite a comment saying it should remove the logic; Construction_MediumSite removes it in the same phase.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_SmallSite.sqf:70,98-99","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_MediumSite.sqf:70,113-114"],"evidence":["Mini factory/construction scout reported the asymmetry; Codex source-checked SmallSite add/add and MediumSite add/remove directly."],"implementationShape":["Change only the post-completion SmallSite update from append to remove in source Chernarus, then propagate maintained Vanilla if the same shape exists.","Keep separate from DR-6 construction authority and stationary-defense base-area null guard patches."],"validation":["Small and medium structure construction complete normally in construction mode 1.","Destroyed/repaired structures still restore intended repair logic behavior.","No stale logic entries accumulate in wfbe_structures_logic after repeated SmallSite construction."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Construction-Logic-List-Cleanup","Feature-Status-Register"],"owner":"future-construction-owner","updated":"2026-06-04T04:32:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"thin-registered-pvf-handler-authority-2026-06-04","priority":"P2","status":"confirmed-mini-scout-2026-06-04","category":["networking","pvf","server-authority","request-handlers"],"summary":"Beyond the headline PVF dispatcher and ICBM risks, thin registered handlers still accept high-impact client payloads for score, vehicle locks, team properties, auto-wall state and delegation-adjacent FPS/UID updates.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestChangeScore.sqf:3-13","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestVehicleLock.sqf:3-8","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestTeamUpdate.sqf:3-26","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestAutoWallConstructinChange.sqf:3-7","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:75-95"],"evidence":["Mini PV/security scout confirmed these handlers remain live authority surfaces after a future dispatcher allowlist.","Networking and Public-Variable-Channel-Index now call out the thinner handler class explicitly."],"implementationShape":["Treat dispatcher allowlisting as necessary but not sufficient.","Add requester/side/role/object/range/rate validation in each effect handler before accepting payload mutations.","Keep RequestJoin and server-derived kill helpers as reference patterns rather than broadening this finding to all PVFs."],"validation":["Forged score, vehicle-lock, team-update, auto-wall and update-clientfps payloads are rejected or ignored.","Valid commander/team UI paths still work after validation.","BattlEye PV filters are generated from both registered PVF and direct-channel inventories."],"wikiRefs":["Networking-And-Public-Variables","Public-Variable-Channel-Index","Feature-Status-Register","Server-Authority-Migration-Map"],"owner":"future-network-authority-owner","updated":"2026-06-04T05:05:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"coin-basearea-null-guard-pair-2026-06-04","priority":"P2","status":"partial-server-patched-client-source-unpatched","category":["construction","coin","base-area","correctness"],"summary":"The server-side Construction_StationaryDefense base-area null guard is now patched in source Chernarus and maintained Vanilla Takistan, but the client-side CoIn companion remains: coin_interface reads nearest base-area availability before proving the area object is valid.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_StationaryDefense.sqf:12-13","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_StationaryDefense.sqf:74-103","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/CoIn/coin_interface.sqf:721-730"],"evidence":["Server side now defaults _availweapons to 0 and reads _area getVariable \"weapons\" only behind !isNull _area in both maintained mission roots.","Client CoIn path still has the companion availability/decrement guard risk around coin_interface.sqf:721-730 and should be patched/smoked separately.","Construction atlas warns to patch/smoke server worker and client availability/decrement paths together when finishing the full guard pair."],"implementationShape":["Leave the server-side guard patch alone unless source changes regress it.","Add matching client-side CoIn guard/default behavior for stale or missing base-area logics.","Keep this correctness patch separate from DR-6 request authority hardening."],"validation":["Grouped-base defense placement works with valid base areas.","CoIn defense placement with stale/empty base-area lists does not throw RPT errors or miscount availability.","Non-base-area defense placement and minefield/fortification paths still work."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register"],"owner":"future-construction-owner","updated":"2026-06-04T23:28:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"salvage-loop-authority-2026-06-04","priority":"P2","status":"confirmed-current-stable-b741-b742-b69-b74-unpatched-salvage-branches-scoped-2026-06-23","category":["salvage","client-authority","cleanup","economy"],"summary":"Engineer salvage is client-led and has a suspect update-loop condition; payout and wreck deletion happen locally rather than through a server-owned reward/effect path. Docs branch 795cdbbf0, current stable/B74.1 f8a76de34, B74.2 d472da6a, current B69/B74, current Miksuu, perf and historical a96fdda2 all keep this shape. W10 Man-filter and Trello #15 interlock branches do not close payout, truck-loop or server-authority debt.","sourceRefs":["docs/developer-wiki-index@795cdbbf0 Chernarus/Vanilla manual/truck salvage paths: Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,50; Init_Client.sqf:53,91; Client_BuildUnit.sqf:267","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,51; Init_Client.sqf:97,135; source Chernarus Client_BuildUnit.sqf:388; maintained Vanilla Client_BuildUnit.sqf:343","origin/claude/b74.2-aicom@d472da6a has no checked manual/truck salvage delta versus origin/master@f8a76de34; current stable line anchors still apply","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f keep the same payout/loop/local-authority shape in both maintained roots; checked B69..B74 salvage path deltas are empty","origin/claude/trello-salvage-truck-interlock@9e75c736e is one commit on current stable; it changes Skill_Apply.sqf, Skill_Salvage.sqf and stringtable.xml in both maintained roots, adds manual-salvage friendly-truck interlock at Skill_Apply.sqf:35 and Skill_Salvage.sqf:5,11-12, but still keeps lowercase ChangePlayerfunds at Skill_Salvage.sqf:45 and updatesalvage.sqf:51","origin/claude/salvage-w10-manfilter@2e0242b3 has merge-base 8fac20df and changes only Server/Functions/AI_Commander_Wildcard.sqf in both maintained roots, adding !(_wk isKindOf \"Man\") to W10 at :794; it still keeps the manual/truck payout mismatch","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep the docs/source salvage line shape in both maintained roots","historical a96fdda2 keeps lowercase ChangePlayerfunds at Skill_Salvage.sqf:38 and updatesalvage.sqf:50 with Init_Client.sqf:53,91 and Client_BuildUnit.sqf:270 in both maintained roots","current origin exposes no live release/* or feat/*salvage* heads on 2026-06-23 beyond claude salvage branches; Miksuu historical EngineerSalvageAbility@99bfaeb8 and SalvageRuTranslationFix@291c6cb4 remain inherited feature-debt evidence"],"evidence":["Construction mini scout traced salvage as a related construction/repair economy edge; branch checks confirmed no checked current-stable/B74 path fixes local delete/reward authority or loop shape.","2026-06-23 refresh confirmed current stable/B74.1 and B74.2 still keep the manual/truck salvage payout/loop/local authority shape in source Chernarus and maintained Vanilla.","origin/claude/salvage-w10-manfilter is branch-only W10 evidence; origin/claude/trello-salvage-truck-interlock is branch-only manual-salvage UX/interlock evidence. Neither closes the manual/truck authority lane."],"implementationShape":["Review whether the loop condition should be AND-shaped or have a clearer exit condition.","Move final wreck deletion and cash reward to a server-validated request if salvage rewards are expanded.","Smoke normal salvage, vehicle destroyed mid-salvage and disconnect/cancel behavior."],"validation":["Salvage loop exits predictably after completion/cancel/dead vehicle/game over.","Valid engineer salvage pays once and deletes the intended wreck once.","Forged/non-engineer/local-only salvage cannot grant funds or delete arbitrary vehicles."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-salvage-owner","updated":"2026-06-23T16:56:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"discord-extension-database-contract-drift-2026-06-04","priority":"P2","status":"confirmed-mini-scout-2026-06-04","category":["integrations","discordbot","extension","database-json","contract"],"summary":"Mission, in-repo extension and DiscordBot do not share one pinned database.json/exportedArgs contract: SQF sends six fields, extension DTO starts with two slots, and DiscordBot allocates four while later checking index 4.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/CallExtensions/GlobalGameStats.sqf:22","Extension/src/GameData.cs:29","DiscordBot/src/ExtensionData/GameData/GameData.cs:30","External-Integrations.md#databasejson-contract-drift"],"evidence":["Tools/ops mini scout found the shape mismatch while mapping DiscordBot/Extension runtime.","External Integrations now owns the contract-drift note alongside the existing TypeNameHandling and async-write risks."],"implementationShape":["Define the expected database.json/exportedArgs field count once and share it between writer and reader.","Add fixture tests for normal, short, long and corrupt arrays.","Keep TypeNameHandling.None hardening as the first security fix, but do not ignore shape drift during integration cleanup."],"validation":["Mission extension writes the expected fields in order.","DiscordBot displays status correctly from a normal fixture and handles short/long arrays without index surprises.","Extension writer and DiscordBot reader contract tests fail on incompatible shape changes."],"wikiRefs":["External-Integrations","Integration-Trust-Boundary-Audit","Server-Ops-Runbook","Tools-And-Build-Workflow"],"owner":"future-integration-owner","updated":"2026-06-04T05:05:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"main-menu-gps-orphan-actions-2026-06-04","priority":"P3","status":"docs-ready-current-stable-b741-b742-handler-only-refreshed-2026-06-23","category":["ui","main-menu","dormant-actions","dead-code"],"summary":"GUI_Menu.sqf still handles MenuAction 17/18 for GPS zoom in maintained roots, but current fixed-string scans find no MenuAction = 17/18 emitters. Docs/source, Miksuu and perf use visible action 19 for FPS HUD, while current stable/B74.1, B74.2, B69, B74 and historical release use visible action 19 for GPS enablement; none rescue the handler-only 17/18 zoom cases.","sourceRefs":["docs/developer-wiki-index@322ef95efc1d Chernarus/Vanilla GUI_Menu.sqf:202,206; Rsc/Dialogs.hpp:1219,1226","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla GUI_Menu.sqf:241,270,274; Rsc/Dialogs.hpp:1244,1252","origin/claude/b74.2-aicom@d472da6ae875 has no checked vote/help/router path delta versus origin/master","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla GUI_Menu.sqf:241,270,274; Rsc/Dialogs.hpp:1244,1252","current Miksuu b8389e748243 and origin/perf/quick-wins@0076040f Chernarus/Vanilla GUI_Menu.sqf:197,202,206; Rsc/Dialogs.hpp:1220,1227","historical a96fdda2 Chernarus GUI_Menu.sqf:214,243,247; Vanilla GUI_Menu.sqf:214,235,239; Rsc/Dialogs.hpp:1231,1239","git ls-remote --heads origin release/* feat/*vote* feat/*help* feat/*ui* feature/*vote* feature/*help* feature/*ui* *vote* *help* returned no heads on 2026-06-23"],"evidence":["Fixed-string scans over checked maintained roots found MenuAction == 17/18 handlers only, not MenuAction = 17/18 emitters.","0139a3468609..origin/master only changes Init_Client.sqf among checked vote/help/router paths, and origin/master..origin/claude/b74.2-aicom is empty for those paths.","Current stable/B74.1/B74.2/B69/B74 action 19 is GPS enablement; docs/Miksuu/perf action 19 is FPS HUD; neither is a 17/18 zoom control."],"implementationShape":["Either remove/comment the dormant GPS router cases across maintained roots or add intentional controls if GPS zoom should return.","Keep separate from stale RscMenu_Upgrade, command SetTask and Economy missing-control fixes that already have owner docs."],"validation":["Main menu actions still open expected menus and HUD toggles.","If GPS controls are revived, zoom in/out works on Arma 2 OA UI without overlapping existing action ids.","If removed, no live control references MenuAction 17/18."],"wikiRefs":["Client-UI-Systems-Atlas","Feature-Status-Register","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","updated":"2026-06-23T16:40:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"commander-vote-ai-no-commander-outcome-mismatch-2026-06-04","priority":"P2","status":"current-stable-b741-b742-b69-b74-server-fix-source-present-ui-preview-smoke-pending","category":["commander","vote","ai-commander","ui","correctness","branch-status"],"summary":"Current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, B74.2 origin/claude/b74.2-aicom@d472da6a, current B69 and adjacent B74 fix the old commander vote server tautology in both maintained roots: player assignment now requires _highest >= _aiVotes. GUI_VoteMenu still previews AI/no commander using row-0/strict-majority logic, and older checked refs still keep >= OR <=.","sourceRefs":["origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; Chernarus/Vanilla Server_VoteForCommander.sqf:18,26-27,43,54,57 fixed server comparison and vote broadcast anchors","origin/claude/b74.2-aicom@d472da6ae875 has no checked vote/reassignment path delta over origin/master for maintained-root Server_VoteForCommander.sqf, GUI_VoteMenu.sqf, RequestNewCommander.sqf, Server_AssignNewCommander.sqf or GUI_Commander_VoteMenu.sqf","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla Server_VoteForCommander.sqf:18,26-27,43,54,57 match current stable/B74.1 vote comparison","current stable/B74.1/B74.2/B69/B74 Chernarus/Vanilla GUI_VoteMenu.sqf:42,88 still uses row-0/strict-majority preview logic","git diff --name-status 0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked vote worker/preview/reassignment paths","docs/source HEAD@e0d82714b0f6, Miksuu b8389e748243, origin/perf/quick-wins@0076040f, historical a96fdda2 and historical c20ce153 keep old Server_VoteForCommander.sqf:43 >= OR <= comparison"],"evidence":["Current stable/B74.1/B74.2/B69/B74 server comparison is no longer tautological: _highest >= _aiVotes lets AI/no-commander beat a player candidate when AI/no-commander votes are greater than the top player count.","Checked diffs 0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for vote worker/preview/reassignment paths.","Client preview still presents AI/no commander when row 0 wins or no option has more than half the counted player voters, so UI and server policy can still disagree.","Old checked refs still carry (_highest >= _aiVotes) OR (_highest <= _aiVotes)."],"implementationShape":["Smoke and document the intended current-stable/B74.1/B74.2/B69/B74 semantics: player wins on _highest >= _aiVotes, AI/no-commander wins only when _aiVotes is greater, and ties stay blocked by _tie.","Align GUI_VoteMenu.sqf preview to the accepted server rule or record a different owner policy before changing code again.","Keep this separate from DR-15 manual reassignment call shape, RequestCommanderVote trigger hardening and broader commander-authority migration."],"validation":["Player-majority vote assigns player commander.","No-commander/AI-majority vote produces intended objNull or AI outcome.","Equal vote and player-candidate tie outcomes match documented rules.","Late join and RequestCommanderVote restart still show/resolve the same outcome client/server."],"wikiRefs":["Feature-Status-Register","Commander-Vote-And-Reassignment-Playbook","Commander-HQ-Lifecycle-Atlas","Deep-Review-Findings","Pending-Owner-Decisions","Hardening-Implementation-Roadmap","Server-Authority-Migration-Map","Development-Lessons-Learned"],"owner":"future-commander-owner","updated":"2026-06-23T19:04:47+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"discordbot-presence-timeout-2026-06-04","priority":"P3","status":"confirmed-mini-scout-2026-06-04","category":["discordbot","integration","ops","timeout","release-readiness"],"summary":"GameStatusUpdater creates a timeout scope for bot presence updates, but client.SetGameAsync does not receive the cancellation token, so presence updates are still effectively uncapped.","sourceRefs":["DiscordBot/src/GameStatusUpdater.cs:91-106"],"evidence":["The channel rename passes RequestOptions with CancelToken to ModifyAsync; SetGameAsync sits in a CancellationTokenSource block but receives no token."],"implementationShape":["Wrap SetGameAsync with a real timeout/fallback supported by the Discord client API or isolate it from the status loop so channel/message updates continue.","Add logging that distinguishes channel rename timeout from presence update timeout."],"validation":["Simulated slow/failing Discord presence update cannot stall the status updater indefinitely.","Channel name and status embed still update normally when presence update fails or times out."],"wikiRefs":["External-Integrations","Tooling-Release-Readiness-Audit"],"owner":"future-integration-owner","updated":"2026-06-04T06:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"salvage-payout-function-casing-2026-06-04","priority":"P2","status":"confirmed-current-stable-b741-b742-b69-b74-unpatched-salvage-branches-scoped-2026-06-23","category":["salvage","economy","client-authority","correctness"],"summary":"The two active manual/truck salvage payout paths call ChangePlayerfunds, but client init compiles ChangePlayerFunds. Docs branch 795cdbbf0, current stable/B74.1 f8a76de34, B74.2 d472da6a, current B69/B74, current Miksuu, perf, historical a96fdda2 and live salvage branches all keep this mismatch in both maintained roots. The live salvage branches only change W10 filtering or manual-salvage interlock behavior.","sourceRefs":["docs/developer-wiki-index@795cdbbf0 Chernarus/Vanilla manual/truck salvage paths: Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,50; Init_Client.sqf:53,91; Client_BuildUnit.sqf:267","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,51; Init_Client.sqf:97,135; source Chernarus Client_BuildUnit.sqf:388; maintained Vanilla Client_BuildUnit.sqf:343","origin/claude/b74.2-aicom@d472da6a has no checked manual/truck salvage delta versus origin/master@f8a76de34; current stable line anchors still apply","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f keep the same payout/loop/local-authority shape in both maintained roots; checked B69..B74 salvage path deltas are empty","origin/claude/trello-salvage-truck-interlock@9e75c736e is one commit on current stable; it changes Skill_Apply.sqf, Skill_Salvage.sqf and stringtable.xml in both maintained roots, adds manual-salvage friendly-truck interlock at Skill_Apply.sqf:35 and Skill_Salvage.sqf:5,11-12, but still keeps lowercase ChangePlayerfunds at Skill_Salvage.sqf:45 and updatesalvage.sqf:51","origin/claude/salvage-w10-manfilter@2e0242b3 has merge-base 8fac20df and changes only Server/Functions/AI_Commander_Wildcard.sqf in both maintained roots, adding !(_wk isKindOf \"Man\") to W10 at :794; it still keeps the manual/truck payout mismatch","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep the docs/source salvage line shape in both maintained roots","historical a96fdda2 keeps lowercase ChangePlayerfunds at Skill_Salvage.sqf:38 and updatesalvage.sqf:50 with Init_Client.sqf:53,91 and Client_BuildUnit.sqf:270 in both maintained roots","current origin exposes no live release/* or feat/*salvage* heads on 2026-06-23 beyond claude salvage branches; Miksuu historical EngineerSalvageAbility@99bfaeb8 and SalvageRuTranslationFix@291c6cb4 remain inherited feature-debt evidence"],"evidence":["Factory/economy mini scout found lowercase ChangePlayerfunds in both manual skill and salvage-vehicle loop payout paths; branch checks confirmed no checked current-stable/B74 path fixes the casing mismatch.","2026-06-23 refresh confirmed current stable/B74.1, B74.2, origin/claude/salvage-w10-manfilter and origin/claude/trello-salvage-truck-interlock still keep the mismatch in source Chernarus and maintained Vanilla."],"implementationShape":["Patch casing in source Chernarus first, then propagate maintained Vanilla if the same shape exists.","Keep this as a small correctness fix before or alongside the larger server-authority rewrite.","After the typo fix, revisit whether final wreck deletion and cash award should move server-side."],"validation":["Engineer/manual salvage pays once with no undefined-variable/function RPT error.","Salvage vehicle loop pays once for valid wrecks with no undefined-variable/function RPT error.","Vanilla Takistan carries the same fix after propagation.","Forged/non-engineer/local-only salvage remains a separate authority hardening target."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-salvage-owner","updated":"2026-06-23T16:56:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"discordbot-config-source-precedence-2026-06-04","priority":"P3","status":"confirmed-mini-scout-2026-06-04","category":["discordbot","ops","configuration","release-readiness"],"summary":"DiscordBot has multiple config helpers, but the active status reader loads database.json from Preferences.Instance.DataSourcePath or C:\\a2waspwarfare\\Data. FileConfiguration.cs also exposes botconfig.json/custom data path logic, creating operator confusion until one config source is chosen.","sourceRefs":["DiscordBot/src/ExtensionData/GameData/GameData.cs:36-37","DiscordBot/src/Preferences.cs:16-25","DiscordBot/FileConfiguration.cs:9-42","DiscordBot/preferences_sample.json:2-9"],"evidence":["Integrations/ops mini scout traced active GameData.LoadFromFile to Preferences and found FileConfiguration as a secondary helper rather than the active status-reader path."],"implementationShape":["Pick one data-path source of truth for DiscordBot status data.","Update samples and docs after the code decision; replace concrete sample IDs with placeholders.","Keep token.txt/preferences.json ignored and do not commit live secrets."],"validation":["Missing token, missing preferences and missing database.json produce predictable startup/status logs.","Bot uses the documented data path consistently after restart.","Operator runbook and sample config match the actual code path."],"wikiRefs":["Server-Ops-Runbook","Tools-And-Build-Workflow","Feature-Status-Register","Tooling-Release-Readiness-Audit"],"owner":"future-integration-owner","updated":"2026-06-04T06:30:00+02:00"} {"schema":"a2waspwarfare-hardening-backlog-v1","id":"mini-depth2-basearea-server-seeding-and-null-guards","priority":"P1","status":"partial-server-stationary-guard-patched","area":"construction-basearea","summary":"Server grouped-base list still appears not explicitly seeded after HQ deploy; client CoIn sale/placement still read base-area variables before null guards. The server Construction_StationaryDefense weapons read is now patched in source Chernarus and maintained Vanilla Takistan and should not be re-opened from this aggregate record unless source regresses.","evidence":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Init/Init_Server.sqf:380 initializes wfbe_basearea to [] when grouped base areas are enabled.","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_HQSite.sqf:50-58 creates the HQ base-area logic and sends RequestBaseArea to clients, while the older direct server avail/side/list append remains commented.","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/FSM/basearea.sqf:55-77 prunes existing server-side base-area entries but does not seed the list.","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/CoIn/coin_interface.sqf:256-263 reads _area getVariable \"avail\" before the sale-path null guard.","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Module/CoIn/coin_interface.sqf:721-730 reads _area getVariable \"avail\" before the placement/decrement null guard.","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Construction/Construction_StationaryDefense.sqf:12-15 now defaults _availweapons to 0 and reads weapons only behind !isNull _area.","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Construction/Construction_StationaryDefense.sqf:12-15 has the same server-side guard patch."],"wiki":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","agent-hardening-backlog.jsonl","agent-feature-status.jsonl"],"validation":["grouped-base mode on/off","HQ deploy/mobilize","defense placement with valid/stale/missing base-area lists","commander defense sale/refund","dedicated/JIP client base-area visibility","Arma smoke for server stationary-defense guard still pending"],"next":"Patch/smoke server base-area seeding and client CoIn sale/placement null guards. Do not reopen the server Construction_StationaryDefense weapons-read guard unless source regresses.","owner":"future-construction-owner","updated":"2026-06-04T23:40:22+02:00","wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register"]} {"schema":"a2waspwarfare-hardening-backlog-v1","id":"mini-depth2-supply-completion-reward-authority","priority":"P1","area":"supply-economy-authority","summary":"Supply completion personal funds/score remain client-side effects of a server broadcast; harden before expanding supply/cash-run rewards.","evidence":["supplyMissionCompleted.sqf:24-34","supplyMissionCompletedMessage.sqf:11-23"],"wiki":["Supply-Mission-Architecture","Public-Variable-Channel-Index"],"validation":["valid delivery reward","forged/stale completion message rejected or harmless","late join/no duplicate reward","truck reuse after completion"],"wikiRefs":["Supply-Mission-Architecture","Public-Variable-Channel-Index"]} {"schema":"a2waspwarfare-hardening-backlog-v1","id":"mini-depth2-respawn-handleat-duplicate-eh","priority":"P2","area":"respawn-actions","summary":"Init and pre-respawn paths can add duplicate HandleAT Fired handlers to vehicle player, especially if the vehicle persists across death/respawn.","evidence":["Init_Client.sqf:18,266","Client_PreRespawnHandler.sqf:13"],"wiki":["Respawn-And-Death-Lifecycle-Atlas"],"validation":["infantry respawn","death in persistent vehicle","AT fired once after multiple respawns","ordinary HandleRocketTraccer behavior preserved"],"wikiRefs":["Respawn-And-Death-Lifecycle-Atlas"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"discordbot-preferences-json-preflight-2026-06-04","priority":"P3","status":"confirmed-spark-scout-2026-06-04","category":["discordbot","ops","configuration","release-readiness"],"summary":"DiscordBot Preferences.Instance reads and deserializes preferences.json without catch/guard and suppresses a possible null return; later command/status paths assume a non-null preferences instance.","sourceRefs":["DiscordBot/src/Preferences.cs:24-30","DiscordBot/src/GameStatusUpdater.cs:60-61","DiscordBot/src/CommandHandler.cs:49,127","DiscordBot/src/ProgramRuntime.cs:15,63-70"],"evidence":["Tiny runtime/ops scout A traced the missing/malformed/null preferences path and Codex source-checked the unguarded read plus downstream non-null usage."],"implementationShape":["Add startup preflight validation for missing, malformed or JSON-null preferences.json before installing Discord event handlers and schedulers.","Return/log a clear operator error instead of continuing with a nullable singleton.","Keep token.txt/preferences.json ignored and avoid committing live IDs or secrets."],"validation":["Missing preferences.json produces a predictable fail-fast message.","Malformed preferences.json and literal JSON null do not produce later NullReference failures in /setup, /cleanup or status timer paths.","Valid preferences.json still registers commands and starts status updates."],"wikiRefs":["External-Integrations","Server-Ops-Runbook","Feature-Status-Register","Tooling-Release-Readiness-Audit"],"owner":"future-integration-owner","updated":"2026-06-04T09:10:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"discordbot-presence-timeout-command-path-2026-06-04","priority":"P3","status":"confirmed-spark-scout-2026-06-04","category":["discordbot","integration","ops","timeout","release-readiness"],"summary":"The previously documented uncapped presence update also exists in the /setup command path: CommandHandler calls SetGameAsync directly, separate from the 60-second timer path in GameStatusUpdater.","sourceRefs":["DiscordBot/src/GameStatusUpdater.cs:91-106","DiscordBot/src/CommandHandler.cs:70-75"],"evidence":["Earlier docs captured the timer SetGameAsync call inside a timeout-looking scope without passing the token; tiny runtime/ops scout A found the same direct SetGameAsync shape in /setup."],"implementationShape":["Wrap both timer and /setup presence updates with a real timeout/fallback supported by Discord.Net, or isolate failed presence updates from channel/message updates.","Log timer and command presence-update failures distinctly."],"validation":["Slow/failing presence update cannot stall the status timer indefinitely.","/setup still responds predictably if presence update fails after channel rename/status-message creation.","Channel name and status embed continue working when presence update is skipped or times out."],"wikiRefs":["External-Integrations","Tooling-Release-Readiness-Audit","Server-Ops-Runbook"],"supersedes":["discordbot-presence-timeout-2026-06-04"],"owner":"future-integration-owner","updated":"2026-06-04T09:10:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"factory-buy-acceptance-rollback-contract-2026-06-04","priority":"P1","status":"branch-split-refund-present-on-current-b74-shaped-player-authority-open","category":["factory","economy","authority","refunds","queue"],"summary":"Player factory buys remain client-local and still need a server-side request/acceptance/rollback design before exploit-sensitive expansion. The destroyed-factory dead/null refund itself is branch-split: current stable/B74.1/B74.2/B69/B74 and historical a96fdda2 refund it, while docs/source/Miksuu/perf/historical QoL remain old-shape no-refund.","sourceRefs":["repo docs branch HEAD@f9601c92e0a4 checked Chernarus/Vanilla GUI_Menu_BuyUnits.sqf and Client_BuildUnit.sqf paths unchanged from b8180bb319ed / cacd46f09163 / 4120137f / 8d611092","docs/source Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:154-156 spawns BuildUnit then debits _currentCost without passing it; Client_BuildUnit.sqf:211-214 cleans queue/counter on dead/null building without refund","HEAD and origin/claude/b74.2-aicom maintained-root grep found no RequestBuyUnit or RequestBuildUnit PVF path","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:163-165 passes/spawns/debits _currentCost; Client_BuildUnit.sqf:7 reads it and :276-280 refunds the dead/null abort","origin/claude/b74.2-aicom@21b62b04fee3 source Chernarus GUI_Menu_BuyUnits.sqf:169-171, maintained Vanilla :163-165, and both maintained roots Client_BuildUnit.sqf:276-280 refund the dead/null abort","checked d472da6a..21b62b04 is empty for the four maintained-root buy/build paths; origin/master..origin/claude/b74.2-aicom changes only source-Chernarus buy-menu AI-cap setup among checked paths","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable refund anchors for checked buy/build paths","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f keep dead/null no-refund cleanup at Client_BuildUnit.sqf:211-214 in both maintained roots; perf Chernarus crewless counter cleanup is separate"],"implementationShape":["Decide request/acceptance/rollback semantics before adding expensive factory features.","Commit debit only after build acceptance or refund every post-queue abort path through one source-of-truth helper.","Keep empty-vehicle queue fix separate but test with the same factory-death/buyer-disconnect matrix."],"validation":["normal infantry buy","crewless vehicle buy repeated","factory destroyed during build wait","buyer disconnect/menu close","queue hint and local counter recovery"],"wikiRefs":["Economy-Authority-First-Cut","Factory-And-Purchase-Systems-Atlas","Feature-Status-Register"],"owner":"future-factory-authority-owner","updated":"2026-06-24T14:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"loadoutmanager-destination-sync-blast-radius-2026-06-04","priority":"P2","status":"confirmed-spark-tooling-scout-2026-06-04","category":["tooling","generated-missions","release-readiness","data-loss-risk"],"summary":"LoadoutManager deletes destination files/directories that do not exist in the source copy, so manual destination-only edits or assets in generated mission trees can be removed during propagation.","sourceRefs":["Tools/LoadoutManager/FileManagement/FileManager.cs:116-119","Tools/LoadoutManager/FileManagement/FileManager.cs:123-136"],"implementationShape":["Treat generated mission trees as disposable outputs.","Snapshot generated targets before risky propagation runs.","Move durable assets/edits into the source tree or generator rather than hand-editing generated targets."],"validation":["dry-run or preflight lists destination-only deletions before destructive sync","manual generated-target asset is either preserved by source ownership or explicitly reported for deletion","release checklist records source/Vanilla scope before packaging"],"wikiRefs":["Tools-And-Build-Workflow","Server-Ops-Runbook"],"owner":"future-tooling-owner","updated":"2026-06-04T09:35:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"supply-completion-playerobject-rescan-2026-06-04","priority":"P2","status":"confirmed-spark-economy-scout-2026-06-04","category":["supply","jip","reconnect","correctness"],"summary":"The live supply completion loop can retain a previously matched _playerObject because it initializes from payload and rewrites on proximity/driver matches but does not reset to objNull before each loop/row scan.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionStarted.sqf:3-6","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionStarted.sqf:39-53","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionStarted.sqf:61-65"],"implementationShape":["Reset the candidate player object before each proximity/driver scan.","Keep driver fallback and nearby-player fallback explicit.","Pair with WFBE_SE_PLAYERLIST disconnect-pruning smoke."],"validation":["normal supply truck completion","player moves away before command-center arrival","same UID reconnect during active mission","driver-only completion","nearby-player completion"],"wikiRefs":["Supply-Mission-Architecture","Feature-Status-Register"],"owner":"future-supply-owner","updated":"2026-06-04T10:30:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"loadoutmanager-soft-copy-failure-2026-06-04","priority":"P2","status":"confirmed-spark-tooling-scout-2026-06-04","category":["tooling","release-readiness","generated-missions"],"summary":"LoadoutManager catches IOException during individual file copy, prints an error, and continues, so a run can finish with partial copy failures hidden in console output.","sourceRefs":["Tools/LoadoutManager/FileManagement/FileManager.cs:72-83"],"implementationShape":["Collect copy errors and fail the run or emit a final non-zero/summary status for release mode.","Keep propagation-only workflows able to inspect failures clearly.","Document console-log review until code is hardened."],"validation":["simulate locked/unreadable source file","run reports copy failure at the end","release packaging does not proceed as success after copy failure","normal copy still succeeds"],"wikiRefs":["Tools-And-Build-Workflow","Feature-Status-Register"],"owner":"future-tooling-owner","updated":"2026-06-04T10:30:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"integration-runtime-footguns-discord-extension-2026-06-04","priority":"P3","status":"confirmed-spark-tooling-scout-2026-06-04","category":["discordbot","extension","ops","release-readiness"],"summary":"DiscordBot lacks method-level graceful cancellation in ProgramRuntime, /cleanup deletes status embeds by broad title/description heuristic, and the in-repo extension parser assumes at least one parsed argument.","sourceRefs":["DiscordBot/src/ProgramRuntime.cs:59-60","DiscordBot/src/CommandHandler.cs:138-148","Extension/src/ExtensionMethods.cs:18-21"],"implementationShape":["Add a cancellation token/shutdown path around the bot run loop.","Use stored message ids or narrower cleanup markers for Discord status cleanup.","Validate callExtension argument count before indexing splitArgsArray[0]."],"validation":["process manager stop triggers graceful shutdown path","/cleanup does not remove unrelated bot embeds in a mixed channel","empty/malformed callExtension input returns/logs a structured error"],"wikiRefs":["External-Integrations","Feature-Status-Register"],"owner":"future-integration-owner","updated":"2026-06-04T10:30:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"commander-vote-reassignment-playbook-2026-06-04","priority":"P2","status":"playbook-published-current-stable-b741-b742-b69-b74-vote-source-present","category":["commander","vote","ui","pvf","correctness","branch-status"],"summary":"Use Commander-Vote-And-Reassignment for the remaining current-stable/B74.1/B74.2/B69/B74 vote smoke/policy work: server vote comparison is source-present on origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, origin/claude/b74.2-aicom@d472da6a, origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f, while GUI vote preview, reassignment UI target identity, duplicate reassignment notifications and requester authority remain open.","sourceRefs":["origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; Chernarus/Vanilla Server_VoteForCommander.sqf:18,26-27,43,54,57 fixed server comparison and vote broadcast anchors","origin/claude/b74.2-aicom@d472da6ae875 has no checked vote/reassignment path delta over origin/master for maintained-root Server_VoteForCommander.sqf, GUI_VoteMenu.sqf, RequestNewCommander.sqf, Server_AssignNewCommander.sqf or GUI_Commander_VoteMenu.sqf","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla Server_VoteForCommander.sqf:18,26-27,43,54,57 match current stable/B74.1 vote comparison","current stable/B74.1/B74.2/B69/B74 Chernarus/Vanilla GUI_VoteMenu.sqf:42,88 still uses row-0/strict-majority preview logic","git diff --name-status 0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked vote worker/preview/reassignment paths","docs/source HEAD@e0d82714b0f6, Miksuu b8389e748243, origin/perf/quick-wins@0076040f, historical a96fdda2 and historical c20ce153 keep old Server_VoteForCommander.sqf:43 >= OR <= comparison","current stable/B74.1/B74.2/B69/B74 Chernarus GUI_Commander_VoteMenu.sqf:13,33,46,63 visible-name reassignment selector with stored row values","current stable/B74.1/B74.2/B69/B74 Chernarus RequestNewCommander.sqf:12-14 and Server_AssignNewCommander.sqf:4-5,10 duplicate notification-owner risk"],"implementationShape":["Smoke and document current server no-commander/tie semantics before changing code again.","Align GUI_VoteMenu preview to the chosen rule.","Use row value/team identity in GUI_Commander_VoteMenu.","Choose exactly one new-commander-assigned notification owner.","Propagate maintained Vanilla after any further source patch."],"validation":["player-majority vote","no-commander-majority vote","equal vote and player-candidate tie","vote restart after timeout","manual reassignment to intended side","duplicate/similar leader names","one reassignment message","JIP after vote/reassign","Vanilla parity"],"wikiRefs":["Commander-Vote-And-Reassignment-Playbook","Commander-Reassignment-Call-Shape","Feature-Status-Register","Testing-Debugging-And-Release-Workflow"],"owner":"future-commander-owner","updated":"2026-06-23T19:04:47+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"camp-flag-texture-drift-2026-06-04","priority":"P3","status":"branch-split-current-stable-capture-fixed-repair-open","category":["towns","camps","ui-world-state","correctness"],"summary":"Camp flag texture drift is branch-split. Docs branch 28a7d9c5 and Miksuu b8389e74 still set independent camp-capture flag texture from old owner; perf/quick-wins 0076040f fixes Chernarus only; current stable origin/master@0139a346, historical a96fdda2, current B69 origin/claude/b69@8d465fce and naval HVT 2e1c5931 fix independent capture in both maintained roots. B69 camp flag/repair paths are unchanged from 0a1ccb4d. Camp repair can still change sideID without refreshing flag visuals everywhere checked.","sourceRefs":["docs/developer-wiki-index@28a7d9c5 Chernarus/Vanilla server_town_camp.sqf:132,135 old-side flag; Server_HandleSpecial.sqf:165,168 repair side/broadcast without flag refresh","origin/master@0139a346 Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; Server_HandleSpecial.sqf:468,471 repair side/broadcast without flag refresh","Miksuu master@b8389e74 Chernarus/Vanilla server_town_camp.sqf:88-89 old-side flag; Server_HandleSpecial.sqf:263,266 repair open","origin/perf/quick-wins@0076040f Chernarus server_town_camp.sqf:135 uses str _newSide while Vanilla still uses str _side; Server_HandleSpecial.sqf:243,246 repair open","historical release commit a96fdda2 Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; Server_HandleSpecial.sqf:263,266 repair open","origin/claude/b69@8d465fce Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; repair open at Chernarus Server_HandleSpecial.sqf:491,494 and Vanilla :468,471; checked camp flag/repair paths unchanged from 0a1ccb4d","origin/feat/naval-hvt-objectives@2e1c5931 Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; repair open at Chernarus Server_HandleSpecial.sqf:477,480 and Vanilla :467,470","current origin exposes no release/*, feat/*camp* or feat/*town* heads on 2026-06-22"],"implementationShape":["Preserve current-stable/release/B69/naval independent camp-capture flag fix when merging.","Patch old-owner independent-capture lines where those branches remain targets.","When repair-camp changes sideID, also refresh the camp flag texture or call a shared camp-visual helper.","Keep marker PVF behavior unchanged unless explicitly changing marker semantics."],"validation":["independent camp capture updates marker and 3D flag to new side","repairing a destroyed camp with side change updates bunker, marker and 3D flag","JIP sees camp side/marker/flag consistently after repair"],"wikiRefs":["Towns-Camps-And-Capture-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-town-capture-owner","updated":"2026-06-22T17:36:19+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"resistance-patrol-active-latch-2026-06-04","priority":"P3","status":"historical-superseded-by-patrols-v2-current-master","category":["ai","towns","patrol","lifecycle"],"summary":"Historical 89ae9dad-era backlog row: the old town-based resistance patrol worker could stay active-latched after death. Current origin/master@0139a346 supersedes this path with Patrols v2, maintained-root && parity, side-slot bookkeeping, marker publication and level-4 convoy/camp-sweep hooks.","sourceRefs":["historical origin/master/local master/Miksuu 89ae9dad server_town_ai.sqf:295-298","historical origin/master/local master/Miksuu 89ae9dad server_patrols.sqf:26,71-72","current origin/master@0139a346 source/Vanilla server_town_ai.sqf:72,327 retires old town patrol gating","current origin/master@0139a346 source/Vanilla server_side_patrols.sqf:12,19,48,67,72 and Common_RunSidePatrol.sqf:54,82,119,245,264 are the live route","current origin/master@0139a346 source/Vanilla server_patrols.sqf:31 uses &&"],"implementationShape":["No current-master patch from this row; use only for older branches still using the old server_town_ai patrol launch.","For current master, collect Patrols v2 smoke evidence before release-complete wording."],"validation":["Patrols upgrade levels 1/2/3 spawn expected patrol tiers and level 4 exercises convoy/camp-sweep hooks","HC delegate-sidepatrol works when an HC is connected and falls back to server otherwise","friendly-only patrol markers appear and clean up","patrol death releases wfbe_side_patrols and WFBE_ACTIVE_PATROLS, then cooldown allows another spawn"],"wikiRefs":["Towns-Camps-And-Capture-Atlas","AI-Runtime-HC-Loop-Map","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ai-town-owner","updated":"2026-06-21T19:44:25+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"requestspecial-support-payload-trust-2026-06-04","priority":"P1/P2","status":"partial-pr125-177ef1385f-maintained-roots-hardened-runtime-pending","category":["support","network-authority","economy","requestspecial"],"summary":"The original non-ICBM support payload-trust finding is partially closed for PR #125 maintained Chernarus/Takistan: player support/UAV, RespawnST, repair-camp, SCUD and GUER mortar now revalidate requester/player/team/actor/object/funds/cooldown server-side. Runtime proof, residual RequestSpecial tags and older/modded roots remain open.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_Tactical.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_RequestSpecial.sqf","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:33-56","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:97-169"],"implementationShape":["Split ICBM P0 work from support-effect payload validation.","Server recomputes requester side/team, commander or upgrade eligibility, funds/cooldown and target/source object validity before spawning or repairing effects.","Keep client checks as UX hints only and preserve JIP/user feedback semantics."],"validation":["normal paratroops/para-ammo/para-vehicle request succeeds only when eligible","forged side/team/object payload is rejected","old UAV cleanup cannot target arbitrary unrelated objects","RespawnST cannot damage the wrong side supply trucks from forged side","camp repair validates camp identity and intended repair side","JIP feedback remains coherent"],"wikiRefs":["Support-Specials-And-Tactical-Modules-Atlas","Server-Authority-Migration-Map","Feature-Status-Register"],"owner":"future-support-authority-owner","updated":"2026-07-02T09:50:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"commander-built-artillery-ownership-2026-06-04","priority":"P2","status":"branch-shaped-current-stable-b69-b74-marker-path-smoke-pending","category":["construction","artillery","commander","ui-discovery","static-defense"],"summary":"Commander-built artillery defenses can be crewed into the base area DefenseTeam while Tactical fire-mission discovery depends on either the caller group or marker metadata. Docs/source HEAD@f5bcaf91 routes manned artillery-class base-area defense gunners to the current commander team. Current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce and adjacent B74 origin/claude/b74-aicom-spend@b23f557f instead mark non-repair-truck artillery defenses with WFBE_CommanderArtillery variables and have the commander team scan marked guns in HQ/base-area radius. Historical a96fdda2/7ff18c49 carries the older marker line shape; current Miksuu/perf keep old DefenseTeam-only discovery.","sourceRefs":["origin/docs/developer-wiki-index@f5bcaf91 Chernarus/Vanilla Construction_StationaryDefense.sqf:91-94 commander-team handoff","origin/docs/developer-wiki-index@f5bcaf91 Chernarus/Vanilla Common_GetTeamArtillery.sqf:10-30 group-player discovery","origin/master@0139a346 Chernarus/Vanilla Construction_StationaryDefense.sqf:166-168 WFBE_CommanderArtillery marker variables","origin/master@0139a346 Chernarus/Vanilla Common_GetTeamArtillery.sqf:46,56 marked-vehicle discovery","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match current stable marker construction/discovery shape; Tactical RequestFireMission drifts to GUI_Menu_Tactical.sqf:559","historical a96fdda2/7ff18c49 Chernarus/Vanilla Construction_StationaryDefense.sqf:133-135 plus Common_GetTeamArtillery.sqf:46,56 marker path","current Miksuu b8389e748243 and origin/perf/quick-wins@0076040f expose Tactical RequestFireMission but no checked GetCommanderTeam handoff or WFBE_CommanderArtillery marker rescue"],"implementationShape":["If porting the docs/source design, detect artillery class before manning and pass the commander group to HandleDefense when _isArtillery != -1 and GetCommanderTeam returns a group.","If porting the marker design, preserve DefenseTeam manning but set replicated WFBE_CommanderArtillery variables for eligible commander artillery and extend GetTeamArtillery with a commander-team marked-vehicle sweep.","Keep non-artillery defenses on DefenseTeam and keep unmanned artillery unmanned when CoIn manning is off.","Propagate maintained Vanilla after source Chernarus commit."],"validation":["commander builds manned M119/D30/M252/2b14 defense inside HQ/base circle","Tactical menu lists the commander-built artillery and RequestFireMission works","artillery ammo loading path updates the same gun","gun can still direct-fire normally","non-artillery static defenses still use DefenseTeam","current stable/B69/B74 marker path discovers same-side marked guns inside HQ/base-area radius","current stable/B69/B74 and historical release repair-truck-built artillery exclusion is intentional or documented","headless static-defense delegation keeps commander discoverability or has a deliberate fallback","Vanilla Takistan parity after propagation or release smoke"],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Support-Specials-And-Tactical-Modules-Atlas","Feature-Status-Register","Development-Lessons-Learned"],"owner":"future-construction-artillery-owner","updated":"2026-06-22T21:19:13+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"stale-rscmenu-upgrade-branch-scope-2026-06-05","priority":"P1","status":"docs-ready-code-owner-parity-cleanup","category":["ui","dead-code","upgrades","generated-missions","release-branch"],"summary":"The old WF2 `RscMenu_Upgrade` resource points at missing `Client/GUI/GUI_Menu_Upgrade.sqf` and missing `Client/Images/wf_*.paa` icons. Live upgrades use `WFBE_UpgradeMenu` / `GUI_UpgradeMenu.sqf`. Docs/source, current Miksuu and perf keep the stale class in Chernarus plus maintained Vanilla; current stable origin/master@0139a346, B69 8d465fce, B74 b23f557f, historical release a96fdda2 and historical upgrade-queue b061c905 remove it in both maintained roots.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Rsc/Dialogs.hpp:2425-2428","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Rsc/Dialogs.hpp:2425-2428","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu.sqf:161-165","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_UpgradeMenu.sqf:1","current stable origin/master@0139a346, B69 8d465fce, B74 b23f557f, historical a96fdda2 and b061c905 have no checked maintained-root RscMenu_Upgrade / GUI_Menu_Upgrade.sqf hits"],"implementationShape":["Do not recreate GUI_Menu_Upgrade.sqf or the old wf_*.paa icon family just to satisfy stale references.","Either remove the old class consistently from source Chernarus and maintained Vanilla, or replace it with an explicit compatibility alias to the live WFBE_UpgradeMenu path.","If importing current stable/release cleanup, verify maintained Vanilla parity and generated mission propagation instead of assuming old-shape targets are already fixed."],"validation":["static grep finds no RscMenu_Upgrade missing-handler class in maintained roots or confirms intentional alias","main menu MenuAction 7 still opens WFBE_UpgradeMenu","valid upgrade request still reaches RequestUpgrade and server upgrade worker","insufficient funds/supply and already-upgrading UI paths still render","maintained Vanilla parity verified"],"wikiRefs":["Dead-Code-And-Stale-Code-Register","Client-UI-Systems-Atlas","Upgrades-And-Research-Atlas","Feature-Status-Register"],"owner":"future-ui-upgrade-cleanup-owner","updated":"2026-06-23T04:34:53+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"mash-marker-relay-branch-scope-2026-06-05","priority":"P1","status":"historical-superseded-by-2026-06-22-branch-refresh","category":["respawn","mash","markers","direct-publicvariable","jip","dead-code","branch-status"],"summary":"Historical 2026-06-05 MASH relay row. The old-shape orphaned relay evidence still applies to docs/Miksuu/perf-style roots, but the active backlog handoff is now mash-marker-current-b69-head-refresh-2026-06-22 because current stable origin/master@0139a3468609, historical a96fdda28087 and current B69 origin/claude/b69@8d465fce remove the maintained-root deploy/module path. Older B69 refs 0a1ccb4d05c5 and 80d3267c1b2b are provenance only.","sourceRefs":["old-shape docs/Miksuu/perf roots: Skill_Officer.sqf, MASHMarker.sqf, receiverMASHmarker.sqf and commented Init_Client.sqf receiver compile","current stable origin/master@0139a3468609 and current B69 origin/claude/b69@8d465fce Chernarus/Vanilla Skill_Apply.sqf:43 MASH deploy ability removed and no maintained-root Client/Module/MASH or Server/Module/MASH tree entries","active superseding row: agent-hardening-backlog.jsonl#mash-marker-current-b74-refresh-2026-06-23"],"implementationShape":["Use only as historical context for the older branch-scope finding.","Follow the 2026-06-22 current-B69 row for active branch-sensitive MASH revive/remove decisions."],"validation":["See mash-marker-current-b69-head-refresh-2026-06-22 for current validation gates."],"wikiRefs":["Respawn-And-Death-Lifecycle-Atlas","Support-Specials-And-Tactical-Modules-Atlas","Public-Variable-Channel-Index","Feature-Status-Register","Dead-Code-And-Stale-Code-Register"],"owner":"future-respawn-marker-owner","updated":"2026-06-22T19:09:20+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"resistance-patrol-latch-branch-route-2026-06-05","priority":"P3","status":"historical-branch-evidence-current-master-superseded","category":["ai","towns","patrol","lifecycle","vanilla-propagation"],"summary":"Branch matrix preserved for older refs: 89ae9dad and 2cdf5fb8 had the old || worker, perf/quick-wins fixed Chernarus only and historical release evidence fixed both release roots. Current origin/master@0139a346 has maintained-root Patrols v2 and && parity, so this is no longer patch-ready current-source master work.","sourceRefs":["historical origin/master@89ae9dad and miksuu/master@89ae9dad server_town_ai.sqf:295-298 plus server_patrols.sqf:26 ||","historical origin/master@2cdf5fb8 same || loop in both maintained roots before launch-line drift","origin/perf/quick-wins@0076040f Chernarus server_patrols.sqf:26 uses && while maintained Vanilla still uses ||","historical release commit a96fdda2 Chernarus/Vanilla server_patrols.sqf:26 uses &&; current origin exposes no live release/* heads on 2026-06-21","current origin/master@0139a346 source/Vanilla server_town_ai.sqf:72,327 retires old town patrol launch","current origin/master@0139a346 source/Vanilla server_side_patrols.sqf:12,19,48,67,72 and Common_RunSidePatrol.sqf:54,82,119,245,264 are the live route"],"implementationShape":["No current-master port needed for this old latch row.","Use this row only when reviewing older branches that still use the old town-based patrol launch."],"validation":["For current master, smoke Patrols v2 levels 1/2/3, level-4 convoy/camp-sweep hooks, HC delegation, friendly marker audience, patrol death and side-slot/cooldown release.","For old branches, use the original launch/death/relaunch smoke matrix before reviving the old path."],"wikiRefs":["Towns-Camps-And-Capture-Atlas","AI-Runtime-HC-Loop-Map","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ai-town-owner","updated":"2026-06-21T19:44:25+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"salvage-payout-loop-branch-route-2026-06-05","priority":"P2","status":"patch-ready-current-stable-b741-b742-b69-b74-unpatched-salvage-branches-scoped-2026-06-23","category":["salvage","economy","client-authority","correctness"],"summary":"Salvage payout/cleanup evidence now includes current stable/B74.1, visible B74.2 and live salvage branch context. Docs branch 795cdbbf0, current stable/B74.1 f8a76de34, B74.2 d472da6a, current B69/B74, current Miksuu, origin/perf/quick-wins@0076040f and historical a96fdda2 all still keep lowercase ChangePlayerfunds in both payout paths, the salvage-truck OR-shaped loop and client-local deletion/reward shape. W10 Man-filter and Trello #15 interlock branches are branch-only adjacent evidence, not payout/authority fixes.","sourceRefs":["docs/developer-wiki-index@795cdbbf0 Chernarus/Vanilla manual/truck salvage paths: Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,50; Init_Client.sqf:53,91; Client_BuildUnit.sqf:267","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,51; Init_Client.sqf:97,135; source Chernarus Client_BuildUnit.sqf:388; maintained Vanilla Client_BuildUnit.sqf:343","origin/claude/b74.2-aicom@d472da6a has no checked manual/truck salvage delta versus origin/master@f8a76de34; current stable line anchors still apply","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f keep the same payout/loop/local-authority shape in both maintained roots; checked B69..B74 salvage path deltas are empty","origin/claude/trello-salvage-truck-interlock@9e75c736e is one commit on current stable; it changes Skill_Apply.sqf, Skill_Salvage.sqf and stringtable.xml in both maintained roots, adds manual-salvage friendly-truck interlock at Skill_Apply.sqf:35 and Skill_Salvage.sqf:5,11-12, but still keeps lowercase ChangePlayerfunds at Skill_Salvage.sqf:45 and updatesalvage.sqf:51","origin/claude/salvage-w10-manfilter@2e0242b3 has merge-base 8fac20df and changes only Server/Functions/AI_Commander_Wildcard.sqf in both maintained roots, adding !(_wk isKindOf \"Man\") to W10 at :794; it still keeps the manual/truck payout mismatch","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep the docs/source salvage line shape in both maintained roots","historical a96fdda2 keeps lowercase ChangePlayerfunds at Skill_Salvage.sqf:38 and updatesalvage.sqf:50 with Init_Client.sqf:53,91 and Client_BuildUnit.sqf:270 in both maintained roots","current origin exposes no live release/* or feat/*salvage* heads on 2026-06-23 beyond claude salvage branches; Miksuu historical EngineerSalvageAbility@99bfaeb8 and SalvageRuTranslationFix@291c6cb4 remain inherited feature-debt evidence"],"implementationShape":["Patch payout function casing in source Chernarus first, then propagate maintained Vanilla.","Keep casing fix small unless explicitly paired with the larger salvage authority rewrite.","Review updatesalvage.sqf loop exit semantics and move final wreck deletion/reward server-side as separate authority work."],"validation":["Manual engineer salvage pays once with no undefined function error.","Salvage-truck loop pays once for one valid wreck and does not keep scanning after vehicle death or game-over unexpectedly.","Maintained Vanilla has the same casing patch and smoke route.","Forged/non-engineer/local-only salvage cannot be treated as authority-hardened until the server-owned reward/deletion lane is implemented."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-salvage-owner","updated":"2026-06-23T16:56:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"clickabletext-soundpush-branch-route-2026-06-05","priority":"P3","status":"superseded-history-2026-06-23","category":["ui","resources","config","branch-status"],"summary":"Historical 2026-06-06 clickable-text soundPush backlog row. Its current-stable wording is superseded by clickabletext-soundpush-current-b74-refresh-2026-06-23; current stable/B69/B74 carry the valid base value, while docs/source, current Miksuu, perf, historical release and UI theme branches remain old-shape.","sourceRefs":["origin/master@89ae9dad and local source HEAD@89ae9dad current stable source refs","historical origin/master@2cdf5fb8 same maintained-root RscClickableText soundPush shape before stable advanced","2cdf5fb8..89ae9dad has no diff in checked Rsc/Ressources.hpp or Rsc/Dialogs.hpp files","current source/Vanilla Rsc/Ressources.hpp:92 keeps valid empty-sound precedent {\"\", 0.2, 1}","current source/Vanilla Rsc/Ressources.hpp:541 defines class RscClickableText and :556 keeps malformed soundPush[] = {, 0.2, 1}","current source/Vanilla Rsc/Dialogs.hpp has 17 RscClickableText inheritors","miksuu/master@89ae9dad same maintained-root malformed base-class value and derived-control count","origin/perf/quick-wins@0076040f same maintained-root malformed base-class value","origin/release/2026-06-feature-bundle@7ff18c49 same malformed base-class value in both maintained roots; both release roots have 16 RscClickableText inheritors after GPS/menu UI drift","origin/feat/wf-menu-ops-console@0767c0b5 and origin/feat/wf-menu-ux-phase1@87d86257 same malformed value in both maintained roots"],"implementationShape":["Replace RscClickableText soundPush[] with a valid array in source Chernarus, preferably the local empty-sound precedent {\"\", 0.2, 1} unless a code owner wants a real sound.","Propagate maintained Vanilla deliberately.","Keep modded mission copies out of release claims until their broader generation/conflict blockers are resolved."],"validation":["Arma 2 OA config parse/mission boot has no resource error","gear clickable slots/buttons open and respond","WF menu/HUD toggle clickable controls respond","CoIn/construction clickable controls respond","artillery toggle clickable control responds","economy respawn supply truck clickable control responds","Vanilla parity checked after propagation"],"wikiRefs":["Client-UI-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","updated":"2026-06-23T05:23:52+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"empty-supply-truck-cleanup-branch-route-2026-06-05","priority":"P3","status":"docs-ready-owner-decision-branch-unrescued-current-b69-head-refreshed-2026-06-22","category":["cleanup","supply","logistics","performance","branch-status"],"summary":"Supply trucks bypass the normal WFBE_C_UNITS_EMPTY_TIMEOUT path. Docs/source HEAD@a3bbcd48 is unchanged from b4e10b5f for checked collector/handler paths; current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce, current Miksuu b8389e748243, perf/quick-wins 0076040f and historical a96fdda2 all hard-code _delay = 86400 in Server_HandleEmptyVehicle.sqf while emptyvehiclescollector.sqf drains replicated emptyVehicles into the handler. B69 path deltas 0094647d..8d465fce and 80d3267c..8d465fce are empty.","sourceRefs":["docs/developer-wiki-index HEAD@a3bbcd484eb5; git diff --name-status b4e10b5f..HEAD is empty for checked Chernarus/Vanilla emptyvehiclescollector.sqf and Server_HandleEmptyVehicle.sqf paths","docs/source Chernarus/Vanilla emptyvehiclescollector.sqf:9,12,15-17,19,30; Server_HandleEmptyVehicle.sqf:21-23,29-30,33","origin/master@0139a346 Chernarus/Vanilla emptyvehiclescollector.sqf:9,12,15-17,19,30; Server_HandleEmptyVehicle.sqf:29-31,37-38,41","origin/claude/b69@8d465fcede7f Chernarus/Vanilla emptyvehiclescollector.sqf:9,12,15-17,19,30; Server_HandleEmptyVehicle.sqf:29-31,37-38,41","git diff --name-status 0094647d..origin/claude/b69 and 80d3267c..origin/claude/b69 are empty for checked maintained collector/handler paths","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f Chernarus/Vanilla keep the docs-shaped collector/handler anchors","historical a96fdda2 Chernarus/Vanilla keeps the docs-shaped 24-hour handler policy; current origin exposes no release/* or cleanup/supply rescue heads on 2026-06-22"],"implementationShape":["If the long lifetime is intentional, label it as logistics persistence and keep operators from diagnosing supply trucks as collector failures.","If changing behavior, replace the hard-coded 86400 with a shorter supply-specific value or a mission parameter in source Chernarus.","Propagate maintained Vanilla deliberately after the source patch.","Keep ordinary empty-vehicle, ambulance and repair-truck timeout behavior separate from the supply-truck policy decision."],"validation":["ordinary empty vehicles still delete after WFBE_C_UNITS_EMPTY_TIMEOUT","ambulance/medical and repair vehicles still use their intended double timeout","empty supply trucks either persist for the documented policy window or delete after the new configured timeout","active supply mission/logistics use is not broken by cleanup","long-match object counts and emptyvehiclescollector PerformanceAudit rows stay healthy","maintained Vanilla parity checked"],"wikiRefs":["Marker-Cleanup-Restoration-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-runtime-logistics-owner","updated":"2026-06-22T18:34:48+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"requestspecial-upgrade-sync-branch-route-2026-06-06","priority":"P3","status":"patch-ready-consistency-debt-current-b742-head-validated","category":["requestspecial","upgrades","networking","correctness","branch-status"],"summary":"RequestSpecial upgrade-sync evidence now uses current docs/source HEAD@373e21c1274c and current B74.2 origin/claude/b74.2-aicom@21b62b04. Docs/source is unchanged from a7f383b6, bc21f520 and ff8dd884 for checked handler/caller/process-upgrade paths. Current stable/B74.1, current B74.2, current B69 and adjacent B74 still keep Server_HandleSpecial.sqf assigning _args = _this, then reading upgrade-sync side from _args and upgrade id/level from _this in both maintained roots. Current behavior is equivalent because _args aliases _this, so this remains parser-contract cleanup debt rather than a confirmed runtime break. B74.1/B74.2 adds wfbe_upgrading_end_time publish/clear at Server_ProcessUpgrade.sqf:27,55, but that is adjacent timer/UI work, not parser cleanup. Checked d472da6a..21b62b04, origin/master..B74.2 and B69..B74 path deltas are empty. Miksuu/perf callers are :241, historical release a96fdda2 is :254, historical upgrade-queue b061c905 is :268.","sourceRefs":["docs/developer-wiki-index HEAD@373e21c1274c checked source base; git diff --name-status a7f383b6..HEAD, bc21f520..HEAD and ff8dd884..HEAD are empty for checked Chernarus/Vanilla Server_HandleSpecial.sqf, GUI_UpgradeMenu.sqf and Server_ProcessUpgrade.sqf paths","docs/source Chernarus/Vanilla Server_HandleSpecial.sqf:3,67,69-73 keep mixed _args/_this parser; GUI_UpgradeMenu.sqf:171 sends RequestSpecial upgrade-sync; Server_ProcessUpgrade.sqf:26,29,35 owns WFBE_upgrade_*_sync lifecycle and has no wfbe_upgrading_end_time hits","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; source Chernarus Server_HandleSpecial.sqf:3,77,79-83, GUI_UpgradeMenu.sqf:82,86,292 and Server_ProcessUpgrade.sqf:27,32,35,41,55","origin/master@f8a76de349da maintained Vanilla Server_HandleSpecial.sqf:3,67,69-73, GUI_UpgradeMenu.sqf:82,86,292 and Server_ProcessUpgrade.sqf:27,32,35,41,55","origin/claude/b74.2-aicom@21b62b04fee3 matches current stable for checked handler/caller/process paths; d472da6a..21b62b04 and origin/master..origin/claude/b74.2-aicom are empty for those paths","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable/B74.1 for checked upgrade-sync paths; B69..B74 checked delta empty","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep mixed parser and caller GUI_UpgradeMenu.sqf:241 in both maintained roots","historical release commit a96fdda28087 keeps mixed parser and caller GUI_UpgradeMenu.sqf:254 in both maintained roots","historical upgrade-queue commit b061c905b7be keeps mixed parser and caller GUI_UpgradeMenu.sqf:268 in both maintained roots","live origin/claude/trello-upgrade-hqcost-info has no scoped diff; origin/claude/trello-upgrade-icons only line-drifts GUI_UpgradeMenu.sqf icon work"],"implementationShape":["Normalize Server_HandleSpecial.sqf upgrade-sync to read side, upgrade id and upgrade level from _args only.","Optionally add a short tuple-shape comment or malformed/short-payload guard if editing the RequestSpecial router.","Keep this separate from RequestUpgrade server-authority migration unless a code owner explicitly broadens scope.","Propagate maintained Vanilla deliberately after the source patch."],"validation":["Normal commander upgrade completes and clears wfbe_upgrading state.","Non-server client timer sync still releases Server_ProcessUpgrade before the full server sleep when intended.","Malformed or short upgrade-sync payloads fail without RPT select errors if guards are added.","AI commander upgrade flow still progresses because it uses Server_ProcessUpgrade directly.","Maintained Vanilla parity checked"],"wikiRefs":["Support-Specials-And-Tactical-Modules-Atlas","Upgrades-And-Research-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-networking-upgrade-owner","updated":"2026-06-24T03:35:20+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"fast-travel-fee-branch-route-2026-06-05","priority":"P3","status":"docs-ready-owner-decision-current-b742-head-refreshed-2026-06-24","category":["ui","tactical","fast-travel","economy","ux"],"summary":"Paid fast-travel mode is implemented as a local Tactical menu flow. Current stable/B74.1 origin/master@f8a76de34 and current B74.2 origin/claude/b74.2-aicom@21b62b04 still hide unaffordable town destinations, show marker text for fees and debit locally on travel without a confirmation or final affordability/context recheck in both maintained roots; the old completed fee-policy TODO is absent there. Docs/source HEAD@003d0c4c044e, Miksuu b8389e748243, perf/quick-wins 0076040f and historical release a96fdda2 keep that stale TODO and the same fee/debit behavior with line drift.","sourceRefs":["docs/source HEAD@003d0c4c044e is unchanged from 1154f5d43 for checked Chernarus/Vanilla GUI_Menu_Tactical.sqf and Init_CommonConstants.sqf paths","docs/source Chernarus/Vanilla GUI_Menu_Tactical.sqf:22-23 reads fast-travel mode/range, :147 keeps the stale fee-policy TODO, :186 gets funds in fee mode, :196-197 computes fee and hides unaffordable destinations, :216 draws marker-only fee text and :404-405 locally calls ChangePlayerFunds; Init_CommonConstants.sqf:218,227-230 defines fast-travel mode/range/price/time defaults","origin/master@f8a76de34 equals origin/claude/b74.1-aicom@f8a76de34; Chernarus/Vanilla GUI_Menu_Tactical.sqf:22-23 reads mode/range, :185 gets funds in fee mode, :195-196 computes fee and hides unaffordable destinations, :215 draws marker-only fee text and :403-404 locally calls ChangePlayerFunds; stale TODO absent","origin/master@f8a76de34 Chernarus Init_CommonConstants.sqf:612,621-624 and Vanilla Init_CommonConstants.sqf:414,423-426 define fast-travel mode/range/price/time defaults","origin/claude/b74.2-aicom@21b62b04 has no checked Tactical GUI delta versus origin/master, checked d472da6a..21b62b04 is empty for maintained-root fast-travel paths, and only source Chernarus constants drift to Init_CommonConstants.sqf:625,634-637","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f keep the same Tactical GUI fee/debit behavior; checked B69..B74 fast-travel path delta only touches source Chernarus constants","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f match the docs maintained-root TODO/fee/debit shape and constants line refs","historical release commit a96fdda2 matches the old TODO/fee/debit shape with constants at Init_CommonConstants.sqf:231,240-243","current origin exposes no live release/* or fast-travel feature heads on 2026-06-24"],"implementationShape":["Keep fast-travel fee UX separate from RequestSpecial server authority hardening; it is a local Tactical flow.","Do not reopen stale-TODO removal on current stable/B74.1/B74.2.","Choose whether unaffordable destinations remain hidden, render disabled with an explanation, or can be selected and rejected with a hint.","If paid mode remains, add a final local funds/context recheck immediately before ChangePlayerFunds and consider a confirmation prompt for long-distance travel.","Propagate maintained Vanilla after any source Chernarus UI/policy edit."],"validation":["WFBE_C_GAMEPLAY_FAST_TRAVEL modes 0, 1 and 2","insufficient, exact and sufficient funds","HQ, friendly fully-camped town and command-center start points","non-friendly/partial-camp towns hidden or disabled according to chosen policy","maximum range and too-close range","vehicle/group teleport and static/stopped unit exclusion","death during travel does not strand UI/camera or debit unexpectedly","maintained Vanilla parity"],"wikiRefs":["Client-UI-Systems-Atlas","Support-Specials-And-Tactical-Modules-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ui-owner","updated":"2026-06-24T03:46:19+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"side-supply-reason-string-branch-route-2026-06-06","priority":"P3","status":"patch-ready-current-stable-unpatched-b69-b74-unrescued-refreshed","category":["economy","side-supply","logging","diagnostics","branch-status"],"summary":"Common_ChangeSideSupply.sqf reads the human-readable reason only behind count _this > 3, so three-argument callers such as AttackWave.sqf lose their audit reason even though four-argument supply mission completion calls preserve theirs. Docs/source HEAD@a908284c, current stable origin/master@0139a346, current Miksuu b8389e748243, perf/quick-wins@0076040f, current B69 origin/claude/b69@8d465fce and adjacent B74 origin/claude/b74-aicom-spend@b23f557f all keep this shape; B69..B74 checked side-supply path delta is empty.","sourceRefs":["docs/source HEAD@a908284c unchanged from 4db90f1c / 7047da5d9 / f52ccee8 for checked reason paths","docs checkout Chernarus Common/Functions/Common_ChangeSideSupply.sqf:8-14,28","docs checkout Chernarus Server/PVFunctions/AttackWave.sqf:40","docs checkout Chernarus Server/Module/supplyMission/supplyMissionCompleted.sqf:26","docs checkout maintained Vanilla same maintained-root shape","origin/master@0139a346 same reason guard/caller contrast in both maintained roots; supply completion line :40","historical release commit a96fdda2 same reason guard/caller contrast in both maintained roots; supply completion line :40; no current release/* head on 2026-06-23","miksuu/master@b8389e748243 same reason guard/caller contrast in both maintained roots; supply completion line :26","origin/perf/quick-wins@0076040f same reason guard/caller contrast in both maintained roots; supply completion line :26","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f keep the reason guard in Chernarus and maintained Vanilla; B69..B74 checked side-supply path delta is empty"],"implementationShape":["In Common_ChangeSideSupply.sqf, parse _reason when count _this > 2 and parse _includeStagnation when count _this > 3.","Preserve the default error string for malformed/no-reason payloads so warnings remain useful.","Patch source Chernarus and propagate maintained Vanilla deliberately.","Pair with the side-supply clamp/helper edit if a code owner is already touching the function, but keep authority validation and server-ledger work as separate scope."],"validation":["AttackWave reason publishes Heavy attack mode activated instead of the default error string.","Supply mission completion still publishes its formatted town/amount reason.","Malformed/no-reason calls still produce the default error reason clearly.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Economy-Authority-First-Cut","Economy-Towns-And-Supply","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-economy-owner","updated":"2026-06-23T00:14:14+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"ai-supply-truck-branch-route-2026-06-06","priority":"P2","status":"current-stable-b741-b742-safe-disabled-not-revived-branch-raw-spawn-caveats","category":["ai-commander","supply","logistics","dead-code","branch-status"],"summary":"AI supply-truck logistics no longer needs a current-stable safety port on B74-shaped refs: origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da and current origin/claude/b74.2-aicom@21b62b04 initialize wfbe_ai_supplytrucks and log-disable legacy AI supply-truck logistics at Chernarus Init_Server.sqf:44,624-625 and maintained Vanilla :44,618-619 instead of spawning UpdateSupplyTruck. The old worker still references missing Server/FSM/supplytruck.fsm at AI_UpdateSupplyTruck.sqf:17, so autonomous logistics are not revived. Docs/source HEAD@f9bc264f45a0, Miksuu b8389e748243 and perf/quick-wins 0076040f still raw-spawn the missing worker; historical c20ce153 guards only Chernarus and leaves Vanilla raw.","sourceRefs":["docs/source HEAD@f9bc264f45a0 source-unchanged from 6d4b514c12fc for checked Chernarus/Vanilla Init_Server.sqf and AI_UpdateSupplyTruck.sqf paths","docs/source Chernarus/Vanilla Init_Server.sqf:36,382-383 raw-spawn shape; AI_UpdateSupplyTruck.sqf:17 ExecFSM missing supplytruck.fsm","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; Chernarus Init_Server.sqf:44,624-625 safe-disable and Vanilla :44,618-619 safe-disable","origin/claude/b74.2-aicom@21b62b04fee3 keeps Chernarus Init_Server.sqf:44,624-625 and Vanilla :44,618-619; AI_UpdateSupplyTruck.sqf:17 unchanged; d472da6a..21b62b04 line-drifts source-Chernarus Init_Server.sqf for GUER stipend startup only among checked supply-truck files","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 keep safe-disable shape; B69..B74 path diff empty","Miksuu b8389e748243 raw-spawns both maintained roots at Init_Server.sqf:36,382-383","origin/perf/quick-wins@0076040f8a5e raw-spawns Chernarus Init_Server.sqf:36,377-378 and Vanilla :36,382-383","historical a96fdda2 safe-disables both maintained roots at Init_Server.sqf:37,383-384","historical c20ce153 guards Chernarus at Init_Server.sqf:388-389 but Vanilla raw-spawns at :382-383","Broad current-origin ls-tree sweep found no Server/FSM/supplytruck.fsm; live AI/truck side branches checked line-drift Init_Server.sqf but do not change supply-truck tokens"],"implementationShape":["Preserve the current stable/B74 safe-disable shape when merging or rebasing branches.","If updating raw-spawn branches, port the warning/disable shape rather than uncommenting UpdateSupplyTruck.","Revival path: restore or replace supplytruck.fsm with a verified server-owned logistics loop; define vehicle ownership, max counts, cleanup and commander-disable behavior.","Keep separate from player-run supply helicopters and broader AI commander supervisor revival unless a code owner explicitly expands scope."],"validation":["Default parameters boot without AI logistics errors.","Truck supply + AI commander config logs disabled legacy logistics and does not spawn nil code on current stable/B74-shaped refs.","If revived, AI commander creates at most the configured supply-truck cap, tracks wfbe_ai_supplytrucks and cleans up on vehicle death/completion/HQ or commander state changes.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["AI-Commander-Autonomy-Audit","Abandoned-Feature-Revival-Review","Feature-Status-Register","Source-Fix-Propagation-Queue","Dead-Code-And-Stale-Code-Register"],"owner":"future-ai-commander-owner","updated":"2026-06-24T01:35:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"factory-destroyed-purchase-refund-branch-route-2026-06-06","priority":"P3","status":"branch-split-current-b742-head-21b62b04-refund-present-old-roots-patch-ready","category":["factory","purchase","economy","refund","branch-status"],"summary":"Factory destroyed-purchase refund evidence now routes current B74.2 through origin/claude/b74.2-aicom@21b62b04. Repo docs branch HEAD@f9601c92e0a4 is unchanged from b8180bb319ed / cacd46f09163 / 4120137f / 8d611092 for checked buy/build paths and remains old-shape: local BuildUnit spawn/debit at GUI_Menu_BuyUnits.sqf:154-156 and Client_BuildUnit.sqf:211-214 dead/null queue cleanup without refund. Current stable/B74.1, current B74.2, B69, adjacent B74 and historical a96fdda2 pass _currentCost into BuildUnit and refund the real dead/null factory abort in both maintained roots. Miksuu, perf and historical QoL a66d4691 remain old-shape; checked d472da6a..21b62b04 is empty for checked buy/build paths.","sourceRefs":["repo docs branch HEAD@f9601c92e0a4 checked Chernarus/Vanilla GUI_Menu_BuyUnits.sqf and Client_BuildUnit.sqf paths unchanged from b8180bb319ed / cacd46f09163 / 4120137f / 8d611092","docs/source Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:154-156 spawns BuildUnit then debits _currentCost without passing it; Client_BuildUnit.sqf:211-214 cleans queue/counter on dead/null building without refund","HEAD and origin/claude/b74.2-aicom maintained-root grep found no RequestBuyUnit or RequestBuildUnit PVF path","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:163-165 passes/spawns/debits _currentCost; Client_BuildUnit.sqf:7 reads it and :276-280 refunds the dead/null abort","origin/claude/b74.2-aicom@21b62b04fee3 source Chernarus GUI_Menu_BuyUnits.sqf:169-171, maintained Vanilla :163-165, and both maintained roots Client_BuildUnit.sqf:276-280 refund the dead/null abort","checked d472da6a..21b62b04 is empty for the four maintained-root buy/build paths; origin/master..origin/claude/b74.2-aicom changes only source-Chernarus buy-menu AI-cap setup among checked paths","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match current stable refund anchors for checked buy/build paths","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f keep dead/null no-refund cleanup at Client_BuildUnit.sqf:211-214 in both maintained roots; perf Chernarus crewless counter cleanup is separate","historical a96fdda28087 Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:160-162 and Client_BuildUnit.sqf:212-216 carry the real dead/null refund; historical a66d46912e2a keeps old dead/null no-refund shape","current origin exposes no release/* or feat/buymenu-easa-qol heads on 2026-06-24"],"implementationShape":["For old-shape targets, port the current stable/B74.1/B74.2/B69/B74/a96fdda2 dead-null refund payload: pass _currentCost into BuildUnit, read it defensively and refund only the no-spawn dead/null factory abort.","Do not port 7ff18c49 empty/crewless refund without an explicit policy decision; current stable/a96fdda2 classify the crewless path as already-spawned and no-refund.","Keep this separate from DR-33 queue token/broadcast cleanup, AI-commander AIBuyUnit production and broader client-local player purchase authority redesign.","If redesigning authority, choose debit-at-acceptance versus debit-after-build semantics and cover every rejected/aborted post-acceptance path through one helper before adding expensive purchases."],"validation":["Destroy factory while a queued player purchase is waiting; funds and queue counters end in the intended state.","Buyer disconnect during queued purchase does not double-refund or leak counters.","Empty/crewless vehicle abort releases counters and refunds only if policy says it should.","Normal infantry, crewed vehicle and crewless successful purchases still debit once and complete queue cleanup.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-factory-economy-owner","updated":"2026-06-24T14:55:00+02:00","supersedes":["factory-destroyed-purchase-refund-branch-route-2026-06-06 B74.2 d472da6a wording"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"gear-template-creation-gate-branch-route-2026-06-06","priority":"P3","status":"owner-decision-consistency-debt-current-stable-save-filter-fixed","category":["gear","ui","profile","upgrades","branch-status"],"summary":"Gear template creation, display and profile-save semantics are inconsistent across checked refs: AddTemplate accepts templates unlocked by either Barracks or Gear upgrade lane, while FillTemplates displays only by Gear upgrade level. Current stable origin/master@0139a346 fixes only the old SaveTemplateProfile _u_upgrade comparison; it does not resolve the AddTemplate/FillTemplates policy split or six-field import guard. Docs/source, Miksuu, perf, historical release and historical EASA QoL keep the old save-filter shape too.","sourceRefs":["docs/developer-wiki-index@43c3ba05 source unchanged from 8b71e2a1 for checked AddTemplate, FillTemplates, SaveTemplateProfile and Init_ProfileGear paths","docs/source Chernarus Client_UI_Gear_AddTemplate.sqf:15,37,83,110,136,140,148","docs/source Chernarus Client_UI_Gear_FillTemplates.sqf:17","docs/source Chernarus Client_UI_Gear_SaveTemplateProfile.sqf:13-14,19,22,33,52,75","docs/source Chernarus Init_ProfileGear.sqf:17,25","docs/source maintained Vanilla same maintained-root shape","origin/master@0139a346 Chernarus and maintained Vanilla AddTemplate :136 and FillTemplates :17 keep the same policy","origin/master@0139a346 Chernarus and maintained Vanilla SaveTemplateProfile.sqf:34,57,82 use (_get select 3) rather than undefined _u_upgrade","origin/master@0139a346 Chernarus and maintained Vanilla Init_ProfileGear.sqf:17,25 keep six-field import guard/index-6 read","Miksuu b8389e74 same old save-filter/import/policy shape in both maintained roots","origin/perf/quick-wins@0076040f same old save-filter/import/policy shape in both maintained roots","historical release commit a96fdda2 same old save-filter/import/policy shape in both maintained roots; current origin exposes no release/* heads on 2026-06-21","historical EASA QoL commit a66d4691 same old save-filter/import/policy shape in both maintained roots; current origin exposes no feat/buymenu-easa-qol head on 2026-06-21"],"implementationShape":["Decide intended semantics first: template creation by either Barracks/Gear lane, or Gear-only across creation/display/profile save.","If choosing Gear-only, change AddTemplate to use the Gear lane consistently and keep FillTemplates semantics clear.","If keeping either-lane creation, update FillTemplates and profile save/import wording/logic so saved templates do not vanish unpredictably after creation.","On old-shape refs, patch SaveTemplateProfile _u_upgrade comparisons before relying on profile-save policy behavior; on current stable, keep the task-44 comparison fix and focus on policy/import work.","Patch source Chernarus and propagate maintained Vanilla deliberately.","Keep this separate from full gear purchase authority hardening and from EASA/service purchase authority lanes."],"validation":["Create a template whose max item upgrade is Barracks-unlocked but above current Gear; verify whether it appears or is intentionally rejected according to the chosen policy.","Create/save/reload/import templates at Gear levels below, equal to and above stored template upgrade.","Profile rows with missing backpack/default fields are handled by the paired import guard/default.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Gear-Template-Profile-Filter","Feature-Status-Register","Source-Fix-Propagation-Queue","Gear-Loadout-And-EASA-Atlas"],"owner":"future-gear-ui-owner","updated":"2026-06-21T20:41:54+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"send-message-direct-compile-branch-route-2026-06-06","priority":"P0","status":"historical-superseded-by-current-target-2026-07-02","category":["networking","publicVariable","security","direct-channel","rce","branch-status"],"summary":"Historical SEND_MESSAGE branch-route row superseded again by the 2026-07-02 build84-cmdcon36 recheck. The current canonical row is send-message-call-compile-rce with current-target resolved / old-refs-open evidence.","sourceRefs":["Superseding current route: Public-Variable-Channel-Index#send_message-direct-compile-branch-matrix","Canonical hardening backlog row: send-message-call-compile-rce","docs/source HEAD@c27388b4146b checked SEND_MESSAGE paths unchanged from cd9ba541d583 / 3a32be92 / 40c477be / 16247fc8f","origin/master@f8a76de34, origin/claude/b74.2-aicom@21b62b04, origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f maintained roots keep updateclient.sqf:12, Client_onEventHandler_SEND_MESSAGE.sqf:27 and Common_SendMessage.sqf:26,37-38","git diff --name-status d472da6a..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked SEND_MESSAGE paths"],"implementationShape":["Use the canonical send-message-call-compile-rce backlog row for current-target status and old-ref backports.","Preserve this row only as provenance for the 2026-06-06/2026-06-22 branch-route refresh history."],"validation":["Current validation gates live on Public-Variable-Channel-Index#send_message-direct-compile-branch-matrix and the canonical send-message-call-compile-rce backlog row."],"wikiRefs":["Public-Variable-Channel-Index","Networking-And-Public-Variables","Hardening-Implementation-Roadmap","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-network-hardening-owner","updated":"2026-07-02T21:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"pvf-dispatcher-lookup-branch-route-2026-06-05","priority":"P0","status":"current-stable-lookup-present-older-refs-unpatched","category":["networking","pvf","security","performance","branch-status"],"summary":"Generic PVF dispatcher lookup hardening is branch-split after origin/master advanced to 0139a346: current stable maintained roots use missionNamespace getVariable plus CODE checks in Server_HandlePVF.sqf:14-15 and Client_HandlePVF.sqf:32-33, but still lack explicit registered allowlists/logging and smoke. Docs checkout, Miksuu b8389e74, perf 0076040f and historical release commit a96fdda2 still execute sender-provided handler names with Spawn (Call Compile _script).","sourceRefs":["origin/master@0139a346 current maintained-root refs","current stable Chernarus and maintained Vanilla Server_HandlePVF.sqf:14-15 use missionNamespace getVariable plus CODE guard","current stable Chernarus and maintained Vanilla Client_HandlePVF.sqf:32-33 use missionNamespace getVariable plus CODE guard after destination/HC filtering","current stable maintained-root Init_PublicVariables.sqf:55-56,60-61 registers PVEH loops; no PVF_ALLOWED symbol found in checked roots","cf2a6d6a..origin/master@0139a346 changes all four maintained-root dispatcher files plus Init_PublicVariables.sqf; no checked current-stable dispatcher matches Call Compile _script","miksuu/master@b8389e74 Server_HandlePVF.sqf:14 and Client_HandlePVF.sqf:22 in both maintained roots still Spawn (Call Compile _script)","origin/perf/quick-wins@0076040f Server_HandlePVF.sqf:14 and Client_HandlePVF.sqf:22 in both maintained roots still Spawn (Call Compile _script)","historical release commit a96fdda2 Server_HandlePVF.sqf:14 and Client_HandlePVF.sqf:32 in both maintained roots still Spawn (Call Compile _script); current origin exposes no release/* heads on 2026-06-21"],"implementationShape":["On current stable, preserve the existing namespace/CODE dispatcher lookup and add explicit server/client allowlists matching registered SRVFNC*/CLTFNC* handler names.","Reject and log handler names not in the registered allowlist before Spawn.","On old-shape refs, port the namespace lookup, CODE guard and allowlist through Init_PublicVariables.sqf, Server_HandlePVF.sqf and Client_HandlePVF.sqf together.","Keep Spawn scheduling; do not switch to Call until handlers are audited.","Patch source Chernarus first and propagate maintained Vanilla deliberately.","Do not combine with registered-handler payload validation, DR-55 sender authentication or direct publicVariable hardening."],"validation":["Every _serverCommandPV and _clientCommandPV entry resolves to CODE after Init_PublicVariables.sqf.","Valid RequestJoin or RequestVehicleLock still reaches the server handler.","Valid client-bound LocalizeMessage, HandleSpecial or SetVehicleLock still reaches the targeted client.","Forged unregistered handler names no-op and log one warning.","Forged registered handler with bad payload remains tracked under the specific handler authority lane, not as dispatch closure.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["PVF-Dispatch-Implementation-Playbook","Networking-And-Public-Variables","Public-Variable-Channel-Index","Hardening-Implementation-Roadmap","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-network-hardening-owner","updated":"2026-06-21T18:56:53+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"town-ai-vehicle-despawn-branch-route-2026-06-06","priority":"P2","status":"historical-superseded-by-town-ai-despawn-current-b741-b742-refresh-2026-06-23","category":["town-ai","vehicle-safety","player-occupancy","branch-status","historical"],"summary":"Historical branch-route record superseded by the current Town AI vehicle despawn owner page and town-ai-despawn-current-b741-b742-refresh-2026-06-23. The 2026-06-06 row used origin/master/local master/Miksuu 89ae9dad as current and included Server_CleanupExpiredTownDefenseAssets.sqf helper evidence. Current checked refs no longer contain that helper; current stable/B74-shaped refs carry the crew guard only in source Chernarus, while maintained Vanilla remains unsafe at server_town_ai.sqf:319.","sourceRefs":["historical origin/master@89ae9dad and miksuu/master@89ae9dad tracked-vehicle cleanup plus Server_CleanupExpiredTownDefenseAssets.sqf helper evidence","current superseding route: Town-AI-Vehicle-Despawn-Safety#current-branch-matrix","origin/master@0139a346 Chernarus/Vanilla Server/FSM/server_town_ai.sqf:41,238,257,309,315","Miksuu master@b8389e748243 Server/FSM/server_town_ai.sqf:28,140,159,195,201","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus Server/FSM/server_town_ai.sqf:312,325 and maintained Vanilla :319; checked paths unchanged across B69/B74","2026-06-23 git cat-file checks found no Server_CleanupExpiredTownDefenseAssets.sqf in checked current refs"],"implementationShape":["Use the canonical town-ai-vehicle-despawn-safety backlog row for current implementation work.","Preserve this row only as provenance for the 89ae9dad-era branch route."],"validation":["Current validation gates live on Town-AI-Vehicle-Despawn-Safety.md and the canonical town-ai-vehicle-despawn-safety backlog row."],"wikiRefs":["Town-AI-Vehicle-Despawn-Safety","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ai-town-owner","updated":"2026-06-23T18:44:58+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"town-defense-overhaul-capture-persistence-occupancy","priority":"P2","status":"historical-89ae9dad-only-current-head-absent","category":["town-ai","vehicle-safety","town-defense-overhaul","historical"],"summary":"Historical DR-48 record for Marty_town_defense_overhaul branches that contain Server_CleanupExpiredTownDefenseAssets.sqf. Current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, current Miksuu b8389e748243, perf, historical release a96fdda2, aicom-fleet, current B69/B74 and upstream-town-defense-diag-sync do not contain the helper path, so this is not current-head work unless a target branch reintroduces the persistence helper.","sourceRefs":["89ae9dad Chernarus/Vanilla Server/Functions/Server_CleanupExpiredTownDefenseAssets.sqf:57-64","89ae9dad Chernarus/Vanilla Server/FSM/server_town.sqf:238-258","89ae9dad Chernarus/Vanilla Server/FSM/server_town_ai.sqf:61","89ae9dad Chernarus/Vanilla Common/Functions/Common_MarkTownDefenseAsset.sqf:1-44","2026-06-24 current-head scan found no Server_CleanupExpiredTownDefenseAssets.sqf path in docs/source HEAD@ce3cf871e1e7, origin/master@f8a76de34, origin/claude/b74.2-aicom@21b62b04, Miksuu b8389e748243, origin/perf/quick-wins@0076040f, a96fdda2, origin/feat/aicom-fleet-improvements@cc5090bed4ad, origin/claude/b69@8d465fce, origin/claude/b74-aicom-spend@b23f557f or origin/claude/upstream-town-defense-diag-sync@cde1f1fc"],"evidence":["DR-48 source review 2026-06-07 found the 89ae9dad helper's OBJECT branch deletes with only isPlayer _asset and isPlayer leader group _asset; no crew/cargo/turret check.","DR-48 source review also found the GROUP branch deletes every member unit with no player guard at all.","Repo corroboration: Server_HandleEmptyVehicle.sqf uses crew as the vehicle occupancy primitive, but the helper is absent from the current checked heads."],"implementationShape":["Only apply this row when a target branch actually contains Server_CleanupExpiredTownDefenseAssets.sqf again.","OBJECT branch: skip delete when ({isPlayer _x} count crew _asset) > 0; optionally retain leader exception as behavior-preserving addition.","GROUP branch: skip delete when ({isPlayer _x} count units _asset) > 0.","For current checked heads, use the canonical town-ai-vehicle-despawn-safety tracked-vehicle cleanup row instead."],"validation":["On a branch containing the helper, capture a town, board a captured_mobile_vehicle as driver and as cargo, wait for persistence expiry, and confirm the vehicle is not deleted under the player.","Empty AI-only captured vehicles/groups are still reaped at expiry.","No scheduler/undefined-variable RPT errors around the helper cleanup.","Do not run this helper-specific smoke on current heads where the helper is absent."],"wikiRefs":["Town-AI-Vehicle-Despawn-Safety","Deep-Review-Findings","Codebase-Coverage-Ledger","AI-Headless-And-Performance","Feature-Status-Register"],"owner":"future-ai-owner","updated":"2026-06-24T04:06:08+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"side-supply-underflow-guard-inverts","priority":"P1","status":"historical-superseded-by-current-target-2026-07-02","category":["economy","supply","exploit"],"summary":"Historical DR-49 side-supply underflow row. The old underflow guard added supply instead of clamping to 0, but current target origin/claude/build84-cmdcon36 fixes the arithmetic floor in both maintained roots. Use side-supply-clamp-first for current-target status; keep this row only as old-ref provenance for pre-cmdcon branches.","sourceRefs":["origin/master@0139a346 Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions/Common_ChangeSideSupply.sqf:25","origin/master@0139a346 Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_ChangeSideSupply.sqf:12,36","origin/master@0139a346 Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Common/Functions/Common_ChangeSideSupply.sqf:25","origin/master@0139a346 Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan/Server/Functions/Server_ChangeSideSupply.sqf:12,36","origin/claude/b74-aicom-spend@b23f557f Chernarus Server_ChangeSideSupply.sqf:12,36,60 and wfbe_supply_temp_resistance handler at :25-45; B69..B74 checked side-supply delta empty","origin/claude/build84-cmdcon36@6f2fc4bd10c8339fd13be087d327717ff58c85e8 Chernarus/Vanilla Server_ChangeSideSupply.sqf:37-41 floors negative results to 0"],"evidence":["2026-06-23 source refresh preserved for old refs.","2026-07-02 current-target recheck supersedes the current-source-unpatched status: both maintained roots now clamp underflow to 0 and validate side/channel/amount shape.","Distinct from remaining DR-44 requester/server-ledger authority."],"implementationShape":["For current target, do not reopen the arithmetic patch.","For old-shape refs, replace the guard with `if (_change < 0) then {_change = 0};`, preserve max cap and recheck maintained-root propagation.","Keep requester/server-ledger authority on side-supply-clamp-first."],"validation":["Drive a side's supply near zero and issue a deduction larger than the balance; confirm it clamps to 0, not increases.","Confirm normal positive/negative changes within range are unaffected.","Verify maintained Vanilla or exact target scope after any old-ref backport.","If resistance handler is present, smoke valid and mismatched resistance temp-channel payloads."],"wikiRefs":["Deep-Review-Findings","Audit-Findings-Queue-2026-06-03","Economy-Authority-First-Cut","Economy-Towns-And-Supply","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-economy-owner","updated":"2026-07-02T21:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"hq-kill-double-score","priority":"P2","status":"confirmed-current-stable-b69-b74-unpatched","category":["scoring","hq","exploit","branch-status"],"summary":"DR-50: Server_OnHQKilled awards HQ-kill score twice on a clean kill (generic HQ building score plus non-teamkill-guarded HQ bounty = 1800) and once on a teamkill (the generic _points block fires regardless of teamkill). 2026-06-23 current-B74 branch check finds no maintained-root rescue in docs/source HEAD@9b7eb4bc, current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce, adjacent B74 origin/claude/b74-aicom-spend@b23f557f, current Miksuu b8389e748243, perf/quick-wins 0076040f or historical a96fdda2.","sourceRefs":["docs/source HEAD@9b7eb4bc Chernarus/Vanilla Server_OnHQKilled.sqf:23,47,49,75,78,81 and Init_CommonConstants.sqf:356; checked HQ-score paths source-unchanged from 97e4cdd0 and 4d4610f1","origin/master@0139a346 Chernarus/Vanilla Server_OnHQKilled.sqf:23,52,54,80,83,86 and Init_CommonConstants.sqf:529","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla Server_OnHQKilled.sqf:23,64,66,106,109,112; BaseFall smoke/sting at :57/:103 is not a scoring fix","origin/claude/b69@8d465fce Init_CommonConstants.sqf Chernarus :721 / Vanilla :555; origin/claude/b74-aicom-spend@b23f557f Chernarus :734 / Vanilla :555; coefficient remains 3","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend is empty for checked Server_OnHQKilled.sqf paths and changes only Chernarus Init_CommonConstants.sqf among checked HQ-score files","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f Chernarus/Vanilla Server_OnHQKilled.sqf:23,47,49,75,78,81 and Init_CommonConstants.sqf:356","historical a96fdda2 Chernarus/Vanilla Server_OnHQKilled.sqf:23,52,54,80,83,86 and Init_CommonConstants.sqf:372","current origin exposes no release/*, feat/*hq*, feat/*score*, feat/*bounty* or feat/*base* heads on 2026-06-23; broad commander matches are Codex AI-commander context/log branches, not HQ-score rescue evidence","upstream/ScoreForKillingFactories@f17445c1 and upstream/Fix0ScoreBountyBug@415615c9 carry older single-HQ-bounty provenance only, not current maintained-root rescue evidence"],"evidence":["2026-06-23 current-B74 refresh: all checked roots set `_points = 30000 / 100 * WFBE_C_BUILDINGS_SCORE_COEF` at :23, award it before the teamkill guard, then award `_score = 900` again for non-teamkills; current stable awards at :52/:54 and :86, while current B69/B74 line drift is :64/:66 and :112.","`WFBE_C_BUILDINGS_SCORE_COEF = 3` in every checked root, so `_points` is 900. Net: 1800 on a clean enemy HQ kill, 900 on a friendly/teamkill HQ kill, while the message branch treats teamkills as punishable.","B69/B74 base-fall smoke/sting code is spectacle/notification work around the handler, not DR-50 closure; B74 Chernarus constants drift does not alter the coefficient."],"implementationShape":["Keep exactly one HQ score award for non-teamkills; either move the generic _points award inside the non-teamkill guard or delete one of the two awards.","Ensure friendly/teamkill HQ kills award zero HQ-kill score.","Propagate Chernarus -> maintained Vanilla deliberately.","Keep DR-20 HQ-kill idempotency/replayed-handler hardening in scope for smoke, but do not conflate it with the single-kill double-award fix."],"validation":["Kill an enemy HQ: confirm one score/bounty award, not 1800/double-award.","Teamkill a friendly HQ: confirm zero score award and the teamkill message.","Trigger or simulate duplicate HQ-kill delivery after DR-20 idempotency changes and confirm score still applies at most once.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Commander-HQ-Lifecycle-Atlas","Deep-Review-Findings","Audit-Findings-Queue-2026-06-03","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-commander-hq-owner","updated":"2026-06-23T00:32:42+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"ai-respawn-handlers-orphaned","priority":"P2","status":"confirmed","category":["ai","respawn","dead-code"],"summary":"DR-51: both server AI-respawn paths are compiled-but-uncalled. AI_AddMultiplayerRespawnEH.sqf (only addMPEventHandler attach for AIAdvancedRespawn) has no call site; AISquadRespawn is gated by WF_A2_Vanilla which is always false. AI group leaders are never respawned by this subsystem.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/AI/AI_AddMultiplayerRespawnEH.sqf:1","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Init/Init_Server.sqf:11-12","Missions/[55-2hc]warfarev2_073v48co.chernarus/SRC/initJIPCompatible.sqf:91"],"evidence":["2026-06-07 agent-team verified: zero call sites for AI_AddMultiplayerRespawnEH / addMPEventHandler across the tree; AIAdvancedRespawn only referenced inside the orphaned EH body.","WF_A2_Vanilla set false unconditionally at initJIPCompatible.sqf:91; only #ifdef VANILLA flips it and VANILLA is never defined; no spawn AISquadRespawn caller."],"implementationShape":["Compile AI_AddMultiplayerRespawnEH.sqf and call it for each AI group leader at group creation (matching WF_A2_Vanilla guard), OR delete the dead path if AI leader respawn is intentionally disabled.","Decide vanilla vs non-vanilla respawn ownership rather than keeping both orphaned."],"validation":["Kill an AI group leader on a dedicated server and confirm whether/which respawn path fires.","If wired, confirm no Killed-EH stacking and correct loadout selection."],"wikiRefs":["Deep-Review-Findings","Dead-Code-And-Stale-Code-Register","AI-Headless-And-Performance","Codebase-Coverage-Ledger"],"owner":"future-ai-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"support-special-no-server-authority","priority":"P1","status":"partial-pr125-177ef1385f-source-hardened-runtime-pending","category":["authority","support-specials","forgery"],"summary":"DR-52 is source-hardened for PR #125 maintained Chernarus/Takistan: support-special spawn requests now carry requester/team context and server-side cost/cooldown/funds/upgrade/destination validation. Runtime proof and older/modded propagation remain pending.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/PVFunctions/RequestSpecial.sqf:1","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandleSpecial.sqf:43-65","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_PublicVariables.sqf:50","Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Support/Support_Paratroopers.sqf:5","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_Tactical.sqf:372"],"evidence":["2026-06-07 agent-team verified: RequestSpecial.sqf is a one-line pass-through; HandleSpecial cases do only _args spawn KAT_* with no commander/side/funds check; funds deducted client-side.","_playerTeam read from client payload (_this select 3) in all four Support_* scripts with no side/ownership check.","PVF dispatcher Call Compile only resolves SRVFNC-prefixed names, so this is a data-authority hole, not RCE (same class as DR-1/27/28/41/44)."],"implementationShape":["In Server_HandleSpecial, derive sender side/group/commander-status from the PVEH sender identity (_this select 0), validate against payload.","Deduct funds server-side; reject requests whose claimed side/group does not match the sender."],"validation":["Forge a RequestSpecial with another side's group handle; confirm the server rejects it after the fix.","Confirm legitimate commander support calls still work for both sides; smoke paratroop/ParaVehi/ParaAmmo/UAV."],"wikiRefs":["Deep-Review-Findings","Support-Specials-And-Tactical-Modules-Atlas","Server-Authority-Migration-Map","Codebase-Coverage-Ledger","Feature-Status-Register"],"owner":"future-security-owner","updated":"2026-07-02T09:50:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"pr1-supply-heli-economy","priority":"P1","status":"historical-branch-confirmed-no-live-head","category":["economy","supply","pr1","branch-feat-supply-helicopter","historical-branch"],"summary":"DR-53 was confirmed on historical PR #1 supply-helicopter branch evidence: the server reads client-broadcast SupplyAmount/SupplyByHeli without re-derivation and double-pays the pilot on non-cash heli runs. The 2026-06-22 remote check exposed no live feat/supply-helicopter, *supply* or release/* head, while current stable origin/master@0139a346 now carries the maintained-root supply-heli/cash-run shape. Re-check current stable before porting any PR #1 economy fix.","sourceRefs":["historical feat/supply-helicopter Client/Module/supplyMission/supplyMissionStart.sqf:53-55","historical feat/supply-helicopter Server/Module/supplyMission/supplyMissionStarted.sqf:6","historical feat/supply-helicopter Server/Module/supplyMission/supplyMissionCompleted.sqf:9,38","historical feat/supply-helicopter Client/Module/supplyMission/supplyMissionCompletedMessage.sqf:19"],"evidence":["2026-06-07 agent-team verified on historical origin/feat/supply-helicopter: client setVariable [SupplyAmount,_,true] broadcasts; server reads it back and pays via ChangeSideSupply with no re-derivation from town supplyValue (only the global max-supply ceiling caps it).","Non-cash heli (Air 3): server ChangeSideSupply deposits full amount AND client ChangePlayerFunds pays pilot amount*REWARD_MULT with no _cashRun guard. Air-4 cash runs are single-source/clean.","Corrections: suspected stacked Killed EH is REFUTED (isNil guard works); interdiction EH routes via publicVariableServer (server-safe)."],"implementationShape":["Server: re-derive supplyAmount from source town supplyValue * server-computed supply rate; re-check Air upgrade for heli.","Gate client pilot reward on _cashRun, or pay all rewards server-side.","Also fix server_town_patrol.sqf:18 ||->&& if this historical branch is revived (zombie patrol loop)."],"validation":["Forge SupplyAmount on a supply vehicle; confirm server ignores it post-fix.","Confirm non-cash heli run pays exactly once; cash run unchanged.","Truck + light/heavy heli delivery smoke at a command center; historical PR #1 revival gate."],"wikiRefs":["Deep-Review-Findings","Current-Work-Supply-Helicopters-PR1","Supply-Mission-Architecture","Supply-Mission-Authority-Cleanup-Playbook","Feature-Status-Register"],"owner":"future-economy-owner","updated":"2026-06-22T13:15:51+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"core-us-usmc-dedup-and-faction-mislabel","priority":"P3","status":"confirmed","category":["config","data-model","buy-menu"],"summary":"DR-54: Core_US.sqf:289 and Core_USMC.sqf:239 drop the _get = assignment so the duplicate-detection guard is always true (dedup log unreachable, entries always overwrite); and Core_US.sqf:205-206 registers AH64D_EP1 with faction USMC instead of US, hiding it from the US buy-menu filter.","sourceRefs":["Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Config/Core/Core_US.sqf:289","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Config/Core/Core_US.sqf:205-206","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Config/Core/Core_USMC.sqf:239","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_UIFillListBuyUnits.sqf:39"],"evidence":["2026-06-07 agent-team verified: 19/21 Core files use _get = missionNamespace getVariable (_c select _z); only Core_US:289 and Core_USMC:239 discard the result, leaving _get nil so isNil guard always true.","AH64D_EP1 info tuple index 8 (QUERYUNITFACTION) = USMC in Core_US; buy-menu filter Client_UIFillListBuyUnits.sqf:39 hides it from the US tab."],"implementationShape":["Restore _get = on Core_US.sqf:289 and Core_USMC.sqf:239.","Correct AH64D_EP1 faction to US or move the entry to Core_USMC.sqf per intent.","Propagate Chernarus -> maintained Vanilla."],"validation":["Open the US buy menu and confirm AH-64D appears under the intended faction tab.","Confirm no duplicate-registration regressions after restoring the guard."],"wikiRefs":["Deep-Review-Findings","Assets-Config-Localization-And-Parameters-Atlas"],"owner":"future-config-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"pvf-handler-sender-authentication","priority":"P0","status":"confirmed","category":["authority","networking","forgery","systemic"],"summary":"DR-55: the PVF/PVEH/direct-publicVariable handler surface lacks authenticated requester context. 2026-06-22 current-B74 refresh split dispatcher lookup from sender auth: current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce and adjacent B74 origin/claude/b74-aicom-spend@b23f557f use missionNamespace/CODE dispatch but Init_PublicVariables.sqf still forwards only the PVEH value tuple; docs/source HEAD@a0721301d4f5, Miksuu b8389e748243 and perf 0076040f keep value-only PVEHs plus Call Compile dispatchers. B69 and B74 add no server requester context in checked generic PVF dispatcher/init paths. High-risk legitimate handlers still trust payload side/team/object/funds fields.","sourceRefs":["docs/source HEAD@a0721301d4f5; checked PVF init/dispatcher paths unchanged from ade4d356","docs/source Chernarus/Vanilla Common/Init/Init_PublicVariables.sqf:46,51 value-only PVEHs","docs/source Chernarus/Vanilla Server/Functions/Server_HandlePVF.sqf:14 and Client/Functions/Client_HandlePVF.sqf:22 Call Compile dispatch","origin/master@0139a346 maintained roots Common/Init/Init_PublicVariables.sqf:56,61 value-only PVEHs","origin/master@0139a346 maintained roots Server_HandlePVF.sqf:14-15 and Client_HandlePVF.sqf:32-33 missionNamespace/CODE dispatch","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f maintained roots Common/Init/Init_PublicVariables.sqf:56,61; Server_HandlePVF.sqf:14-15; Client_HandlePVF.sqf:32-33 match current stable sender-auth boundary","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend is empty for checked generic PVF dispatcher/init paths","git diff --name-status 0a1ccb4d..origin/claude/b69 changes only Client/PVFunctions/HandleSpecial.sqf in both maintained roots among checked PVF/PVEH paths; HandleSpecial.sqf:57,59 adds default-off aicom-team-merge","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f maintained roots keep value-only PVEHs plus Call Compile dispatchers","origin/master@0139a346 Chernarus Server/PVFunctions/RequestVehicleLock.sqf:3-8","origin/master@0139a346 Chernarus Server/PVFunctions/RequestChangeScore.sqf:3-8,13","origin/master@0139a346 Chernarus Server/PVFunctions/RequestNewCommander.sqf:3-14","origin/master@0139a346 Chernarus Server/PVFunctions/RequestTeamUpdate.sqf:3-25","origin/master@0139a346 Chernarus Server/PVFunctions/AttackWave.sqf:19-42","origin/master@0139a346 Chernarus Server/Module/supplyMission/supplyMissionCompleted.sqf:2,6-12,31,40-45,52","origin/master@0139a346 Chernarus Server/Functions/Server_HandleSpecial.sqf:5-12,55-60,67-73,75-84,86-115"],"evidence":["2026-06-22 source refresh: current stable, current B69 and adjacent B74 removed dispatch-time Call Compile but did not pass sender identity or requester context into the server handler layer.","B69 8d465fce adds a branch-only client HandleSpecial aicom-team-merge tag, but the checked PVF init and server/client dispatcher files still have the same value-only sender-auth boundary as current stable; B74 has no checked generic dispatcher/init delta from B69.","CRITICAL examples remain legitimate-command forgery surfaces: RequestVehicleLock locks payload vehicles, RequestChangeScore overwrites score from payload, ATTACK_WAVE_DETAILS trusts direct side/price/length payload, and supply mission completion trusts payload player/truck/side data plus truck variables.","HIGH examples remain payload-sensitive: RequestNewCommander, RequestTeamUpdate, RequestSpecial RespawnST/upgrade-sync/update-clientfps/update-town-delegation/ICBM, and WASP HQ recovery request/debit side effects.","Read/cosmetic channel cleanliness from the earlier 68-agent sweep remains separate evidence and does not close authority-sensitive handler paths."],"implementationShape":["One architectural change: authenticate the PV sender (embed getPlayerUID/owner in SendToServer and cross-check against the APVEH origin, or move handlers behind a dispatcher that records the sender).","Each handler re-derives side/commander/funds/server-owned object state from the authenticated sender, not from payload fields.","Keep this separate from the handler-name allowlist patch: current stable/B69/B74 namespace-CODE lookup reduces arbitrary dispatch compile risk but does not authenticate legitimate handler payloads."],"validation":["For each handler: forge the PV from a non-owning/enemy client and confirm the server rejects it post-fix.","Confirm legitimate commander/owner paths still work; smoke vehicle lock, score award, MHQ repair/recovery, team orders, attack wave, supply mission, camp repair, upgrade, HC registration and RequestSpecial high-risk tags."],"wikiRefs":["Deep-Review-Findings","Public-Variable-Channel-Index","PVF-Dispatch-Implementation-Playbook","Server-Authority-Migration-Map","Networking-And-Public-Variables","Source-Fix-Propagation-Queue","Codebase-Coverage-Ledger","Feature-Status-Register"],"owner":"future-security-owner","updated":"2026-06-22T23:22:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"arty-sadarm-thread-leak","priority":"P2","status":"confirmed","category":["performance","artillery","scheduler"],"summary":"DR-56: ARTY_HandleSADARM.sqf leaks one permanently-sleeping scheduled thread per SADARM air-kill via an infinite while{true} (object deleted on iteration 1, no exit), and busy-waits every frame in a sleepless waitUntil that calls setVelocity during the 10-20s parachute descent.","sourceRefs":["Common/Module/Arty/ARTY_HandleSADARM.sqf:137-141","Common/Module/Arty/ARTY_HandleSADARM.sqf:38-44","Common/Functions/Common_HandleArtillery.sqf:33"],"evidence":["2026-06-07 verified: :137-141 while{true} do {sleep 1; deleteVehicle _impactAreaSimulation} has no exit; spawned per round via Common_HandleArtillery.sqf:33.",":38-44 waitUntil has no sleep; the sibling loop :50-72 uses sleep 0.2, confirming the omission."],"implementationShape":["Replace :137-141 with a single deleteVehicle.","Add sleep 0.1 as the first statement inside the :38 waitUntil block.","Propagate Chernarus -> maintained Vanilla."],"validation":["Fire SADARM at aircraft repeatedly; confirm no scheduler-thread accumulation (diag) and no per-frame setVelocity spikes."],"wikiRefs":["Deep-Review-Findings","Modules-Atlas","Performance-Opportunity-Sweep"],"owner":"future-perf-owner"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"town-patrols-never-spawn","priority":"P2","status":"historical-superseded-by-patrols-v2-current-master","category":["ai","town","gameplay","dead-feature"],"summary":"DR-57 was real for the old 89ae9dad town-based patrol path: server_town_ai.sqf reset wfbe_patrol_active_last every cycle so the old spawn gate never opened. Current origin/master@0139a346 retires that path and adds Patrols v2 side-upgrade patrols in Chernarus and maintained Vanilla.","sourceRefs":["historical 89ae9dad server_town_ai.sqf:67-68 and :295-296 old reset/spawn-gate defect","current origin/master@0139a346 source/Vanilla server_town_ai.sqf:72,327 retires old town patrol gating","current origin/master@0139a346 source/Vanilla server_side_patrols.sqf:12,19,48,67,72 drives side-upgrade patrol dispatch","current origin/master@0139a346 source/Vanilla Common_RunSidePatrol.sqf:54,82,119,148,245,264 runs the patrol lifecycle and convoy/camp-sweep hooks","current origin/master@0139a346 source/Vanilla Server_HandleSpecial.sqf:345-380 maintains slot/marker state"],"evidence":["2026-06-07 verified the old path as dead on then-current master.","2026-06-21 recheck against origin/master@0139a346 found current master still does not use the old server_town_ai patrol launch path and has maintained-root Patrols v2 source parity with shifted anchors."],"implementationShape":["No current-master implementation from this row; preserve it for older branches only.","Current work is runtime validation of the new Patrols v2 path."],"validation":["Research Patrols levels 1/2/3 and confirm the expected patrol tier spawns near the HQ-side frontline","Verify level-4 convoy/camp-sweep hooks without regressing ordinary patrols","Verify HC delegate-sidepatrol when an HC is live and server fallback otherwise","Verify friendly-only markers appear and clean up","Kill a patrol and confirm side slot/cooldown release allows another patrol after delay"],"wikiRefs":["Towns-Camps-And-Capture-Atlas","AI-Runtime-HC-Loop-Map","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ai-owner","updated":"2026-06-21T19:44:25+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"clickabletext-soundpush-current-b74-refresh-2026-06-23","priority":"P3","status":"superseded-history-2026-06-23","category":["ui","resources","config","branch-status"],"summary":"Superseded by clickabletext-soundpush-current-b741-b742-refresh-2026-06-23 for current stable/B74.1/B74.2 wording. This row preserves the adjacent-B74 evidence pass; current stable/B69/B74 carried the valid base value, while docs/source, Miksuu, perf, historical release and UI theme branches remained old-shape.","sourceRefs":["docs/source HEAD@0bb0f89f Chernarus/Vanilla Rsc/Ressources.hpp:92,541,556 and 17 RscClickableText inheritors per maintained root; b5219d47..HEAD checked resource/dialog deltas are empty","origin/master@0139a346 Chernarus/Vanilla Rsc/Ressources.hpp:92,541,556 valid base value and 14 RscClickableText inheritors per maintained root","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla Rsc/Ressources.hpp:92,541,556 valid base value and 14 RscClickableText inheritors per maintained root","stable blame: Chernarus Rsc/Ressources.hpp:556 -> 1a5e0b40; maintained Vanilla :556 -> 9b49883c","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend and origin/master..origin/claude/b74-aicom-spend are empty for checked resource/dialog paths","current Miksuu master verified by direct ls-remote as b8389e748243 on 2026-06-23; Miksuu and origin/perf/quick-wins@0076040f keep malformed :556 with 17 derived controls per maintained root","historical release a96fdda2 keeps malformed :556 with 14 derived controls per maintained root; current origin exposes no release/* head on 2026-06-23","origin/feat/wf-menu-ops-console@0767c0b5 and origin/feat/wf-menu-ux-phase1@87d86257 keep malformed :556 with 17 derived controls per maintained root"],"implementationShape":["Do not patch current stable/B69/B74 for the base value; it is already source-present there.","For old-shape targets, replace RscClickableText soundPush[] with the valid local empty-sound precedent {\"\", 0.2, 1} unless a code owner explicitly wants a real sound.","Propagate maintained Vanilla deliberately on any old-shape target edit.","Keep modded mission copies out of release claims until their broader generation/conflict blockers are resolved."],"validation":["Arma 2 OA config parse/mission boot has no resource error","gear clickable slots/buttons open and respond","WF menu/HUD toggle clickable controls respond","CoIn/construction clickable controls respond","artillery toggle clickable control responds","economy respawn supply truck clickable control responds","Vanilla parity checked after propagation"],"wikiRefs":["Client-UI-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","updated":"2026-06-23T19:49:21+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"mash-marker-current-b69-head-refresh-2026-06-22","priority":"P2","status":"owner-decision-branch-split-current-b69-refreshed","category":["respawn","mash","markers","direct-publicvariable","jip","dead-code","branch-status"],"summary":"MASH shared marker work is branch-sensitive with current B69 head named. Docs/source HEAD@2b5139219faa is unchanged from db3015f18ea3 for checked MASH paths, and docs/source, Miksuu b8389e748243 and perf/quick-wins 0076040f8a5e keep local MASH deploy plus orphaned server/client marker relay in both maintained roots. Current stable origin/master@0139a3468609, historical a96fdda28087 and current B69 origin/claude/b69@8d465fce remove the maintained-root deploy/module path and keep only Skill_Apply.sqf:43 removal wording plus residues. Older B69 refs 0a1ccb4d05c5 and 80d3267c1b2b are provenance only.","sourceRefs":["docs/developer-wiki-index HEAD@2b5139219faa unchanged from db3015f18ea3 for checked Chernarus/Vanilla MASH paths","docs/source Chernarus/Vanilla Skill_Officer.sqf:8,26,29; MASHMarker.sqf:1,9,11; receiverMASHmarker.sqf:1; Init_Client.sqf:132","origin/master@0139a3468609 Chernarus/Vanilla Skill_Apply.sqf:43; no maintained-root Client/Module/MASH or Server/Module/MASH tree entries","origin/claude/b69@8d465fcede7f Chernarus/Vanilla Skill_Apply.sqf:43; no maintained-root Client/Module/MASH, Server/Module/MASH or Skill_Officer.sqf paths","B69 diffs 0a1ccb4d05c5..origin/claude/b69 and 80d3267c1b2b..origin/claude/b69 touch Init_Client.sqf but contain no MASH-related hunks","Miksuu master@b8389e748243 Chernarus/Vanilla old deploy/relay shape with Init_Client.sqf:134","origin/perf/quick-wins@0076040f8a5e Chernarus/Vanilla old deploy/relay shape","historical a96fdda28087 Chernarus/Vanilla deploy removed at Skill_Apply.sqf:43"],"implementationShape":["Old-shape target: revive markers only as a full server-held marker registry with unique marker ids, side filtering, delete resend and explicit JIP resend/pull.","Old-shape target: if not reviving, delete/archive relay, receiver, stale direct-PV rows and modded sender drift deliberately.","Current-stable/current-B69-shaped target: do not port old marker conclusions blindly; first decide whether MASH deploy should be revived at all."],"validation":["Old-shape revival: deploying/undeploying MASH creates and deletes markers for current and late-joining same-side clients only.","Retirement: no dead relay/receiver compile comments or channel rows imply partial marker support.","Current-stable/current-B69-shaped target: branch docs and code agree whether MASH deploy is removed or intentionally revived."],"wikiRefs":["Respawn-And-Death-Lifecycle-Atlas","Feature-Status-Register","Public-Variable-Channel-Index","Abandoned-Feature-Revival-Review","Dead-Code-And-Stale-Code-Register"],"owner":"future-respawn-mash-owner","updated":"2026-06-22T19:09:20+02:00"} {"priority":"P2","wikiRefs":["Respawn-And-Death-Lifecycle-Atlas","Feature-Status-Register","Public-Variable-Channel-Index","Abandoned-Feature-Revival-Review","Dead-Code-And-Stale-Code-Register"],"status":"owner-decision-branch-split-current-b74-refreshed","updated":"2026-06-23T00:46:04+02:00","summary":"MASH shared marker work is branch-sensitive with adjacent B74 named. Docs/source HEAD@443055cf is unchanged from 2b5139219faa and db3015f18ea3 for checked MASH paths, and docs/source, Miksuu b8389e748243 and perf/quick-wins 0076040f8a5e keep local MASH deploy plus orphaned server/client marker relay in both maintained roots. Current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce, B74 origin/claude/b74-aicom-spend@b23f557f and historical a96fdda2 remove the maintained-root deploy/module path and keep only Skill_Apply.sqf:43 removal wording plus residues.","owner":"future-respawn-mash-owner","implementationShape":["Old-shape target: revive markers only as a full server-held marker registry with unique marker ids, side filtering, delete resend and explicit JIP resend/pull.","Old-shape target: if not reviving, delete/archive relay, receiver, stale direct-PV rows and modded sender drift deliberately.","Current-stable/current-B69/B74-shaped target: do not port old marker conclusions blindly; first decide whether MASH deploy should be revived at all."],"sourceRefs":["docs/source HEAD@443055cf unchanged from 2b5139219faa and db3015f18ea3 for checked Chernarus/Vanilla MASH paths","docs/source Chernarus/Vanilla Skill_Officer.sqf:8,26,29; MASHMarker.sqf:1,9,11; receiverMASHmarker.sqf:1; Init_Client.sqf:132","origin/master@0139a346 Chernarus/Vanilla Skill_Apply.sqf:43; no maintained-root Client/Module/MASH, Server/Module/MASH or Skill_Officer.sqf paths","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla Skill_Apply.sqf:43; no maintained-root Client/Module/MASH, Server/Module/MASH or Skill_Officer.sqf paths","B69 diffs 0a1ccb4d05c5..origin/claude/b69 and 80d3267c1b2b..origin/claude/b69 touch Init_Client.sqf but contain no MASH-related hunks","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend is empty for checked MASH paths","Miksuu master@b8389e748243 Chernarus/Vanilla old deploy/relay shape with Init_Client.sqf:134","origin/perf/quick-wins@0076040f8a5e Chernarus/Vanilla old deploy/relay shape","historical a96fdda28087 Chernarus/Vanilla deploy removed at Skill_Apply.sqf:43"],"validation":["Old-shape revival: deploying/undeploying MASH creates and deletes markers for current and late-joining same-side clients only.","Retirement: no dead relay/receiver compile comments or channel rows imply partial marker support.","Current-stable/current-B69/B74-shaped target: branch docs and code agree whether MASH deploy is removed or intentionally revived."],"category":["respawn","mash","markers","direct-publicvariable","jip","dead-code","branch-status"],"id":"mash-marker-current-b74-refresh-2026-06-23","schema":"a2waspwarfare-agent-hardening-backlog-v1"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"empty-supply-truck-current-b74-refresh-2026-06-23","priority":"P3","status":"docs-ready-owner-decision-branch-unrescued-current-b74-refreshed","category":["cleanup","supply","logistics","performance","branch-status"],"summary":"Supply trucks bypass the normal WFBE_C_UNITS_EMPTY_TIMEOUT path in all checked current refs. Docs/source HEAD@7e7aebec is unchanged from b4e10b5f for checked collector/handler paths; current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce, adjacent B74 origin/claude/b74-aicom-spend@b23f557f, current Miksuu b8389e748243, perf/quick-wins 0076040f and historical a96fdda2 all hard-code _delay = 86400 in Server_HandleEmptyVehicle.sqf while emptyvehiclescollector.sqf drains replicated emptyVehicles into the handler. B69..B74 and older-B69-to-B74 cleanup deltas are empty.","sourceRefs":["docs/developer-wiki-index HEAD@7e7aebec203a; git diff --name-status b4e10b5f..HEAD is empty for checked Chernarus/Vanilla emptyvehiclescollector.sqf and Server_HandleEmptyVehicle.sqf paths","docs/source Chernarus/Vanilla emptyvehiclescollector.sqf:9,12,15-17,19,30; Server_HandleEmptyVehicle.sqf:21-23,29-30,33","origin/master@0139a346 Chernarus/Vanilla emptyvehiclescollector.sqf:9,12,15-17,19,30; Server_HandleEmptyVehicle.sqf:29-31,37-38,41","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla emptyvehiclescollector.sqf:9,12,15-17,19,30; Server_HandleEmptyVehicle.sqf:29-31,37-38,41","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend, 0094647d..origin/claude/b74-aicom-spend and 80d3267c..origin/claude/b74-aicom-spend are empty for checked maintained collector/handler paths","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f Chernarus/Vanilla keep the docs-shaped collector/handler anchors","historical a96fdda2 Chernarus/Vanilla keeps the docs-shaped 24-hour handler policy; current origin exposes no release/* or cleanup/supply rescue heads on 2026-06-23"],"implementationShape":["If the long lifetime is intentional, label it as logistics persistence and keep operators from diagnosing supply trucks as collector failures.","If changing behavior, replace the hard-coded 86400 with a shorter supply-specific value or a mission parameter in source Chernarus.","Propagate maintained Vanilla deliberately after the source patch.","Keep ordinary empty-vehicle, ambulance and repair-truck timeout behavior separate from the supply-truck policy decision."],"validation":["ordinary empty vehicles still delete after WFBE_C_UNITS_EMPTY_TIMEOUT","ambulance/medical and repair vehicles still use their intended double timeout","empty supply trucks either persist for the documented policy window or delete after the new configured timeout","active supply mission/logistics use is not broken by cleanup","long-match object counts and emptyvehiclescollector PerformanceAudit rows stay healthy","maintained Vanilla parity checked"],"wikiRefs":["Marker-Cleanup-Restoration-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-runtime-logistics-owner","updated":"2026-06-23T01:03:04+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"camp-flag-current-b74-refresh-2026-06-23","priority":"P3","status":"branch-split-current-stable-b69-b74-capture-fixed-repair-open","category":["towns","camps","ui-world-state","correctness","branch-status"],"summary":"Camp flag texture evidence now includes adjacent B74. Docs/source HEAD@de911438 is unchanged from 28a7d9c5 for checked camp flag, repair-camp and CampCaptured client-handler paths and still flags old _side at server_town_camp.sqf:135 after writing _newSID at :132. Current stable origin/master@0139a346, current B69 origin/claude/b69@8d465fce, adjacent B74 origin/claude/b74-aicom-spend@b23f557f, historical a96fdda2 and live origin/feat/naval-hvt-objectives@2e1c5931 fix independent capture in both maintained roots at server_town_camp.sqf:83-86. Current Miksuu b8389e748243 remains old-owner and perf 0076040f fixes Chernarus only. Repair-side world-flag refresh remains open everywhere checked.","sourceRefs":["docs/source HEAD@de911438cfff Chernarus/Vanilla server_town_camp.sqf:132,135; Server_HandleSpecial.sqf:165,168; CampCaptured.sqf:22,47; git diff --name-status 28a7d9c5..HEAD is empty for checked camp flag, repair-camp and CampCaptured client-handler paths","origin/master@0139a3468609 Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; repair-camp remains side/broadcast only at Server_HandleSpecial.sqf:468,471; CampCaptured.sqf:23,48 marker-only","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; repair open at Chernarus Server_HandleSpecial.sqf:491,494 and Vanilla :468,471; CampCaptured.sqf:23,48 marker-only","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend and 0a1ccb4d..origin/claude/b74-aicom-spend are empty for checked Chernarus/Vanilla camp flag, repair-camp and CampCaptured client-handler paths","current Miksuu master@b8389e748243 Chernarus/Vanilla server_town_camp.sqf:88-91 still uses str _side; Server_HandleSpecial.sqf:263,266 repair open","origin/perf/quick-wins@0076040f8a5e Chernarus server_town_camp.sqf:135 uses str _newSide while Vanilla still uses str _side; repair open at Server_HandleSpecial.sqf:243,246 in both roots","historical a96fdda28087 Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; Server_HandleSpecial.sqf:263,266 repair open","origin/feat/naval-hvt-objectives@2e1c59317186 Chernarus/Vanilla server_town_camp.sqf:83-86 uses str _newSide; repair open at Chernarus Server_HandleSpecial.sqf:477,480 and Vanilla :467,470","current origin exposes no live release/*, *camp* or *town* rescue head on 2026-06-23"],"implementationShape":["Preserve current-stable/B69/B74/release/naval independent camp-capture flag fix when merging.","Patch old-owner independent-capture lines where those branches remain targets.","When repair-camp changes sideID, also refresh the camp flag texture or call a shared camp-visual helper.","Keep marker PVF behavior unchanged unless explicitly changing marker semantics."],"validation":["independent camp capture updates marker and 3D flag to new side","repairing a destroyed camp with side change updates bunker, marker and 3D flag","JIP sees camp side, marker and flag consistently after repair"],"wikiRefs":["Towns-Camps-And-Capture-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-town-capture-owner","updated":"2026-06-23T03:28:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"gear-template-profile-current-b741-b742-refresh-2026-06-23","priority":"P2","status":"branch-split-current-stable-b741-b742-save-filter-fixed-import-policy-open","category":["gear","ui","profile-persistence","branch-status","correctness"],"summary":"Gear template profile/filter hardening now has current B74.1/B74.2 evidence. Docs/source HEAD@1d4282eca8fd remains old-shape for save filtering and import bounds in both maintained roots. Current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, B74.2 origin/claude/b74.2-aicom@d472da6a, B69 origin/claude/b69@8d465fce and adjacent B74 origin/claude/b74-aicom-spend@b23f557f already fix the undefined _u_upgrade save-filter comparisons in both maintained roots, but still keep the six-field Init_ProfileGear import guard and creation/display policy split.","sourceRefs":["docs/source HEAD@1d4282eca8fd checked gear template paths unchanged from 72b5f0de98f9 and 43c3ba05","docs/source Chernarus/Vanilla SaveTemplateProfile.sqf:33,52,75 old _u_upgrade checks; Init_ProfileGear.sqf:17,25 six-field guard/index read; AddTemplate.sqf:136 OR gate; FillTemplates.sqf:17 Gear-only display","origin/master@f8a76de349da, origin/claude/b74.1-aicom@f8a76de349da, origin/claude/b74.2-aicom@d472da6ae875, origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla SaveTemplateProfile.sqf:34,57,82 fixed; Init_ProfileGear.sqf:17,25, AddTemplate.sqf:136 and FillTemplates.sqf:17 still open","Miksuu b8389e748243, perf 0076040f8a5e, a96fdda28087 and a66d46912e2a keep old save-filter/import/policy shape","miksuu/Gear_template_error@5b056013 changes only source-Chernarus GUI_BuyGearMenu.sqf template-selection nil guard, keeps old Chernarus profile helper shape and has no maintained Vanilla template payload","checked docs-source, 0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom and B69..B74 deltas are empty for checked template paths; live Trello gear/EASA branches do not touch checked template paths"],"implementationShape":["On docs/source or old-shape refs, replace _u_upgrade in SaveTemplateProfile with the item upgrade comparison or an explicit owner-chosen template-max rule.","On current stable/B74-shaped targets, do not reopen SaveTemplateProfile task 44 unless smoke finds a regression; patch Init_ProfileGear import bounds/default and owner policy split instead.","Decide whether template creation should remain Barracks-or-Gear or align to Gear-only display before changing AddTemplate, FillTemplates and profile save/import semantics.","Patch source Chernarus first, propagate maintained Vanilla deliberately and keep this separate from full gear purchase authority hardening."],"validation":["Old-shape target: SaveTemplateProfile has no live _u_upgrade comparison and locked templates do not produce undefined-variable RPT errors.","Current stable/B74-shaped target: current fixed save-filter lines remain intact while import guard/default handles six-field and seven-field rows.","Create/save/reload/import templates below, equal to and above gear/barracks upgrade levels according to the chosen policy.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Gear-Template-Profile-Filter","Gear-Loadout-And-EASA-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-gear-ui-owner","updated":"2026-06-23T20:04:13+02:00"} {"priority":"P2","id":"vehicle-cargo-loop-current-b741-b742-refresh-2026-06-23","schema":"a2waspwarfare-agent-hardening-backlog-v1","status":"branch-split-current-stable-b741-b742-b69-b74-fixed-old-shape-targets-open","wikiRefs":["Vehicle-Cargo-Equip-Loop-Bounds","Gear-Loadout-And-EASA-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"summary":"Vehicle/backpack cargo helper loops are fixed on current stable/B74.1, visible B74.2, current B69, adjacent B74 and historical release in both maintained roots, but docs/source, current Miksuu, historical EASA QoL and perf Vanilla remain old-shape. Docs/source HEAD@ebfdca96542f is unchanged from b2544207 for checked cargo helper paths; 0139a3468609..origin/master, origin/master..B74.2 and B69..B74 checked deltas are empty.","validation":["vehicle weapon cargo applies exactly the requested count without out-of-range RPT errors","vehicle magazine cargo applies exactly the requested count without out-of-range RPT errors","vehicle backpack cargo applies exactly the requested count without out-of-range RPT errors","unit backpack weapon and magazine contents apply without out-of-range RPT errors","empty cargo groups do not produce out-of-range RPT errors","maintained Vanilla parity checked after propagation"],"owner":"future-gear-cargo-owner","updated":"2026-06-23T19:27:34+02:00","category":["gear","cargo","loadout","reliability","branch-status"],"sourceRefs":["docs/source HEAD@ebfdca96542f Chernarus/Vanilla Common_EquipVehicle.sqf:27,33,39 and Common_EquipBackpack.sqf:35,41 inclusive; checked cargo helper paths unchanged from b2544207","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da, origin/claude/b74.2-aicom@d472da6ae875, origin/claude/b69@8d465fcede7f, origin/claude/b74-aicom-spend@b23f557fc912 and historical a96fdda28087 fix all five loops in both maintained roots","current Miksuu master@b8389e748243 and historical EASA QoL a66d46912e2a keep inclusive loops in both maintained roots","origin/perf/quick-wins@0076040f8a5e fixes Chernarus cargo helper loops but maintained Vanilla still carries inclusive loops","git diff --name-status b2544207..HEAD, 0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked cargo helper paths","current origin exposes no live release/*, cargo or equip rescue head on 2026-06-23; live Trello gear/EASA branches have no checked cargo-helper delta"],"implementationShape":["On old-shape targets, change Common_EquipVehicle.sqf weapon, magazine and backpack loops to iterate through (count(_items) - 1).","Apply the same bound to Common_EquipBackpack.sqf weapon and magazine loops.","Patch source Chernarus first, then propagate maintained Vanilla deliberately.","Keep this reliability fix separate from gear purchase authority, profile-template filtering and service/EASA affordability work."]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"buy-menu-price-key-current-b74-refresh-2026-06-23","priority":"P2","status":"branch-split-current-stable-b69-b74-selected-detail-key-fixed-unit-cost-reset-open","category":["factory","buy-menu","ui","economy","branch-status"],"summary":"Buy-menu selected-detail display and driver-default key mirroring are fixed on current stable, current B69, adjacent B74 and historical release in both maintained roots, but every checked ref still lacks a level-0 UNIT_COST_MODIFIER reset in Client_UIFillListBuyUnits.sqf. Docs/source, current Miksuu and perf also keep the old selected-detail price drift and driver-key split; historical EASA QoL fixes Chernarus selected detail only.","sourceRefs":["docs/source HEAD@4120137ff517 Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:90,261, Client_UIFillListBuyUnits.sqf:11,14,60 and Init_CommonConstants.sqf:203; checked controller/list-filler paths unchanged from 8d611092 and ebd86fad0","origin/master@0139a3468609, origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:99,416, Client_UIFillListBuyUnits.sqf:11,14,90 and mirrored driver-key writes","historical a96fdda28087 fixes selected-detail display and mirrors both driver keys in both maintained roots but still lacks level-0 reset; historical a66d46912e2a fixes selected-detail display in Chernarus only","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f8a5e keep old selected-detail/key shape in both maintained roots","checked docs-source, B69..B74, master..B74 and older-B69-to-B74 controller/list-filler deltas are empty; no live release/buy/EASA/QoL/factory rescue head exposed"],"implementationShape":["Set UNIT_COST_MODIFIER to 1 before the unit-cost upgrade branch in Client_UIFillListBuyUnits.sqf, or replace the mutable global with a local price helper shared by list/detail/affordability/debit paths.","Do not reopen current stable/B69/B74 selected-detail display or driver-key mirror work unless smoke proves a regression.","Decide whether dual-key mirroring is the intended compatibility policy or whether one normalized profile key should replace it.","Patch source Chernarus first, propagate maintained Vanilla deliberately, and keep this separate from player-purchase server authority and destroyed-factory refund work."],"validation":["list display, selected-detail display, affordability check and debit agree at unit-cost levels 0, 1 and 2","exact-funds and insufficient-funds purchases use the same displayed price","driver/gunner/commander/extra crew toggles, max-out and reset preserve the chosen default-driver key policy","maintained Vanilla parity checked after propagation"],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-factory-ui-owner","updated":"2026-06-23T04:21:11+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"stale-rscmenu-upgrade-current-b74-refresh-2026-06-23","priority":"P1","status":"docs-miksuu-perf-open-current-stable-b69-b74-fixed","category":["ui","dead-code","upgrades","generated-missions","branch-status"],"summary":"Old RscMenu_Upgrade still exists only on docs/source, current Miksuu and perf-style maintained roots among checked current refs. Current stable, B69, B74, historical release and upgrade-queue refs have removed the stale missing-handler class in both maintained roots.","sourceRefs":["docs/source HEAD@0fdd5602 Rsc/Dialogs.hpp:2425,2428 in Chernarus/Vanilla","current Miksuu b8389e748243 and perf 0076040f Rsc/Dialogs.hpp:2435,2438 in Chernarus/Vanilla","origin/master@0139a346, origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f have no checked maintained-root RscMenu_Upgrade / GUI_Menu_Upgrade.sqf hits","historical a96fdda2 and b061c905 have no checked maintained-root stale-class hits","live WFBE_UpgradeMenu remains Rsc/Dialogs.hpp:4-7 plus GUI_UpgradeMenu.sqf"],"implementationShape":["Do not recreate GUI_Menu_Upgrade.sqf or old wf_*.paa icons just to satisfy stale references.","Either remove the old class consistently from old-shape maintained roots or replace it with an explicit compatibility alias to WFBE_UpgradeMenu.","Keep upgrade request authority and upgrade-sync tuple cleanup separate."],"validation":["Static grep finds no stale missing-handler RscMenu_Upgrade class in maintained roots or confirms intentional alias.","Main menu MenuAction 7 still opens WFBE_UpgradeMenu.","Upgrade list/detail, RequestUpgrade send, insufficient funds/supply and already-upgrading states still render.","Maintained Vanilla parity verified."],"wikiRefs":["UI-Resource-Parity-Cleanup","Dead-Code-And-Stale-Code-Register","Client-UI-Systems-Atlas","Feature-Status-Register"],"owner":"future-ui-upgrade-cleanup-owner","updated":"2026-06-23T04:34:53+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"hq-kill-double-score-current-b741-refresh-2026-06-23","priority":"P2","status":"confirmed-current-stable-b69-b74-b741-unpatched","category":["scoring","hq","exploit","branch-status"],"summary":"DR-50 remains open after current stable advanced to origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34. Server_OnHQKilled still awards HQ-kill score twice on a clean kill (generic HQ building score plus non-teamkill-guarded HQ bounty = 1800) and once on a teamkill (generic _points fires regardless of teamkill) in both maintained roots.","sourceRefs":["docs/source HEAD@c2d513ecb672 source-unchanged from 9b7eb4bc for checked HQ-score files; Server_OnHQKilled.sqf:23,47,49,75,78,81 and Init_CommonConstants.sqf:356","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla Server_OnHQKilled.sqf:23,64,66,106,109,112","origin/master@f8a76de349da Init_CommonConstants.sqf Chernarus :753 / Vanilla :555; coefficient remains 3","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 keep the same Server_OnHQKilled.sqf line shape; B74..B74.1 changes only Chernarus constants among checked HQ-score files","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep the older two-award line shape; historical a96fdda28087 also remains two-award","current origin exposes no release/*, feat/*hq*, feat/*score*, feat/*bounty* or feat/*base* rescue heads beyond B74 branch heads on 2026-06-23"],"evidence":["2026-06-23 current-B74.1 refresh: all checked roots set _points = 30000 / 100 * WFBE_C_BUILDINGS_SCORE_COEF at :23, award it before the teamkill guard, then award _score = 900 again for non-teamkills.","WFBE_C_BUILDINGS_SCORE_COEF = 3 in every checked root, so _points is 900. Net: 1800 on a clean enemy HQ kill, 900 on a friendly/teamkill HQ kill.","B69/B74/B74.1 base-fall smoke/sting code is spectacle/notification work around the handler, not DR-50 closure."],"implementationShape":["Keep exactly one HQ score award for non-teamkills; either move the generic _points award inside the non-teamkill guard or delete one of the two awards.","Ensure friendly/teamkill HQ kills award zero HQ-kill score.","Propagate Chernarus -> maintained Vanilla deliberately.","Keep DR-20 HQ-kill idempotency/replayed-handler hardening in scope for smoke, but do not conflate it with the single-kill double-award fix."],"validation":["Kill an enemy HQ: confirm one score/bounty award, not 1800/double-award.","Teamkill a friendly HQ: confirm zero score award and the teamkill message.","Trigger or simulate duplicate HQ-kill delivery after DR-20 idempotency changes and confirm score still applies at most once.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Commander-HQ-Lifecycle-Atlas","Deep-Review-Findings","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-commander-hq-owner","updated":"2026-06-23T09:50:56+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"pvf-handler-sender-authentication-current-b741-refresh-2026-06-23","priority":"P0","status":"confirmed-open-current-b741","category":["authority","networking","forgery","systemic"],"summary":"DR-55: the PVF/PVEH/direct-publicVariable handler surface lacks authenticated requester context. Current stable origin/master@f8a76de34 equals origin/claude/b74.1-aicom@f8a76de34 and still forwards only the PVEH value tuple at Init_PublicVariables.sqf:56,61; Server_HandlePVF.sqf:11-15 then resolves/spawns the requested handler with only handler parameters. Current B69 and B74 match that generic boundary. Docs/source, Miksuu and perf remain old-shape with value-only PVEHs plus Call Compile dispatchers. High-risk legitimate handlers still trust payload side/team/object/funds fields.","sourceRefs":["docs/source HEAD@925d56e01a1e checked PVF init/dispatcher paths unchanged from a0721301d4f5","docs/source Chernarus/Vanilla Common/Init/Init_PublicVariables.sqf:46,51 value-only PVEHs; Server_HandlePVF.sqf:14 and Client_HandlePVF.sqf:22 Call Compile dispatch","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 maintained roots Common/Init/Init_PublicVariables.sqf:56,61; Server_HandlePVF.sqf:11-15; Client_HandlePVF.sqf:13-14,32-33","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f maintained roots match current stable/B74.1 generic PVF boundary","git diff --name-status origin/claude/b69..origin/claude/b74-aicom-spend and origin/claude/b74-aicom-spend..origin/master are empty for checked generic PVF dispatcher/init paths","git grep found no WFBE_CL_PVF_ALLOWED, WFBE_SE_PVF_ALLOWED, PVF_ALLOWED, allowlist, rejected-unregistered, sender or requester guard in checked current stable/B69/B74 dispatcher/init files","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f maintained roots keep value-only PVEHs plus Call Compile dispatchers"],"evidence":["Current stable/B74.1 removes dispatch-time Call Compile but does not pass publisher identity or authenticated requester context into the server handler layer.","Critical examples remain legitimate-command forgery surfaces: RequestVehicleLock locks payload vehicles, RequestChangeScore overwrites score from payload, ATTACK_WAVE_DETAILS trusts direct side/price payload and supply mission completion trusts payload player/truck/side data plus truck variables.","Broad RequestSpecial tags remain mixed-risk after B74.1 expansion: update-teamleader/group-query, RespawnST/support effects, upgrade-sync, update-clientfps, update-town-delegation, ICBM, process-killed-hq, HC/AICOM/patrol/client-object/camp-repair tags all require tag-specific authority checks."],"implementationShape":["Authenticate the PV sender/requester and carry that context to server handlers, or move handlers behind a dispatcher/session table that records trusted requester identity.","Each handler re-derives side, commander/team role, funds and object ownership from trusted server state instead of payload fields.","Keep this separate from registered-handler allowlisting: namespace/CODE lookup validates execution shape, not legitimate handler payload authority."],"validation":["Forge PVs from a non-owning/enemy client and confirm server rejection for vehicle lock, score change, team update, RequestSpecial tags, attack-wave detail and supply completion.","Confirm legitimate commander/owner/support flows still work after re-derivation and maintained Vanilla propagation."],"wikiRefs":["Deep-Review-Findings","Feature-Status-Register","Server-Authority-Migration-Map","PVF-Dispatch-Implementation-Playbook","Networking-And-Public-Variables","Public-Variable-Channel-Index","Source-Fix-Propagation-Queue"],"owner":"future-security-owner","updated":"2026-06-23T10:17:10+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"hq-kill-double-score-miksuu-branch-intel-2026-06-23","priority":"P2","status":"confirmed-unpatched-branch-names-classified","category":["scoring","hq","exploit","branch-status","negative-knowledge"],"summary":"DR-50 remains open; Miksuu score/HQ/bounty branch names are classified so code owners do not mistake historical one-award ancestry for a maintained-root fix. Current Miksuu master@b8389e748243 still has the double-award Server_OnHQKilled handler in both maintained roots.","sourceRefs":["miksuu/master@b8389e748243 Chernarus/Vanilla Server_OnHQKilled.sqf still has generic _points plus second _score = 900 award","miksuu/ScoreForKillingFactories@f17445c15190 old Chernarus plus old Takistan handler blob 12d33a8f87ee has one-award/non-teamkill-guard shape","miksuu/Fix0ScoreBountyBug@415615c9662a old Chernarus plus old Takistan handler blob 12d33a8f87ee has one-award/non-teamkill-guard shape","miksuu/FixNukeMoneyGain@2ad3a7d38837 old Chernarus plus old Takistan handler blob 12d33a8f87ee has one-award/non-teamkill-guard shape","miksuu/AntiHQTeamkillDisabledInDebugMode@5bafe566951a has current Missions_Vanilla path and one-award/non-teamkill-guard handler but is branch-only","miksuu/BountyModifierTo4@cc127ef40b4d has no _score = 900 and no _points in Server_OnHQKilled.sqf","96809ac35578 folder-structure history helps explain why old ancestry is not current master truth"],"implementationShape":["Do not close DR-50 from branch name or ancestry alone.","Patch the target current branch by keeping exactly one non-teamkill HQ score award and zero score for friendly/teamkill HQ destruction.","Propagate maintained Vanilla deliberately.","Keep DR-20 idempotency/replayed-handler smoke adjacent but distinct."],"validation":["Enemy HQ kill awards exactly one HQ score/bounty.","Friendly/teamkill HQ destruction awards zero HQ score and still sends the teamkill message.","Maintained Vanilla parity verified.","Duplicate/replayed HQ-kill delivery does not double score."],"wikiRefs":["Commander-HQ-Lifecycle-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Upstream-Miksuu-Commit-Intel","Developer-History-And-Upstream-Lessons"],"owner":"future-commander-hq-owner","updated":"2026-06-23T10:52:30+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"empty-supply-truck-b742-current-head-followup-2026-06-24","priority":"P3","status":"docs-ready-owner-decision-branch-unrescued-current-b742-head-refreshed-2026-06-24","category":["cleanup","supply","logistics","performance","branch-status"],"summary":"Supply trucks bypass the normal WFBE_C_UNITS_EMPTY_TIMEOUT path in all checked current refs. Docs/source HEAD@248baa289ca5 is unchanged from 499c2543 / b4e10b5f for checked collector/handler paths; current stable/B74.1 origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, current B69 origin/claude/b69@8d465fce, adjacent B74 origin/claude/b74-aicom-spend@b23f557f, current Miksuu b8389e748243, perf/quick-wins 0076040f and historical a96fdda2 all hard-code _delay = 86400 in Server_HandleEmptyVehicle.sqf while emptyvehiclescollector.sqf drains replicated emptyVehicles into the handler. Docs-source, old-stable-to-current, d472da6a-to-current-B74.2, current-to-B74.2 and B69-to-B74 cleanup deltas are empty.","sourceRefs":["docs/developer-wiki-index HEAD@248baa289ca5; git diff --name-status b4e10b5f..HEAD and 499c2543..HEAD are empty for checked Chernarus/Vanilla emptyvehiclescollector.sqf and Server_HandleEmptyVehicle.sqf paths","docs/source Chernarus/Vanilla emptyvehiclescollector.sqf:9,15,17,19; Server_HandleEmptyVehicle.sqf:22-23,33","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla emptyvehiclescollector.sqf:9,15,17,19; Server_HandleEmptyVehicle.sqf:30-31,41","origin/claude/b74.2-aicom@21b62b04 Chernarus/Vanilla matches current stable for checked collector/handler paths","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f Chernarus/Vanilla match current stable line shape for checked collector/handler paths","git diff --name-status 0139a3468609..origin/master, d472da6a..origin/claude/b74.2-aicom, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked maintained collector/handler paths","Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f Chernarus/Vanilla keep the docs-shaped collector/handler anchors","historical a96fdda2 Chernarus/Vanilla keeps the docs-shaped 24-hour handler policy; current origin exposes no live release/* or cleanup/supply rescue head on 2026-06-24"],"implementationShape":["If the long lifetime is intentional, label it as logistics persistence and keep operators from diagnosing supply trucks as collector failures.","If changing behavior, replace the hard-coded 86400 with a shorter supply-specific value or a mission parameter in source Chernarus.","Propagate maintained Vanilla deliberately after the source patch.","Keep ordinary empty-vehicle, ambulance and repair-truck timeout behavior separate from the supply-truck policy decision."],"validation":["ordinary empty vehicles still delete after WFBE_C_UNITS_EMPTY_TIMEOUT","ambulance/medical and repair vehicles still use their intended double timeout","empty supply trucks either persist for the documented policy window or delete after the new configured timeout","active supply mission/logistics use is not broken by cleanup","long-match object counts and emptyvehiclescollector PerformanceAudit rows stay healthy","maintained Vanilla parity checked"],"wikiRefs":["Marker-Cleanup-Restoration-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-runtime-logistics-owner","updated":"2026-06-24T02:53:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"buy-menu-price-key-current-b741-b742-refresh-2026-06-23","priority":"P2","status":"branch-split-current-b741-b742-selected-detail-key-fixed-unit-cost-reset-open","category":["factory","buy-menu","ui","economy","branch-status"],"summary":"Buy-menu selected-detail display and driver-default key mirroring are fixed on current stable/B74.1, current B69, adjacent B74, B74.2 and historical release a96fdda2 in both maintained roots, but every checked ref still lacks a level-0 UNIT_COST_MODIFIER reset in Client_UIFillListBuyUnits.sqf. Docs/source, current Miksuu and perf also keep the old selected-detail price drift and driver-key split. origin/claude/trello-buymenu-gear-display@db1291beba is branch-only special AT gear/ammo preview work, not a price/key closure.","sourceRefs":["docs/source Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:90,261, Client_UIFillListBuyUnits.sqf:11,14,60 and Init_CommonConstants.sqf:203; checked price/key paths unchanged from 4120137f / 8d611092 / ebd86fad0","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:99,416, Client_UIFillListBuyUnits.sqf:11,14,90, Init_CommonConstants.sqf Chernarus:597 and Vanilla:399, and mirrored driver-key writes","origin/claude/b74.2-aicom@d472da6a source Chernarus GUI_Menu_BuyUnits.sqf:105,422 and Init_CommonConstants.sqf:610; maintained Vanilla stays stable-shaped","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match current stable for checked controller/list-filler price/key behavior; B69..B74 changes only Chernarus constants among checked paths","historical a96fdda2 fixes selected-detail display and mirrors both driver keys in both maintained roots but still lacks level-0 reset; historical a66d4691 fixes selected-detail display in Chernarus only","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep old selected-detail/key shape in both maintained roots","origin/claude/trello-buymenu-gear-display@db1291beba two maintained-root GUI_Menu_BuyUnits.sqf files +70/-2; preview adjustment at :552-565 leaves price/key anchors stable-shaped and git diff --check is clean"],"implementationShape":["Set UNIT_COST_MODIFIER to 1 before the unit-cost upgrade branch in Client_UIFillListBuyUnits.sqf, or replace the mutable global with a local price helper shared by list/detail/affordability/debit paths.","Do not reopen current stable/B74.1/B69/B74/B74.2 selected-detail display or driver-key mirror work unless smoke proves a regression.","Decide whether dual-key mirroring is the intended compatibility policy or whether one normalized profile key should replace it.","Patch source Chernarus first, propagate maintained Vanilla deliberately, and keep this separate from player-purchase server authority, destroyed-factory refund work and Trello #91 gear-preview UI work."],"validation":["list display, selected-detail display, affordability check and debit agree at unit-cost levels 0, 1 and 2","exact-funds and insufficient-funds purchases use the same displayed price","driver/gunner/commander/extra crew toggles, max-out and reset preserve the chosen default-driver key policy","maintained Vanilla parity checked after propagation"],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-factory-ui-owner","updated":"2026-06-23T17:36:24+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"service-easa-current-b741-b742-branch-refresh-2026-06-23","priority":"P2","status":"branch-split-current-b741-b742-current-head-partial-service-and-chernarus-easa-fixed-vanilla-context-authority-open","category":["service","EASA","gear","ui","economy","branch-status","authority"],"summary":"Service/EASA local correctness remains patch-ready on old-shape docs/source/Miksuu/perf targets and still incomplete on stable-shaped refs. Current stable/B74.1, current B74.2 origin/claude/b74.2-aicom@21b62b04, B69, B74 and historical a96fdda2 partially guard service rearm/refuel in both maintained roots, but repair/heal still only check positive price at debit time and no service branch adds fresh action-time usable-context checks. The d472da6a..21b62b04 follow-up is empty for checked service/EASA menu/module/stringtable paths. Stable-shaped refs fix EASA exact-funds purchase only in source Chernarus; maintained Vanilla remains strict >. Live Trello service ammo-count and EASA weapon-category branches are UI/wiring candidates only.","sourceRefs":["docs/source HEAD@b798fd66fc5e service/EASA menu paths unchanged from e9dd7f37 / 8906ee89 / 9b3fc38e / 8b71e2a1","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 and origin/claude/b74.2-aicom@21b62b04 GUI_Menu_Service.sqf:484,496-497,507,519-520; Chernarus GUI_Menu_EASA.sqf:118 >= while maintained Vanilla :118 remains >","d472da6a..21b62b04 and origin/master..origin/claude/b74.2-aicom are empty for checked Chernarus/Vanilla service menu, EASA menu/module and stringtable paths","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match stable-shaped checked service/EASA behavior","miksuu/master@b8389e748243 and origin/perf/quick-wins@0076040f keep old service direct debit and strict EASA purchase shape","origin/claude/trello-service-ammo-count@9159f935874e adds ammo % service UI at GUI_Menu_Service.sqf:333,474,477 and leaves affordability anchors stable-shaped","origin/claude/trello-easa-weapon-categories@0881911849da compiles WFBE_EASA_FNC_LoadoutCat at EASA_Init.sqf:2 and adds EASA_LoadoutCat.sqf:1-57, while exact-funds behavior remains stable-shaped"],"implementationShape":["Recompute service prices before enable/action branches or add fresh action-time price/funds/context checks before every debit/spawn.","Guard repair and heal with fresh funds comparisons and current usable context, not just positive price.","Use >= for EASA purchase if exact listed price should buy the loadout, and propagate maintained Vanilla deliberately.","Keep branch-only service ammo UI and EASA category tags separate from affordability/authority closure.","Keep all of this separate from the larger server-ledger/economy authority migration."],"validation":["exact-funds EASA purchase succeeds where intended and fails cleanly under price","unsupported/stale EASA vehicle closes or rejects without debit/no-op success","rearm/refuel/repair/heal with insufficient funds do not debit or spawn support","repair/heal valid funded cases still work","vehicle movement/airborne/support loss at action time rejects before debit","service ammo % and EASA [AA]/[AG]/[MR] category tags render without RPT errors if branch UI is promoted","maintained Vanilla parity checked after propagation"],"wikiRefs":["Service-Menu-Affordability-Guards","Gear-Loadout-And-EASA-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-service-easa-owner","updated":"2026-06-23T23:43:59+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"patrols-v2-current-b741-b742-refresh-2026-06-23","priority":"P3","status":"source-present-smoke-pending-current-b741-b742","category":["ai","patrols","towns","markers","headless-client","branch-status","smoke"],"summary":"Patrols v2 is source-present on current stable/B74.1 in both maintained roots and smoke-pending rather than current-source-unpatched DR-57. Current B74.2 origin/claude/b74.2-aicom@21b62b04 adds source-Chernarus-only pop-tier cap reads, has no maintained Vanilla Patrols payload, and is unchanged from d472da6a for checked Patrols/town-AI/marker/UI cap paths. Old-shape docs/source, Miksuu, perf and historical a96fdda2 have no Patrols v2 startup hits.","sourceRefs":["docs/source HEAD@665df909: no maintained-root Patrols v2 startup hits for Server\\\\FSM\\\\server_side_patrols, WFBE_UP_PATROLS or WFBE_ACTIVE_PATROLS","origin/master@f8a76de34 equals origin/claude/b74.1-aicom@f8a76de34 for checked Patrols v2 behavior","current stable/B74.1 Chernarus server_town_ai.sqf:72,343; server_side_patrols.sqf:12,19,83,87,127,132; Common_RunSidePatrol.sqf:56,86,89,95,114,125,154,253,272; Server_HandleSpecial.sqf:367-393; updatepatrolmarkers.sqf:3,23; server_patrols.sqf:31","current stable/B74.1 maintained Vanilla server_town_ai.sqf:72,337; server_side_patrols.sqf:12,19,33,37,67,72; Common_RunSidePatrol.sqf:56,84,87,93,108,119,148,247,266; Server_HandleSpecial.sqf:346-372; updatepatrolmarkers.sqf:3,19; server_patrols.sqf:31","origin/claude/b74.2-aicom@21b62b04 source Chernarus pop-tier reads: Init_CommonConstants.sqf:170,173-176; server_side_patrols.sqf:32,38; server_town_ai.sqf:61,64-65; Server_GetTownGroupsDefender.sqf:89,91; GUI_Menu_BuyUnits.sqf:37,41; Client_UpdateRHUD.sqf:354,358; source-Chernarus line drift to server_town_ai.sqf:84,355, Init_Client.sqf:501 and Init_Server.sqf:885","d472da6a..21b62b04 is empty for checked Patrols/town-AI/marker/UI cap files","origin/master..origin/claude/b74.2-aicom checked Patrols/town-AI diff touches source Chernarus only and has no Missions_Vanilla payload","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f keep the Patrols v2 route in both maintained roots; B69..B74 checked Patrols delta is limited to source Chernarus Init_CommonConstants.sqf","current Miksuu b8389e748243, origin/perf/quick-wins@0076040f and historical a96fdda2 have no Patrols v2 startup hits"],"implementationShape":["Do not reopen old DR-57/AI1 town-patrol launch as current stable unpatched without checking branch refs.","If changing Patrols behavior, patch source Chernarus and maintained Vanilla deliberately unless the target is explicitly branch-only.","Keep B74.2 pop-tier cap work separate from stable/B74.1 Patrols source-present wording until propagated or separately scoped."],"validation":["Patrols upgrade levels 1/2/3 spawn expected LIGHT/MEDIUM/HEAVY patrols near owned frontline towns.","Level 4 convoy and camp-sweep hooks run and clean up.","HC delegate-sidepatrol path and server fallback both work.","Friendly markers are side-gated and clear after death.","Side slot/cooldown releases through Server_HandleSpecial.","Buy Units/RHUD AI cap text matches the target branch stable -1 policy or B74.2 pop-tier policy.","Maintained Vanilla parity checked when claiming non-branch-only behavior."],"wikiRefs":["Towns-Camps-And-Capture-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ai-town-owner","updated":"2026-06-23T22:41:23+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"clickabletext-soundpush-current-b741-b742-refresh-2026-06-23","priority":"P3","status":"superseded-history-2026-06-24","category":["ui","resources","config","branch-status"],"summary":"Superseded by clickabletext-soundpush-b742-current-head-followup-2026-06-24 for current B74.2 origin/claude/b74.2-aicom@21b62b04 wording. This row preserves the earlier current-B74.1/B74.2 d472da6a evidence pass.","sourceRefs":["docs/source HEAD@1d4282eca8fd Chernarus/Vanilla Rsc/Ressources.hpp:92,541,556 and Rsc/Dialogs.hpp 17 RscClickableText inheritors per maintained root; checked resource/dialog paths are unchanged from 0bb0f89f and b5219d47","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da and origin/claude/b74.2-aicom@d472da6ae875 keep valid RscClickableText.soundPush[] = {\"\", 0.2, 1}; at Rsc/Ressources.hpp:556 with 14 RscClickableText inheritors per maintained root","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 keep valid :556 with 14 RscClickableText inheritors per maintained root","git diff --name-status 0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend returned no checked resource/dialog path deltas","current Miksuu master verified by direct ls-remote as b8389e7482438edd00f420c5bb795ac0a642971f on 2026-06-23; Miksuu, origin/perf/quick-wins@0076040f, historical a96fdda2 and UI theme branches 0767c0b5/87d86257 remain old-shape for :556","git ls-remote branch scan exposed no live release/* head and only origin/feat/wf-menu-ops-console plus origin/feat/wf-menu-ux-phase1 for checked UI/menu/sound/resource patterns"],"implementationShape":["Do not patch current stable/B74.1/B74.2/B69/B74 for the base value; it is already source-present there.","For old-shape targets, replace RscClickableText soundPush[] with the valid local empty-sound precedent {\"\", 0.2, 1} unless a code owner explicitly wants a real sound.","Propagate maintained Vanilla deliberately on any old-shape target edit.","Keep modded mission copies out of release claims until their broader generation/conflict blockers are resolved."],"validation":["Arma 2 OA config parse/mission boot has no resource error","gear clickable slots/buttons open and respond","WF menu/HUD toggle clickable controls respond","CoIn/construction clickable controls respond","artillery toggle clickable control responds","economy respawn supply truck clickable control responds","Vanilla parity checked after propagation"],"wikiRefs":["Client-UI-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","updated":"2026-06-24T00:24:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"camp-flag-current-b741-b742-refresh-2026-06-23","priority":"P3","status":"branch-split-current-b741-b742-capture-fixed-repair-open","category":["towns","camps","ui-world-state","correctness","branch-status"],"summary":"Camp flag texture hardening is branch-split with current B74.1/B74.2 evidence. Docs/source HEAD@7b635187c8a1 remains old-owner for independent camp capture in both maintained roots; current stable/B74.1, B74.2, B69, adjacent B74, historical a96fdda2 and naval HVT preserve the independent-capture fix; current Miksuu remains old-owner and perf fixes Chernarus only. Repair-camp can still change sideID and broadcast CampCaptured without refreshing the world flag object everywhere checked. Wildcard capture ead7e854 is marker/handler context only.","sourceRefs":["docs/source HEAD@7b635187c8a1 checked camp paths unchanged from de911438 and 28a7d9c5; Chernarus/Vanilla server_town_camp.sqf:132,135; Server_HandleSpecial.sqf:165,168; CampCaptured.sqf:22,47","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla server_town_camp.sqf:83-86 fixed; repair open at Chernarus Server_HandleSpecial.sqf:501,504 and Vanilla :468,:471","origin/claude/b74.2-aicom@d472da6a keeps the independent-capture fix, with source Chernarus line drift to server_town_camp.sqf:91 and no repair-side flag refresh","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f keep the fix at server_town_camp.sqf:83-86 and repair remains open at Chernarus Server_HandleSpecial.sqf:491,494 and Vanilla :468,:471","Miksuu b8389e748243 remains old-owner at server_town_camp.sqf:88-91; perf 0076040f fixes Chernarus only; historical a96fdda2 and naval HVT 2e1c5931 fix independent capture but not repair flags","origin/fix/wildcard-w4w5-outer-capture@ead7e854 changes CampCaptured.sqf:47 marker audience and repair handler line shape, but adds no repair flag write"],"implementationShape":["Preserve current-stable/B74.1/B74.2/B69/B74/release/naval independent camp-capture flag fixes when merging.","Patch old-owner independent-capture lines where those branches remain targets.","When repair-camp changes sideID, also refresh the camp flag texture or call a shared camp-visual helper.","Keep marker PVF behavior unchanged unless explicitly changing marker semantics; wildcard capture is marker/handler evidence, not a flag fix."],"validation":["independent camp capture updates marker and 3D flag to new side","repairing a destroyed camp with side change updates bunker, marker and 3D flag","JIP sees camp side, marker and flag consistently after repair","maintained Vanilla parity checked after propagation"],"wikiRefs":["Towns-Camps-And-Capture-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-town-capture-owner","updated":"2026-06-23T20:29:33+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"wasp-marker-wait-current-b741-b742-refresh-2026-06-23","priority":"P2","status":"branch-split-current-b741-b742-throttled-old-shape-refs-open-smoke-pending","category":["WASP","client-ui","map-marker","performance","branch-status"],"summary":"WASP marker dialog wait cleanup is target-specific after the current B74.1/B74.2 refresh. Docs/source, current Miksuu, perf and historical release-line refs still keep the old unslept display-54 polling loop. Current stable/B74.1, current B74.2, B69, adjacent B74, client-fps and live map branches already have sleep 0.1 before findDisplay 54 in both maintained roots, so they need marker-dialog smoke rather than the one-line throttle reopened.","sourceRefs":["docs/source HEAD@c9df2a8b7264 Chernarus/Vanilla Init_Client.sqf:267 and global_marking_monitor.sqf:57,62,64,68-69,80 old-shape","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla Init_Client.sqf:397 and global_marking_monitor.sqf:64 throttled","origin/claude/b74.2-aicom@21b62b04 Chernarus Init_Client.sqf:403, Vanilla :397, helper throttled at global_marking_monitor.sqf:64","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f launch :397 and keep the throttled helper in both roots","origin/feat/client-fps@709258e7e6f8 launch anchors Chernarus :308 and Vanilla :287 with throttled helper","live map branches 77dd71ba3 and 6e31f7fd5 carry the throttled helper and are map/UI context, not marker-wait rescue branches","current Miksuu b8389e748243, origin/perf/quick-wins@0076040f8a5e and historical a96fdda28087 keep old unslept shape in both roots; no live release/* head exposed"],"implementationShape":["For old-shape targets, add sleep 0.1 before findDisplay 54 or refactor the display-54 wait to throttled waitUntil.","Preserve disableUserInput true/false flow, marker keyUp/keyDown handler attachment and timeout/no-dialog unlock behavior.","Propagate source Chernarus and maintained Vanilla deliberately where the target still matters.","Do not reopen current B74-shaped refs unless smoke finds behavior regression."],"validation":["map double-click opens marker text dialog and input is restored","Enter prefixes marker text with the player name","Escape or cancel cleans handlers and restores input","timeout/no-dialog path restores input","maintained Vanilla parity checked after propagation"],"wikiRefs":["WASP-Marker-Wait-Cleanup","WASP-Overlay","Performance-Opportunity-Sweep","Source-Fix-Propagation-Queue"],"owner":"future-wasp-owner","updated":"2026-06-23T21:08:46+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"supply-pr1-current-b741-b742-refresh-2026-06-23","priority":"P1","status":"current-b741-b742-supply-heli-shape-present-authority-and-smoke-open","category":["supply","logistics","economy-authority","branch-status","PR1"],"summary":"Supply PR #1 branch scope is current for B74.1/B74.2. Stable-shaped refs already have guarded killed-handler setup, SupplyByHeli clear-on-completion, heli-aware typed command-center scan, cooldown casing fix and dead-twin removal/comment in both maintained roots. The remaining hardening is not handler stacking on those refs; it is server-owned mission state, duplicate-start rejection, server-side cargo/reward validation, friendly command-center checks, player-object cleanup and Arma smoke.","sourceRefs":["origin/master@f8a76de349da and origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla supplyMissionStarted.sqf:7,15-17,55,61,83; supplyMissionStart.sqf:80; Init_Server.sqf Chernarus :105, Vanilla :99","origin/claude/b74.2-aicom@21b62b04fee3 keeps the same start-handler anchors and line-drifts only source Chernarus completion to supplyMissionCompleted.sqf:29,:50 while Vanilla remains :26,:44","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 match stable-shaped checked supply behavior","docs/source 15563691 truck-only; Miksuu b8389e748243 and perf 0076040f old-shape with broad terminal scan and compiled dead twin","historical PR #1 262dc431 still needs branch resurrection/rebase if revived"],"implementationShape":["Keep or recreate the stable-shaped guarded killed-handler sentinel and clear SupplyByHeli on completion.","Move accepted mission facts into a server-owned record keyed by vehicle/run id: source town, amount, side, requester UID, heli/cash-run state and handler identity.","Reject duplicate start/tracking requests for already-loaded or already-tracked vehicles.","Recompute or validate source town, side, vehicle class, upgrade gate, cargo amount and delivery command-center server-side before paying rewards.","Clear state on completion, death and rejection; document whether one-time interdiction reward should re-arm after reload.","Propagate source Chernarus and maintained Vanilla deliberately."],"validation":["truck load/deliver/reload rewards once","heli load/deliver and Air 4 cash-run semantics behave as intended","destroyed loaded vehicle pays interdiction once","same vehicle repeated load/deliver/destroy does not stack handlers or loops","wrong-side/friendly command-center and forged cargo values are rejected","JIP cooldown display and starter disconnect do not orphan state"],"wikiRefs":["Supply-Mission-Architecture","Supply-Mission-Authority-Cleanup-Playbook","Current-Work-Supply-Helicopters-PR1","Testing-Debugging-And-Release-Workflow"],"owner":"future-supply-owner","updated":"2026-06-23T21:43:46+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"camp-flag-b742-current-head-followup-2026-06-23","priority":"P3","status":"branch-split-current-b742-21b62b04-independent-capture-fixed-repair-open","category":["towns","camps","ui-world-state","correctness","branch-status"],"summary":"Current B74.2 camp flag texture evidence is at origin/claude/b74.2-aicom@21b62b04. The checked d472da6a..21b62b04 delta is empty for camp flag, repair-camp and CampCaptured paths, so prior independent-capture and repair-side conclusions carry forward: independent capture is fixed in B74.2 maintained roots, while repair-camp still changes sideID and broadcasts CampCaptured without refreshing the 3D flag object.","sourceRefs":["origin/claude/b74.2-aicom@21b62b04fee3690d66d5a3f6939b1fda0befa354 current head","d472da6a..21b62b04 empty for Chernarus/Vanilla server_town_camp.sqf, Server_HandleSpecial.sqf and CampCaptured.sqf","B74.2 Chernarus server_town_camp.sqf:91 and maintained Vanilla :84 set flag texture from str _newSide","B74.2 Chernarus Server_HandleSpecial.sqf:501,504 and maintained Vanilla :468,:471 still only set sideID and broadcast CampCaptured on repair-side changes","B74.2 CampCaptured.sqf:23,47-50 recolors markers/sounds only; no world flag refresh"],"implementationShape":["Preserve current-stable/B74.1/B74.2/B69/B74/release/naval independent camp-capture flag fixes when merging.","Patch old-owner independent-capture lines where those branches remain targets.","When repair-camp changes sideID, also refresh the camp flag texture or call a shared camp-visual helper.","Keep marker PVF behavior unchanged unless explicitly changing marker semantics; wildcard capture is marker/handler evidence, not a flag fix."],"validation":["independent camp capture updates marker and 3D flag to new side","repairing a destroyed camp with side change updates bunker, marker and 3D flag","JIP sees camp side, marker and flag consistently after repair","maintained Vanilla parity checked after propagation"],"wikiRefs":["Towns-Camps-And-Capture-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-town-capture-owner","updated":"2026-06-23T22:22:28+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"clickabletext-soundpush-b742-current-head-followup-2026-06-24","priority":"P3","status":"source-present-current-stable-b741-b742-b69-b74-guer-smoke-pending-old-shape-refs-unpatched","category":["ui","resources","config","branch-status"],"summary":"RscClickableText soundPush is source-present on current stable/B74.1/B74.2/B69/B74/GUER branch hits but remains an old-shape cleanup for docs/source, current Miksuu, perf, historical release and UI theme refs. Docs/source HEAD@14d74f9d2 still has malformed soundPush[] = {, 0.2, 1}; at Rsc/Ressources.hpp:556 in both maintained roots. Current B74.2 origin/claude/b74.2-aicom@21b62b04 keeps valid {\"\", 0.2, 1}; at :556; checked d472da6a..21b62b04 is empty for checked resource/dialog/title paths.","sourceRefs":["docs/source HEAD@14d74f9d2 Chernarus/Vanilla Rsc/Ressources.hpp:92,541,556 and Rsc/Dialogs.hpp 17 RscClickableText inheritors per maintained root; checked resource/dialog/title paths are unchanged from 1d4282eca8fd, 0bb0f89f and b5219d47","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da and origin/claude/b74.2-aicom@21b62b04fee3 keep valid RscClickableText.soundPush[] = {\"\", 0.2, 1}; at Rsc/Ressources.hpp:556 with 14 RscClickableText inheritors per maintained root","origin/claude/b69@8d465fcede7f, origin/claude/b74-aicom-spend@b23f557fc912 and GUER branch hits c8ef67d8f156 / 0f53f34d2b55 keep the valid :556 base value with 14 RscClickableText inheritors per maintained root","git blame current B74.2 Rsc/Ressources.hpp:556 points to 1a5e0b40 for source Chernarus and 9b49883c for maintained Vanilla","git diff --name-status d472da6a..origin/claude/b74.2-aicom, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend returned no checked resource/dialog/title path deltas","current Miksuu b8389e748243, origin/perf/quick-wins@0076040f, historical a96fdda2 and UI theme commits 0767c0b5 / 87d86257 remain old-shape for :556"],"implementationShape":["Do not patch current stable/B74.1/B74.2/B69/B74/GUER branch hits for the base value; it is already source-present there.","For old-shape targets, replace RscClickableText soundPush[] with the valid local empty-sound precedent {\"\", 0.2, 1} unless a code owner explicitly wants a real sound.","Propagate maintained Vanilla deliberately on any old-shape target edit.","Keep modded mission copies out of release claims until their broader generation/conflict blockers are resolved."],"validation":["Arma 2 OA config parse/mission boot has no resource error","gear clickable slots/buttons open and respond","WF menu/HUD toggle clickable controls respond","CoIn/construction clickable controls respond","artillery toggle clickable control responds","economy respawn supply truck clickable control responds","Vanilla parity checked after propagation"],"wikiRefs":["Client-UI-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","updated":"2026-06-24T00:24:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"visible-parameter-b742-current-head-followup-2026-06-24","priority":"P1","status":"branch-split-current-b742-head-21b62b04-source-present-old-shape-refs-open","category":["mission-parameters","ai-commander","cleanup","branch-status"],"summary":"Visible mission-parameter runtime-consumer evidence now routes current B74.2 through origin/claude/b74.2-aicom@21b62b04. Docs/source HEAD@52b7f7443bbc is unchanged from 0da6ba431 for checked parameter/cache/cleanup/AI-consumer paths and, with current Miksuu b8389e748243, origin/perf/quick-wins 0076040f and historical a96fdda2, remains old-shape: WFBE_C_AI_MAX has no checked maintained-root AI_Commander_Produce.sqf reader and WFBE_C_UNITS_CLEAN_TIMEOUT is comment-only at Common_TrashObject.sqf:20. Current stable/B74.1, current B74.2, B69 and B74 read WFBE_C_AI_MAX at AI_Commander_Produce.sqf:234 and WFBE_C_UNITS_CLEAN_TIMEOUT at Common_TrashObject.sqf:21 in both maintained roots. Checked d472da6a..21b62b04 is empty for the parameter-consumer path set. No gameplay source changed.","sourceRefs":["docs/source HEAD@52b7f7443bbc checked Chernarus/Vanilla parameter/cache/cleanup/AI-consumer paths unchanged from 0da6ba431d28","docs/source Chernarus/Vanilla Rsc/Parameters.hpp:56,62,242,248; Init_CommonConstants.sqf:92,243,348-350; Common_TrashObject.sqf:19-20; Server_HandleEmptyVehicle.sqf:12,18; no checked maintained-root AI_Commander_Produce.sqf WFBE_C_AI_MAX reader found","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; Chernarus Rsc/Parameters.hpp:41,47,233; Init_CommonConstants.sqf:129,637,745-747; AI_Commander_Produce.sqf:234; Common_TrashObject.sqf:21; Server_HandleEmptyVehicle.sqf:20,26","origin/master@f8a76de349da maintained Vanilla Rsc/Parameters.hpp:63,69,255; Init_CommonConstants.sqf:113,439,547-549; AI_Commander_Produce.sqf:234; Common_TrashObject.sqf:21; Server_HandleEmptyVehicle.sqf:20,26","origin/claude/b74.2-aicom@21b62b04fee3 keeps AI_Commander_Produce.sqf:234 and Common_TrashObject.sqf:21 in both maintained roots; source Chernarus also has tiered player-cap fallback reads at GUI_Menu_BuyUnits.sqf:38-39 and Client_UpdateRHUD.sqf:355-356","checked d472da6a..origin/claude/b74.2-aicom is empty for Rsc/Parameters.hpp, Init_CommonConstants.sqf, AI_Commander_Produce.sqf, Common_TrashObject.sqf, Server_HandleEmptyVehicle.sqf, GUI_Menu_BuyUnits.sqf, Client_UpdateRHUD.sqf and Skill_Init.sqf across source Chernarus and maintained Vanilla","origin/master..origin/claude/b74.2-aicom changes only source-Chernarus Init_CommonConstants.sqf, AI_Commander_Produce.sqf, GUI_Menu_BuyUnits.sqf and Client_UpdateRHUD.sqf among checked parameter-adjacent files; it keeps the WFBE_C_AI_MAX reader/cleanup split and has no maintained Vanilla payload","origin/claude/b69@8d465fcede7f and origin/claude/b74-aicom-spend@b23f557fc912 keep AI_Commander_Produce.sqf:234 and Common_TrashObject.sqf:21 in both maintained roots; B69..B74 only changes source-Chernarus constants among checked paths","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f8a5e keep Init_CommonConstants.sqf:92,348 plus Common_TrashObject.sqf:20 comment-only cleanup split with no checked maintained-root AI_Commander_Produce.sqf WFBE_C_AI_MAX reader","historical a96fdda28087 keeps the old comment-only cleanup shape and no checked maintained-root AI_Commander_Produce.sqf WFBE_C_AI_MAX reader","current-origin branch-name sweep found no live release/* head on 2026-06-24; B74.1/B74.2/tk-aicom-port carry both live readers, older AICOM side branches are mixed target-specific context"],"implementationShape":["Do not treat current stable/B74.1/B74.2/B69/B74 as no-reader/comment-only for WFBE_C_AI_MAX or WFBE_C_UNITS_CLEAN_TIMEOUT; both maintained roots have live readers there.","For docs/source, current Miksuu, perf, historical release or mixed old AICOM side branches, either port the current AI commander production reader and body/wreck cleanup split or hide/label the stale parameters deliberately.","Keep player follower cap wording on WFBE_C_PLAYERS_AI_MAX and B74.2 player-cap-by-tier context; do not conflate it with WFBE_C_AI_MAX.","Keep empty-vehicle cleanup on WFBE_C_UNITS_EMPTY_TIMEOUT separate from body and wreck cleanup."],"validation":["host/in-game parameter display matches branch intent","AI commander production sizing respects WFBE_C_AI_MAX on B74-shaped refs","player Buy Units and RHUD cap display use WFBE_C_PLAYERS_AI_MAX or branch tier array as intended","body cleanup uses WFBE_C_UNITS_BODIES_TIMEOUT","non-man wreck cleanup uses WFBE_C_UNITS_CLEAN_TIMEOUT where live","empty-vehicle cleanup uses WFBE_C_UNITS_EMPTY_TIMEOUT"],"wikiRefs":["Mission-Parameters-Localization-And-Generated-Build-Inputs","Dead-Code-And-Stale-Code-Register","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-parameter-cleanup-owner","updated":"2026-06-24T02:24:45+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"vehicle-cargo-b742-current-head-followup-2026-06-24","priority":"P2","status":"branch-split-current-b742-head-21b62b04-fixed-old-shape-targets-open","category":["gear","vehicle-cargo","backpacks","correctness","branch-status"],"summary":"Fix inclusive cargo-application loops in Common_EquipVehicle.sqf and Common_EquipBackpack.sqf only on old-shape targets. Current B74.2 origin/claude/b74.2-aicom@21b62b04 matches current stable/B74.1 for the five fixed loop bounds in both maintained roots, and checked d472da6a..21b62b04 is empty for cargo helpers. Docs/source HEAD@c96ee1670ddb, current Miksuu and historical EASA QoL remain inclusive; perf fixes Chernarus only while maintained Vanilla still needs propagation.","sourceRefs":["docs/source HEAD@c96ee1670ddb Chernarus/Vanilla Common_EquipVehicle.sqf:27,33,39 and Common_EquipBackpack.sqf:35,41 remain inclusive; checked cargo helper paths unchanged from ebfdca96542f and b2544207","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da; Chernarus/Vanilla Common_EquipVehicle.sqf:27,33,39 and Common_EquipBackpack.sqf:35,41 fixed to (count(_items) - 1)","origin/claude/b74.2-aicom@21b62b04fee3 keeps the same five fixed loops in both maintained roots; checked d472da6a..21b62b04 is empty for cargo helper paths","origin/master..origin/claude/b74.2-aicom is empty for checked cargo helper paths, so B74.2 adds no cargo-loop regression or rescue delta over current stable","origin/claude/b69@8d465fcede7f, origin/claude/b74-aicom-spend@b23f557fc912 and historical a96fdda28087 fix all five loops in both maintained roots","current Miksuu master@b8389e748243 and historical EASA QoL a66d46912e2a keep inclusive loops in both maintained roots","origin/perf/quick-wins@0076040f8a5e fixes Chernarus cargo helper loops but maintained Vanilla still carries inclusive loops","checked b2544207..HEAD, ebfdca96542f..HEAD, d472da6a..origin/claude/b74.2-aicom, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend cargo helper diffs are empty where noted","current origin exposes no live release/*, cargo, equip or backpack rescue head on 2026-06-24; origin/claude/trello-buymenu-gear-display@db1291beba and origin/claude/trello-easa-weapon-categories@08819118 have no checked cargo-helper delta"],"evidence":["Old-shape Common_EquipVehicle.sqf loops from index 0 through count(_items) for weapons, magazines and backpacks, one past the last valid array index.","Old-shape Common_EquipBackpack.sqf repeats the same inclusive loop pattern for backpack weapons and magazines.","Current stable/B74.1/B74.2/B69/B74-shaped refs should not be reopened for this five-loop defect; preserve the fixed loop bounds when merging older branches."],"implementationShape":["On old-shape targets, change Common_EquipVehicle.sqf weapon, magazine and backpack loops to iterate through count(_items)-1 or (count(_items) - 1).","Apply the same bound to Common_EquipBackpack.sqf weapon and magazine loops.","Patch source Chernarus first, then propagate maintained Vanilla deliberately.","Keep this reliability fix separate from gear purchase authority, profile-template filtering and service/EASA affordability work."],"validation":["Target source has no for _i from 0 to count(_items) do loops in EquipVehicle/EquipBackpack.","Vehicle weapon, magazine and backpack cargo apply exact counts.","Unit backpack weapon and magazine contents apply exact counts.","Empty cargo groups do not produce RPT out-of-range errors.","Maintained Vanilla parity checked after propagation where that target was old-shape."],"wikiRefs":["Vehicle-Cargo-Equip-Loop-Bounds","Gear-Loadout-And-EASA-Atlas","Client-UI-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-gear-ui-owner","playbook":"Vehicle-Cargo-Equip-Loop-Bounds.md","updated":"2026-06-24T02:31:53+02:00","supersedes":["vehicle-cargo-loop-current-b741-b742-refresh-2026-06-23 B74.2 d472da6a wording"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"buy-menu-price-key-b742-current-head-followup-2026-06-24","priority":"P2","status":"branch-split-current-b742-head-21b62b04-selected-detail-key-fixed-unit-cost-reset-open","category":["factory","buy-menu","ui","economy","branch-status"],"summary":"Buy-menu selected-detail display and driver-default key mirroring are fixed on current stable/B74.1, current B74.2, current B69, adjacent B74 and historical release a96fdda2 in both maintained roots, but every checked ref still lacks a level-0 UNIT_COST_MODIFIER reset in Client_UIFillListBuyUnits.sqf. Docs/source HEAD@b8180bb319ed, current Miksuu and perf also keep the old selected-detail price drift and driver-key split. Current B74.2 origin/claude/b74.2-aicom@21b62b04 adds no price/key delta over d472da6a for checked paths.","sourceRefs":["docs/source HEAD@b8180bb319ed Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:90,261, Client_UIFillListBuyUnits.sqf:11,14,60 and Init_CommonConstants.sqf:203; checked price/key paths unchanged from 4120137f / 8d611092 / ebd86fad0","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla GUI_Menu_BuyUnits.sqf:99,416, Client_UIFillListBuyUnits.sqf:11,14,90, Init_CommonConstants.sqf Chernarus:597 and Vanilla:399, and mirrored driver-key writes","origin/claude/b74.2-aicom@21b62b04 source Chernarus GUI_Menu_BuyUnits.sqf:105,422 and Init_CommonConstants.sqf:610; maintained Vanilla stays stable-shaped; checked d472da6a..21b62b04 is empty for checked buy-menu price/key paths and Client_BuildUnit.sqf","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match current stable for checked controller/list-filler price/key behavior; B69..B74 changes only Chernarus constants among checked paths","historical a96fdda2 fixes selected-detail display and mirrors both driver keys in both maintained roots but still lacks level-0 reset; historical a66d4691 fixes selected-detail display in Chernarus only","current Miksuu master@b8389e748243 and origin/perf/quick-wins@0076040f keep old selected-detail/key shape in both maintained roots","origin/claude/trello-buymenu-gear-display@db1291beba is branch-only special AT gear/ammo preview work, not a price/key closure"],"implementationShape":["Set UNIT_COST_MODIFIER to 1 before the unit-cost upgrade branch in Client_UIFillListBuyUnits.sqf, or replace the mutable global with a local price helper shared by list/detail/affordability/debit paths.","Do not reopen current stable/B74.1/B69/B74/B74.2 selected-detail display or driver-key mirror work unless smoke proves a regression.","Decide whether dual-key mirroring is the intended compatibility policy or whether one normalized profile key should replace it.","Patch source Chernarus first, propagate maintained Vanilla deliberately, and keep this separate from player-purchase server authority, destroyed-factory refund work and Trello #91 gear-preview UI work."],"validation":["list display, selected-detail display, affordability check and debit agree at unit-cost levels 0, 1 and 2","exact-funds and insufficient-funds purchases use the same displayed price","driver/gunner/commander/extra crew toggles, max-out and reset preserve the chosen default-driver key policy","maintained Vanilla parity checked after propagation"],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-factory-ui-owner","updated":"2026-06-24T03:15:22+02:00","supersedes":["buy-menu-price-key-current-b741-b742-refresh-2026-06-23 B74.2 d472da6a wording"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"gear-template-profile-b742-current-head-followup-2026-06-24","priority":"P2","status":"branch-split-current-b742-head-21b62b04-save-filter-fixed-import-and-gate-debt-open","category":["gear","profile-template","ui","persistence","branch-status"],"summary":"Gear profile-template work should preserve the current stable/B74/B74.2 save-filter fix and target the remaining import/gate debts deliberately. Current B74.2 origin/claude/b74.2-aicom@21b62b04 matches current stable/B74.1 for the save-filter comparison (_get select 3) in both maintained roots, and checked d472da6a..21b62b04 is empty for template paths. Docs/source, Miksuu, perf, historical release and historical EASA QoL still compare undefined _u_upgrade. All checked refs still keep Init_ProfileGear count/index mismatch and the AddTemplate Barracks-or-Gear versus FillTemplates Gear-only gate split.","sourceRefs":["docs/source HEAD@4b9591314c96 Chernarus/Vanilla Client_UI_Gear_SaveTemplateProfile.sqf:33,52,75 compare undefined _u_upgrade; Init_ProfileGear.sqf:17 accepts count _x >= 6 and :25 reads _x select 6; Client_UI_Gear_AddTemplate.sqf:136 accepts Barracks-or-Gear while Client_UI_Gear_FillTemplates.sqf:17 displays by Gear only","origin/master@f8a76de349da equals origin/claude/b74.1-aicom@f8a76de349da and origin/claude/b74.2-aicom@21b62b04fee3 for checked template paths; Chernarus/Vanilla SaveTemplateProfile.sqf:34,57,82 compare (_get select 3)","checked 72b5f0de98f9..HEAD, 43c3ba05..HEAD, d472da6a..origin/claude/b74.2-aicom, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend template diffs are empty where noted","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match current stable for checked template behavior","current Miksuu b8389e748243, origin/perf/quick-wins@0076040f, historical a96fdda2 and historical EASA QoL a66d4691 remain old-shape for save filtering in both maintained roots","miksuu/Gear_template_error@5b05601378f1 deletes maintained Vanilla template payload; Trello buy-menu gear-display and EASA category branches have no checked template-path delta"],"implementationShape":["Do not reopen the save-filter edit on current stable/B74.1/B74.2/B69/B74-shaped refs; preserve (_get select 3) where present.","On old-shape targets, replace the undefined _u_upgrade comparisons in Client_UI_Gear_SaveTemplateProfile.sqf with the stored upgrade tuple value used by current stable/B74-shaped refs.","Fix Init_ProfileGear.sqf so the accepted profile-template record length matches the highest index read, or guard the index-6 read before accepting legacy records.","Align Client_UI_Gear_AddTemplate.sqf and Client_UI_Gear_FillTemplates.sqf so template creation and display use an intentional shared Barracks/Gear policy, with compatibility notes if older profile rows remain supported.","Patch source Chernarus first, propagate maintained Vanilla deliberately and keep this separate from service/EASA affordability, cargo loops and buy-menu gear-preview branches."],"validation":["import legacy six-field and seven-field profile rows without script errors","save a template with Barracks-only, Gear-only and both upgrade states","overwrite an existing template and verify the stored upgrade tuple filters correctly","template creation and template display agree on the intended upgrade gate","maintained Vanilla parity checked after propagation","Arma 2 OA gear dialog smoke confirms no RPT undefined variable or out-of-range profile index errors"],"wikiRefs":["Gear-Template-Profile-Filter","Gear-Loadout-And-EASA-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-gear-ui-owner","updated":"2026-06-24T05:32:00+02:00","supersedes":["gear-template-profile-current-b741-b742-refresh-2026-06-23 B74.2 d472da6a wording"]} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"salvage-payout-b742-current-head-followup-2026-06-24","priority":"P2","status":"patch-ready-current-b742-head-21b62b04-unpatched","category":["salvage","economy","client-authority","correctness","branch-status"],"summary":"Salvage payout casing and loop/authority cleanup remains patch-ready on current B74.2 origin/claude/b74.2-aicom@21b62b04. Docs/source HEAD@408479a914c7 is unchanged from 795cdbbf0 for checked salvage paths. Current stable/B74.1, current B74.2, B69, adjacent B74, docs/source, Miksuu, perf and historical a96fdda2 still keep lowercase ChangePlayerfunds, the updatesalvage.sqf:10 OR loop and client-local delete/reward shape in both maintained roots. The B74.2 head advance only changes unrelated source-Chernarus Init_Client.sqf client-init code among checked salvage-adjacent paths.","sourceRefs":["docs/source HEAD@408479a914c7 Chernarus/Vanilla Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,50; Init_Client.sqf:53,91; Client_BuildUnit.sqf:267; checked paths unchanged from 795cdbbf0","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 and origin/claude/b74.2-aicom@21b62b04 Chernarus/Vanilla Skill_Salvage.sqf:34,38; updatesalvage.sqf:10,46,51; Init_Client.sqf:97,135; source Chernarus Client_BuildUnit.sqf:388; maintained Vanilla :343","d472da6a..origin/claude/b74.2-aicom changes only source-Chernarus Init_Client.sqf (+30/-3) for vehicle-tint guard, join/connect ACK failover and intro music among checked salvage-adjacent paths","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f checked salvage deltas are empty","origin/claude/trello-salvage-truck-interlock@9e75c736e is UX/interlock only and leaves payout casing/truck loop open","origin/claude/salvage-w10-manfilter@2e0242b3 is W10 corpse-filter only and leaves manual/truck salvage open","current Miksuu b8389e748243, origin/perf/quick-wins@0076040f and historical a96fdda2 keep the same defect family in both maintained roots","current origin exposes no live release/* or feat/*salvage* heads beyond the two salvage-named Claude branches on 2026-06-24"],"implementationShape":["Patch payout function casing in source Chernarus first, then propagate maintained Vanilla.","Keep casing fix small unless explicitly paired with the larger salvage authority rewrite.","Review updatesalvage.sqf loop exit semantics and server-owned wreck deletion/reward as a separate authority lane."],"validation":["Manual engineer salvage pays once with no undefined function error.","Salvage-truck loop pays once for one valid wreck and does not keep scanning after vehicle death or game over unexpectedly.","Maintained Vanilla has the same casing patch and smoke route.","Forged/non-engineer/local-only salvage remains a separate authority hardening target until server-owned reward/deletion is implemented."],"wikiRefs":["Construction-And-CoIn-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-salvage-owner","updated":"2026-06-24T05:58:00+02:00","supersedes":["salvage-payout-loop-branch-route-2026-06-05 B74.2 d472da6a wording","salvage-payout-function-casing-2026-06-04 B74.2 d472da6a wording"],"gameplaySourceChanged":false} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"vote-help-ui-b742-current-head-followup-2026-06-24","priority":"P3","status":"patch-ready-current-b742-head-21b62b04-unpatched","category":["ui","vote","help","main-menu","branch-status"],"summary":"Small UI cleanup cluster remains open on current B74.2 21b62b04: inclusive vote loops, row-color offset, help namespace mismatch and handler-only GPS MenuAction 17/18 remain in both maintained roots. The B74.2 head advance only changes unrelated source-Chernarus Init_Client.sqf code among checked paths.","sourceRefs":["docs/source HEAD@72007de93f00 checked vote/help/router paths unchanged from 322ef95e / 087152f5 / 68bd4dc5","docs/source Chernarus/Vanilla Init_Client.sqf:273; GUI_VoteMenu.sqf:29,49,61,80,82; GUI_Commander_VoteMenu.sqf:58; GUI_Menu.sqf:197,202,206; Rsc/Dialogs.hpp:1226,3446-3447; GUI_Menu_Help.sqf:10","origin/master@f8a76de34 / origin/claude/b74.1-aicom@f8a76de34 Chernarus/Vanilla Init_Client.sqf:403,534; GUI_VoteMenu.sqf:29,49,61,80,82; GUI_Commander_VoteMenu.sqf:58; GUI_Menu.sqf:241,270,274; Rsc/Dialogs.hpp:1252,3172-3173","origin/claude/b74.2-aicom@21b62b04 source Chernarus line-drifts Init_Client.sqf to :409,:540 while maintained Vanilla stays :403,:534; GUI/Rsc anchors remain current-stable shaped","d472da6a..21b62b04 and origin/master..origin/claude/b74.2-aicom touch only source-Chernarus Init_Client.sqf among checked paths; no vote menu, help menu, GUI_Menu or Rsc/Dialogs path delta","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f checked path deltas are empty","Miksuu b8389e748243 and origin/perf/quick-wins@0076040f keep docs-shaped FPS-HUD MenuAction 19 and the same vote/help/router debt","historical a96fdda2 keeps stable GPS MenuAction 19 plus old handler-only 17/18 routes and the same vote/help debt","origin/claude/trello-vote-para-guards@92101abe merge-base f8a76de34 changes server vote, Tactical/paratrooper and stringtable paths only; no checked vote/help/main-menu-router path delta"],"implementationShape":["Use WFBE_Client_Teams_Count - 1 or forEach for vote loops and keep row-color writes aligned to actual list rows.","Use one help-display namespace key and either implement a real onUnload case or remove the stale unload controller call.","Remove/comment dead MenuAction 17/18 router cases unless GPS zoom controls are deliberately reintroduced.","Patch source Chernarus and maintained Vanilla together; keep commander vote outcome semantics and WASP marker wait separate."],"validation":["Vote refresh/list coloring with zero, one and multiple player teams.","Help open/selection/close without stale namespace state or RPT errors.","Main-menu HUD/FPS/GPS behavior on docs-shaped and stable-shaped target branches, including visible action 19 policy.","Maintained Vanilla parity checked after propagation."],"wikiRefs":["Client-UI-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-ui-owner","updated":"2026-06-24T06:24:00+02:00","supersedes":["vote-help-ui-edge-current-b741-b742-refresh-2026-06-23 B74.2 d472da6a wording"],"gameplaySourceChanged":false} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"victory-endgame-b742-current-head-followup-2026-06-24","priority":"P1","status":"patch-ready-current-b742-head-21b62b04-partial-chernarus-rescue-explicit-winner-loser-open","category":["victory","endgame","stats","correctness","branch-status"],"summary":"Patch default victory detection by computing explicit winner/loser sides per branch. Current B74.2 origin/claude/b74.2-aicom@21b62b04 matches current stable/B74.1 checked behavior: source Chernarus fixes the guard/short-circuit and uses winner-payload Client_EndGame, but still treats condition side _x as winner for WF_Winner, WASPSTAT and LogGameEnd; maintained Vanilla still has the gated/mixed server condition and no GUER stats label. The d472da6a..21b62b04 head advance is empty for maintained-root victory paths.","sourceRefs":["Victory-And-Endgame-Atlas.md current branch scope refreshed 2026-06-24","docs/source HEAD@c2b614e8cc87 checked victory/endgame paths unchanged from 4c87efd2 / d30d23466 / a0a86da2 / 2f2132f8","origin/claude/b74.2-aicom@21b62b04 Chernarus server_victory_threeway.sqf:11-16,23-26,39-45,53,57-65; Client_EndGame.sqf:5-11; GUI_EndOfGameStats.sqf:8-9; Init_CommonConstants.sqf:869-870","origin/claude/b74.2-aicom@21b62b04 maintained Vanilla server_victory_threeway.sqf:11,29,37,41-49; Client_EndGame.sqf:5-11; GUI_EndOfGameStats.sqf:5-8; Init_CommonConstants.sqf:728-729","d472da6a..21b62b04 and origin/master..origin/claude/b74.2-aicom checked diffs do not rescue winner/loser semantics; stable-to-B74.2 only line-drifts source-Chernarus victory constants among checked paths","docs/Miksuu/perf/historical-a96fdda2 older-shape Server/FSM/server_victory_threeway.sqf:23-41","Deep-Review-Findings.md DR-11/DR-36"],"evidence":["!WFBE_GameOver only guards the all-towns clause in old-shape and current B74.2 maintained Vanilla server loops.","Current B74.2 Chernarus short-circuits same-tick double-fire but still lacks explicit _winnerSide/_loserSide before state/logging.","Current B74.2 Client_EndGame expects winner-side payload in both maintained roots, while old-shaped targets expect loser payload and flip locally.","Server LogGameEnd expects a winner side; WF_Winner should not store a condition side."],"implementationShape":["Compute _sideEliminated and _sideWonByTowns booleans.","Guard both branches with !WFBE_GameOver.","Compute _winnerSide and _loserSide explicitly before broadcast, WF_Winner, WASPSTAT and logging.","Send the payload matching the target branch contract, preferably explicit winner side on B74.1/B74.2-shaped targets.","Set WF_Winner only to explicit _winnerSide and exit after the first accepted winner.","Propagate maintained Vanilla and add/align the GUER stats label policy before release wording."],"validation":["HQ/factory elimination logs the opposite side once.","All-towns victory logs the capturing side once.","Same-tick mutual elimination emits one endgame event and one LogGameEnd call.","Client banner/camera and GUI side label match the accepted winner semantics.","Non-zero WFBE_C_VICTORY_THREEWAY is implemented or explicitly guarded unsupported.","AntiStack enabled/disabled mission-end tails still run once."],"wikiRefs":["Victory-And-Endgame-Atlas","Feature-Status-Register","Hardening-Implementation-Roadmap","Source-Fix-Propagation-Queue"],"owner":"future-victory-owner","updated":"2026-06-24T06:55:00+02:00","supersedes":["victory-endgame-current-b741-refresh-2026-06-23 B74.2 d472da6a wording","victory-endgame-explicit-winner-loser-wave-s current-B74.1 wording"],"gameplaySourceChanged":false} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"economy-dialog-current-b742-head-refresh-2026-06-24","priority":"P3","status":"docs-miksuu-perf-open-current-b742-head-21b62b04-fixed-on-stable-shaped-refs","category":["ui","dialogs","resources","economy","branch-status"],"summary":"Economy dialog disabled-state controller writes remain old-shape target debt only. Docs/source HEAD@427346b0d, current Miksuu and perf still write 23004/23005/23006 while RscMenu_Economy lacks those controls and dashboard 23020. Current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, B69, adjacent B74 and historical a96fdda2 remove the stale writes and use declared dashboard 23020 in both maintained roots; the B74.2 head advance has no checked Economy delta.","sourceRefs":["repo docs branch HEAD@427346b0d checked Chernarus/Vanilla Economy controller/resource paths unchanged from 21f0d53b / d2a3f995 / b5219d47","docs/source Chernarus/Vanilla GUI_Menu_Economy.sqf:7-8 writes 23004/23005/23006 while Rsc/Dialogs.hpp:3327,3339,3346 declares 23002/23003/23008 and no 23004/23005/23006/23020","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da and origin/claude/b74.2-aicom@21b62b04fee3 Chernarus/Vanilla GUI_Menu_Economy.sqf:4,25 and Rsc/Dialogs.hpp:3070 use declared 23020","d472da6a..21b62b04, origin/master..origin/claude/b74.2-aicom and origin/claude/b69..origin/claude/b74-aicom-spend are empty for checked Economy paths","0139a3468609..origin/master only changes source-Chernarus GUI_Menu_Economy.sqf dashboard label text at :229","Miksuu b8389e748243 and origin/perf/quick-wins@0076040f keep stale writes at GUI_Menu_Economy.sqf:7-8 and no declared 23020; historical a96fdda28087 uses GUI_Menu_Economy.sqf:4,25 and Rsc/Dialogs.hpp:3006"],"implementationShape":["Treat this as old-shape target parity cleanup, not a current stable/B74.2 patch.","Compare/import the current stable/B74.1/B74.2/B69/B74/release Economy controller/control-map shape or remove/update the stale disabled-state writes across target maintained roots.","If adding controls instead, document the intended UI role for 23004/23005/23006 before implementation.","Do not combine with the EASA/Economy duplicate IDD fix unless an owner claims a broader UI resource cleanup branch."],"validation":["Open Economy menu as commander and non-commander.","Verify disabled-state text/controls render without RPT control-not-found noise.","Smoke commander income percentage buttons, structure sell mode and supply-truck respawn button after the change.","Verify maintained Vanilla parity after propagation or manual sync."],"wikiRefs":["UI-Resource-Parity-Cleanup","Client-UI-Systems-Atlas","Feature-Status-Register","Dead-Code-And-Stale-Code-Register"],"owner":"future-ui-owner","updated":"2026-06-24T07:55:00+02:00","supersedes":["economy-dialog-missing-controls current stable 0139a346 wording","economy-dialog-controls-current-b74-refresh-2026-06-23 stale B74.2/current-stable wording"],"gameplaySourceChanged":false} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"stale-rscmenu-upgrade-current-b742-head-refresh-2026-06-24","priority":"P1","status":"docs-miksuu-perf-open-current-stable-b741-b742-b69-b74-fixed","category":["ui","dead-code","upgrades","generated-missions","branch-status"],"summary":"Old RscMenu_Upgrade still exists only on docs/source, current Miksuu and perf-style maintained roots among checked current refs. Current stable/B74.1 f8a76de34, previous B74.2 d472da6a, current B74.2 21b62b04, B69, B74 and historical a96fdda2 remove the stale missing-handler class in both maintained roots and keep live WFBE_UpgradeMenu.","sourceRefs":["repo docs branch HEAD@208062b4e Chernarus/Vanilla Rsc/Dialogs.hpp:2425,2428 stale RscMenu_Upgrade / missing GUI_Menu_Upgrade.sqf onLoad; checked paths unchanged from 427346b0d, 0fdd5602 and d4cfef80","docs/source Rsc/Dialogs.hpp:2634-2821 stale wf_*.paa icon refs; no checked docs/source Client/Images/wf_*.paa files in either maintained root","origin/master@f8a76de349da / origin/claude/b74.1-aicom@f8a76de349da Chernarus/Vanilla Rsc/Dialogs.hpp:4-7 and GUI_Menu.sqf:190 live WFBE_UpgradeMenu only; no RscMenu_Upgrade or GUI_Menu_Upgrade.sqf hits","origin/claude/b74.2-aicom@21b62b04fee3 and previous d472da6a keep the same checked live route and stale-class absence; d472da6a..21b62b04 is empty for checked upgrade dialog/controller paths","origin/claude/b69@8d465fce and origin/claude/b74-aicom-spend@b23f557f match current stable for checked stale-class absence; B69..B74 checked path delta empty","current Miksuu b8389e748243 and origin/perf/quick-wins@0076040f keep stale class at Rsc/Dialogs.hpp:2435,2438 and icon refs at :2644-2831 in both maintained roots; no checked wf_*.paa files exist","historical a96fdda28087 keeps live route at GUI_Menu.sqf:182 and Rsc/Dialogs.hpp:4-7 with no stale-class hits; historical b061c905 remains older deletion precedent","0139a3468609..origin/master, origin/master..origin/claude/b74.2-aicom and 427346b0d..HEAD are empty for checked upgrade dialog/controller paths"],"implementationShape":["Do not recreate GUI_Menu_Upgrade.sqf or old wf_*.paa icons just to satisfy stale references.","Either remove the old class consistently from old-shape maintained roots or replace it with an explicit compatibility alias to WFBE_UpgradeMenu.","Keep upgrade request authority and upgrade-sync tuple cleanup separate."],"validation":["Static grep finds no stale missing-handler RscMenu_Upgrade class in maintained roots or confirms intentional alias.","Main menu MenuAction 7 still opens WFBE_UpgradeMenu.","Upgrade list/detail, RequestUpgrade send, insufficient funds/supply and already-upgrading states still render.","Maintained Vanilla parity verified."],"wikiRefs":["UI-Resource-Parity-Cleanup","Dead-Code-And-Stale-Code-Register","Client-UI-Systems-Atlas","Feature-Status-Register"],"owner":"future-ui-upgrade-cleanup-owner","updated":"2026-06-24T08:55:00+02:00"} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"buy-menu-price-key-current-master-b750-refresh-2026-06-24","priority":"P2","status":"current-master-selected-detail-key-fixed-unit-cost-reset-open","category":["factory","buy-menu","ui","economy","profile","branch-status","b750","b751"],"summary":"Buy-menu selected-detail display and driver-default key mirroring are fixed on current master origin/master@c4c9a6479 in both maintained roots, but current master still lacks a level-0 UNIT_COST_MODIFIER reset in Client_UIFillListBuyUnits.sqf. Branch-only B751 adds adjacent nil-data/AICOM-cap hardening and no GUI price/key delta. Docs/source, current Miksuu and perf remain old selected-detail/key-split shape; B74.1/B69/B74/B74.2 and historical a96fdda2 remain fixed-shaped but also lack the level-0 reset.","sourceRefs":["origin/master@c4c9a64790c63fe264bd1a25f84f0b3ca7b49362 current master after PR #87/B750","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_UIFillListBuyUnits.sqf:11,14,96","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_BuyUnits.sqf:48-49,105,194-195,420,443-444,488,494,500,533-534,546-547,621","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_CommonConstants.sqf:661","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan matching line anchors","git diff --shortstat 6a34799b4..origin/master for checked buy-list/buy-menu/constants paths: 6 files changed, 46 insertions(+), 28 deletions(-), clean","origin/feat/b751-tk-aicom13-clientfixes@5aea1ce4016a862de413a198ba8bab0a1ce868c2","B751 Client_UIFillListBuyUnits.sqf:40 faction-filter nil _c guard; B751 Init_CommonConstants.sqf:159 AICOM hard cap 13; no GUI_Menu_BuyUnits.sqf delta"],"evidence":["Current master uses the same modifier-bearing formula for list row, selected-detail display, purchase seed and full price field in both maintained roots.","Current master mirrors lowercase plus uppercase driver-default compatibility writes on init, toggle, max-out and reset paths while live reads use lowercase.","Current master still only writes UNIT_COST_MODIFIER for upgrade levels 1 and 2; upgrade level 0 relies on a one-time global initializer and can inherit a stale discount in a long-lived client."],"implementationShape":["Set UNIT_COST_MODIFIER to 1 before the unit-cost upgrade branch in Client_UIFillListBuyUnits.sqf, or replace the mutable global with a local price helper shared by list/detail/affordability/debit paths.","Do not reopen selected-detail display or driver-key mirroring on current-master-shaped refs unless smoke proves a regression.","Decide whether dual-key mirroring is the intended compatibility policy or whether one normalized profileNamespace key should replace it.","Patch source Chernarus first, propagate maintained Vanilla deliberately, and keep this separate from B750 nil-data/squad-cap smoke, player-purchase server authority, destroyed-factory refund work and B751 AICOM-cap tuning."],"validation":["list display, selected-detail display, affordability check and debit agree at unit-cost levels 0, 1 and 2 after switching between discounted and non-discounted states","exact-funds and insufficient-funds purchases use the same displayed price","driver/gunner/commander/extra crew toggles, max-out and reset preserve the chosen default-driver key policy","maintained Vanilla parity checked after propagation"],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-factory-ui-owner","updated":"2026-06-24T18:03:14+02:00","supersedes":["buy-menu-price-key-b742-current-head-followup-2026-06-24 current-master wording"],"gameplaySourceChanged":false} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"buy-menu-price-key-current-master-b751-supersession-2026-06-24","priority":"P2","status":"current-master-b751-selected-detail-key-fixed-unit-cost-reset-open","category":["factory","buy-menu","ui","economy","profile","branch-status","b750","b751"],"summary":"Buy-menu selected-detail display and driver-default key mirroring are fixed on current master origin/master@7bfcf09a9 in both maintained roots, but current master still lacks a level-0 UNIT_COST_MODIFIER reset in Client_UIFillListBuyUnits.sqf. B751 is now merged current-master adjacent hardening and no GUI price/key delta. Docs/source, current Miksuu and perf remain old selected-detail/key-split shape; B74.1/B69/B74/B74.2 and historical a96fdda2 remain fixed-shaped but also lack the level-0 reset.","sourceRefs":["origin/master@7bfcf09a98e8a9e6e26d8ac1b017807c1d54dee0 current master after PR #88/B751","PR #88 https://github.com/rayswaynl/a2waspwarfare/pull/88","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_UIFillListBuyUnits.sqf:11,14,40,96","Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/GUI/GUI_Menu_BuyUnits.sqf:48-49,105,194-195,420,443-444,488,494,500,533-534,546-547,621","Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_CommonConstants.sqf:159,661","Missions_Vanilla/[61-2hc]warfarev2_073v48co.takistan matching line anchors","git diff --shortstat c4c9a6479..origin/master for checked price/key paths: 4 files changed, 4 insertions(+), 4 deletions(-), clean","git diff --shortstat 6a34799b4..origin/master for checked buy-list/buy-menu/constants paths: 6 files changed, 50 insertions(+), 32 deletions(-), clean"],"evidence":["Current master uses the same modifier-bearing formula for list row, selected-detail display, purchase seed and full price field in both maintained roots.","Current master mirrors lowercase plus uppercase driver-default compatibility writes on init, toggle, max-out and reset paths while live reads use lowercase.","Current master still only writes UNIT_COST_MODIFIER for upgrade levels 1 and 2; upgrade level 0 relies on a one-time global initializer and can inherit a stale discount in a long-lived client.","B751 only adds the buy-list faction-filter nil guard and AICOM hard-cap tuning among checked price/key paths."],"implementationShape":["Set UNIT_COST_MODIFIER to 1 before the unit-cost upgrade branch in Client_UIFillListBuyUnits.sqf, or replace the mutable global with a local price helper shared by list/detail/affordability/debit paths.","Do not reopen selected-detail display or driver-key mirroring on current-master-shaped refs unless smoke proves a regression.","Decide whether dual-key mirroring is the intended compatibility policy or whether one normalized profileNamespace key should replace it.","Patch source Chernarus first, propagate maintained Vanilla deliberately, and keep this separate from B750 nil-data/squad-cap smoke, player-purchase server authority, destroyed-factory refund work and B751 AICOM-cap tuning."],"validation":["list display, selected-detail display, affordability check and debit agree at unit-cost levels 0, 1 and 2 after switching between discounted and non-discounted states","exact-funds and insufficient-funds purchases use the same displayed price","driver/gunner/commander/extra crew toggles, max-out and reset preserve the chosen default-driver key policy","maintained Vanilla parity checked after propagation"],"wikiRefs":["Factory-And-Purchase-Systems-Atlas","Feature-Status-Register","Source-Fix-Propagation-Queue"],"owner":"future-factory-ui-owner","updated":"2026-06-24T18:11:39+02:00","supersedes":["buy-menu-price-key-current-master-b750-refresh-2026-06-24 precommit B751 branch-only wording","buy-menu-price-key-b742-current-head-followup-2026-06-24 current-master wording"],"gameplaySourceChanged":false} {"schema":"a2waspwarfare-agent-hardening-backlog-v1","id":"b751-current-master-aicom-client-error-smoke-2026-06-24","priority":"P2","status":"current-master-source-smoke-pending-whitespace-cleanup-open","category":["aicom","client-ui","jip","guer","rpt-hardening","release-smoke","b751"],"summary":"Current master origin/master@7bfcf09a9 carries PR #88/B751 in both maintained roots: AICOM hard cap is 13 and GUER/JIP client-error guards are source-present. This is not release-ready until target-package/version/Arma smoke proves the paths. The source B751 diff also needs trailing-whitespace cleanup at updateavailableactions.fsm:59 in both roots before it can be called diff-check-clean.","sourceRefs":["origin/master@7bfcf09a98e8a9e6e26d8ac1b017807c1d54dee0","PR #88 https://github.com/rayswaynl/a2waspwarfare/pull/88","origin/feat/b751-tk-aicom13-clientfixes@5aea1ce4016a862de413a198ba8bab0a1ce868c2","git diff --shortstat c4c9a6479..origin/master: 14 files changed, 16 insertions(+), 10 deletions(-)","git diff --check c4c9a6479..origin/master reports trailing whitespace at Client/FSM/updateavailableactions.fsm:59 in both roots","Init_CommonConstants.sqf:159","AI_Commander_Teams.sqf:113-114,184","updateavailableactions.fsm:58-59","Client_UIFillListBuyUnits.sqf:40","GUI_Menu.sqf:130","GUI_Menu_Tactical.sqf:172","Init_Client.sqf:812","Action_RepairMHQDepot.sqf:7"],"evidence":["B751 raises WFBE_C_AICOM_TEAMS_HARD_CAP from 8 to 13 while keeping existing consumer clamp paths.","Two-argument missionNamespace defaults protect GUER/no-roster repair and ammo truck action scans.","Nil guards/defaults cover buy-list faction filtering, Tactical deploy display, HQ-killed deploy state, repair-depot cash state and seated unflip object position.","The scoped B751 diff is empty for Client_UI_Gear_FillCargoList.sqf and server_town.sqf; those PR-body follow-ups remain separate."],"implementationShape":["For a docs/source cleanup branch, remove the two trailing-whitespace instances at updateavailableactions.fsm:59 without changing behavior, then rerun source git diff --check.","For release validation, build/generate the intended package from current master, verify live version.sqf files and run source Chernarus plus maintained Vanilla smoke for AICOM cap 13 and the listed GUER/JIP client paths.","Keep this separate from buy-menu UNIT_COST_MODIFIER reset, Client_UI_Gear_FillCargoList nil guard and Khe Sanh carrier capture-height cleanup."],"validation":["AICOM founding/veteran-slot runs do not exceed 13 teams per side and still found valid teams under low-pop, banked-funds and high-pop conditions","GUER/no-roster clients scan ammo/repair actions without undefined variables","buy-list nil faction metadata does not RPT or break list population","Tactical menu opens before wfbe_hq_deployed replication without nil _isDeployed errors","HQ-killed handler and first repair-depot MHQ repair paths do not throw undefined variables","seated unflip branch uses the target vehicle position","source git diff --check is clean after whitespace cleanup"],"wikiRefs":["AI-Commander-Autonomy-Audit","Client-UI-Systems-Atlas","Testing-Debugging-And-Release-Workflow","Source-Fix-Propagation-Queue"],"owner":"future-aicom-client-ui-smoke-owner","updated":"2026-06-24T18:31:04+02:00","gameplaySourceChanged":false}