-
Notifications
You must be signed in to change notification settings - Fork 0
Testing Debugging And Release Workflow
Practical validation model for ongoing Arma 2 Operation Arrowhead 1.64 mission development.
This repo cannot lean on a modern SQF unit-test suite. The safe workflow is a mix of source checks, local tooling checks, RPT-driven smoke tests and careful release gates. Every future change should record what was actually verified, not just what was source-reviewed.
Scope: gameplay edits start in Missions/[55-2hc]warfarev2_073v48co.chernarus; generated mission behavior is handled through Tools/LoadoutManager unless a skip-list file needs hand mirroring.
Machine schema for test evidence: agent-test-plan.schema.json.
| Level | Use when | Evidence to record |
|---|---|---|
source-only |
Static defects: missing files, commented compiles, compile registries, PV channel maps, IDD conflicts, generated drift. | Exact paths, line refs, search command or script, and whether the issue is confirmed or only a lead. |
local-tool |
LoadoutManager generation, PerformanceAuditAnalyzer parsing, DiscordBot/Extension build or config shape. | Command, cwd, exit code, generated files or expected non-blocking failure such as missing 7za. |
hosted-smoke |
Locality-sensitive behavior where hosted server also runs client code. | Scenario, mission params, RPT snippets, observed player/server behavior. |
dedicated-smoke |
Server-authority, PV/PVF, economy, town AI, cleanup loops, BattlEye-sensitive behavior. | Dedicated server RPT, client RPT if available, result and regressions checked. |
jip-smoke |
Any state that late joiners must see: towns, markers, HQ, commander, supply cooldowns, MASH, endgame. | Join timing, expected replicated variables/events, client observations after join. |
hc-smoke |
AI delegation, town AI, static defenses and HC registration. | HC connection timing, connected-hc handling, delegated units, server FPS/load effect. |
live-server-sensitive |
BattlEye, AntiStack DB, public server economy authority, Discord token/data paths, extensions. | Owner approval, backup/rollback path, exact server config, and redacted logs only. |
| System | Source paths | Minimum validation | Notes |
|---|---|---|---|
| Boot/lifecycle |
description.ext, initJIPCompatible.sqf, Common/Init/*, Server/Init/Init_Server.sqf, Client/Init/Init_Client.sqf, Headless/Init/Init_HC.sqf, mission.sqm
|
source-only, then hosted or dedicated boot smoke for reordered init. |
Check version.sqf, WFBE_Parameters_Ready, commonInitComplete, townInit, serverInitFull, clientInitComplete. mission.sqm town object init is part of runtime. |
| PV/PVF networking |
Common/Init/Init_PublicVariables.sqf, Server/Functions/Server_HandlePVF.sqf, Client/Functions/Client_HandlePVF.sqf, Server/PVFunctions/*, Client/PVFunctions/*
|
source-only for registry, dedicated smoke for changed handlers, JIP smoke for stateful effects. |
PVF dispatch hardening must test one server-bound and one client-bound message. Direct PV channels are outside the PVF list. |
| Economy authority |
Client/GUI/GUI_Menu_BuyUnits.sqf, Client/Functions/Client_BuildUnit.sqf, Server/PVFunctions/RequestStructure.sqf, Server/Functions/Server_ProcessUpgrade.sqf, Server/PVFunctions/RequestUpgrade.sqf, gear/EASA GUI files |
source-only, then dedicated smoke for each migrated spend path. |
Record whether the server or client owns final funds/effect. Client menu checks are not authority. |
| Towns and town AI |
mission.sqm, Common/Init/Init_Town*.sqf, Server/FSM/server_town.sqf, Server/FSM/server_town_camp.sqf, Server/FSM/server_town_ai.sqf, Common/Functions/Common_CreateTownUnits.sqf
|
Dedicated smoke; JIP smoke for town state; HC smoke when delegation is enabled. | Use Towns/camps/capture atlas. For Town AI vehicle safety, test occupied and empty vehicle despawn cases. |
| Commander and HQ lifecycle |
Commander/HQ lifecycle, Server_VoteForCommander.sqf, RequestNewCommander.sqf, Construction_HQSite.sqf, Server_OnHQKilled.sqf, Server_MHQRepair.sqf, Client/FSM/updateclient.sqf
|
Dedicated plus JIP smoke for commander handoff, deploy/mobilize, HQ death, wreck marker visibility and repair. | Include hosted/locality smoke for mobile-HQ killed EH forwarding and one-message commander reassignment after DR-15 repair. |
| Construction and CoIn |
Client/Module/CoIn/coin_interface.sqf, Server/PVFunctions/RequestStructure.sqf, Server/PVFunctions/RequestDefense.sqf, Server/Functions/Server_Build*
|
Dedicated smoke for accepted/rejected builds. | Validate commander/repair authority, funds, base area, dead HQ and side ownership server-side after hardening. |
| Factories and purchases |
Client/GUI/GUI_Menu_BuyUnits.sqf, Client/Functions/Client_BuildUnit.sqf, Server/Functions/Server_BuyUnit.sqf
|
Hosted and dedicated smoke for spawn markers, queues and empty-vehicle cases. | DR-33 queue leak needs repeated empty-vehicle buy attempts to prove decrement behavior. |
| Upgrades | Live path: WFBE_UpgradeMenu / Client/GUI/GUI_UpgradeMenu.sqf; stale path: RscMenu_Upgrade / missing Client/GUI/GUI_Menu_Upgrade.sqf; server path: Server/PVFunctions/RequestUpgrade.sqf, Server/Functions/Server_ProcessUpgrade.sqf
|
Dedicated smoke for valid upgrade, invalid id, insufficient funds, wrong-side/role. | Server must recompute level, dependency and cost after hardening. Do not revive the stale dialog class without replacing its missing onLoad target. |
| Supply missions |
Client/Module/supplyMission/*, Server/Module/supplyMission/*, Server/Init/Init_Server.sqf, Server/Functions/Server_OnPlayerDisconnected.sqf
|
Dedicated smoke, JIP cooldown smoke, reconnect/disconnect player-list smoke, PR #1 vehicle reuse/destruction smoke when relevant. | Keep the pull-based cooldown model; fix dead twin/casing/player-list/trust issues before expanding heli behavior. |
| Respawn and MASH |
Respawn/death lifecycle, Client/GUI/GUI_RespawnMenu.sqf, Client/Functions/*Respawn*, Server/AI/AI_*Respawn*.sqf, Server/Module/MASH/*, Client/Init/Init_Client.sqf
|
Player death/menu/gear smoke, branch-specific AI respawn smoke, source-only for dead marker path; JIP smoke if markers are revived. | AI respawn has a vanilla polling branch and a non-vanilla MPRespawn branch; smoke both when respawn/orders change. Current MASH marker chain is dead/orphaned; local MASH respawn and mode-5 custom-gear penalty need separate smoke. |
| Supports and specials |
Client/Module/Nuke/*, Server/Functions/Server_HandleSpecial.sqf, Server/Support/*, attack-wave files |
Dedicated smoke for authority-sensitive actions; live-server-sensitive for ICBM and BattlEye. | ICBM and attack waves are high-risk because forged PV payloads can create server-side effects. |
| Tactical modules |
Common/Module/*, Client/Module/*, Server/Module/*, Client/Functions/Client_BuildUnit.sqf, Client/Init/Init_Client.sqf, Common/Init/Init_Common.sqf
|
Match the smoke to the runtime edge: boot init, respawn reapply, unit creation attach, PV/PVF event or server loop. | IRS/CM/Engines attach to vehicles as they are built, Skill reapplies after player setup/respawn, ICBM/IRS/CIPHER initialize from Common init, and some stale modules have no live edge. |
| AI and HC delegation |
Headless/Init/Init_HC.sqf, Client/Functions/Client_Delegate*.sqf, Common/Functions/Common_Delegate*.sqf, Server/Functions/Server_OnPlayerDisconnected.sqf
|
HC smoke for delegation and reconnect/disconnect behavior. |
Init_HC.sqf uses sleep 20, not waitUntil {serverInitFull}. |
| UI/HUD/dialogs |
Rsc/*.hpp, Client/GUI/*, Client/Init/Init_Client.sqf, Client/Module/RHUD/*
|
Source-only for IDD/resource conflicts; hosted smoke for display open/close and long text. | Duplicate IDDs exist; use display handles and avoid assuming IDD uniqueness. |
| WASP overlay |
WASP/*, Client/Init/Init_Client.sqf, initJIPCompatible.sqf commented WASP block |
Hosted/JIP smoke for per-client actions; source-only for dead old init path. | Live WASP features are wired from client init, not the old commented WASP/Init_Client.sqf block. |
| Tooling and generated missions |
Tools/LoadoutManager/*, Tools/PerformanceAuditAnalyzer/*, Missions_Vanilla/*, Modded_Missions/*
|
local-tool, source-only drift checks. |
Run LoadoutManager from an ancestor folder named a2waspwarfare or any repo root containing Missions, Missions_Vanilla and Tools/LoadoutManager/LoadoutManager.csproj. Use A2WASP_SKIP_ZIP=1 for propagation-only runs; 7za is only required for deployment packaging. |
| Integrations |
Extension/*, DiscordBot/*, BattlEyeFilter/*, Server/Module/AntiStack/*
|
source-only, local build/config checks, live-server-sensitive for production. |
Do not expose secrets. Distinguish in-repo GLOBALGAMESTATS extension from out-of-repo AntiStack DB DLL. |
Run these before any major gameplay patch and after large generated changes:
| Check | What it catches |
|---|---|
| Compile/preprocess registry scan | Commented or missing functions in Init_Common.sqf, Init_Server.sqf, Init_Client.sqf, Init_PublicVariables.sqf. |
| Missing file scan | Dead execVM, preprocessFile, #include and dialog onLoad references. |
| PV channel inventory | New direct publicVariable, publicVariableServer, addPublicVariableEventHandler channels not covered by PVF docs. |
| Client-authority scan | New client-side createVehicle, createUnit, setDammage, ChangePlayerFunds, side supply or upgrade mutations. |
| JIP replay scan | New transient PV events that should have replicated object variables or pull-based state requests. |
| IDD/resource scan | Duplicate display/title IDDs and missing Rsc class references. |
| Generated drift scan | Chernarus versus Takistan outside the LoadoutManager skip-list; modded missions are separate forks/stubs. |
| Extension trust scan |
callExtension return handling, call compile, serialization settings and missing DLL/config assumptions; route through Integration trust boundary audit and AntiStack database extension audit for AntiStack-specific DB wrappers. |
Use the existing logging helper instead of ad hoc hint debugging:
| Log type | Use |
|---|---|
WFBE_CO_FNC_LogContent with INFORMATION
|
Successful state transitions testers need to confirm in RPT, such as accepted high-value server transactions. |
WFBE_CO_FNC_LogContent with WARNING
|
Rejected malformed/unauthorized network payloads, missing generated files or degraded but recoverable state. |
WF_Debug-gated detail logs |
Noisy values: prices, side IDs, object refs, queue ids, player occupancy decisions, PV payload summaries. |
| Performance audit records | Long-running loops or known hot paths such as town AI, supply mission tracking and UI/map loops. |
Do not add constant always-on logs inside hot loops. For tester-visible changes, one small always-on line at the transition point is better than frame-by-frame tracing.
| Pack | Steps |
|---|---|
| Boot and JIP | Start hosted or dedicated mission, verify no init hang, join a second client after time > 30, confirm town markers, HQ state, commander/vote state and spawn location. |
| Commander/HQ | Vote or assign commander, deploy HQ, mobilize HQ, destroy deployed HQ, destroy mobile HQ, join late as allied/enemy client, repair MHQ, confirm build action, lock actions, local allied wreck marker and no enemy wreck marker. |
| PVF dispatcher hardening | Trigger one server request such as RequestJoin or RequestVehicleLock; trigger one client message such as LocalizeMessage; confirm rejected bogus handler logs once and does not execute. |
| Town AI vehicle despawn | Wake a town, board a town-AI vehicle as passenger/gunner, force inactivity or lower WFBE_C_TOWNS_UNITS_INACTIVE, confirm occupied vehicle survives and empty AI-only vehicles despawn. |
| Factory queue | Buy repeated empty/crewless vehicles from the relevant factory, confirm local queue count decrements and future buys are not soft-locked. |
| AI respawn branch split | Run one vanilla profile where WF_A2_Vanilla compiles AISquadRespawn and one non-vanilla/OA profile where AIAdvancedRespawn is attached through AI_AddMultiplayerRespawnEH.sqf. In both runs, kill a non-player team leader, wait WFBE_C_RESPAWN_DELAY, and confirm loadout reapply, camp/mobile/base fallback, forced-respawn reset and non-autonomous move-mode reset. Source refs: Server/Init/Init_Server.sqf:10-12; Server/AI/AI_AddMultiplayerRespawnEH.sqf:1; Server/AI/AI_AdvancedRespawn.sqf:55-125; Server/AI/AI_SquadRespawn.sqf:14-21,53-110; Client/GUI/GUI_Menu_Command.sqf:356,439-442. |
| Supply mission | Start a truck mission, complete it once, repeat after cooldown, JIP during cooldown query, disconnect/reconnect same UID and verify WFBE_SE_PLAYERLIST replacement/no stale completion, tamper or stale SupplyFromTown / SupplyAmount and confirm server validation after hardening, destroy tracked vehicle once if PR #1 interdiction logic is in scope. |
| Victory/endgame | Use Victory/endgame atlas. Simulate HQ/factory elimination and all-town capture paths, confirm one winner, one endgame broadcast and one stats log. |
| LoadoutManager | From the repo root or Tools/LoadoutManager, optionally set A2WASP_SKIP_ZIP=1, then run dotnet run; inspect generated EASA/balance outputs, Takistan copy, version.sqf, and whether packaging was skipped or failed only because 7za is missing. |
These checks cover the 2026-06-02 source fixes that have been propagated from Chernarus source to maintained Vanilla Takistan. They are planned gates, not completed runtime evidence, until an Arma 2 OA hosted/dedicated run records RPT snippets and observations.
| Fix | Coverage | Setup | Steps | Expected evidence | Failure signals |
|---|---|---|---|---|---|
| Paratrooper marker revival |
dedicated-smoke, client PVF |
Dedicated or hosted run with a commander/player able to trigger tactical paratroopers. | Trigger paratrooper support from a client, observe the requesting client during drop creation and after units eject. | Client receives HandleParatrooperMarkerCreation, marker appears for the requesting player flow, and RPT has no missing/unregistered WFBE_PVF_HandleParatrooperMarkerCreation error. Source refs: Common/Init/Init_PublicVariables.sqf, Server/Support/Support_Paratroopers.sqf. |
Drop works but marker never appears; undefined variable/function or rejected PVF handler in client RPT. |
| Client skill init idempotency |
hosted-smoke, respawn smoke |
Hosted or dedicated with one Soldier-class player and one non-Soldier class if available. | Join, inspect AI/team cap behavior, respawn, and confirm skill effects still apply after respawn. |
Skill_Init.sqf effects are initialized once before WFBE_SK_FNC_Apply; Soldier cap is not boosted twice, non-Soldier keeps configured cap, respawn still reapplies skill effects. Source refs: Client/Init/Init_Client.sqf, Client/Module/Skill/Skill_Init.sqf, Client/Module/Skill/Skill_Apply.sqf. |
Repeated cap inflation, lost skill action after respawn, or undefined skill globals after client init. |
| Hosted server FPS loop sleep |
dedicated-smoke, hosted-smoke
|
One dedicated run and one hosted/listen run with RPT/perf observation. | On dedicated, wait at least two publish intervals; on hosted/listen, confirm server FPS scripts exit rather than running forever. | Dedicated still publishes SERVER_FPS_GUI / WFBE_VAR_SERVER_FPS roughly every 8 seconds; hosted/listen run has no busy FPS publisher loop. Source refs: Server/GUI/serverFpsGUI.sqf, Server/Module/serverFPS/monitorServerFPS.sqf. |
Dedicated no longer publishes FPS; hosted/listen RPT or profiler shows repeated FPS loop work. |
| Supply mission scan narrowing |
dedicated-smoke, optional PR #1 heli smoke |
Dedicated run with a supply truck, real command center terminal and unrelated nearby objects. | Start supply mission, drive loaded vehicle to command center, repeat near unrelated objects inside 80m, and recheck cooldown after completion. | Delivery completes near a real Base_WarfareBUAVterminal command center, does not complete near unrelated objects, and pull-based cooldown behavior is unchanged. Source refs: Server/Module/supplyMission/supplyMissionStarted.sqf, Common/Config/*/Config_Structures.sqf. |
No completion at command center; completion near unrelated objects; new cooldown/JIP regression. |
| Supply player-object list indexing |
dedicated-smoke, jip-smoke, reconnect smoke |
Dedicated run with at least one reconnecting player/client UID and an active supply completion. | Join, start or observe supply flow, disconnect/reconnect the same UID, complete supply near the vehicle/player, inspect server behavior. | Reconnecting UID replaces its own WFBE_SE_PLAYERLIST row rather than row 0; supply completion resolves the correct nearby real player object. Source refs: Server/Module/supplyMission/playerObjectsList.sqf, Server/Module/supplyMission/supplyMissionStarted.sqf. |
Row 0 overwrite symptoms, stale player object used for reward/completion, or reconnect prevents nearby player detection. Disconnect pruning is still a separate open cleanup. |
These are planned gates for branch features, not completed test evidence. Use them after choosing a target branch and before describing a branch-only feature as stable, merged or release-ready. Machine-readable promotion gates live in agent-release-readiness.json under branchOnlyFeaturePromotionGates.
| Branch feature | Coverage | Setup | Steps | Expected evidence | Failure signals |
|---|---|---|---|---|---|
origin/feat/ai-commander head 4dba060e
|
dedicated-smoke, jip-smoke, optional hc-smoke
|
Dedicated run from the branch with WFBE_C_AI_COMMANDER_ENABLED = 1; run once with no human commander and once after a human commander takes/leaves command. If promotion target includes Vanilla, repeat in maintained Vanilla after propagation. |
Start both sides if possible; observe supervisor logs, town assignment, team type assignment, production, upgrades, explicit order execution, human-commander assist/no-spend behavior, commander handoff/revote, HQ death stop state and a late-joining client. | RPT shows AI commander full/assist/stopped transitions from AI_Commander.sqf; no-human mode spends only AI commander funds/supply and produces within cap; human assist executes explicit orders without economy spend; maintained Vanilla has equivalent compile/start wiring if claimed. Source refs: Rsc/Parameters.hpp:96, Server/Init/Init_Server.sqf:49-54,387-389,630-631, Server/AI/Commander/AI_Commander.sqf:29-81. |
Default-on surprises admins, production exceeds cap, AI spends under a human commander, explicit orders do not execute, commander handoff leaves stale orders/running flag, HQ death keeps commander loops active, JIP sees inconsistent commander/team state, or Vanilla lacks branch files. |
origin/feat/drone-saturation-strike head 8ca4be90
|
dedicated-smoke, jip-smoke, live-server-sensitive if public |
Dedicated run from the branch with drone support enabled, commander/funds/upgrade states set to accepted and rejected cases, and one late-joining client during cooldown. | Trigger valid DroneStrike, insufficient-funds/wrong-upgrade/wrong-role attempts after authority hardening, rapid repeated calls, target over water and non-water, AA shootdown, no-target timeout and JIP during cooldown. | Server owns acceptance, debit, cooldown, upgrade, caller/team/side and map validation before spawning; active cap increments/decrements once; funds debit only after server accept; cooldown/JIP state is visible; cleanup leaves no leaked drone groups/vehicles; generated Vanilla scope is explicit. Source refs: Common/Init/Init_CommonConstants.sqf:243-263, Server/Support/Support_DroneStrike.sqf:1-14,16-18,46-52, Tactical menu DroneStrike / ChangePlayerFunds / RequestSpecial. |
Client can self-debit then get server-rejected, forged request bypasses funds/upgrade/role/side, active cap sticks, repeated calls spawn extra packages, drones reveal/score wrong side, cooldown missing for JIP, cleanup leaks groups/vehicles, or Vanilla misses support registration/assets. |
origin/feat/recon-uav head 563418ea
|
dedicated-smoke, jip-smoke
|
Dedicated run from the branch; run once with old UAV expectations disabled/removed and once with one active recon UAV per side. Include HQ loss and recall/destruction paths. | Open Tactical menu, deploy ReconUAV, verify old Client/Module/UAV/uav*.sqf UI paths are not still callable, observe AI orbit/reveal, recall it, destroy it, lose HQ while active, and JIP while it is orbiting. |
ReconUAV/ReconUAVRecall route through Server_HandleSpecial.sqf; one server AI-flown drone per side is tracked; reveal audience stays friendly-side only; recall/destruction frees the active slot and clears WFBE_RECON_UAV_<side>; old UAV module removal does not leave broken menu actions; generated Vanilla scope is explicit. Source refs: Server/Functions/Server_HandleSpecial.sqf:63-82, Server/Support/Support_ReconUAV.sqf:1-22,83-102,119-132,140-151, deleted old Client/Module/UAV/uav*.sqf and Server/Support/Support_UAV.sqf. |
Old UAV menu/action still points to deleted scripts, reveal leaks to wrong side/enemies, recall deletes without freeing cap, destroyed UAV leaves active slot stuck, JIP clients see stale/no state, HQ-loss cleanup fails, or branch is merged without reconciling latest DroneStrike tuning from 8ca4be90. |
origin/feat/wf-menu-ops-console head 0767c0b5
|
client-visual-smoke, packed-mission-smoke, vanilla-parity-smoke
|
Client run from the branch in Chernarus and maintained Vanilla. Use packed mission/PBO if possible because the branch adds a new texture path. Static preflight should include git diff --check origin/master..origin/feat/wf-menu-ops-console and cleanup of the current trailing-whitespace hits in docs/superpowers/plans/2026-06-03-wf-menu-ops-console.md:78,179. |
Open WF_Menu, Buy Units, Buy Gear, Upgrade, Tactical, Help, RHUD and FPS HUD. Toggle HUD/FPS HUD, inspect the chevron/footer, hover/focus buttons, listbox selection, structured-text panels and small numeric readouts. Repeat enough in Vanilla to prove mirrored resources load. |
brand_chevron.jpg renders from Client\images\brand_chevron.jpg; PuristaBold and EtelkaMonospacePro resolve or acceptable fallbacks are chosen; orange/bone/gunmetal contrast is readable; no missing texture/font RPT errors; no dialog overlap/regression in menu routing; Chernarus and Vanilla carry the same intended theme. Source refs: Rsc/Styles.hpp:10-40, Rsc/Ressources.hpp:117-131,274-277, Rsc/Dialogs.hpp:1057-1064,1173-1179,1240-1249, Rsc/Titles.hpp:178-179. |
Missing texture due path/case/PBO issue, unavailable font, unreadable contrast, clipped WF_Menu title/footer/chevron, broken hover/focus state, RHUD numeric regression, stale blue/orange mix in structured text, or Chernarus/Vanilla divergence. |
origin/feat/buymenu-easa-qol head a66d4691
|
client-ui-smoke, optional vanilla-parity-smoke
|
Client run from the branch in Chernarus; repeat in maintained Vanilla only if the branch is propagated. Static preflight: git diff --check origin/master..origin/feat/buymenu-easa-qol is currently clean. |
Open Buy Units with low funds and normal funds, inspect unit rows and factory tabs while queue counts change, then open EASA on an aircraft with a known loadout. | Unaffordable base prices tint red without hiding full/crew price expectations; factory-tab queue labels update without per-tick flicker or label loss; EASA current loadout is green and selected. Source refs: Client_UIFillListBuyUnits.sqf:104, GUI_Menu_BuyUnits.sqf:201-206, GUI_Menu_EASA.sqf:29-37. |
Wrong affordability color, price/crew confusion, stale queue count, UI churn/flicker, EASA selects the wrong loadout, or Vanilla misses the branch behavior after propagation is claimed. |
origin/feat/player-stats head e01e47e1
|
integration-smoke, discordbot-test, privacy-review
|
Build/run DiscordBot tests from the branch, configure a throwaway RPT path and run with WFBE_C_STATS_ENABLED both false and true. Do not enable on a public server until UID/privacy and log volume decisions are explicit. |
With stats disabled, generate kills and confirm no stat emission. With stats enabled, generate kill/PvP events, flush through RPT, let DiscordBot tail/parse and inspect stats.json. Restart and confirm tail state prevents duplicate accumulation; rotate/replace the RPT and confirm only new-session lines are read. |
Disabled mode is silent; enabled mode writes predictable stat deltas; StatsService tails RPT into lifetime totals; stats.json writes are stable across restarts; tests covering parser/accumulator/document/pipeline pass. Static branch validation: dotnet test DiscordBot.Tests\DiscordBot.Tests.csproj passed 13/13 locally. Source refs and gate details: Player stats branch audit. |
Stats emitted while disabled, duplicate accumulation after restart, malformed RPT parsing, unsafe file overwrite, excessive log spam, UID/privacy surprises, silent data loss on corrupt stats.json, or DiscordBot can no longer start without stats config. |
origin/perf/quick-wins head 0076040f
|
dedicated-smoke, regression-smoke, vanilla-parity-smoke
|
Source-check each fix against the documented DR/playbook it claims to close, then either cherry-pick or merge intentionally. Run LoadoutManager/hand propagation before any Vanilla claim. Static preflight: git diff --check origin/master..origin/perf/quick-wins is currently clean. |
Exercise side-supply positive and negative changes, buy crewless and crewed units until queue limits would be hit, trigger paratrooper support marker creation and run touched cleaner/camp/special-handler paths under RPT watch. | Debits never become credits; crewless purchases decrement unitQueu / WFBE_C_QUEUE_*; paratrooper marker PV is registered; touched server loops do not introduce nil-code EH or scheduler spam; Vanilla carries the intended same fixes if claimed. Source refs: Common_ChangeSideSupply.sqf:20-26, Client_BuildUnit.sqf:365-368, Init_PublicVariables.sqf:40. |
Economy inversion persists, factory soft-locks after crewless buys, paratrooper marker still missing, cleaner/camp loops emit new errors, or branch conflicts with existing docs/source fix propagation. |
origin/feat/commander-positions head 560db61c
|
construction-smoke, client-ui-smoke, vanilla-parity-smoke
|
Broad branch from merge base f5985b77; review unrelated Valhalla/UI/HC/perf deltas before treating it as a construction branch. Static preflight must clean current trailing-whitespace hits reported by git diff --check. The new WDDM runtime is source-Chernarus only on branch grep; maintained Vanilla propagation is a decision/gate, not proven behavior. |
As commander, place each new position/wall anchor at several headings and slopes, undeploy/redeploy HQ, inspect CoIn cleanup, test static manning/artillery registration, and then either propagate and repeat in maintained Vanilla or explicitly record Chernarus-only scope. | Composition builds at clicked placement point, not map corner; walls/gates are usable and do not block all pathing; build cost/authority follows accepted construction rules; HQ undeploy cleanup does not leave display/event-handler residue; Vanilla scope matches the owner decision. Source refs and branch caveats: Commander positions branch audit. | Composition spawns at [0,0]/map corner, CoIn/HQ cleanup leaves stale handlers, client can forge free positions through DR-6 path, wall pieces trap vehicles/AI, branch whitespace persists, branch baggage regresses UI/Valhalla/HC behavior, or docs claim Vanilla propagation without actual Server_ConstructPosition/template-map code. |
origin/feature/zargabad-map head 1fdcb37a
|
hosted-smoke, dedicated-smoke, jip-smoke, hc-smoke, screenshot-evidence
|
Treat as a terrain release candidate. Static validation with Tools\Validate-ZargabadMission.ps1 passed locally in a detached worktree, but git diff --check reports 3542 generated whitespace findings. Runtime evidence should follow Guides/Zargabad-Completion-Gates.md. |
Boot Zargabad hosted and dedicated, capture RPT and screenshots for bases, town/camp placement, defenses, central wall/rim tests, economy/factory lists, edge-guard behavior, black-market feature and JIP/HC behavior. Validate the runtime report packet if using branch tools. | Mission loads as [31-2hc] Zargabad; terrain integration resolves; Init_Zargabad.sqf gates only Zargabad and logs expected anchors; bases/towns/camps/defenses are playable for low-pop; screenshot/RPT evidence proves the completion gates. Source refs and static result: Zargabad branch audit. |
Missing class/texture/script errors, generated mission drift, unsafe base-to-base suppression, bad camp/town placement, edge/rim false positives, central wall pathing failure, black-market imbalance, JIP/HC failure, or branch judged complete with only static proof. |
origin/feat/supply-helicopter head 262dc431
|
supply-smoke, economy-smoke, vanilla-parity-smoke
|
Current PR #1 page has been refreshed against this head. Static preflight must account for merge base f5985b77, non-supply branch baggage, current whitespace hits and absent maintained Vanilla heli symbols. |
With supply heli enabled and disabled, test truck supply as control, heli load at Air upgrade 2/3, unload at command center, hover/load/unload timer interruption, Air upgrade 4 cash run, pilot reward, commander tithe, interdiction destruction, same-vehicle reload after completion and JIP during active mission. | Trucks still work; heli load is denied before Air 3 and allowed at Air 3; cash run starts at Air 4; timers are cancellable/understandable; SupplyAmount and SupplyFromTown clear on completion; retained SupplyByHeli is either fixed or accepted as harmless; commander/pilot payout matches design; no maintained Vanilla claim unless symbols propagate. Source refs: Rsc/Parameters.hpp:4-10, Init_CommonConstants.sqf:168-180, Skill_Apply.sqf:62-72, supplyMissionStart.sqf:21-29,54, supplyMissionStarted.sqf:7-30,42-60, supplyMissionCompleted.sqf:24-41. |
Heli works while disabled or before Air 3, timers can be abused, repeated missions stack handlers/state, retained SupplyByHeli corrupts later runs, cash-run mints unintended supply/funds, no-commander case surprises players, Vanilla lacks heli support after release claim, or non-supply branch baggage regresses unrelated systems. |
| Gate | Requirement |
|---|---|
| Source state | Gameplay edits are in Chernarus source mission; generated targets are propagated or skip-listed files are hand-mirrored deliberately. |
| Documentation | Feature status, hardening roadmap, relevant atlas page and Agent worklog updated. |
| Machine evidence | A test record matching agent-test-plan.schema.json is added or linked from agent files. |
| Runtime smoke | Required hosted/dedicated/JIP/HC smoke packs completed for the changed subsystem. |
| RPT review | No new scheduler, undefined variable, missing file or extension errors in relevant RPT logs. |
| Tooling | LoadoutManager run or explicitly not required; missing 7za handled according to deployment need. |
| BattlEye/server config | Public-server release has reviewed publicvariable.txt, scripts.txt, server config and any production-only filters. Current repo does not ship a complete BE hardening set. |
| Integrations | DiscordBot tokens/configs and extension DLLs are present only in deployment, never committed; DiscordBot JSON intake, in-repo extension writes, AntiStack DB and BattlEye claims are checked against Integration trust boundary audit, with AntiStack runtime/DB validation in AntiStack database extension audit. |
| Rollback | Previous mission PBO/package and server config can be restored. |
Use agent-test-plan.schema.json for future machine-readable test evidence. The important distinction is coverageLevel: a finding marked source-only is useful, but it is not proof of in-game behavior.
Minimal record example:
{
"schema": "a2waspwarfare-agent-test-plan-v1",
"id": "town-ai-vehicle-despawn-smoke-2026-06-02",
"status": "planned",
"coverageLevel": ["dedicated-smoke"],
"subsystems": ["town-ai", "vehicle-cleanup"],
"sourceRefs": [
"Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/FSM/server_town_ai.sqf:211-216"
],
"steps": [
"Wake town AI with a vehicle template.",
"Put player in cargo or turret.",
"Force inactivity despawn.",
"Confirm occupied vehicle survives and empty AI-only vehicles despawn."
],
"evidence": [],
"result": "not-run"
}Previous: Attack-wave authority playbook | Next: Deep-review findings
Main map: Home | Fast path: Quickstart | Agent file: agent-context.json
Home | Agent Guide | Current live state | Release 1.2.2 (B91) | Quickstart | Progress | Lifecycle wait-chain | Join/disconnect | Parameters/build | Assets/config | SQF atlas | PV index | Modules | Support/specials | Commander/HQ | Commander vote/reassign | Construction/CoIn | Construction cleanup | WDDM compositions | Factory/purchase | Upgrades/research | Towns/camps/capture | Victory/endgame | Markers/cleanup | Server runtime | AI runtime/HC | AI commander audit | HC delegation | Town AI safety | Commander reassignment | Resistance supply | Player UI workflow | UI atlas | Respawn/death | Gear template filter | Vehicle cargo loop | Service guards | UI IDD repair | UI design inspiration | WASP overlay | Feature status | Source propagation | release readiness | Tooling readiness | Integration trust | AntiStack DB | Owner decisions | Shelved registry | Abandoned feature revival | Hardening roadmap | PVF dispatch | Server authority | ICBM authority | Attack-wave authority | Telemetry families | AICOM V2 cutover | Consumer port map | Testing workflow | Server ops | Web tools | Ecosystem repos | Arma 2 OA refs | A2 traps | OA compatibility audit | Coverage ledger | Navigation inventory | Pruning ledger | Knowledge roadmap | Agent context | Collab protocol | Worklog | Audit archive 2026-07 | Briefing reference | Utes invasion concept
- Shelved AICOM concepts - revivable someday ideas (owner-shelved 2026-07-03)
Docs rule: source-backed claims only; Arma 2 OA scripting docs only; gameplay edits start in Missions/[55-2hc]warfarev2_073v48co.chernarus.
- Getting started
- Status and coordination
- Agent context
- Agent collaboration protocol
- Agent worklog
- Agent worklog archive
- Progress dashboard
- PR cleanup and integration lab
- Shelved PR #169: gear price double-count
- Shelved PR #194: Chernarus no-trees
- Coordination board
- Codebase coverage ledger
- Bottleneck removal queue
- Current source status
- Wiki mirror reconciliation
- Navigation inventory
- Registers
- Agent orchestration
- Architecture
- Architecture overview
- Mission entrypoints and lifecycle
- Lifecycle wait chain
- Player join/disconnect and AntiStack lifecycle
- Mission parameters/localization/build inputs
- Stringtable localization key-family catalog
- Source inventory
- Content structure and maps
- Assets/config/localization/parameters
- Mission start parameters index
- Code and networking
- Gameplay systems
- Core systems index
- Gameplay systems atlas
- Commander/HQ lifecycle atlas
- Economy, towns and supply
- Economy system reference
- Balance asymmetries
- Anti-stack skill-balance mechanic
- Empty-side supply income stagnation
- Towns, camps and capture atlas
- Victory and endgame atlas
- Victory conditions reference
- Territorial victory reference
- Marker cleanup and restoration
- Marker loop engine and registries
- Map marker families content catalog
- Marker subsystem function reference
- Client marker FSM updater map
- Support specials and tactical modules
- SCUD TEL tactical munitions
- Naval HVT objectives (carriers/SCUD)
- SCUD saturation strike mechanic
- Takistan airfield FPV drone design
- Construction and CoIn systems
- Structure damage reduction & friendly-fire
- Construction logic list cleanup
- Flak tower & WDDM anchor compositions
- Resistance supply scaffold
- GUER Insurgents faction overview
- GUER Insurgents branch audit
- GUER insurgent player economy
- GUER Commissar Panel
- GUER air-defense loop (Ka-137/Mi-24)
- Upgrades and research atlas
- Supply mission architecture
- Supply mission authority cleanup
- Current supply helicopters PR1
- Respawn and death-loop lifecycle
- Vehicle theft economy pitch
- GUER tunnel network pitch
- Content, reference and catalogs
- Faction unit/vehicle roster catalog
- Auxiliary/SF/civilian unit catalog
- Gear store loadout route catalog
- Upgrade research (cross-faction)
- Gear store price and upgrade catalog
- Gear store catalog (complete, per faction)
- Defense structures catalog
- Artillery reference per faction
- AI squad team templates catalog
- Town AI lifecycle reference
- Town AI group composition catalog
- Class-skill system reference
- Player skill abilities reference
- Default gear template content catalog
- Chernarus map content reference
- Takistan map content reference
- Takistan features
- Takistan parity reference
- Takistan oilfields objective reference
- IRS IR-smoke countermeasure
- Arty module special munitions
- Zeta cargo sling-load reference
- Spawn primitive function reference
- Kill and score pipeline
- Waypoint helper function reference
- Position and proximity function reference
- Side/team state function reference
- Player AI watchdog and recovery
- AICOM stuck-recovery v2
- LoadoutManager data-model contributor guide
- Discord status bot setup and reference
- GLOBALGAMESTATS extension reference
- New player quickstart (player guide)
- Optional client mods (player guide)
- Earning funds and score (player guide)
- Vehicle service and logistics (player guide)
- Commander's handbook (player guide)
- Tactical support menu
- Paradrop player experience
- Supply missions (player guide)
- In-game briefing & Diary field manual
- Playable maps catalog
- Faction root variables reference
- Faction base structures catalog
- Counter-battery radar system
- Bank, Reserve and Artillery Radar structures
- Map ruleset model and object config
- Countermeasures module reference
- Vehicle countermeasure (flares/spoofing)
- UAV terminal and spotter system
- Artillery firing function reference
- Service Point pricing model
- Medic redeployment truck (forward spawn)
- Side-patrol runtime and convoy mechanics
- Day/night cycle and weather system
- Config lookup helper reference
- CIPHER sort utilities reference
- Modded maps status and content
- BattlEye filter setup and OA taxonomy
- Player squad/group join protocol
- AutoFlip vehicle recovery
- Engine stealth fuel toggle
- Valhalla vehicle climbing-assist
- Missile and ordnance Fired-EH reference
- Vehicle equip and rearm reference
- Array and collection utilities
- Server composition spawner reference
- Upgrade queue server loop
- Map boundaries and off-map enforcement
- Namespace/profile/diagnostic utilities
- Group bool getVariable A2-OA trap
- Vehicle weapon balance init
- View distance auto-throttle
- Camp & respawn-camp getters
- Performance audit writer
- Site clearance (bulldozer)
- Factory queue cancel & refund
- AI commander tunable constants
- Experimental feature-flag constants
- Flag system quick reference
- Mission tunable constants catalog
- Gear parsing & cargo capacity
- Structure dressing function
- Paradrop delivery functions
- ICBM nuke client VFX & radiation
- Server HandleSpecial router
- LocalizeMessage chat router
- Gear buy-menu render & price functions
- Server broadcast & telemetry loops
- Per-unit client init pipeline
- Vehicle marking & texture pipeline
- Defense category & budget
- Legacy AI order primitives
- Commander-team driver
- AICOM command verbs
- AICOM behavior fix taxonomy
- AI commander wildcard deck reference
- AICOM aircraft and airfield system
- Static-defense manning
- End-of-game stats screen
- AI commander execution loop
- Deployable bipod / weapon resting
- Town-economy getters
- Server-init deadspawn & airfield probe
- GUER VBIED detonate action
- Resource income-tick engine
- AI commander treasury accessors
- PVF send-helper contracts
- AICOM logging & AICOMSTAT telemetry
- AICOMSTAT v2 event census
- WASPSCALE v2 telemetry
- WASPSCALE v2-ext coverage audit
- Telemetry families reference
- Group lifecycle & entity reaping
- Batch AI spawner orchestrator
- Client funds/income HUD readout
- Server group GC & cap warning
- Town runtime tuning constants
- Client input/hotkey handler
- WASP base-repair system
- WASP DropRPG launcher/ordnance
- CoIn construction-interface client engine
- Town-capture garrison & airfield rebuild
- Map-control & minimap templates
- Client FPS & state telemetry
- Client service-proximity getters
- Airfield-exclusive roster & unit hints
- Unit-camera spectator system
- Town-garrison patrol/defense worker
- RequestTeamUpdate squad-discipline
- Arma2Warfare GPT assistant
- LoadoutManager build configs & defines
- GLOBALGAMESTATS extension logging
- Discord bot instrumented logging
- Eden/Everon & Taviana map content
- Cruise missile strike asset
- AI / HC
- AI headless and performance
- AI mods and pathfinding reference
- Headless client scaling and topology
- AI runtime/HC loop map
- Headless client init and stat loop
- HC delegation target selection
- Player AI caps and role balance
- Old WarfareBE FPS comparison
- AI commander autonomy audit
- Upstream BE 2073 AICOM delta
- Parent 2.073 divergence audit
- AI commander capture & fun plan
- AI commander B69 improvement roadmap
- AI commander B69 implementation sketches
- AICOM V2 cutover status
- Headless delegation and failover
- Commander reassignment call shape
- GUER Director living-resistance pitch
- Quality and operations
- Foundation perf findings & Tier-3 dead-ends
- Dead/stale code register
- Commander vote/reassignment
- Attack-wave authority
- Server runtime and operations
- Server ops runbook
- JIP enrollment & client data delivery (b74.2 lessons)
- Server gameplay runtime atlas
- PerformanceAuditAnalyzer
- Performance opportunity sweep
- Documentation plan
- Knowledge platform roadmap
- Wiki quality audit
- Wiki pruning and relevance ledger
- Audit findings queue (2026-06-03)
- Deep review findings
- Client UI / server-loop perf findings
- Performance gain simulation
- Self-host testing field notes
- Cleanup and work lanes
- Hardening and authority
- UI / player workflows
- Client UI, HUD and menus
- UI HUD and dialogs
- Player UI workflow map
- Client UI systems atlas
- UI IDD collision repair
- UI control class library reference
- UI theme palette and style macros
- UI design inspiration 2026-07
- Available-actions client gate FSM
- Gear/loadout/EASA atlas
- Gear template profile filter
- Vehicle cargo equip loop bounds
- Factory and purchase systems atlas
- Service menu affordability guards
- WASP overlay
- Class-skill system reference
- Skin selector and class swap
- Earplugs audio toggle
- Mission audio catalog
- HQ radio knowledge-base catalog
- QoL trio player hints
- Player vehicle/travel actions
- Tooling / release / integrations
- Tools and build workflow
- Warfare web tools
- Ecosystem & companion repos
- Zargabad tooling parity
- July 2026 release readiness
- Operator monitor and CPU affinity tools
- Tooling release readiness audit
- Source fix propagation queue
- Agent release readiness ledger
- Release source intake map
- Testing/debugging/release workflow
- Current RPT release gate
- RPT telemetry consumer port map
- External integrations
- Integration trust boundary audit
- AntiStack database extension audit
- Community & Dev
- Community & Dev
- Miksuu upstream wiki import / archive index
- Upstream changelog feature leads
- Developer history and upstream lessons
- Upstream Miksuu commit intel
- Upstream mining ledger
- Archive script mining v2
- Upstream BE 2073 AICOM delta
- Parent 2.073 divergence audit
- PR8 and Drone upstream lesson match
- Development lessons learned
- External research reports
- Audit archive 2026-07
- Briefing reference
- Utes invasion concept
- Miksuu archive: Home
- Miksuu archive: Welcome
- Miksuu archive: Big announcements
- Miksuu archive: Changelog
- Miksuu archive: Development process
- Miksuu archive: Discord bot
- Miksuu archive: Gameplay videos
- Miksuu archive: LoadoutManager
- Miksuu archive: Chernarus script architecture
- Base-game visual catalogs
- Compatibility and references
- HC upstream history and lessons
- Player stats branch audit
- BuyMenu EASA QoL branch audit
- Perf quick wins branch audit
- Commander positions branch audit
- Zargabad branch audit
- Quad AI Commander concept
- Arma 2 OA external reference guide
- Base-game config & image reference
- Arma 2 OA compatibility audit
- Arma 2 OA agent traps reference
- Arma 2 OA command versions
- Wiki source consistency
- External Arma 2 OA reference index