-
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.
Current packaged release-readiness branch: codex/release-command-center-20260630.
Current PR #125 source head: dda838639691d9baa8e5cf99039ce34b840d3350. Last package/handoff identity: c0d2b42ef5281dfdef1393cfc0a731e7c38375de, _MISSIONS.7z SHA256 A99EC513243EC161319B6AE16BB5A9A5308541FF03B6148D60FBE208D4E04AAC, 1,879 entries, 7,139,450 bytes. Repackage before collecting runtime proof for dda838639; otherwise intentionally freeze runtime collection on c0d2b42ef5.
Companion PR #126 source-note lane: codex/release-readiness-20260701, with livehost proof-gap/tooling ledger through 0eb72ca47 and HC audit source through f20ddfc83. Its local proof-instrumented archive SHA256 C0220856B624ABDA4204D1A6C554505C54C4B75541B6900D2725E08C522763CD is not a substitute for the active PR #125 release tuple above.
This is the active gate for the July 2026 release-readiness package. PR #126 is a companion guardrail/source-notes lane; its ideas are only release evidence where they are folded into PR #125 and proven by the PR #125 package/runtime tuple. Do not substitute PR #126's branch, git hash or any future archive SHA for PR #125 unless a new package is explicitly cut and the ledgers are refreshed. Also do not substitute PR #125 source head dda838639 for the last proven package tuple until a new archive/handoff names that head.
Before release wording:
- Use the current PR #125 candidate marker, exact git hash and archive SHA256 from the package/handoff artifacts.
- Collect the ten-file runtime packet for both maintained terrains:
chernarus/{server,HC1,HC2,start-client,late-JIP}.rptandtakistan/{server,HC1,HC2,start-client,late-JIP}.rpt. - Run the packet builder, packet checker, release marker checker and redaction-safe summary commands with the PR #125 candidate/git/archive tuple from that exact package.
- Runtime proof must cover AI Commander startup, active/assist state, intent/objective state, team founding, paratroop gating, HC registry/delegation, start-client and late-JIP client state, and current-window SQF error absence.
- Late-JIP proof must include the PR #126-origin
WFBE_PopTierandWFBE_AICOM_*join catch-up paths that are now folded into PR #125, plus the usual marker/feed and roster recovery evidence. - If the PR #126 HC audit instrumentation is included in the candidate, HC disconnect/reconnect proof must capture
HCSIDE|v1|disconnect,HCDROP_AICOM_AUDIT,HCRECON_AICOM_AUDIT,HCSTAT,HCDISPATCH, and post-drop heading/marker continuity before any behavior-changing HC team re-adoption patch.
2026-07-01 13:45 UTC livehost marker sweep: current server-side stats were fresh (generatedAt: 2026-07-01T13:42:08Z) and showed Chernarus online with 4 players, 2 HCs, server FPS last/avg 47/46, and HC delegation 93%. The latest 8 livehost RPTs contained AICOMSTAT, HCSTAT, and WASPRELEASE|v1|candidate=release-command-center-20260630 markers, but no PR #126 HCDROP_AICOM_AUDIT / HCRECON_AICOM_AUDIT lines and no 7e97c78b9, f20ddfc83, or C0220856B624ABDA4204D1A6C554505C54C4B75541B6900D2725E08C522763CD marker. Treat that as useful live health context only, not exact PR #126 runtime proof.
2026-07-01 16:10 UTC livehost marker follow-up: backing stats were fresh (generatedAt: 2026-07-01T16:08:17Z) and showed Chernarus online with 1 player, 2 HCs, server FPS last/avg 47/46, HC delegation 89%, active aicom group sources and WEST aicom_paradrop source. The latest archived RPT marker sweep still found no HCDROP_AICOM_AUDIT, HCRECON_AICOM_AUDIT, HCSIDE|v1|disconnect, HCSIDE|v1|reconnect, HCDISPATCH, WF_RELEASE_MARKER, 0eb72ca47, c148d0d6, f20ddfc83, or PR #126 archive-SHA marker. Treat this as live health context only, not exact PR #126 runtime proof.
PR #126 companion helper: Tools/Monitor/Get-WaspRptMarkerSweep.ps1 can repeat the first-pass livehost/archive marker count without copying logs or printing raw RPT lines. Use it before requesting broader private RPT copies; it reports counts, public file labels, path hashes and line hashes unless -IncludeLineText is explicitly selected.
The next section has the detailed PR #125 command-center gate and command template. Treat any older hardcoded hashes in historical worklog sections as examples only; the active release tuple is the one recorded above and in the newest handoff artifacts.
Packaged checkpoint codex/release-command-center-20260630@c0d2b42ef5 has static release gates, the cmdcon33 WEST founding/HQ placement fix absorbed from origin/master@7fd310c63, a source-map runtime RPT packet builder, strict runtime RPT packet matrix fixtures, runtime run-ledger validation with exact roleProof/client joinPhase, archive-SHA and source-bound RPT binding, duplicate content, role-identity and per-role-proof RPT gates, source-map release identity drift rejection, non-empty run-ledger candidate/git identity checks, windowed RPT scorer smoke, startup-banner scorer fixtures, HC registry CIV-connect scorer fixtures, stronger no-human AICOM scorer fixtures, per-terrain runtime evidence fixtures, Takistan WEST fallback scorer fixtures, summary release-identity proof fixtures, runtime packet manifest gate-proof and summary root-binding fixtures, AICOM starved-infantry fallback source integration in both maintained terrains, AICOM group default guards, AICOMHB|v2| heartbeat proof alignment, HC-drop delayed-audit failure scoring, group-cap ceiling/createGroup failure scoring, AICOM low-risk cleanup in both maintained terrains, AICOM wildcard A2 command-dialect cleanup, AICOM Strategy snapshot town-cache reuse and GUER armor classifier string-match cleanup in both maintained terrains, server-owned player upgrade request/payment authority, Windows PowerShell-safe final-check tooling, full git-tracked package payload provenance, runtime-proof token emitter smoke coverage, HC/client PV handler guards, SQF count guard parenthesization, handoff contract self-test coverage and local handoff packet generation green, but it is still runtime-pending and not-deployed. PR #125 has since advanced to source head dda838639 to remove the AICOM HC top-up draft worker/wiring; that newer head is source-observed only here until repackaged.
Current PR #125 source head is codex/release-command-center-20260630@dda838639691d9baa8e5cf99039ce34b840d3350. The current package/handoff identity remains _MISSIONS.7z from c0d2b42ef5281dfdef1393cfc0a731e7c38375de, SHA256 A99EC513243EC161319B6AE16BB5A9A5308541FF03B6148D60FBE208D4E04AAC, 1,879 entries, 7,139,450 bytes, handoff status ready_for_runtime_collection. Reject any packet whose runtime-rpt-packet-manifest.json, release-run-ledger.json, scorer summary or archive manifest binds to a stale or mismatched identity; if dda838639 is the target, regenerate the package/handoff first and update these commands.
The c0d2b42ef5 checkpoint also removes stale mission/tool comments that referenced deleted proposal documentation; origin/master@7fd310c63c23e2a723ca24de7349b8235631db9d deleted B57-SOAK-PROPOSALS.md and GUER_TECH.md. This is source hygiene only, and does not relax the runtime RPT packet gate.
2026-07-01 remote reconciliation note: origin/feat/qol-polish-pack@722f5d057 adds an HC civilian registry guard, PR #122 head 6176c70aa34ea4040876e7a3e3e329d17cdcff33 adds scanner -RequireHcRegistry, origin/release/pr122-static-fixes@94c6ab30a220337a04280ddf9967b9da801bf4c6 carries the first HC PVF parameter-count guard, PR #122 head 3694c068639db015de52e1f7d9f433859010522c adds the HC/client PV handler guards, PR #122 head f5c41461508e117d13d0b6172cbd66698091a8eb parenthesizes SQF count guards, current PR #122 scanner/tooling head 4c66c3b6b1c20321163e732d6d06f5dacaeb4e5a hardens the older scanner with both-terrain windows plus stronger AICOM telemetry, and command-center head 8de3c4a60300568e42f2b7343b4c72a06621e33e adds the starved-infantry fallback for Takistan WEST founding. The release branch already contains the owner-keyed HC CIV registration/deferred-reannounce path, so it adapted the HC evidence, startup-banner, both-terrain, stronger AICOM and per-terrain runtime evidence ideas into the current Tools/PrTestHarness scorer instead of raw-cherry-picking the older Tools/Monitor scanner shape, then adapted/cherry-picked the small RPT-noise-reducing guards into both maintained terrains and cherry-picked 8de3c4a60 as local source commit b4df22ede. PR #122 parity audit reports 21/21 checked AICOM/HC files hash-identical between Chernarus and generated Takistan, but the redacted 07:53 livehost probe says active Chernarus resolves to a same-name cmdcon30aicom PBO while active Takistan does not resolve to a same-name active PBO/folder, so those livehost RPT windows are baseline context only, not exact release proof. Do not reset runtime evidence to PR #122 or cherry-pick the older UID-keyed guard unless fresh RPT evidence shows a stale registry after deferred registration.
The branch emits a generated RPT marker through version.sqf and initJIPCompatible.sqf:
WASPRELEASE|v1|candidate=release-command-center-20260630|git=<short-head>|terrain=<chernarus-or-takistan>
Build and validate the release-candidate packet from the private source map, then run the scorer:
& .\Tools\PrTestHarness\Rpt\New-WaspRuntimeRptPacket.ps1 `
-SourceMapPath "<private-runtime-rpt-source-map.json>" `
-OutDirectory "<release-candidate-rpts>" `
-ExpectedCandidate release-command-center-20260630 `
-ExpectedGit c0d2b42ef5 `
-ExpectedArchiveSha256 A99EC513243EC161319B6AE16BB5A9A5308541FF03B6148D60FBE208D4E04AAC `
-Validate -RequireSourceRptExists
& .\Tools\PrTestHarness\Rpt\Test-WaspRuntimeRptPacket.ps1 `
-RptRoot "<release-candidate-rpts>" `
-ExpectedCandidate release-command-center-20260630 `
-ExpectedGit c0d2b42ef5 `
-ExpectedArchiveSha256 A99EC513243EC161319B6AE16BB5A9A5308541FF03B6148D60FBE208D4E04AAC `
-RunLedgerPath "<release-candidate-rpts>\release-run-ledger.json" `
-RequireSourceRptExists
$expectedReleaseMarkers = @(
"WASPRELEASE|v1|candidate=release-command-center-20260630|git=c0d2b42ef5|terrain=chernarus",
"WASPRELEASE|v1|candidate=release-command-center-20260630|git=c0d2b42ef5|terrain=takistan"
)
& .\Tools\PrTestHarness\Rpt\Test-WaspReleaseRptEvidence.ps1 `
-RptDirectory "<release-candidate-rpts>" -Recurse `
-ExpectedMarker $expectedReleaseMarkersTo create a redaction-safe JSON and Markdown summary for the wiki/release ledger, use:
& .\Tools\PrTestHarness\Rpt\New-WaspReleaseRptSummary.ps1 `
-RptDirectory "<release-candidate-rpts>" -Recurse `
-ExpectedMarker $expectedReleaseMarkers `
-RuntimePacketManifestPath "<release-candidate-rpts>\runtime-rpt-packet-manifest.json" `
-ExpectedCandidate release-command-center-20260630 `
-ExpectedGit c0d2b42ef5 `
-ExpectedArchiveSha256 A99EC513243EC161319B6AE16BB5A9A5308541FF03B6148D60FBE208D4E04AAC `
-RequireRuntimePacketManifest `
-OutDirectory "<release-candidate-rpts>\summary" -ForceFor local package provenance after a fresh LoadoutManager package run, use:
$env:7za = "C:\Program Files\7-Zip\7z.exe"
dotnet run -c RELEASE --project Tools\LoadoutManager\LoadoutManager.csproj
powershell -NoProfile -ExecutionPolicy Bypass -File Tools\PrTestHarness\Package\Test-WaspReleasePackage.ps1 `
-ArchivePath .\_MISSIONS.7z `
-ExpectedCandidate release-command-center-20260630 `
-ExpectedGit c0d2b42ef5 `
-OutDirectory "<release-package-manifest>" -ForceThe 2026-07-01 local package manifest for c0d2b42ef5 passed with 1,879 entries, only the Chernarus and Takistan mission folders at archive root, generated markers for both terrains, 7,139,450 bytes, SHA256 A99EC513243EC161319B6AE16BB5A9A5308541FF03B6148D60FBE208D4E04AAC, and full git-tracked mission payload binding: 1,717 tracked files matched HEAD, 1,719 archive mission files were present, only the two generated ignored version.sqf files were allowed outside git, and there were zero missing tracked files, unexpected mission files or hash mismatches. Tools/PrTestHarness/Release/New-WaspReleaseHandoff.ps1 then re-hashed that local archive, generated a redaction-safe handoff packet with status ready_for_runtime_collection, copied release-package-manifest.json and sibling release-package-manifest.md into the handoff folder, wrote runtime-rpt-source-map.template.json plus runtime-run-ledger.template.json, included the builder command that should produce runtime-rpt-packet-manifest.json beside the collected RPT packet, recorded runtime-approval/runtime-evidence/deployment-approval as pending gates, and routes the summary command through -RuntimePacketManifestPath, -ExpectedCandidate, -ExpectedGit, -ExpectedArchiveSha256 and -RequireRuntimePacketManifest. Test-WaspReleaseHandoff.SelfTest.ps1 and Test-WaspReleasePackage.SelfTest.ps1 now cover those local handoff and package-payload contracts without live runtime data. Treat those as package-artifact and handoff provenance only; they are not dedicated-server runtime proof, local runtime launch approval or deployment approval.
The same source checkpoint also aligns AICOM heartbeat proof to AICOMHB|v2|, ports low-risk AICOM cleanup from the release-readiness source lane, and hardens the RPT scorer so delayed bad HC-drop audits and group-cap ceiling/createGroup failures turn release evidence red instead of being passive context.
Minimum runtime packet before stronger wording:
- Exact RPT folder matrix is built by
New-WaspRuntimeRptPacket.ps1from a privateruntime-rpt-source-map.json, emitsruntime-rpt-packet-manifest.json, then passesTest-WaspRuntimeRptPacket.ps1before the token scorer:chernarus/{server,HC1,HC2,start-client,late-JIP}.rptandtakistan/{server,HC1,HC2,start-client,late-JIP}.rpt. -
New-WaspReleaseRptSummary.ps1must be run with-RuntimePacketManifestPath "<release-candidate-rpts>\runtime-rpt-packet-manifest.json",-ExpectedCandidate,-ExpectedGit,-ExpectedArchiveSha256and-RequireRuntimePacketManifest; the summary remains red unless the manifest release tuple matches the package handoff, has schemaa2waspwarfare-runtime-rpt-packet-builder-v1,validation.requested=true,validation.overall=pass, all required packet-validator gates withstatus=pass, a matchingrptRootHash, matching copied filecopiedPathHash/copiedRptSha256values and exactly ten copied RPT files. - Source map and run ledger record each terrain start time, command line, PID, profile/log path, original source RPT path, source RPT LastWriteTime/SHA256, copied RPT path/SHA256, exact per-file
roleProof, clientjoinPhasefor start/late JIP files,release.candidate,release.gitandrelease.archiveSha256. The packet builder rejects source-maprelease.*drift from supplied-ExpectedCandidate,-ExpectedGitor-ExpectedArchiveSha256; the packet checker requires the run-ledger candidate/git/archive identity to be non-empty and matching when those expected flags are supplied. The packet checker reads copied file LastWriteTime from the packet, requires source RPT LastWriteTime to be after terrain launch, rejects copied/source hash mismatches, duplicate original source RPT paths and duplicate copied/source RPT content hashes, requires the ledger archive hash to match-ExpectedArchiveSha256, and hashes original source paths plus duplicate command lines in public output. - Role identity and per-role proof match file role:
server.rptreportsisServer=trueandisDedicated=true; HC/client role files do not; HC files contain HC-local startup proof, and player-client files contain client-local startup proof. - Every scored RPT current-mission window retains the startup
## Mission Namebanner; if a file lacks that banner, the scorer fails before release wording. - Every scored RPT resolves to exactly one runtime terrain, and
per-terrain-runtime-evidencepasses so Chernarus and Takistan each contain the core AICOM, JIP, HC registry/delegation, town cleanup, WDDM/static/artillery and supply evidence families. - Chernarus dedicated server RPT with two HCs, start client, late JIP client and
WFBE_C_AI_DELEGATION=2. - Takistan dedicated server RPT with the same shape.
- No-human AICOM evidence includes
AICOMSTATevent proof,TEAM_FOUNDED,CMDRSTAT, and at least one autonomous action/progress token:ASSAULT_DISPATCH,COMBATSTAT,FRONT,POSTUREorSNAP. A human-drivenAICOM|ORDERline alone is not enough. - Takistan WEST AICOM founding proof must pass the dedicated
takistan-west-aicom-infantry-fallbackscorer gate withAICOMGATE|WEST|infFallback|from exact releasec0d2b42ef5, followed byTEAM_FOUNDED,CMDRSTAT, autonomous progress and no current-window SQF errors. - At least two successful non-zero-owner CIV
HCSIDE|v1|connect|...rows in the scored current-mission window, with zeroHCSIDE|v1|connect-skipand zero non-CIV HC connect rows. - Current-mission windows in the scored RPTs have no generic stop-condition errors.
- HC/client RPTs do not show the guarded PV handler failures for non-array PVF parameter
count, missingWFBE_CL_FNC_EndGame, or missingGroupChatMessage. - RPTs do not show
count _... > ...expression/runtime errors that should have been covered by the parenthesized count guard pass. - Client and HC RPTs retained for JIP/client/HC-specific failures.
- Sanitized pass/fail summary only: no raw private RPT lines, player UIDs, IPs, absolute RPT paths, local profile paths, SSH/server usernames, or private ops commands.
Required evidence families: no-human AICOM, human takeover/revert, HQ death and late JIP, HC delegation/locality, town cleanup, WDDM/static defense and artillery discoverability, and supply truck/helicopter workflows.
| 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; add a JIP deadspawn regression (see Boot-and-JIP pack) whenever the editor-slot sweep, the connect/disconnect enrollment handlers or the name-tag overlay are touched. |
Check version.sqf, WFBE_Parameters_Ready, commonInitComplete, townInit, serverInitFull, clientInitComplete. mission.sqm town object init is part of runtime. PR #122 source currently makes the editor-slot sweep audit-only, adds related JIP guards, and adds HC civilian-registry hardening, but July 2 dedicated/JIP/HC RPT evidence is still required before calling these fixed in release. Current PR #122 source removes the risky editor-slot reaper, keeps editor/player-slot tagging audit-only, changes the name-tag overlay to visiblePosition, clears WFBE_CONNECT_RETRY_<uid> on disconnect, guards HC registration so only server-visible civilian groups enter WFBE_HEADLESSCLIENTS_ID, and hardens the release scanner so each scored RPT must include a startup mission banner and both terrains are represented; 21/21 checked AICOM/HC files were hash-identical between Chernarus and generated Takistan in the PR #122 parity audit. Redacted livehost probing now says active Chernarus resolves to a same-name cmdcon30aicom PBO, but active Takistan does not resolve to a same-name active PBO/folder, so those livehost RPT windows remain baseline context only. WEST AI-commander founding is source-integrated/runtime-pending on release c0d2b42ef5; require exact-build Takistan WEST takistan-west-aicom-infantry-fallback scorer proof, `AICOMGATE |
| 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, Server/FSM/server_side_patrols.sqf, Common/Functions/Common_RunSidePatrol.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. Also smoke 3D flag texture separately from marker color, Patrols v2 spawn/marker/HC/slot-release behavior, and zero-camp helper behavior in respawn/buy/capture gates. |
| Commander and HQ lifecycle |
Commander/HQ lifecycle, Commander vote/reassignment, 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, vote semantics, deploy/mobilize, HQ death, wreck marker visibility and repair. | Include player-majority, no-commander-majority, equal-vote, player-candidate tie, vote restart, duplicate-name reassignment UI 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. | PR #125 now routes direct player upgrade requests through server-owned tuple validation/payment and client timer sync from accepted server state; smoke valid commander upgrade, forged/non-commander requester, wrong side/team, stale level, insufficient funds/supply and dependency rejection. 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 a bounded waitUntil (up to 20 s) on !isNull player, replacing the old blind sleep 20 (changed in the wiki-wins batch between 0139a346 and bef714aa). Current release head a96fdda2 keeps delegated town-AI group registration and server update-back in both maintained roots (Client_DelegateTownAI.sqf:29-44; Server_HandleSpecial.sqf:86-115), while static-defense HC update-back remains commented (Client_DelegateAIStaticDefence.sqf:27-30). Smoke town AI and static-defense delegation before calling that branch safe. |
| 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 the marker-root shape for the target branch: docs/source accepts Missions, Missions_Vanilla and Tools/LoadoutManager/LoadoutManager.csproj, while current stable/B69/B74/release-shaped refs accept Missions/[55-2hc]warfarev2_073v48co.chernarus, Tools/LoadoutManager and AGENTS.md. Current Miksuu/perf and local feat/supply-helicopter@558fba343 still need the named ancestor. Use A2WASP_SKIP_ZIP=1 for propagation-only runs only on branches that implement it; on local feat/supply-helicopter, missing 7za still throws because zip runs unconditionally. |
| 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. |
| PR Test Harness static smoke and bug-hunt | Current release-readiness tooling lives under Tools\PrTestHarness on the release-command-center worktree. Run-WaspFinalCheck.ps1 runs Smoke\Test-WaspStaticSmoke.ps1 plus whole-mission BugHunt\Find-WaspBugHunt.ps1 -All -MinSeverity high. Treat findings as pre-engine gates and review leads; overlay-dependent smoke checks still require an installed local stress mission and Arma runtime. |
| Conflict-marker scan | `rg -l "<<<<<<< |
| 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. |
The current release-command-center source carries a reusable harness at Tools\PrTestHarness. It is outside Missions, Missions_Vanilla and Modded_Missions; harness overlays belong on a copied local test mission and are not release payload. These commands are source/package/RPT gates, not proof that gameplay succeeded in-engine.
| Gate | Command or tool | Evidence and boundary |
|---|---|---|
| Ready-to-test preflight | pwsh Tools\PrTestHarness\Run-WaspFinalCheck.ps1 |
Runs the static smoke gate and high-severity whole-mission bug-hunt. A pass means "ready for in-engine testing", not "ready to ship". |
| Local playable mission setup | pwsh Tools\PrTestHarness\Setup-WaspTestMission.ps1 |
Runs Tools\LoadoutManager, writes generated version.sqf, verifies boot inputs and copies the Chernarus mission to a local Arma 2 OA MPMissions folder. Missing 7za only skips the server archive; missing .NET SDK blocks the setup. |
| Release archive provenance |
Tools\PrTestHarness\Package\Test-WaspReleasePackage.ps1 after dotnet run -c RELEASE --project Tools\LoadoutManager\LoadoutManager.csproj
|
Validates _MISSIONS.7z root layout, required mission files, generated `WASPRELEASE |
| Runtime RPT packet build/check |
Tools\PrTestHarness\Rpt\New-WaspRuntimeRptPacket.ps1 then Test-WaspRuntimeRptPacket.ps1
|
Copies the exact ten-file Chernarus/Takistan role matrix from a private source map, writes a run ledger, rejects duplicate source paths/content, stale RPTs, wrong role proof and mismatched package identity. Keep populated source maps and raw paths private unless redacted. |
| Release RPT evidence scoring |
Tools\PrTestHarness\Rpt\Test-WaspReleaseRptEvidence.ps1 or New-WaspReleaseRptSummary.ps1
|
Scores only the current mission window, requires terrain-specific release markers and per-terrain semantic gates for Chernarus and Takistan. Missing Takistan evidence cannot be masked by a rich Chernarus run. |
| Release handoff packet |
Tools\PrTestHarness\Release\New-WaspReleaseHandoff.ps1 after package provenance passes |
Emits local handoff JSON/Markdown/templates from package manifest data. It does not deploy, SSH, copy raw RPTs or imply owner approval. |
For live RPT watching during a playtest, use Tools\PrTestHarness\Rpt\Watch-WaspLiveRpt.ps1 -Once or Analyze-WaspStressRpt.ps1 -CurrentRun -LiveSummary for post-run stress analysis. Report tokens and gate results; do not publish raw private RPT paths or unredacted launch commands.
Adopted 2026-06-12 after a live regression entered through a fixup (night-retro work order, claude-inbox#2 item 6).
Fixup commits get the FULL review treatment, not a lighter one. A "small fixup" on top of a reviewed branch is exactly where reduced scrutiny lets bugs in — the worst bug of the 2026-06-11 night session arrived via a fixup commit.
Rules:
-
Mandatory Lint-A2Compat on every fixup — run the harness A2-compat lint (
Lint-A2Compat, ReusableHarness) over the touched files before pushing, even for one-line changes. A3-only idioms (private _x =,params,apply,pushBack, code-blockselect) are the single most common fixup regression class; one such fixup killedCommon_CreateVehicle(no MHQ, AI commanders stopped) on 2026-06-11. - Full review scope — the reviewer reads the fixup diff with the same checklist as a feature commit: A2 syntax, authority model, nil/null paths, both-variant parity (Chernarus + regenerated Takistan).
- No review-exempt fixups — "it only touches a comment/log line" still goes through the diff check; misclassification is cheap to catch and expensive to miss.
-
Evidence row — record the lint run (command + exit code) in the test-evidence record like any other
local-toolcheck.
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.
Use this when validating server ops, performance, Discord status or public-server health:
| Signal | Collect | What it proves |
|---|---|---|
| Server RPT | Dedicated/listen server ArmA2OA.RPT. |
Server-scope [Performance Audit] rows, server FPS publishers, extension errors, AntiStack wrapper errors and missing-file warnings. |
| Client RPTs | Each tested player's local RPT. | Client-scope audit rows such as client_rhud, UI/display errors, JIP marker failures and local script errors. |
| PerformanceAuditAnalyzer output | Run Tools/PerformanceAuditAnalyzer/Analyze-PerformanceAudit.ps1 over the RPT file or folder; see PerformanceAuditAnalyzer. |
Session-separated CSV/HTML/Markdown reports for hot loops, spikes, FPS context and player/map/session grouping. |
database.json |
The configured DiscordBot data source, usually C:\a2waspwarfare\Data\database.json. |
GlobalGameStats extension writes current score/map/uptime/player-count data. |
| DiscordBot logs/status | Bot process output plus channel/status update. | Bot token/config are present, JSON can be read and the 60-second status update path works. |
For player-count validation, run no-HC and multi-HC cases before trusting public Discord counts: GlobalGameStats.sqf subtracts the live headless client count from the WFBE_HEADLESSCLIENTS_ID registry (not a hardcoded 1), flooring at 0 to prevent a negative count when HC connections are transient.
PR #122 was previously source-reviewed at e47366be8bbfc53ffe667aeec42ec33cf3516c7d, later observed at 722f5d05705b93503d18d079575a5f4815dca8f6 after an HC registry guard commit, and is currently observed at 4c66c3b6b1c20321163e732d6d06f5dacaeb4e5a. The latest PR #122 mission-content head is f5c41461508e117d13d0b6172cbd66698091a8eb; 4c66c3b6 is tooling-only scanner hardening for startup-banner, both-terrain and stronger AICOM evidence. The local release command-center branch now carries the same intent plus per-terrain-runtime-evidence and command-center fallback 8de3c4a60 as local b4df22ede, so Chernarus and Takistan must each provide the core runtime evidence families instead of passing through aggregate packet counts, and Takistan WEST must show the AICOMGATE|WEST|infFallback route before founding is called fixed. The redacted 07:58 proof-gap matrix is NO-GO: source/static/tooling/doc gates are strong, but exact-build both-terrain RPTs, server/client/latejoin/HC1/HC2 evidence, real HC/AICOM telemetry, scanner/package PASS and human smoke are still missing. Runtime proof is still required before release-ready wording.
Required July 2 evidence:
- Both terrains: prove exact-build Chernarus and Takistan startup windows with
-RequireBothTerrains; do not use Chernarus-only livehost windows as final release proof. - Package layout: prove the mission template resolves to the launched PBO/folder before collecting final evidence. The redacted 07:53 livehost probe says active Chernarus resolves to a same-name
cmdcon30aicomPBO, but active Takistan does not resolve to a same-name active PBO/folder, so current livehost RPTs are baseline health evidence only until the final package/template is resolved. - Factory slope gate: prove blocked placement on steep ground and allowed placement on nearby flat ground, with no placement script errors.
- JIP flags: prove late joiners see current camp/town flag texture after capture or repair.
- Corpse proximity guard: prove nearby bodies do not vanish immediately and still clean up after the capped delay.
- Friendly name tags: prove the
TAGStoggle turns overlay on/off and client RPT has no name-tag orworldToScreenerrors. - AI-heli terrain guard: prove default release config leaves
WFBE_C_AIHELI_TERRAIN_GUARD = 0; optional opt-in Takistan smoke may prove the ON path separately. - Boot/JIP/HC/AICOM: prove current startup banner, no new stop-condition RPT errors, late joiner playable state, HC init, AICOM telemetry, and per-terrain runtime evidence for both Chernarus and Takistan.
- Final collector gate: run
Collect-RptEvidence.ps1 -MapScope Both -ReleaseGate -RequiredRole hc2 -RequireHcRegistryon the exact evidence folder, then keep the scanner/package summary with the release packet.
| 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. PR #122 JIP deadspawn regression gate (2026-06-30): mid-match, JIP into a side slot and confirm the joiner lands on a team with funds, HUD and own-side markers, not stuck in DEADSPAWN with no team. Specifically pick one of the ~13/side empty overflow editor slots (placeholder unit self-deletes at load via mission.sqm init="... deleteVehicle this") that the risky PR#122 reaper would have deleted; the joiner must enroll normally from a PR #122 build where the sweep is audit-only. Then exhaust an enrollment if practical, disconnect, and re-join with the same UID; confirm the re-join gets a fresh self-heal attempt because PR #122 source clears WFBE_CONNECT_RETRY_<uid> on disconnect, not only on enrollment success. Deploy rule (reinforce finding from JIP enrollment and client data delivery): any client-side change, such as the name-tag getPosVisual to visiblePosition fix, must be released under a new PBO filename for the July 2 package. A2-OA caches missions by filename and can serve stale mission code; server-only changes take effect in place on restart. |
| Commander/HQ | Vote or assign commander, include the Commander vote/reassignment smoke matrix, 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. |
| Commander-built artillery ownership | As commander with grouped base areas enabled, build a manned artillery-class defense inside the HQ/base circle from the defense menu, then open Tactical and request a fire mission. Confirm the gun is discovered, ammo loading still targets that gun, direct-fire still works, non-artillery statics remain on the base-area DefenseTeam, unmanned artillery stays unmanned when the CoIn manning toggle is off, and HC-enabled static-defense delegation does not break commander discoverability. For docs/source HEAD@3dc43a3dca7d, the expected shape is a commander-team gunner handoff (Construction_StationaryDefense.sqf:91-94) plus group-based Tactical discovery (Common_GetTeamArtillery.sqf:10-30) and RequestFireMission at GUI_Menu_Tactical.sqf:547. For current stable/B74.1 origin/master@f8a76de34, current B74.2 origin/claude/b74.2-aicom@21b62b04, B69 origin/claude/b69@8d465fce, B74 origin/claude/b74-aicom-spend@b23f557f and historical release a96fdda2 / 7ff18c49, the expected shape is WFBE_CommanderArtillery* marking on non-repair-truck artillery defenses (Construction_StationaryDefense.sqf:166-168 on current stable/B74.1/B74.2/B69/B74, :133-135 on historical release) plus a commander-team marked-vehicle scan inside HQ/base-area radius (Common_GetTeamArtillery.sqf:46-78); also confirm repair-truck-built artillery is intentionally excluded from that marker path. Repeat the core discovery/fire case on maintained Vanilla Takistan before a release claim. |
| 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/camp lifecycle | Capture an independent camp, repair a camp whose bunker is dead, and compare replicated sideID, local camp marker color/text and the 3D flag texture. Capture a town from one side to another while town occupation AI is active and confirm old wfbe_town_teams / wfbe_active_vehicles state does not block the new side from spawning occupation teams; if importing upstream e4be1958, confirm capture_before / capture_cleanup diagnostics and occupied-vehicle safety. For current cf2a6d6a, research Patrols levels 1/2/3, confirm a side patrol spawns, shows friendly-only markers, delegates to HC when available, dies, releases wfbe_side_patrols / WFBE_ACTIVE_PATROLS, and can respawn after cooldown. Test a zero-camp town against capture-mode, threeway defender respawn and depot infantry gating before changing camp-count helpers. Source refs: server_town.sqf:226-257 on the upstream candidate; server_town_camp.sqf:122-138; Server_HandleSpecial.sqf:147-168,215-242; server_side_patrols.sqf:24-58; Common_RunSidePatrol.sqf:53-83; Client/FSM/updatepatrolmarkers.sqf:18-58; Common_GetTotalCamps.sqf:9-12; Common_GetTotalCampsOnSide.sqf:15-22. |
| 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, all-town capture and same-tick mutual-elimination paths; confirm one explicit winner, one endgame broadcast, one stats log, the chosen old loser-payload or B74.1 winner-payload client contract, the Chernarus/Vanilla GUER label scope and AntiStack enabled/disabled tails. |
| LoadoutManager | From the repo root or Tools/LoadoutManager, first verify whether the target branch implements A2WASP_SKIP_ZIP; set it only when supported, 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. |
| Full-server FPS comparison | Use Old WarfareBE performance comparison. Run current Wasp default, current Wasp cap 10, role-aware cap, HC present/absent, matched view-distance and old BE baseline if runnable. Record commit/PBO hash, server.cfg/basic.cfg/profile values, server FPS, three client FPS samples, active towns, total AI split by player followers / AI teams / town groups / static gunners / supports, vehicle counts, HC ownership evidence, RPT errors and PerformanceAudit rows. |
Use this pack when testing the old-BE/current-Wasp FPS debate or any AI-cap proposal. It is based on the local Codex old-vs-current FPS opportunity audit and final report-only scout artifacts (paths redacted).
Record for every run:
- mission commit or PBO hash, server hardware, Arma 2 OA version, mods, weather/time and route;
-
server.cfg,basic.cfg, profile, launch args, lobby parameters, PBO rollback path and RPT locations; - HC present/absent, HC slot/command used, HC owner/delegation evidence, fallback count and whether static-defense HC units report back or remain one-way delegated;
- view distance, active towns, static gunners, AI teams, player followers, support units, vehicles and empty/stale vehicles;
- server FPS, at least three client FPS samples, RPT errors, PerformanceAudit rows and the
Tools/PerformanceAuditAnalyzercommand/result if used.
Old BE is Takistan Lite OA evidence in the cloned reference repo. Use it as a conservative baseline, but keep island, view distance, server config and player-count differences explicit before drawing conclusions.
Scenario matrix:
| Player count | Current default, no HC | Current default, HC | Cap pilot, no HC | Cap pilot, HC | Old BE baseline | Purpose |
|---|---|---|---|---|---|---|
| 10 | Cap 15 | Cap 15 + HC proof | Normal 12 or 10, Soldier 18/16 | Same + HC | Old BE default cap 12; optional cap 10 | Low-pop feel and classic CTI identity. |
| 15 | Cap 15 | Cap 15 + HC | Normal 10, Soldier 16, commander +5 | Same + HC | Old BE default/cap 10 | First public pilot size. |
| 20 | Cap 15 | Cap 15 + HC | Normal 9/10, Soldier 15/16, commander +5 | Same + HC | Old BE cap matched where possible | Separate player followers from town AI. |
| 25 | Cap 15 | Cap 15 + HC | Normal 8, Soldier 14, commander +4 | Same + HC | Optional staged old baseline | Full-server pressure and town fight load. |
| 30 | Cap 15 | Cap 15 + HC | Normal 7, Soldier 12, commander +3 | Same + HC | Optional synthetic/staged load | Full-server protection proof. |
Required variants:
| Variant | What changes | What it proves |
|---|---|---|
| AI-source scoreboard | Count player followers, AI teams, town occupation, town defenders, static gunners, supports, vehicles and empty/stale vehicles separately. | Whether the cap pilot actually reduces the dominant AI bucket or only moves attention away from town/static/server AI. |
| Matched view distance | Current at 1000, 3500 and 6000; old near 1000/4000 where possible. |
Client render and AI-knowledge sensitivity versus mission entity load. |
| Low-SV town group branch | Current group tables versus old-like low-SV group counts. | Whether towns are the next biggest load bucket after player AI. |
| Static defense stress | Activate, capture and deactivate defense-heavy towns, with and without HC. | Whether static gunners/statics leak, spike or fail deletion/accounting; specifically check the commented static update-back against town-AI update-back behavior. |
| Long-session cleanup | 60-120 minutes with combat and vehicle churn. | Whether cleaners/restorers cost more than they save. |
| Network/config capture | Keep network config fixed and logged. | Separates bandwidth/desync claims from simulation-FPS claims. |
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: docs/source Common/Init/Init_PublicVariables.sqf:39, current stable/B74.1/B69/B74 :38, Server/Support/Support_Paratroopers.sqf:117, Client/PVFunctions/HandleParatrooperMarkerCreation.sqf:45. |
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: docs/source Chernarus/Vanilla Client/Init/Init_Client.sqf:547,571; current stable/B74.1 origin/master@f8a76de34 plus B69/B74 :805,828; current B74.2 origin/claude/b74.2-aicom@21b62b04 Chernarus :828,851 and Vanilla :805,828; live client-fps Chernarus :613,636 and Vanilla :583,606; skill cap mutation docs/source Client/Module/Skill/Skill_Init.sqf:49, current stable/B74.2 Chernarus :69 and Vanilla :64; respawn apply Client/Functions/Client_PreRespawnHandler.sqf:5. |
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 the active server FPS script or scripts exit rather than running forever. | Target-branch-specific: stable/B74-shaped refs publish SERVER_FPS_GUI roughly every 8 seconds from the single guarded Server/GUI/serverFpsGUI.sqf; docs/source-shaped refs publish both SERVER_FPS_GUI and WFBE_VAR_SERVER_FPS from two guarded scripts. Hosted/listen run has no busy FPS publisher loop. |
Dedicated no longer publishes the expected target-branch FPS channel, hosted/listen RPT or profiler shows repeated FPS loop work, or the branch silently changes two-publisher versus single-publisher compatibility without a consumer decision. |
| 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 gates are for the two current July dev-branch candidates listed on the Progress dashboard. They are not completed runtime evidence until a future code owner records RPT snippets, branch head, mission/PBO hash and observed results.
| Candidate branch | Coverage | Setup | Steps | Expected evidence | Failure signals |
|---|---|---|---|---|---|
planned dev/july-update-hosted-server-fps-loop-fix
|
dedicated-smoke, hosted-smoke, vanilla-parity-smoke
|
Create or restore the branch first; no current remote origin/dev/july-update-hosted-server-fps-loop-fix head was found on 2026-06-24. From current stable/B74.1/B74.2/B69/B74 or live FPS-named single-publisher branches, verify the existing guarded SERVER_FPS_GUI publisher. From docs/source, Miksuu/perf old-shape or another two-publisher ref, apply or verify the DR-19 early non-dedicated exit in both FPS publisher scripts, then propagate or explicitly compare maintained Vanilla Takistan. |
Dedicated: wait at least two 8-second publish intervals and inspect RHUD/server FPS state. Hosted/listen: run long enough to prove the active publisher scripts exit before their while loops. Vanilla: verify the same publisher shape or record Chernarus-only scope. | Target-branch-specific: stable/B74-shaped branch still publishes SERVER_FPS_GUI and has no monitor loop; docs/source-shaped branch still publishes SERVER_FPS_GUI plus WFBE_VAR_SERVER_FPS. Hosted/listen has no repeated FPS-publisher work; Chernarus and maintained Vanilla parity are named before release wording. |
Dedicated FPS HUD breaks, hosted/listen still spins, the target branch silently loses an expected publisher, or Vanilla scope is implied without evidence. |
origin/dev/july-2026-update@e3f530ed planning route; no current origin/dev/july-takistan-airfield-fpv-drone head found on 2026-06-22 |
takistan-hosted-smoke, dedicated-smoke, jip-smoke, economy-smoke, authority-negative-tests
|
Current evidence is closed draft PR #21 and docs/july-2026-update.md roadmap scaffold only. Create or restore a Takistan implementation branch first; use owner decisions in Takistan airfield FPV drone design; keep normal aircraft hangar use ungated. |
Boot Takistan, capture/lose the airfield and bunker, buy each allowed drone tier after UAV/EASA gates, try wrong-side/no-funds/no-upgrade/repeated requests, JIP during ownership changes and active drones, cross the center boundary and test base-protection plus AA/radar counterplay. | Server accepts or rejects purchases after recomputing side, owner, funds, upgrades, active caps, airfield/bunker state, range and protection zones; funds debit once; one active drone per player and side-wide cap hold; JIP clients see correct availability/markers/state; drones cannot base-snipe. | Client can self-spawn or self-debit, invalid upgrades/funds/side pass, caps stick or leak, loss of airfield deletes or enables the wrong state, JIP sees stale availability, drones damage protected bases, or normal hangar aircraft use is accidentally gated. |
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.
Post-B751b guardrail: current stable advanced to origin/master@f39665d79 after PR #89 merged on top of PR #88. Rows below that still name origin/master@7bfcf09a9 are PR #88 B751 baselines, rows that still name origin/master@c4c9a6479 are PR #87 B750 baselines, rows that still name origin/master@718596d5e are PR #86 B749 baselines, rows that still name origin/master@96148edb4 are PR #85 baselines, and rows that still name origin/master@f8a76de34 as current stable are pre-merge branch-base records until rechecked.
2026-07-01 release-loop guardrail: for the July 2 PR #122 loop, current fetched origin/master is bd48a6dbe673ae47a88053dafdf948a29cb8dfe0; PR #122 scanner/tooling head is 4c66c3b6b1c20321163e732d6d06f5dacaeb4e5a; mission-content head is f5c41461508e117d13d0b6172cbd66698091a8eb; and PR #122 AICOM/HC/JIP claims remain source-backed/runtime-pending until exact-build SERVER_DEBUG RPTs pass both-terrain, startup-banner, HC registry and stronger AICOM telemetry gates. The redacted 07:53/07:58 release-loop refresh keeps this NO-GO for release-ready wording: active Chernarus resolves to same-name cmdcon30aicom PBO, active Takistan does not, and the final packet still needs exact-build server/client/latejoin/HC1/HC2 RPTs plus human smoke. Treat older branch rows that call 7bfcf09a9 or another historical SHA "current" as their branch-era baseline, not as the active July 2 release baseline.
| Branch feature | Coverage | Setup | Steps | Expected evidence | Failure signals |
|---|---|---|---|---|---|
PR #63 / origin/claude/trello-repair-antispam head 9ba13a66
|
branch-base-review, post-b75-rebase-or-recheck, base-repair-smoke, service-repair-smoke, vanilla-parity-smoke, optional localization-smoke
|
Open draft PR #63 is stale-base after the B75/GUER master move. Live metadata still says base SHA f8a76de34, but after fetch-before-commit current master is origin/master@4a163bb65 and GitHub API mergeability is null / unknown; local counts are 95 1. Base-relative proof is 8 maintained-root files / +82 / -12, clean under git diff --check f8a76de34..origin/claude/trello-repair-antispam, and all changed paths stay in source Chernarus plus maintained Vanilla Takistan. Current master has no WASP_BaseRepair_Running, wfbe_veh_repairing or STR_WF_INFO_Repair_Veh_InProgress hits. |
Rebase or deliberately merge-plan against current master, then run source Chernarus and maintained Vanilla. As commander, damage a friendly base structure, start WASP Repair, attempt repeated activation while the repair loop runs, walk out of range, repeat with no supply and with a fully repaired target. For vehicle service, start repair through the single Repair action, batch service and full service, then repeat clicks while repair is in progress; also test support moving out of range, vehicle death, airborne state and successful completion. | Base repair removes/hides the active action and does not start duplicate repair loops or double-drain supply from same-client spam; all early/final exits clear WASP_BaseRepair_Running so the action can return when valid. Vehicle repair sets wfbe_veh_repairing, repeated repair attempts show/skip via the new localized hint or zero repair price, and failure/success/final cleanup clears the flag. Rearm/refuel/heal behavior is unchanged. Source refs: branch WASP/baserep/repair.sqf:5-10,35,45,51; Client_SupportRepair.sqf:10-11,77-78,83,93; GUI_Menu_Service.sqf:60,187,225,504; stringtable.xml:912; current master service repair spawns at GUI_Menu_Service.sqf:183,221,501. |
Branch merged/promoted without post-B75 recheck and in-engine smoke, base repair can still be double-started, guard stays stuck after no-supply/out-of-range/full-repair cases, vehicle repair stays disabled after failure/success, batch/full service still enqueue duplicate repair, rearm/refuel/heal are accidentally skipped, localization is missing, Vanilla parity is claimed without matching smoke, or docs describe the local flags as server-authority or economy closure. |
PR #66 / origin/claude/trello-debug-antitk head 98440121
|
branch-base-review, post-b751b-rebase-or-recheck, debug-mode-smoke, satchel-anti-tk-smoke, structure-friendly-fire-smoke, vanilla-parity-smoke
|
Open draft PR #66 is GitHub-clean but stale-base after B751b. Live metadata says base SHA f8a76de34, mergeable=true / clean; current master is origin/master@f39665d79; local counts are 80 1. Base-relative proof is 4 maintained-root files / +10 / -0, clean under git diff --check f8a76de34..origin/claude/trello-debug-antitk, with no Modded_Missions, Tools or Extension payload. Current master has the satchel fired handler and structure damage wrapper but no WF_Debug bypass in those files; WF_Debug defaults false in both roots at initJIPCompatible.sqf:110. |
Rebase or deliberately merge-plan against post-B751b master, then run source Chernarus and maintained Vanilla twice: once with normal WF_Debug=false, once with WF_Debug=true via the existing debug condition/profile. In normal mode, place/fire a PipeBomb near own-side base structures and damage own-side plus enemy base structures. In debug mode, repeat the same satchel and structure-damage cases; include HQ, CoIn construction sites and repaired/base structures if practical because EH attachment sites differ. |
Normal mode still deletes same-side PipeBomb attempts near friendly structures, shows the existing StructureTK message and nulls own-side/sideEnemy building hits while enemy hits flow through HandleBuildingDamage. Debug mode does not delete the PipeBomb through WFBE_CL_FNC_OnFiredSatchel and Server_BuildingHandleDamages returns raw _dammages before the side gate, without RPT errors or debug leakage into non-debug packaging. Source refs: branch Client_FNC_OnFired.sqf:12,16,35,41; branch Server_BuildingHandleDamages.sqf:4,9,11-17; current master Client_FNC_OnFired.sqf:12,32,38; current master Server_BuildingHandleDamages.sqf:4,9-15; initJIPCompatible.sqf:110,112. |
Branch merged/promoted without post-B751b recheck and in-engine smoke, normal mode loses same-side satchel deletion or StructureTK, friendly base damage leaks with WF_Debug=false, debug mode still nulls tester damage, enemy damage reduction regresses, WFBE_C_GAMEPLAY_HANDLE_FRIENDLYFIRE production semantics are described as changed, Vanilla parity is claimed without the same behavior, or debug-only behavior is described as current stable/Miksuu-proven. |
PR #72 / origin/claude/trello-antibasetrap head b79c5cee
|
branch-base-review, post-b751b-rebase-or-recheck, dedicated-smoke, construction-smoke, server-rejection-smoke, vanilla-parity-smoke, optional jip-smoke for localized feedback |
Open draft PR #72 is GitHub-clean but stale-base after B751b. Live metadata says base SHA f8a76de34, mergeable=true / clean; current master is origin/master@f39665d79; local counts are 80 1. Base-relative proof is 8 maintained-root files / +296 / -2, clean under git diff --check f8a76de34..origin/claude/trello-antibasetrap, with no Modded_Missions, Tools or Extension payload. Current master keeps the older defense budget/threat gate but has no WFBE_C_BASE_DEFENSE_BUILD_BLOCK_* or BaseDefenseTrapGate symbols. |
Rebase or deliberately merge-plan against post-B751b master, then in source Chernarus and maintained Vanilla attempt to place a crewable static defense inside WFBE_C_BASE_DEFENSE_BUILD_BLOCK_RANGE of own HQ/base while at least WFBE_C_BASE_DEFENSE_BUILD_BLOCK_ENEMYCOUNT enemy ground unit is nearby. Repeat outside the radius, with no enemies, with constants set to 0, with WFBE_C_DEFENSE_BUDGET = 0, and with a WDDM anchor whose template contains a static child. Also try fortifications/mines/non-static defenses to confirm the new gate scope and the existing budget/threat gate interaction. |
Static-defense trap attempt is rejected before object creation, RPT logs the anti-trap rejection once, client receives BaseDefenseTrapGate and refund, outside/no-enemy/disabled-constant cases behave like current source, WDDM static-child anchors are blocked when the gate conditions are true, and non-static behavior matches the documented scope. Source refs: branch RequestDefense.sqf:20-38,48-81,99-121,134,424; constants Chernarus Init_CommonConstants.sqf:816-817, Vanilla :618-619; LocalizeMessage.sqf:181-193; stringtable Chernarus :9537, Vanilla :9561. |
Branch merged/promoted without post-B751b recheck and in-engine smoke, client can still create the static despite the server gate, funds are not refunded, WDDM anchors bypass the check, constants set to 0 still block, fortifications/mines are unintentionally changed by the new gate, existing DefenseThreatGate behavior regresses, Vanilla parity is claimed without the same maintained-root behavior, or docs call this DR-6 construction-authority closure. |
Current master B751b Takistan playable-slot roster origin/master@f39665d79 / PR #89 |
branch-base-review, takistan-boot-smoke, b751b-teamreg-smoke, jip-connect-smoke, hc-slot-smoke, asset-packaging-smoke, version-sqf-smoke
|
PR #89 merged origin/feat/tk-chernarus-slots@05ded76601ea4f0d2ed9de50a53048dd590da210 as origin/master@f39665d7950ddf14cb0bbfacb7ee1e40121e93b4 on 2026-06-24T16:46:54Z. Scoped 7bfcf09a9..origin/master is 19 maintained Vanilla Takistan files / +511 / -1224 and clean under git diff --check: mission.sqm plus 18 added Textures/*.paa; checked diff has no source Chernarus, Modded, Tools or Extension payload. Merged mission.sqm source count is 34 PLAY CDG slots (14 WEST, 14 EAST, 4 GUER, 2 CIV) with ids 7000-7033; owner syncs point WEST to 7000-7013 at mission.sqm:599, EAST to 7014-7026,7028 at :618 and GUER to 7030-7033 at :2831. |
Boot the exact maintained Vanilla Takistan package/hash from B751b current master. Join WEST and EAST lobby slots, include one GUER player if enabled, and connect both headless-client Functionary1 slots if available. Start long enough for team registration, owner syncs and JIP body enrollment to run, then JIP a second client after initial registration. Exercise a vehicle/unit path that loads the newly added texture assets if the class route is known; otherwise inspect package contents and startup RPT for missing texture errors. |
Record package/PBO hash, generated version.sqf, server and client RPT excerpts. Expected static shape is mission.sqm:43-45 items=91, WEST slots starting at :2835, CIV HC Functionary1 entries at :3429-3489, GUER slots at :3493-3577, and 18 Textures/*.paa files present. Runtime pass evidence should include TEAMREG WEST 14/14 and EAST 14/14, no zero-divisor, no dead owner-sync references, no missing texture warnings, successful JIP after registration and explicit GUER/HC result. |
B751b is promoted as release-ready from source diff alone, Takistan still reports 66 legacy slots or wfbe_teams_count=0, TEAMREG misses WEST/EAST teams, JIP players lose side/body enrollment, GUER/HC slots are implied without testing, added textures are absent from package or RPT logs missing texture loads, generated version.sqf is absent/wrong, or source Chernarus fixes are implied from this Takistan-only delta. |
PR #80 / origin/claude/trello-vote-para-guards head 92101abe
|
branch-base-review, post-b751b-rebase-or-recheck, commander-vote-smoke, support-paratrooper-smoke, economy-ui-smoke, server-backstop-smoke, vanilla-parity-smoke
|
Open draft PR #80 is GitHub-clean but stale-base after B751b. The base-relative proof remains f8a76de34: one commit, 10 maintained-root files / +148 / -14, clean git diff --check f8a76de34..origin/claude/trello-vote-para-guards, and no Modded_Missions or Tools payload. Live post-B751b metadata says base SHA f8a76de34, mergeable=true / clean, while current master is origin/master@f39665d79; local counts are 80 1. Treat as branch-only maintained-root commander tie-break plus paratrooper AI-cap guard until rebase/recheck and smoke. |
Rebase or deliberately merge-plan against post-B751b master, then smoke player-candidate ties that beat or equal AI/no-commander votes, clear winners, and zero/AI-majority rounds. For paratroopers, fill the player group to cap and verify the new cap hint, no fee, no cooldown, and no RequestSpecial; drop below cap and verify a normal drop. Exercise a forged/desynced server backstop, set WFBE_C_PARA_RESPECT_CAP = 0 to confirm legacy behavior, verify AI commander wildcard paradrops remain uncapped, and repeat source Chernarus plus maintained Vanilla. |
Evidence should name PR #80/head 92101abe, current target base/master SHA, package/hash and maintained-root scope. Source anchors: Server_VoteForCommander.sqf:17,43-51,59; GUI_Menu_Tactical.sqf:373-393; Support_Paratroopers.sqf:40,53-54; Chernarus Init_CommonConstants.sqf:664; Vanilla Init_CommonConstants.sqf:466; stringtable.xml:1118. |
Branch merged/promoted without post-B751b recheck and in-engine smoke, vote UI preview remains misleading, ties still fall to AI/no commander unexpectedly, client blocks after taking fee/cooldown, server backstop blocks AI wildcard drops, cap opt-out fails, Vanilla parity is implied without smoke, or branch-only behavior is described as current stable/Miksuu-proven. |
PR #83 / origin/claude/wiki-wins-batch head a61823265
|
branch-base-review, post-b751b-rebase-or-split, dedicated-smoke, commander-vote-smoke, hc-fallback-smoke, economy-service-smoke, supply-disconnect-smoke, construction-smoke, vehicle-irs-smoke, cleanup-regression-smoke, loadoutmanager-or-vanilla-scope-decision
|
Open draft PR #83 is dirty/not mergeable after B751b. The base-relative proof remains f8a76de34: 8 commits, 46 source-Chernarus files / +124 / -86, clean git diff --check f8a76de34..origin/claude/wiki-wins-batch, and no Missions_Vanilla, Modded_Missions or Tools payload. Live post-B751b metadata says mergeable=false / dirty; current master is origin/master@f39665d79; local counts are 80 8. Treat as a broad Chernarus-only quick/medium-wins bundle until split/rebased by owner. |
Split or rebase before any merge attempt, then run a dedicated source Chernarus session from the branch. Vote/assign commander with duplicate/similar player names and no-commander row, then check only one new-commander notification path. Run HC present and HC absent town delegation; disconnect/reconnect HC if practical; verify no-HC town groups spawn on server and watcher threads do not leak. Kill an HQ as enemy and same-side killer, exercise buy-menu unit-cost upgrade level 0/discount paths, service repair/heal with low/exact funds, WASP MHQ/depot cash repair and base repair supply depletion. Reconnect/JIP during supply activity, verify player-list rows update and stale UIDs prune. Build small/medium sites with auto-wall toggled per side and repair/kill camp bunkers. Rearm and AI-buy IRS level-2 vehicles, including OA rearm if used. Let mines, AntiStack score loop, salvage truck death, HandleAT fired handler, gear-template save and ship service paths run under RPT watch. | Evidence should name PR #83, head a61823265, current target base/master SHA, package/hash and Chernarus-only scope. Source anchors: commander vote GUI_Commander_VoteMenu.sqf:36, GUI_VoteMenu.sqf:80-82, RequestNewCommander.sqf:13; HC Init_HC.sqf:15-16, Server_DelegateAITownHeadless.sqf:49-53, Client_DelegateTownAI.sqf:52-53, Client_DelegateAIStaticDefence.sqf:57-58; economy/service/supply Common_ChangeSideSupply.sqf:12, Server_OnHQKilled.sqf:63-65,104-110, Client_UIFillListBuyUnits.sqf:9,39-40, GUI_Menu_Service.sqf:496,519, Server_MHQRepair.sqf:48, playerObjectsList.sqf:17, Server_OnPlayerDisconnected.sqf:128-131; IRS/lobby Common_RearmVehicle.sqf:38-40, Common_RearmVehicleOA.sqf:29-31, Server_BuyUnit.sqf:159-162, Rsc/Parameters.hpp:282,373; construction Init_Common.sqf:214-216, Construction_MediumSite.sqf:163, Construction_SmallSite.sqf:99,123, RequestAutoWallConstructinChange.sqf:9-11; cleanup mines_cleaner.sqf:17, updateScoreInternal.sqf:13, RequestOnUnitKilled.sqf:238-239, Init_Client.sqf:59,396, Init_Common.sqf:126,150. |
Branch merged/promoted as release-ready without post-B751b split/rebase, owner split or smoke; maintained Vanilla/Takistan propagation implied without LoadoutManager/hand propagation; commander vote still targets visible names or duplicates notifications; no-HC towns spawn no AI or watcher threads leak; HQ kills double-pay or teamkills score; service/buy paths still debit incorrectly; supply player-list rows grow stale; auto-wall toggle affects every side; IRS level-2 rearm/AI buy halves countermeasures; cleanup loops emit RPT errors; dead-code removal revives missing call sites; or Chernarus-only branch behavior is described as current stable/Miksuu-proven. |
Current master B745/B748/B749/B75/B750/B751 merge origin/master@7bfcf09a9 / PR #85 + PR #86 + direct B75 + PR #87 + PR #88 |
branch-base-review, dedicated-smoke, jip-connect-smoke, b749-client-body-smoke, b751-guer-client-error-rpt-smoke, fps-picker-smoke, settings-menu-smoke, profile-persistence-smoke, factory-squad-cap-smoke, b750-buy-list-smoke, aicom-hard-cap-13-smoke, aicom-veteran-cap-smoke, b750-aicom-effectiveness-smoke, ai-commander-smoke, client-ui-smoke, client-rpt-fps-smoke, respawn-camera-smoke, asset-packaging-smoke, loadoutmanager-generator-smoke, easa-loadoutcat-smoke, guer-vbied-reward-smoke, vanilla-parity-smoke, modded-fork-scope-decision
|
Current master contains PR #85 from origin/claude/b745@dd1401811, PR #86 from origin/feat/b749-enrollment-bodyfix@2327e5c6a, direct branch origin/VBIED_factory_kill_rewards@756d6918, PR #87 from origin/feat/b750-factory-aicom@605ad7326 and PR #88 from origin/feat/b751-tk-aicom13-clientfixes@5aea1ce4016a862de413a198ba8bab0a1ce868c2; gh pr list --head VBIED_factory_kill_rewards --state all returned []. Deltas: broad B745 f8a76de34..34f652ae4 226 files / +7611 / -9082; B748 34f652ae4..96148edb4 9 files / +265 / -7; B749 96148edb4..718596d5e 14 files / +308 / -21; B75 718596d5e..6a34799b4 2 maintained-root files / +88 / -2; B750 6a34799b4..c4c9a6479 8 maintained-root files / +72 / -54; B751 c4c9a6479..origin/master 14 maintained-root files / +16 / -10; full f8a76de34..origin/master 242 files / +8330 / -9146. B751/full current ranges report trailing whitespace under git diff --check at Client/FSM/updateavailableactions.fsm:59 in both maintained roots. |
Boot source Chernarus and maintained Vanilla from the exact package/hash. Prove B749 client-body JIP enrollment, FPS picker 30/45/50/60 persistence, B748/B749 settings toggles, buy-list population with missing/delayed unit data, infantry squad cap starting at 10 and growing +2 per barracks level while clamped to _mbu, AICOM hard cap 13/veteran cap, B750 effectiveness-weighted squad variety, B751 GUER/no-roster ammo and repair truck action scans, nil faction buy-list filtering, Tactical menu before wfbe_hq_deployed replication, HQ-killed handler on GUER/JIP, seated unflip and first depot MHQ repair cash path, AH1Z cap/reaper, base-sell/refund/live-counts, MHQ abort cooldown, naval-HVT/SCUD/GUER paths, B75 VBIED reward attribution, primitive roster fallback/handover, RHUD/action/factory scans, death/respawn camera fallback and intro asset packaging. Run LoadoutManager from a clean copy, inspect generated EASA_Init.sqf, EASA_LoadoutCat.sqf, Common_BalanceInit.sqf, generated version.sqf files and _MISSIONS.7z behavior; do not rely on A2WASP_SKIP_ZIP because current master tooling has no checked support. |
Evidence should name origin/master@7bfcf09a9, PR #85, PR #86, direct branch origin/VBIED_factory_kill_rewards@756d6918, PR #87, PR #88, target package/hash and client/server RPT context. Source refs include B749 RequestJoin.sqf:95-96 and Server_OnPlayerConnected.sqf:25,32,38-45,51,55-65,78-80; FPS picker Rsc/Dialogs.hpp:3528 / FPSPicker_Open.sqf:48; B748/B749 settings GUI_Menu.sqf:230, Rsc/Dialogs.hpp:1258,1266,3436, Settings_Open.sqf:19,75-79; B751 AICOM cap Init_CommonConstants.sqf:159 / AI_Commander_Teams.sqf:113-114,184; B751 client guards 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; B750 buy/AICOM refs Client_UIFillListBuyUnits.sqf:88-92, GUI_Menu_BuyUnits.sqf:133, Init_CommonConstants.sqf:215,219,225, AI_Commander_Teams.sqf:428; LoadoutCat/FileManager/generator refs; tracked version.sqf.template; and B75 Server_HandleSpecial.sqf:541,571-582,624-651. |
Current-master source is promoted as release-ready without target-package smoke, generated version.sqf is missing or terrain-wrong, LoadoutManager generation or packaging fails silently, source trailing whitespace is treated as clean, buy-list still throws nil _c, infantry cap regresses to quarter-tier behavior, B751 GUER/JIP client-error paths still produce undefined variable/RPT spam, AICOM exceeds 13 teams, B750 AICOM draw collapses to zero-cost/missing-config choices or premium spam, JIP/settings/FPS picker regress, B75 rewards double-pay or miss factory stats, or Vanilla/full-modded scope is implied without proof. |
origin/claude/b74.2-aicom head 21b62b04
|
dedicated-smoke, ai-commander-smoke, client-ui-smoke, map-marker-smoke, town-capture-smoke, naval-hvt-smoke, stats-smoke, guer-economy-smoke, jip-connect-smoke, vanilla-scope-decision
|
Branch merge-base/current stable is origin/master@f8a76de34; gh pr list --head claude/b74.2-aicom --state all returned []. Full payload is 29 source Chernarus files / +424 / -38, git diff --check origin/master..origin/claude/b74.2-aicom clean and no Missions_Vanilla payload. The current-head delta d472da6a..21b62b04 is four source Chernarus files / +100 / -14 for GUER stipend/tier startup/rebroadcast and JIP join/connect recovery. Treat as branch-only source Chernarus behavior until smoke and owner scope decisions prove otherwise. |
Run a dedicated source Chernarus test across low, mid, high and full player-count bands; observe WFBE_PopTier publish and consumers for team founding, side-AI cap, side patrols, active towns, town defenders, RHUD and Buy Units caps. JIP or late-join a client after AICOM feeds exist and verify empty-feed request/replay. Drive AI commander teams into camps/towns to exercise the 11.5 camp range and WFBE_C_AICOM_CAMP_STALL_PASSES = 3 no-progress escape. Capture/recapture a naval carrier HVT, then test carrier air-shop proximity and deck respawn. With source Chernarus stats enabled in a private run, exercise town/camp capture, supply completion, small/medium construction, defense purchase, factory kill, HQ kill and player death hooks. Join/rejoin a GUER player after tier changes and verify stipend launch, tier seed and per-loop rebroadcast. Simulate slow or missed join/connect ACK conditions and verify the client proceeds instead of hanging. Record whether maintained Vanilla/Takistan is intentionally out of scope or needs propagation. |
Evidence should show tier arrays from Init_CommonConstants.sqf:171-176 driving AI_Commander_Teams.sqf:83-84,105,187-190, AI_Commander_Produce.sqf:28, server_side_patrols.sqf:32,38, server_town_ai.sqf:61-64, Server_GetTownGroupsDefender.sqf:91, Client_UpdateRHUD.sqf:354-360 and GUI_Menu_BuyUnits.sqf:37-43. Marker replay should use updateaicommarkers.sqf:47-55 and Init_Server.sqf:927-943 without duplicate/stale icons. GUER economy evidence should show launch at Init_Server.sqf:808-814, tier seed/rebroadcast at Server_GuerStipend.sqf:35,44-46,57-63,95, and paid distinct GUER player groups. Join/connect recovery should show Init_Client.sqf:654-681,693-714 and Server_OnPlayerConnected.sqf:22-56 avoiding permanent stalls. Camp, carrier and stats evidence should match the owner pages. |
Pop tier stays stale or clients show wrong cap, AICOM team founding still floods low-pop teams, marker replay leaks to wrong clients or duplicates icons, GUER players miss stipend/tier after JIP, join/connect waits hang permanently, AI stalls forever on camp-first objectives, camp/player range changes break manual capture, town defender/active-town caps regress capture pressure, carrier recapture leaves stale airfield ownership or invalid deck spawns, stat hooks duplicate or miss credits, vehicle tints flip unexpectedly, docs claim PR/current-stable/Vanilla behavior without matching source and smoke, or branch-only source Chernarus behavior is promoted without an owner propagation decision. |
origin/claude/trello-salvage-truck-interlock head 9e75c736e
|
client-action-smoke, salvage-smoke, economy-smoke, vanilla-parity-smoke, branch-base-review
|
Branch is one commit on current stable merge-base origin/master@f8a76de34; payload is six maintained-root files / +46 / -16 across source Chernarus plus maintained Vanilla Skill_Apply.sqf, Skill_Salvage.sqf and stringtable.xml, and git diff --check f8a76de34..9e75c736e is clean. Treat as branch-only manual-salvage UX/interlock, not a payout-casing, truck-loop or server-authority fix. Current stable/B74.1/B74.2 still keep lowercase salvage payout calls and client-local delete/reward shape. |
In source Chernarus and maintained Vanilla, place a friendly salvage truck inside and outside WFBE_C_UNITS_SALVAGER_SCAVENGE_RANGE, then inspect the engineer Salvage action availability and invoke manual salvage near a valid wreck. Repeat with an enemy salvage truck, no truck, dead/null truck and a moving friendly truck as practical. Run one salvage-truck auto-salvage control to confirm the truck FSM still works or still exposes the existing payout-casing issue separately. |
Manual engineer salvage is hidden or exits with the branch localized message only while a friendly salvage truck is in range; enemy/no/dead trucks do not block manual salvage; range matches WFBE_C_UNITS_SALVAGER_SCAVENGE_RANGE; source Chernarus and maintained Vanilla behavior matches. Source refs: branch Skill_Apply.sqf:35; Skill_Salvage.sqf:5,11-12; string key STR_WF_CHAT_Salvage_Truck_InRange; unchanged payout debt at branch Skill_Salvage.sqf:45 and updatesalvage.sqf:51. |
Manual salvage remains available beside a friendly truck, blocks near enemy/dead/out-of-range trucks, lacks localization, breaks the salvage action reload behavior, claims to fix truck payouts despite lowercase ChangePlayerfunds, changes or breaks the salvage-truck FSM, or Vanilla parity is claimed without mirrored branch files and smoke. |
origin/claude/trello-map-radius-circles head 77dd71ba / draft PR #78 |
client-map-smoke, map-marker-smoke, construction-smoke, respawn-smoke, jip-smoke, vanilla-parity-smoke, branch-base-review
|
Branch merge-base is current stable origin/master@f8a76de34; payload is six maintained-root files / +192 / -4 across source Chernarus plus maintained Vanilla Takistan, and git diff --check f8a76de34..77dd71ba is clean. Treat as branch-only local map-marker UX, not current stable behavior and not respawn/construction authority. Current stable has the same base-radius and respawn-range constants/lists but no Client_AmbulanceRedeployCircles, AmbRange_ or HQBuildRange symbols. |
In source Chernarus and maintained Vanilla Takistan, join own side, deploy HQ, open map/GPS and compare the side-colored HQ build-area circle with actual build-placement accept/reject behavior near the edge. Destroy or mobilize the HQ and confirm the build-area marker cleans up. Spawn or buy a friendly ambulance and a redeploy truck, research Respawn Range through each level, move vehicles, kill/delete one, and JIP another client after markers exist. Repeat with an enemy vehicle nearby as an audience leak control, and compare redeploy-truck rings against real respawn-menu entries for Medic/non-Medic, parked valid, moving, engine-on, full and inside-500m enemy-town cases. | HQ marker appears only for own-side HQ/UAV terminal structures, uses WFBE_C_BASE_AREA_RANGE + WFBE_C_BASE_HQ_BUILD_RANGE, is side-colored/local, and cleans up with the structure. Ambulance/redeploy markers are own-side yellow local Ellipse/Border rings, resize when WFBE_UP_RESPAWNRANGE changes, follow moving vehicles, and delete on dead/null vehicles. JIP clients get the branch-local watcher and no enemy markers leak. Actual respawn-menu eligibility remains clear: source refs branch Init_BaseStructure.sqf:54-68,151-158 / Vanilla :35-49,:132-139; Client_AmbulanceRedeployCircles.sqf:1-69; Init_Client.sqf:1227; current stable constants and validation at Common_GetClosestEntity2.sqf:14, Client_GetRespawnAvailable.sqf:33-57,54-81, Chernarus Init_CommonConstants.sqf:455-456,674,678 and Vanilla :277-278,:476,:480. |
HQ circle radius differs from placement validation, marker appears for enemy side or non-HQ structures, marker survives HQ death/mobilize, mobile-respawn rings ignore upgrades or stale/dead vehicles, local watcher causes script/RPT errors, map/GPS reopen loses markers, JIP clients miss or duplicate rings, redeploy-truck ring is interpreted as full eligibility despite Medic-only, parked/engine-off, free-seat or enemy-town gates, branch is misrepresented as changing respawn eligibility/construction authority, or Vanilla parity is claimed without matching files and smoke. |
origin/claude/trello-auto-bipod head 5af02b8438e1 / draft PR #76 |
client-input-smoke, animation-smoke, respawn-smoke, vanilla-parity-smoke, branch-base-review
|
Branch merge-base is current stable origin/master@f8a76de34; payload is four maintained-root files / +46 / -2 across source Chernarus plus maintained Vanilla Common_Bipod.sqf and Client_OnKilled.sqf, and git diff --check f8a76de34..5af02b8438e1 is clean. Treat as branch-only client QoL, not current stable behavior. Current stable has manual TAB bipod only and no Bipod_AddAutoDeploy, Bipod_AutoEH, AnimChanged or 15 call Bipod_ON hits in maintained roots. |
In source Chernarus and maintained Vanilla, equip one whitelisted MG/sniper and go prone without pressing TAB, then repeat with a non-whitelisted weapon. Test manual TAB deploy while prone and crouched behind a valid object. Die/respawn and repeat the prone case. Toggle prone/stand several times and press unrelated keys as a recoil/reset regression control. | Auto-deploy calls the existing TAB path only on prone animation amovppnemstpsraswrfldnon; supported weapons receive the same hint/sound/recoil effect as TAB; unsupported weapons do not deploy; manual TAB and crouched-object resting still work; death/respawn reattaches the local handler; no server/PV state is introduced. Source refs: branch Common_Bipod.sqf:74-82; Client_OnKilled.sqf:90; existing TAB path Common_Bipod.sqf:11,51,54,64; existing sound Sounds/description.ext:66-68. |
Auto-deploy fires for unsupported weapons or non-prone states, manual TAB fallback breaks, repeated AnimChanged events spam sound/hints, recoil sticks unexpectedly because of the existing key-down reset path, the handler is lost after respawn, missing Bipod_ON sound/localization errors appear, str_bipod debt is misrepresented as fixed, or Vanilla scope is claimed without matching smoke. |
origin/claude/trello-upgrade-icons head baf8d9c304ad / draft PR #77 |
client-ui-smoke, upgrade-smoke, resource-smoke, vanilla-parity-smoke, branch-base-review
|
Branch merge-base is current stable origin/master@f8a76de34; payload is two maintained-root Client/GUI/GUI_UpgradeMenu.sqf files / +8 and git diff --check f8a76de34..baf8d9c304ad is clean. Treat as branch-only visual/UI work, not current stable behavior. Current stable reads WFBE_C_UPGRADES_IMAGES and shows the selected detail image, but the upgrade menu has no row-level lnbSetPicture calls. |
In source Chernarus and maintained Vanilla, open WFBE_UpgradeMenu, inspect rows backed by non-empty image paths and rows with empty image strings, queue/add/remove upgrades or advance a level so the list refreshes, then select several rows and close/reopen the dialog. Watch RPT for missing texture/config errors. |
Non-empty upgrade image paths render in listbox 504001 column 0 during initial fill and after refresh/reordering; empty image strings leave rows usable without script errors; list values, queue tags, row selection and detail control 504002 still match the selected upgrade. Source refs: branch GUI_UpgradeMenu.sqf:12,27-28,173-174; existing image array Labels_Upgrades.sqf:104-125; current-stable absence of upgrade-menu lnbSetPicture calls. |
Icons disappear after queue/level refresh, empty image strings trigger script errors, row values/select behavior drift from upgrade IDs, detail-pane images regress, missing .paa RPT errors appear, the branch is misrepresented as new assets or stale-dialog cleanup, or Vanilla parity is claimed without matching files and smoke. |
origin/claude/trello-upgrade-hqcost-info head 34fd202c8865 / draft PR #75 |
client-ui-smoke, upgrade-smoke, economy-ui-smoke, vanilla-parity-smoke, branch-base-review
|
Branch merge-base is current stable origin/master@f8a76de34; payload is six maintained-root files / +96 across source Chernarus plus maintained Vanilla Client_FNC_Special.sqf, GUI_TransferMenu.sqf and stringtable.xml, and git diff --check f8a76de34..34fd202c8865 is clean. Treat as branch-only info text, not current stable behavior. Current stable has the relevant constants/arrays but no branch value-message or New HQ cost strings. |
In source Chernarus and maintained Vanilla, complete Artillery Timeout and Respawn Range upgrades at more than one level and inspect the extra command-chat scalar line. Complete at least one other upgrade type to confirm it still emits only the generic completion message. Open Transfer Menu with different funds/commander-share states and with the HQ deploy-cost parameter/default visible, then exercise at least one normal funds transfer as a regression control. | Generic upgrade-complete chat still appears once; branch value lines show the expected artillery reload seconds and respawn range meters from WFBE_C_ARTILLERY_INTERVALS / WFBE_C_RESPAWN_RANGES; other upgrades do not emit misleading scalar values. Transfer Menu footer shows the New HQ cost from WFBE_C_STRUCTURES_HQ_COST_DEPLOY without clipping/overlap and transfers still work. Source refs: branch Client_FNC_Special.sqf:204,212-223, GUI_TransferMenu.sqf:124-129, stringtable.xml:459-473,1055-1061; current stable constant refs Chernarus Init_CommonConstants.sqf:44,47,435,438,678,684, Vanilla :44,47,257,260,480,486. |
Wrong upgrade level/index value, nil array/constant errors, value line appears for unrelated upgrades, missing localized string, transfer footer clipping/overlap, HQ cost ignores the mission parameter/default, transfer/donation behavior regresses, or Vanilla parity is claimed without mirrored branch files and smoke. |
origin/claude/trello-base-integrity-fixes head 66d80160
|
client-vehicle-smoke, construction-smoke, icbm-smoke, vanilla-parity-smoke, branch-base-review
|
Branch is two commits on current stable merge-base origin/master@f8a76de34; payload is six maintained-root files / +70 / -10 across source Chernarus plus maintained Vanilla ZetaCargo hook/unhook and Nuke damage files, and git diff --check f8a76de34..66d80160 is clean. Treat as branch-only integrity work, not current stable behavior and not ICBM authority closure. Source Chernarus current stable already passes [_vehicle] to Zeta manual detach; maintained Vanilla still does not, including on the branch. |
In source Chernarus and maintained Vanilla, lift a nearby non-HQ vehicle with the friendly HQ also nearby, attempt own-HQ lift, manually detach from a normal helicopter and C-130, damage/remove the lifter to trigger auto-detach, and repeat after adding the missing Vanilla detach argument if parity is part of the claim. For Nuke, start one SmallSite and one MediumSite build inside blast radius, keep one completed structure as control, launch/trigger the nuke path, and inspect RPT plus world state. | Friendly HQ is not chosen as cargo; nearby valid non-HQ cargo still attaches; manual detach has a valid lifted-vehicle argument in every claimed root; drops land at ground level behind the lifter and offset further from friendly HQ when needed; auto-detach still restores the lift action when the lifter survives. In-progress construction logics with WFBE_B_Type are deleted and do not spawn final structures, while completed structures still take blast damage. Source refs: branch Zeta_Hook.sqf:17-19, Zeta_Unhook.sqf:12-29, damage.sqf:33-42; stable construction Construction_SmallSite.sqf:34,47,67,75,95,104; Construction_MediumSite.sqf:34,47,67,75,90,110,119. |
Own HQ can still be selected, non-HQ cargo is wrongly filtered, Vanilla manual detach still errors from missing action args after parity is claimed, drops stay on top of the lifter/HQ or under terrain, auto-detach regresses, unfinished builds survive the blast and complete later, completed structures are accidentally spared, or docs imply ICBM RequestSpecial authority is fixed. |
PR #74 / origin/claude/trello-arty-cooldown-hud head 471fc0580fd6
|
client-ui-smoke, hud-smoke, vanilla-parity-smoke, branch-base-review, post-b751b-rebase-or-recheck
|
Open draft PR #74 is GitHub-clean but stale-base after B751b. Live metadata says base SHA f8a76de34, mergeable=true / clean; current master is origin/master@f39665d79; local counts are 80 1. Base-relative proof remains four maintained-root files / +134 / -8, clean under git diff --check f8a76de34..origin/claude/trello-arty-cooldown-hud, with no Modded_Missions, Tools or Extension payload. Current master keeps Tactical cooldown state at GUI_Menu_Tactical.sqf:562-563,574 and fireMissionTime = -1000 at Init_Client.sqf:431, but has no RHUD artillery row. |
Rebase or deliberately merge-plan against post-B751b master, then in source Chernarus and maintained Vanilla enable artillery, open/keep RHUD visible, fire a mission, watch the RHUD Arty: row during countdown and after availability, then repeat with artillery disabled or unavailable. Toggle map/RHUD/FPS HUD around the update. |
RHUD controls RUBHUD_Arty / RUBHUD_Arty_Value render without overlapping existing rows; countdown uses the same upgrade-scaled interval as Tactical; available state returns after cooldown; disabled artillery hides the row; title/display ownership does not regress. Source refs: branch Client_UpdateRHUD.sqf:20,27,256-288,452; Rsc/Titles.hpp:177,478-489. |
Branch merged/promoted without post-B751b recheck and in-engine smoke, RHUD row overlaps/clips, countdown disagrees with Tactical, nil fireMissionTime/interval errors appear, row remains visible when artillery is disabled, title handle/RHUD recreation regresses, or Vanilla parity is claimed without the same controls. |
origin/claude/trello-arty-to-gunner head 2dc3e7403399
|
client-ui-smoke, artillery-smoke, locality-smoke, vanilla-parity-smoke, branch-base-review
|
Branch merge-base is current stable origin/master@f8a76de34; payload is six maintained-root files / +217 / -8 and git diff --check clean. Current stable has existing artillery classname data and player-buy moveInGunner behavior, but no Tactical crew-all action or strings. |
In source Chernarus and maintained Vanilla, buy or own artillery pieces with empty driver/gunner seats, keep dismounted group AI available, press Crew All Artillery, then repeat with no artillery, no available AI, full seats, dead/mounted AI, and multiple artillery families. Test the subsequent fire-mission path. |
Button idc 17040 appears without support-section overlap; only existing alive dismounted non-player group AI are seated; driver then gunner seats fill as intended; no units are spawned; no-artillery/no-AI hints are correct; seated artillery remains usable for fire missions. Source refs: branch GUI_Menu_Tactical.sqf:571-626; Rsc/Dialogs.hpp:2364-2371; stringtable.xml:3192-3213. |
Action seats the player or wrong-side/non-group AI, fails under locality, leaves available AI in inconsistent state, hides or overlaps support controls, breaks fire-mission listing, or Vanilla scope is claimed without mirrored behavior. |
origin/claude/trello-artillery-ux head c4459d4312ef / draft PR #79 |
client-ui-smoke, artillery-smoke, dedicated-smoke, jip-smoke, request-special-smoke, vanilla-parity-smoke, branch-base-review
|
Branch merge-base is current stable origin/master@f8a76de34; payload is eight maintained-root files / +100 / -20 and git diff --check clean. Current stable lists raw artillery names at GUI_Menu_Tactical.sqf:42, deletes barrage markers through caller-local Client_Delete_Marker.sqf:24, formats the team warning with two arguments at Client_RequestFireMission.sqf:53 and has no ArtyMarkerCleanup hits. |
In source Chernarus and maintained Vanilla, open Tactical with each artillery family available and verify the list shows effective min/max range text. Fire missions with one and multiple guns, then inspect friendly team messages for ammo name plus gun count. During a barrage, disconnect or leave the caller client and observe marker/ellipse cleanup for existing clients and a late joiner. Add a malformed/forged ArtyMarkerCleanup preflight before promotion because the branch adds a server RequestSpecial deletion tag. |
Range suffixes match the same min/max/divisor used for fire-mission range coloring; the friendly warning includes the correct firing-gun count; the global barrage marker and ellipse disappear after the intended delay even if the caller leaves; late joiners do not keep stale barrage markers; malformed cleanup payloads do not delete unrelated markers. Source refs: branch GUI_Menu_Tactical.sqf:42-57; Client_RequestFireMission.sqf:31-38,58-60; Server_HandleSpecial.sqf Chernarus :144-160 / Vanilla :134-150; stringtable.xml Chernarus :9304-9311 / Vanilla :9304-9310. |
Range text clips or disagrees with actual fire range, gun count is wrong or untranslated, caller disconnect leaks markers, JIP clients see stale markers, the server cleanup tag can delete arbitrary markers, existing artillery cooldown/ammo loading regresses, or Vanilla scope is claimed without mirrored behavior. |
origin/claude/trello-audio-cues head a0e4fb458
|
client-audio-smoke, paratrooper-smoke, irsmoke-smoke, vanilla-parity-smoke, branch-base-review
|
Branch is one commit on current stable merge-base origin/master@f8a76de34; payload is four maintained-root files / +74 / -2 across paratrooper marker creation and IRS incoming-missile handlers, and git diff --check f8a76de34..a0e4fb458 is clean. It reuses existing commanderNotification and ARTY_cooldown_over sound classes; no new sound media payload exists. |
In source Chernarus and maintained Vanilla, trigger a paratrooper drop for the local side with several units, observe sound count and local marker behavior, then observe a non-matching-side client if practical. For IR smoke, crew a vehicle with IRS flares, trigger missile response, wait WFBE_IRS_FLARE_DELAY, then repeat after leaving crew, destroying the vehicle, exhausting flares and toggling wfbe_irs_disabled if PR #61 is present. |
One commanderNotification plays per throttle window, the paraDZ_<time> Paradrop marker is local/friendly and deletes after 30 seconds, no enemy-side cue leaks, ARTY_cooldown_over plays only for surviving crewed vehicles with remaining flares, level-2 continuous missile warning remains sane and maintained Vanilla matches source Chernarus. Source refs: branch HandleParatrooperMarkerCreation.sqf:17-18,42-61; IRS_OnIncomingMissile.sqf:51-61; sound classes Sounds/description.ext:18-20,84-86. |
Sound spam per paratrooper, marker leaks to enemies or stays after 30 seconds, hardcoded marker text is treated as localized, ready cue plays after crew leaves/death/no flares/toggle-off, level-2 warning overlap becomes unusable, missing sound-class RPT errors appear, or Vanilla scope is claimed without matching files. |
origin/claude/upstream-hq-repair-price head 440be3da0bda
|
client-ui-smoke, economy-smoke, vanilla-parity-smoke, branch-base-review
|
Branch is one payload commit on merge-base be2bbd084, an ancestor of current stable origin/master@f8a76de34; port/rebase without reverting the B74.1 player-stats constants at Init_CommonConstants.sqf:914-920. Payload is Chernarus + maintained Vanilla Action_RepairMHQ.sqf, Init_Unit.sqf and stringtable.xml; git diff --check be2bbd084..440be3da0bda is clean. This is not a server-authority fix: no Server/, RequestMHQRepair.sqf or Init_PublicVariables.sqf payload exists. |
In source Chernarus and maintained Vanilla, destroy an HQ, use a repair truck under both side-supply and player-funds economy modes if practical, observe the repair action label at truck spawn, repair once and twice, try the next attempt that reaches the cap, and repeat insufficient-funds and already-repairing cases. | Repair action labels and post-repair hints show the intended next-price text in all touched languages; repair price/count behavior matches owner policy; insufficient-funds and already-repairing messages still work; normal repair still reaches the server once for accepted cases; current stable/B74.1 stats constants remain enabled after any port. Source refs: current stable plain action Init_Unit.sqf:67 and hint Action_RepairMHQ.sqf:42; branch formatted action Init_Unit.sqf:71-78, hint Action_RepairMHQ.sqf:43-55, strings stringtable.xml:940-945 plus Chernarus :4592-4597 / Vanilla :4591-4596. |
Direct merge rolls back WFBE_C_STATS_ENABLED = true, action label is stale/missing after repair-count changes, post-repair hint advertises an unreachable third repair without owner acceptance, insufficient-funds formatting breaks, server-side MHQ authority is incorrectly claimed closed, Vanilla scope is claimed without parity, or repeated/concurrent repair requests still produce ambiguous behavior while release wording implies authority hardening. |
origin/claude/upstream-an2-climb-boost head 63e6b4142
|
client-vehicle-smoke, vanilla-parity-smoke, branch-base-review
|
Branch is one payload commit on merge-base be2bbd084, an ancestor of current stable origin/master@f8a76de34; port/rebase without reverting the B74.1 player-stats constants at Init_CommonConstants.sqf:914-920. Payload is Chernarus + maintained Vanilla Func_Client_LowGear.sqf and Init_Unit.sqf; git diff --check be2bbd084..63e6b4142 is clean. |
In source Chernarus and maintained Vanilla, spawn/enter An2_TK_EP1, confirm Low Gear on/off actions appear only to the driver, test low-gear off/on during heavy takeoff, steep climb, near-stall regime and normal cruise, then confirm tanks/cars still keep existing low-gear and flip behavior. |
AN-2 boost is available only when intended, helps slow takeoff/climb below the branch Air target without pushing normal cruise/top speed, and does not add the car/tank Flip action to the plane. Source refs: branch Init_Unit.sqf:87-90; Func_Client_LowGear.sqf:68-75; current stable lacks both. |
Direct merge rolls back WFBE_C_STATS_ENABLED = true, AN-2 action missing or visible to non-drivers, boost affects normal cruise/AA-evasion speed, tanks/cars regress, Vanilla scope is implied without branch files, or no in-game climb evidence is recorded. |
origin/claude/upstream-blinking-mapicons head 6e31f7fd5
|
client-ui-smoke, map-marker-smoke, vanilla-parity-smoke, branch-base-review
|
Branch is one payload commit on merge-base be2bbd084, an ancestor of current stable origin/master@f8a76de34; port/rebase without reverting the B74.1 player-stats constants at Init_CommonConstants.sqf:914-920. Payload is Chernarus + maintained Vanilla Client_BookkeepBlinkingIcons.sqf; git diff --check be2bbd084..6e31f7fd5 is clean. Enable WFBE_C_MAP_ICON_BLINKING_ENABLED = 1. |
With map/GPS closed and open, put a player in gunner and commander seats of an active blinking vehicle, trigger/clear LFTB, dismount, kill/delete the vehicle, and repeat for both WEST and EAST arrays. |
The active vehicle marker blinks as before, and the mounted player's own soldier marker is also pushed into BLINKING_UNITS_* while mounted as gunner/commander, then removed when inactive/null. Source refs: current stable vehicle-only push Client_BookkeepBlinkingIcons.sqf:82-94; branch player-marker push :96-110. |
Direct merge rolls back WFBE_C_STATS_ENABLED = true, mounted player marker does not blink, duplicates or stale nulls accumulate, dismounted/dead players keep blinking, WEST/EAST arrays cross-contaminate, map-open cadence regresses, or Vanilla scope is claimed without parity. |
origin/claude/upstream-barracks-4th-level head e83de9c4
|
upgrade-smoke, factory-purchase-smoke, vanilla-parity-smoke, branch-base-review
|
Branch is one payload commit on merge-base be2bbd084, an ancestor of current stable origin/master@f8a76de34; port/rebase without reverting the B74.1 player-stats constants at Init_CommonConstants.sqf:914-920. Payload is Chernarus + maintained Vanilla Core infantry configs, Core_Upgrades/Upgrades_*.sqf and Common_CreateUnit.sqf; git diff --check be2bbd084..e83de9c4 is clean. |
In source Chernarus and maintained Vanilla, run Barracks upgrades from 0 through 4, open Buy Units at each level, verify representative WEST/EAST infantry lock/unlock rows, buy AT/HAT/AA/MG/marksman/SL units at boundary levels, and spawn US_Soldier_AT_EP1 through the normal path. |
Barracks exposes four coherent levels and dependencies, unit filtering follows the branch QUERYUNITUPGRADE rows, denied units stay unavailable until their required level, and US_Soldier_AT_EP1 receives R_MEEWS_HEAT instead of R_MEEWS_HEDP. Source refs: branch Upgrades_CO_US.sqf:33,61,89,125,185; Core_US.sqf:21,24,27,33,48,81; Core_RU.sqf:18,21,24,30,45,60; Common_CreateUnit.sqf:101. |
Direct merge rolls back WFBE_C_STATS_ENABLED = true, Barracks max level/times/costs mismatch, AI commander upgrade order skips the new level, buy-menu filtering differs from Common_CreateUnit rejection, AT magazine loadout stays HEDP, Vanilla scope is claimed without mirrored files, or no in-game level-0-to-4 evidence is recorded. |
origin/feat/ai-commander head c20ce153
|
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, lazy-condition cleanup commits b4b0333f..c20ce153. |
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/guer-insurgents-faction head 41550bd33
|
dedicated-smoke, jip-smoke, vanilla-parity-decision, optional hc-smoke
|
Dedicated branch run with WFBE_C_GUER_PLAYERSIDE = 0, then another with it enabled. Repeat maintained Vanilla only if the owner decides the playable-GUER feature should propagate beyond Chernarus. Static preflight must clean current git diff --check blank-EOF/trailing-whitespace failures. |
Disabled pass: boot, join WEST/EAST and confirm baseline hostility/economy/runtime are unchanged. Enabled pass: join GUER slot, JIP after towns initialize, respawn from friendly towns/camps, open depot/buy menu without a base, wait for stipend/tier changes, kill WEST/EAST units, capture/harass towns, and observe WEST/EAST AI return fire. | Disabled mode has no visible GUER economy/runtime side effects; enabled mode registers resistance team state, publishes WFBE_GUER_VEHICLE_TIER, rebuilds WFBE_GUERDEPOTUNITS, pays stipend/kill funds once per intended event, preserves JIP-visible state and makes WEST/EAST AI hostile to GUER. Source refs: Rsc/Parameters.hpp:587, mission.sqm:25,27,4938+, Init_Server.sqf:7-13,584-611, Root_GUE.sqf:129-130, Root_GUE_PlayerOverlay.sqf:13,34-51, Server_GuerStipend.sqf:14,41-43,56, RequestOnUnitKilled.sqf:82-93. |
GUER behavior leaks when disabled, Vanilla scope is implied without code, WEST/EAST AI ignore GUER after setFriend change, stipend/tier state is not JIP-safe, buy menu has missing classes/no-base dead ends, kill funds duplicate or pay wrong side, town capture breaks resistance/camp ownership, or branch whitespace remains unresolved. |
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 clean. |
Open Buy Units with low funds, exact funds and normal funds; inspect infantry, crewless vehicle and full-crew vehicle rows; toggle crew slots/lock state; watch factory tabs while queue counts change; then open EASA on an aircraft with a known visible loadout, a filtered current loadout and no saved setup. | Unaffordable displayed base prices tint red without confusing final full/crew cost; idc 12034 ends with the expected final price after the later write; factory-tab queue labels update without per-tick flicker or label loss; EASA current loadout is green/selected when visible and falls back cleanly when hidden/unset. Source refs and caveats: BuyMenu EASA QoL branch audit. |
Wrong affordability color, price/crew confusion, stale queue count, UI churn/flicker, final price overwritten unexpectedly, EASA selects the wrong loadout, or Vanilla misses the branch behavior after propagation is claimed. |
PR #84 / origin/feat/player-stats-names head 177539ed
|
branch-stack-review, discordbot-test, stats-name-parser-test, integration-smoke, privacy-review
|
Open non-draft PR #84 stacks on origin/feat/player-stats@e01e47e1, not master: clean GitHub merge state, scoped stack diff 6 files / +57 / -7, clean git diff --check origin/feat/player-stats..origin/feat/player-stats-names, no Missions_Vanilla, Modded_Missions, Tools or Extension payload. Local test rerun was blocked because this environment has no .NET SDK; PR body reports 16/16. |
Run dotnet test DiscordBot.Tests\DiscordBot.Tests.csproj from a SDK-equipped worktree at 177539ed. In Arma, enable the player-stats stack on a private target and join with ordinary names plus names containing ~ and ` |
; generate playtime/kill flushes, tail the RPT through DiscordBot, restart/rotate RPT as in the base stats smoke and inspect stats.json`. |
Evidence should name PR #84/head 177539ed, base e01e47e1 and target package. Source refs: StatsFlush.sqf:24-25,44-50, StatsBatchParser.cs:5,31-40,49, StatsAccumulator.cs:21-23, PlayerStat.cs:22-24, StatsBatchParserTests.cs:43-69, StatsPipelineIntegrationTests.cs:77-83. Expected: numeric fields remain intact, ~ inside names is preserved, ` |
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 clean, but branch grep shows no maintained Vanilla propagation. |
Exercise side-supply positive and negative changes, buy crewless and crewed units until queue limits would be hit, trigger paratrooper support marker creation, let mines/dead-object/resource loops run under RPT watch, repair/destroy camp bunkers, check kill-assist bounty, and touch WASP HQ repair/base view/RPG base-protection actions. | Debits never become credits; crewless purchases decrement unitQueu / WFBE_C_QUEUE_*; paratrooper marker PV is registered; mine pairs are actually removed; wfbe_trashed objects do not spawn duplicate trash handlers; resource income keeps intended cadence under low FPS; camp-bunker death has no nil-code EH; Vanilla carries the intended same fixes if claimed. Source refs and full branch table: Perf quick wins branch audit. |
Economy inversion persists, factory soft-locks after crewless buys, paratrooper marker still missing, cleaner/camp/resource loops emit new errors, WASP action paths regress, 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 e9294ede
|
hosted-smoke, dedicated-smoke, jip-smoke, hc-smoke, screenshot-evidence
|
Treat as a terrain release candidate plus a low-pop balance profile. Static validation with branch-local Tools\Validate-ZargabadMission.ps1 passed locally in a detached worktree at e9294ede, but that tool is not present on the current docs branch and git diff --check reports 3542 generated whitespace findings. Runtime evidence should follow Guides/Zargabad-Completion-Gates.md and the refreshed Guides/Zargabad-Claude-Runtime-Handoff.md screenshot packet. |
Boot Zargabad hosted and dedicated from the feature branch, 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. Explicitly verify low-pop defaults in RPT/report evidence: AI max 6, player AI max 8, Soldier cap 3, team supply cap 30000, UAV 650, missile/bomb ranges 1500, town mortar/patrol 420/300, countermeasures 12/18, ICBM off and price multipliers 0.95/1.15/1.4/1.75/2.0/1.0. Validate the runtime report packet with the branch-local validator 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; tuned range/economy defaults match the branch validators; 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, bad low-pop economy/air-price feel, JIP/HC failure, current-branch validator mismatch, 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. |
| Package provenance |
_MISSIONS.7z validated with Tools\PrTestHarness\Package\Test-WaspReleasePackage.ps1; package SHA256, generated release markers and tracked-payload gate recorded. |
| Runtime RPT packet | Ten-file Chernarus/Takistan role matrix built/checked with New-WaspRuntimeRptPacket.ps1 and Test-WaspRuntimeRptPacket.ps1; release candidate, git marker and package SHA match the approved archive. |
| RPT evidence scoring |
Test-WaspReleaseRptEvidence.ps1 or New-WaspReleaseRptSummary.ps1 records per-terrain semantic gates. Do not claim release-ready runtime behavior from source/package checks alone. |
| 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