Skip to content

Feature Status Register

rayswaynl edited this page Jun 3, 2026 · 471 revisions

Feature Status Register

This register separates working systems from partial, deferred or risky systems found during indexing. For revive/remove decisions on dormant feature paths, use Abandoned feature revival. For a compact machine-readable triage index, use agent-feature-status.jsonl.

How To Use This Page

This is the triage dashboard, not the evidence dump. Keep each row short, link the canonical page, and put source traces, proof snippets and patch notes in the linked page or JSONL backlog.

Quick jumps: Priority Command Center | Owner Decision Queue | Working / Active Systems | Partial / Deferred / Needs Review | Missing Feature Candidates | Pending owner decisions | Hardening roadmap | Source fix queue | release readiness | agent-feature-status.jsonl | agent-hardening-backlog.jsonl

Recommended row states:

  • P0 critical: public-server exploit or hardening gap that should block wide public hosting.
  • P1 confirmed: proven correctness, authority, performance or partial-feature issue with a clear patch lane.
  • Source patched: Chernarus source has a fix, but generated Vanilla/modded propagation or smoke testing is still pending.
  • Propagated, smoke pending: Chernarus source and maintained Vanilla Takistan contain the fix, but no Arma 2 OA runtime smoke has been recorded yet.
  • Dormant / owner decision: code exists, but the project needs a revive/remove/defer call before implementation.
  • Enhancement: TODOs and cleanup that should not visually compete with P0/P1 work.

Priority Command Center

Area Severity State Canonical page Next gate
PVF dispatch trust boundary P0 critical Planned PVF dispatch implementation Replace sender-chosen dispatch compile with allowlist / namespace lookup; dedicated PVF smoke.
SEND_MESSAGE direct-PV RCE P0 critical Planned Public variable channel index / Deep review DR-46 Stop call-compiling direct message payload text; send structured localization key/args and resolve with localize/format.
ICBM/Nuke authority P0 critical Planned ICBM authority Server-side upgrade/role/funds validation before public hosting.
Side-supply clamp / temp-channel validation P0 critical Planned Economy authority first cut Clamp negative supply to zero, validate side/amount, and smoke west/east temp channels.
Economy/server-authority class P1 confirmed Design lane Server authority migration map Patch spend/effect paths as one ledger model, not scattered local menu fixes.
Upgrade request authority P1 confirmed Patch-ready design Upgrades/research atlas Server owns completion state, but live player request validation/debit remains client-side.
Town/camp capture bounty authority P2 confirmed Design lane Towns/camps/capture atlas Town ownership is server-owned, but capture bounty/funds are client-awarded after capture PVFs.
Commander/HQ lifecycle authority P1 confirmed Design lane Commander/HQ lifecycle Client-paid repair/recovery requests still need authority hardening, while the actual HQ recreate/delete/marker cleanup is server-owned.
Attack-wave authority P1 confirmed Planned Attack-wave authority Treat ATTACK_WAVE_INIT as a request and re-derive side/supply/cost server-side.
Supply mission cleanup P1 confirmed Branch-local/release partial patch Supply mission authority cleanup origin/master still has the broad command-center scan; this docs branch and origin/release/2026-06-feature-bundle narrow it. Finish master adoption, cooldown casing, duplicate-start guards, disconnect pruning, reward authority and Arma smoke. Keep PR #1 Killed-handler work separate from current master.
Support/special request authority P1 confirmed Atlas published Support/specials/modules atlas Add server-side validation for RequestSpecial before accepting paratrooper, paradrop, UAV, ICBM, MASH/service/logistics effects.
Commander economy controls P1 confirmed Design lane Commander/HQ lifecycle Validate commander income percent, structure sell/refund and MHQ repair on the server before expanding commander comeback tools.
Factory queue robustness P1 confirmed Patch-ready Factory queue cleanup Counter leak and token collision are still present in current source; patch local queue accounting/token identity first, then revisit public queu broadcast reduction.
Join/disconnect lifecycle risks P1 confirmed Partial propagated patch Join/disconnect lifecycle Supply player-list index handling is patched in Chernarus + Vanilla; reconnect/supply smoke, delete-then-setPos and stale disconnect cleanup remain open.
Victory/endgame correctness P1 confirmed Patch-ready Victory/endgame atlas Split explicit winner/loser semantics, guard both victory branches with !WFBE_GameOver, break after first win, decide non-zero threeway modes and retire stale duplicate logger.
Marker/cleanup/restoration risks P2 confirmed Atlas published Marker cleanup/restoration atlas Fix mine pair removal, align trash flags and verify side-local marker deletion/visibility.
UI IDD/display-handle collisions P1 confirmed Patch-ready UI IDD collision repair Assign unique display/title IDs, split currentCutDisplay ownership between OptionsAvailable/RHUD/action icons and EndOfGameStats, audit findDisplay assumptions and smoke EASA/Economy/title resources.
Command task UI partial P2 confirmed Owner decision Client UI systems atlas Command menu task controls are visible, but the SetTask sends are commented. Decide whether to revive or remove the visible task affordance.
Source-fix propagation lanes P1 confirmed Propagated, smoke pending Source fix propagation queue LoadoutManager propagation completed with A2WASP_SKIP_ZIP=1; run Arma 2 OA smoke before claiming release-complete.
Parameters/build input hazards P1 confirmed Atlas published Parameters/build inputs Checked-in source has no version.sqf; generation/pack inputs must supply it. LoadoutManager root discovery is fixed and A2WASP_SKIP_ZIP=1 supports propagation-only runs, but release packaging still needs 7za.
Player-run supply helicopters (PR #1) P1 review Open additive branch Current supply heli PR Player-run supply helicopters, upgrade gating, cash runs and interdiction rewards are separate from dormant AI logistics; current PR has a guarded interdiction handler, but truck/heli rewards and repeated load/destroy behavior still need smoke before merge.
AI commander autonomy Owner decision Dormant / partial AI commander autonomy audit Human commander systems and the AI upgrade worker are real, but full autonomous commander production/logistics are not proven. Keep this separate from player-run supply-heli PR work.
Autonomous AI logistics Owner decision Broken/dormant Abandoned feature revival UpdateSupplyTruck is config-gated latent breakage with a disabled compile and missing supplytruck.fsm; redesign or remove/guard before any autonomous supply-truck/heli work.

Owner Decision Queue

The source-review campaign has mapped the remaining high-risk yellow cells. Most are no longer "research needed"; they are decisions about patch policy, hosting posture or whether to revive dormant code. This section is a shortcut; use Pending owner decisions as the canonical decision register before starting code work.

Decision class What the owner must choose First safe gate
Server authority vs public-hosting mitigation Move spend/effect paths to server-side authority, or knowingly keep client-authoritative legacy behavior behind a real BattlEye/filter posture. Start with PVF dispatch, ICBM authority and economy first cut; do not call BattlEye "shipped" without production BEpath evidence.
Direct publicVariable channels Treat direct channels such as ATTACK_WAVE_INIT and wfbe_supply_temp_* as requests, or explicitly accept their current payload-trust behavior. Use Public variable channel index, Attack-wave authority and Server authority migration map.
Match outcome semantics Decide whether to patch default victory immediately and whether non-zero threeway victory modes should be implemented or hidden/unsupported. Use Victory/endgame atlas; first smoke gate is exactly one winner/log in elimination, all-towns and same-tick cases.
Supply logistics baseline Decide what belongs on master: current player truck missions, PR #1 player supply helicopters, and which autonomous AI logistics pieces remain deferred. Use Supply mission authority cleanup and Current supply heli PR; finish cooldown, duplicate-start, reward-authority and repeated load/destroy smoke before merging heli work.
Dormant visible features For command task UI, MASH markers, old WASP actions, AI supply trucks and abandoned mission folders, choose revive, remove or keep dormant. Use Abandoned feature revival, AI commander autonomy audit and Client UI systems atlas; do not document visible task/orders as working until sends/JIP/spam behavior are restored.
Patch-ready local correctness Some items do not need broad design, only a scoped patch and smoke scheduling. Factory queue cleanup, town-AI vehicle despawn safety, service guards, gear template filter, cargo loop bounds and marker cleanup all have owner pages and backlog records.

Working / Active Systems

  • Core Warfare loop: towns, commanders, bases, factories, upgrades, resources and victory checks.
  • Client/server/common initialization split.
  • Generic PVF request/response system.
  • Player supply-truck missions on master.
  • Enhanced day/night cycle with server authority and client smoothing.
  • Server FPS publishing and RHUD/FPS HUD.
  • Performance audit instrumentation plus analyzer.
  • Anti-stack module with optional mission parameter.
  • AFK kick through BattlEye publicVariable filter.
  • MASH/ambulance respawn support; respawn/death lifecycle separates local MASH respawn from broken marker synchronization.
  • ICBM/radiation module.
  • EASA aircraft loadout module.
  • Client marker blinking guarded by parameter.
  • LoadoutManager mission copy/generation workflow.
  • Discord bot status updates from exported game data.

Partial / Deferred / Needs Review

Area Evidence Status
Autonomous AI supply trucks UpdateSupplyTruck compile is commented at Server/Init/Init_Server.sqf:36, but the live call [_side] Spawn UpdateSupplyTruck; remains at :383, gated by WFBE_C_ECONOMY_SUPPLY_SYSTEM == 0 && WFBE_C_AI_COMMANDER_ENABLED > 0. AI_UpdateSupplyTruck.sqf also references missing Server/FSM/supplytruck.fsm. Config-gated latent breakage. Default supply system 1 is safe; supply system 0 with AI commanders is broken until the compile and FSM are restored or redesigned.
AI commander automation AI commander constants and side-logic state/funds exist; WFBE_SE_FNC_AI_Com_Upgrade is compiled and Server_AI_Com_Upgrade.sqf performs real upgrade/funds logic. Wave I reconfirmed no live scheduler/loop that starts the full autonomous commander brain or sets wfbe_aicom_running = true. Partial/latent, not absent. Human commander vote/reassignment and economy controls are live; full autonomous commander production/logistics are incomplete until a runtime owner is restored. Use AI commander autonomy audit.
Town AI vehicle despawn safety Server/FSM/server_town_ai.sqf:191-223 deletes inactive town-AI vehicles; :211-216 uses !(isPlayer leader group _x) and does not check crew, cargo or turret occupants. Einstein verified a player passenger/crew member who is not group leader can still be inside an eligible vehicle. Confirmed bug. Guard despawn with a full player-occupancy check while preserving cleanup of empty AI-only town vehicles.
Town mortar scaffold Server_ManageTownDefenses.sqf:32 can call WFBE_SE_FNC_ManageTownMortars when wfbe_town_mortars is set, but no live town init was found setting it; Server_SpawnTownMortars.sqf:9-13 then references undefined _positions. Dormant/broken scaffold. Treat as owner-decision work: remove, repair and wire deliberately, or keep documented as unsupported.
Task system TaskSystem compile and TownAddComplete spawn are commented in Client/Init/Init_Client.sqf; TownCaptured.sqf task spawns are commented; Client_TaskSystem.sqf still exists. Dormant legacy path / owner decision. Re-enable only after checking task spam, JIP behavior and whether task UX is still wanted.
MASH marker receiver Source and Vanilla keep the receiver compile commented at Client/Init/Init_Client.sqf:132; Server/Module/MASH/MASHMarker.sqf still registers an orphaned relay, and current Chernarus has no live sender for WFBE_CL_MASH_MARKER_CREATED. Modded eden/lingor/Napf also emit WFBE_CL_MASH_MARKER_CREATED from Skill_Officer.sqf without shipping the receiver/server marker files. Confirmed dead marker feature. Source/Vanilla MASH marker sync is dead on both ends; modded forks are sender-only drift. Deployed MASH tents can still work for respawn.
Paratrooper drop markers Server/Support/Support_Paratroopers.sqf:117 sends HandleParatrooperMarkerCreation; source Chernarus and maintained Vanilla Takistan now register that client PVF and ship the handler file. Propagated, smoke pending. Use Paratrooper marker revival. Modded eden/lingor/Napf still advertise/register the callback but do not ship HandleParatrooperMarkerCreation.sqf.
Client map-icon legacy tracking Old Client_BlinkMapIcons, Client_AddUnitToTrack compiles and exec path are commented in Client/Init/Init_Client.sqf; the old helper files are absent, while newer singular Client_BlinkMapIcon tracking exists. Dormant/replaced path. Do not revive the old loop without a performance and marker-UX review.
AT/bomb hook family Common/Init/Init_Common.sqf comments out HandleATReloadVehicle and HandleBombs; Common_HandleBombs.sqf is missing and Common_HandleATReloadVehicle.sqf has no active compile path found. Dormant/partial hook family. Treat as feature archaeology unless a gameplay owner designs a new reload/bomb behavior.
Air-vehicle modification hook Common_CreateVehicle.sqf comments out Common_ModifyAirVehicle.sqf in source and modded forks. Dormant hook. Do not infer active aircraft post-processing from the commented call.
WASP client startup chain WASP/Init_Client.sqf comments out old killed-handler, armor timer/key/bootstrap paths; WASP/actions/AddActions.sqf leaves the old HandleDamage branch commented while the HQ recovery action is live elsewhere. Mixed live/dormant. Treat WASP HQ recovery and marker monitor as live edges; treat old armor/God-Slayer startup hooks as dormant.
PV dispatch trust boundary Server_HandlePVF.sqf/Client_HandlePVF.sqf run Call Compile on the sender-chosen command string with no allowlist; the shipped BattlEye posture does not cover it. P0 live-server hardening gap. Do not merely validate then compile a sender string. Use PVF dispatch implementation: allowlisted command IDs should resolve to precompiled functions through missionNamespace getVariable.
PV legitimate-command forgery Hilbert's network pass confirmed high-trust handlers: RequestChangeScore.sqf overwrites score from payload, RequestVehicleLock.sqf locks payload vehicles, RequestTeamUpdate.sqf mutates team behavior, and RequestUpgrade.sqf forwards to upgrade processing without visible sender/cost validation in the handler. Live-server hardening gap (High). Even after replacing dispatcher Call Compile, validate sender, role, side, funds, ownership and object locality inside high-impact handlers; use the registered handler matrix.
Direct publicVariable channels outside PVF Direct PVEH/PV channels exist across materially different classes: economy mutation, attack waves, HQ state, FPS publishing, MASH relay, AntiStack compensation, day/night, marker/message and supply mission flows. Inventory row only. Do not read these as one uniform risk; split work by channel class or defer to Public variable channel index before claiming networking hardening.
Client-bound PVF runtime/JIP behavior Server-to-client PVFs include visual markers/messages, client-local funds/score effects, task creation, base-area mutation and broad HandleSpecial / LocalizeMessage routers. Runtime matrix published. Use Networking client PVF matrix before changing JIP replay, command tasks, capture rewards, attack-wave display, paratrooper markers or localized money messages.
Attack-wave authority DR-41 confirms ATTACK_WAVE_INIT is a direct publicVariable channel outside PVF; server trusts client _supply/_side, allowing free or negative-price side-wide units. P1 confirmed. Treat the channel as a request, re-derive supply/side server-side, debit once, clamp modifier/duration and preserve JIP semantics. Use Attack-wave authority and backlog id attack-wave-authority.
Side-supply clamp / temp-channel validation DR-22 and backlog id side-supply-clamp-first confirm that side-supply overspend can become a windfall, and that west/east direct temp channels need side/payload validation. P0 planned. First economy hardening cut: clamp negative supply to zero, validate temp-channel side/amount, and do not claim full economy authority. Use Economy authority first cut.
Economy/server-authority class DR-6/14/16/22/23/28 plus WASP HQ recovery show spend/effect paths are client- or payload-authoritative; ICBM and attack-wave have dedicated rows because of blast radius/direct-PV specifics. P1 planned design. Do not patch as unrelated bugs. Use Server authority migration map for the flow table and Economy authority first cut for sequencing.
Upgrade request authority Live upgrade purchases are commander-gated, dependency-checked and debited in Client/GUI/GUI_UpgradeMenu.sqf:129-161, then RequestUpgrade.sqf:5 forwards the raw payload into Server_ProcessUpgrade.sqf, which trusts side/id/level while owning the timer/state update. P1 patch-ready. Add server-side requester/commander/side/current-level/dependency/cost/funds validation before WFBE_SE_FNC_ProcessUpgrade; use Upgrades/research atlas.
Score/funds/supply authority boundary RequestChangeScore accepts score payloads, no RequestChangeFunds PVF exists, side supply mutates keyed wfbe_supply_%1 through direct temp channels, and REQUEST_SUPPLY_VALUE shows a safer server-derived read pattern. P1 design lane. Use server-derived award/read helpers as migration patterns; avoid adding new client-stamped mutation paths. See Economy authority first cut and Public variable channel index.
Upgrade config drift WFBE_UP_* constants run through WFBE_UP_UNITCOST = 21, but representative side upgrade arrays are not obviously uniform around AAR/unit-cost entries. Research-needed before upgrade expansion. Build a side-config validator before adding, removing or rebalancing upgrade indexes. Use Upgrades/research atlas.
Construction small-site logic cleanup Server/Construction/Construction_SmallSite.sqf:98-99 comments that built logic should be removed, then adds _nearLogic again; Construction_MediumSite.sqf:113-114 removes the sibling entry. Confirmed source asymmetry and patch-ready correctness/maintenance candidate. Runtime impact is still smoke-pending because no source initializer for wfbe_structures_logic was found. Use Construction logic list cleanup before changing source.
Town/camp capture bounty authority server_town.sqf owns town sideID and sends TownCaptured, while TownCaptured.sqf:37-81 and CampCaptured.sqf:19-40 award client-local funds and request score after the broadcast. P2 design lane. Capture ownership is server-owned, but reward authority is still client-side. Use Towns/camps/capture atlas before changing capture rewards.
BattlEye mitigation as shipped In-tree BattlEye posture is only BattlEyeFilter/publicvariable.txt:2 with the kickAFK rule; no scripts.txt, server.cfg or basic.cfg bundle is present. Canonical evidence lives in External integrations. High live-server hardening gap. Use backlog id battleye-hosting-hardening; do not treat BattlEye as shipped remediation until production BEpath files or a tested filter set are supplied.
Integration trust boundaries DiscordBot reads database.json with TypeNameHandling.All; the in-repo a2waspwarfare_Extension active writer uses TypeNameHandling.None; AntiStack calls separate absent A2WaspDatabase wrappers that compile return strings; the shipped BattlEye filter is AFK-only. High integration hardening lane. Use integration trust boundary audit before changing DiscordBot, Extension, AntiStack DB wrappers or BattlEye claims; use AntiStack database extension audit for the AntiStack-specific runtime/procedure map.
ICBM/Nuke RequestSpecial authority Claude DR-27 traced the Tactical-menu ICBM path: client-side menu gates call Client/Module/Nuke/nukeincoming.sqf, which sends RequestSpecial ["ICBM", ...]; the server HandleSpecial ICBM case spawns NukeDammage from client payload without upgrade/commander/funds validation. Critical live-server hardening gap. One forged RequestSpecial PV can trigger server-applied map-wide damage. Use ICBM authority before patching or trusting this module publicly.
Construction request authority DR-6 confirms construction PVFs trust client payload authority and mostly class-existence checks. Hardening gap. Use Deep-review findings DR-6 for proof, Construction and CoIn systems atlas for flow, and Server authority migration map for migration design.
Structure sale authority DR-16 completes the build/buy/sell authority class: sell-side structure effects and refund accounting need the same server-side ownership/funds validation as construction and purchase paths. Hardening gap. Track with Server authority migration map instead of treating sale as a UI-only cleanup.
Player purchase authority GUI_Menu_BuyUnits.sqf calls local BuildUnit and deducts funds client-side; Init_PublicVariables.sqf has no RequestBuyUnit, and no Server/PVFunctions/RequestBuyUnit.sqf exists. Legacy/client-local buy path. Add server validation before adding exploit-sensitive purchases. See Factory and purchase systems atlas.
Server AIBuyUnit path Init_Server.sqf compiles AIBuyUnit = Server_BuyUnit.sqf, but source search only finds the compile and Server_BuyUnit.sqf itself. Latent/unused until a dynamic caller is proven. Decide whether to revive for AI commander production or retire.
Factory queue counter leak / FIFO churn Current source still uses low-entropy random varQueu in Client_BuildUnit.sqf:167-168, and the empty-vehicle branch at :365 still exits before local queue-counter cleanup. P1 confirmed, patch-ready. Repeated empty-vehicle buys can locally soft-lock a factory category, and random-token collision risk remains. See Factory queue cleanup.
Duplicate client skill init Client/Init/Init_Client.sqf:547 still initializes skills before default gear selection; the former duplicate at :571 was removed in source Chernarus and maintained Vanilla Takistan. Skill_Init.sqf:49 remains non-idempotent if future paths call it more than once. Propagated, Arma smoke pending. See Client skill init idempotency.
Commander reassignment call shape Server_AssignNewCommander.sqf assigns _side = _this, then _commander = _this select 1; RequestNewCommander.sqf calls it with [_side, _assigned_commander]. Confirmed DR-15 correctness bug. Patch _side = _this select 0, then remove one duplicate new-commander-assigned notification. Use commander reassignment call shape.
Commander/HQ lifecycle authority Action_RepairMHQ.sqf:24-35 and WASP/actions/Action_RepairMHQDepot.sqf:19-29 are client-paid/client-gated request paths; Server_MHQRepair.sqf:1-79 owns the actual HQ recreate/delete and marker/state cleanup. P1 design lane. Harden client-side gating/payment/pre-repair effects, but preserve the server-owned HQ lifecycle. Use Commander/HQ lifecycle.
Commander disconnect fallback Server_OnPlayerDisconnected.sqf:136-146 clears side logic wfbe_commander to objNull, sends CommanderDisconnected, and clears autonomy/respawn overrides when the commander team disconnects; no automatic vote/reassignment call appears in that block. Owner decision. Decide whether disconnect should intentionally leave no commander, restart commander vote, or revive AI commander fallback; use Commander/HQ lifecycle.
Commander income percent / structure sell authority GUI_Menu_Economy.sqf:24-27,74-79 writes commander income percent that updateresources.sqf:36-43 consumes; GUI_Menu_Economy.sqf:104-150 drives structure sell/refund from UI state. P1 design lane. Move role/side/range/refund validation server-side before relying on commander economy controls for public hosting. Use Commander/HQ lifecycle.
HQ/MASH marker cleanup split MASH respawn is local-live but marker relay is dead; HQ marker cleanup can stale after wreck deletion; west/east HQ marker state exists, resistance is uncovered. P2 confirmed. Keep MASH respawn distinct from dead marker sync; verify HQ marker local deletion and stale-marker cleanup before expanding marker features. Use Respawn/death lifecycle, Commander/HQ lifecycle and Marker cleanup/restoration atlas.
Supply mission cooldown casing DR-18 confirms the town seed key and server read/write key differ by case. Correctness bug. Use Supply mission architecture for flow and Supply mission authority cleanup for patch shape.
Supply mission reward authority Client supply mission start sets truck SupplyFromTown and SupplyAmount; server completion trusts those truck variables. Hardening gap. Recompute reward/cooldown server-side from trusted town/truck state.
Supply mission command-center scan origin/master supplyMissionStarted.sqf:24-28 still uses nearestObjects [..., [], 80]; this docs branch narrows the scan at :24-28, and origin/release/2026-06-feature-bundle narrows it at :46-53. The 8-meter player/object scan remains broad by design. Branch-local/release patched; not shipped on master; Arma smoke pending. See Supply mission scan narrowing. Huygens Wave H also reconfirmed dead-twin, cooldown casing/race, stale player-list and client-stamped truck-var trust risks in Supply mission authority cleanup.
Support/special modules RequestSpecial.sqf forwards directly into Server_HandleSpecial.sqf, while Tactical-menu fees, cooldowns and upgrades are mostly client-side. Mixed working/partial feature family. Use Support/specials/modules atlas before changing paratroopers, paradrops, UAV, artillery, ICBM, MASH, ZetaCargo, service or supply supports.
Player join/disconnect lifecycle Chernarus source and maintained Vanilla Takistan now move playerObjectsList.sqf:17 _i = 0 before the player-list loop. Server_OnPlayerDisconnected.sqf:102 still deletes _old_unit before :122 tries to relocate it. Partial propagated patch; reconnect/supply smoke pending. Use Join/disconnect lifecycle before patching reconnect, AFK, AntiStack or supply player-object state.
Marker cleanup/restoration lifecycle mines_cleaner.sqf:17 removes mines = mines - _x; garbage collector skips wfbe_trashable while kill paths set wfbe_trashed; Client_Delete_Marker.sqf documents local deletion but calls global deleteMarker. Confirmed cleanup/marker risks. Use Marker cleanup/restoration atlas before changing marker visibility, mine cleanup, garbage collection or building restorer cadence.
Victory/endgame winner inversion and double-fire Victory/endgame atlas is the developer map. DR-11 is the raw winner-inversion / persisted win-tally finding; DR-36 owns the server_victory_threeway.sqf:23 mechanism and fix shape. Correctness bug. Same-tick eliminations can double-fire endgame and overwrite/log the opposite winner. Route implementation through Victory/endgame atlas and the Hardening roadmap.
Threeway victory mode Victory/endgame atlas maps the owner decision. Earlier DR-12 found non-zero WFBE_C_VICTORY_THREEWAY skips the only auto-end detection path. Broken/abandoned mode until end conditions are implemented for non-default victory modes or explicitly guarded as unsupported.
Resistance side supply updates Common_ChangeSideSupply.sqf formats wfbe_supply_temp_<side> generically, and helpers/constants contain GUER scaffolding, but server economy/team init and Server_ChangeSideSupply.sqf register only west/east temp-channel handlers. Partially scaffolded but effectively unsupported for live economy play. Add wfbe_supply_temp_resistance, payload validation and three-way smoke before enabling resistance economy. Use resistance supply scaffold.
Town patrol game-over loops server_patrols.sqf and server_town_patrol.sqf use `while {!WFBE_GameOver
Hosted server FPS loops origin/master still has branch-only sleep in serverFpsGUI.sqf:1-12 and monitorServerFPS.sqf:1-8; this docs branch adds early !isDedicated exits, while origin/release/2026-06-feature-bundle keeps a guarded serverFpsGUI.sqf publisher and removes the redundant Chernarus monitor path. Branch-local/release patched; not shipped on master; smoke pending. See Hosted server FPS loop sleep.
Old map blink loop Client_BlinkMapIcons and AddUnitToTrack compiles plus old exec are commented; newer singular Client_BlinkMapIcon and bookkeeping are active. Legacy replacement. Avoid resurrecting old loop without perf review.
Server map blinking units Server_MapBlinkingUnits.sqf exec is commented in Init_Server.sqf. Disabled/legacy.
Old WASP init block initJIPCompatible.sqf contains a commented WASP init block marked as old and resource-heavy. Legacy/deferred removal. Individual WASP scripts still exist and may be called elsewhere.
Server FPS compile variable WFBE_CO_FNC_monitorServerFPS compile lines are commented, but Init_Server.sqf later execVMs Server/Module/serverFPS/monitorServerFPS.sqf. Not broken; document the direct exec path.
Static-defense HC update-back DR-42 verified Client_DelegateAIStaticDefence.sqf:28 comments out the update-delegation-static_defence send-back, unlike town-AI delegation (Client_DelegateTownAI.sqf:35) which reports vehicles back to Server_HandleSpecial.sqf. Partial headless feature. HC-created static-defense units are not recorded by the server for cleanup/accounting/re-delegation unless the update-back path is restored or the one-way behavior is accepted. Use HC delegation/failover before patching.
Server init duplicate binds DR-43 re-check found live duplicate binds in Init_Server.sqf for WFBE_CO_FNC_LogGameEnd (:64 and :89), WFBE_SE_FNC_PlayerObjectsList (:69 and :91) and WFBE_SE_FNC_AwardScorePlayer (:83 and :93), plus commented duplicate remnants for AFK kick, server FPS and MASH marker. Low-risk cleanup. The live duplicates currently bind the same files and the second wins; de-duplicate to reduce maintenance traps, especially around the DR-13 game-end cleanup.
Volumetric clouds Parameter exists but is forced disabled in constants and client init. Intentional optimization.
Vanilla/modded generated mission path SqfFileGenerator.cs actively targets source + Vanilla, while the modded path is commented/TODO and package generation currently does not include Modded_Missions. Vanilla is the maintained generated target; modded missions are divergent/stubbed until the tooling path is restored and validated.
Dangerous CRV7PG loadouts LoadoutManager has WARNING_GAME_CRASH_DO_NOT_USE_IN_LOADOUTS_* weapon/ammunition classes, and WILDCAT.cs references one. High-risk data. Keep these warnings visible when changing loadouts.
Gear menu cleanup GUI_BuyGearMenu.sqf has TODOs about securing vanilla/removing unused code, refreshing targets, vehicle target content and vehicle/backpack templates. Partial UI cleanup. See Gear, loadout and EASA atlas, Gear template profile filter, Vehicle cargo loop bounds and Service menu affordability guards.
Gear profile template filtering Client_UI_Gear_SaveTemplateProfile.sqf:33,52,75 references undefined _u_upgrade; :19 sets _template_upgrade, and Client_UI_Gear_AddTemplate.sqf:15,136-148 shows _u_upgrade belongs to the add-template helper. Confirmed persistence/filter bug, patch-ready. Saved profile-template upgrade filtering should not be trusted until the variable is replaced. Use Gear template profile filter.
Respawn custom-gear penalty mode 5 Client_OnRespawnHandler.sqf:54-70 disables charging at base/HQ structures but still sets _skip = true when funds are below the custom-gear price. Confirmed local correctness edge, patch-ready if mode 5 means charge-on-mobile only. Use Respawn/death lifecycle before patching or changing respawn gear semantics.
Vehicle/backpack cargo equip loop bounds Common_EquipVehicle.sqf:27,33,39 and Common_EquipBackpack.sqf:35,41 loop from 0 to count(_items), while Client_GetVehicleContent.sqf:20 uses the correct count(_items)-1 pattern. Confirmed reliability bug, patch-ready. Change all five equip loops to count(_items)-1, then smoke vehicle and backpack cargo application. Use Vehicle cargo equip loop bounds.
Service menu affordability guards GUI_Menu_Service.sqf:140-190 enables buttons from cached prices before recalculating prices; :196-222 rearm/refuel debit with no action-time price/funds/context guard, while repair/heal only guard price > 0. Confirmed local correctness bug, patch-ready. Add action-time price, funds and usable-context guards before debiting/spawning support threads. Use Service menu affordability guards.
Gear/EASA/service purchase authority GUI_BuyGearMenu.sqf applies gear and deducts funds client-side; GUI_Menu_EASA.sqf calls EASA_Equip and ChangePlayerFunds client-side; Claude DR-28 also traced the service-menu affordability inconsistency. Pasteur's EASA pass found exact-funds purchases are rejected and stale service/EASA vehicle context can debit/show success without equipping. Client-authoritative legacy path plus local correctness bugs. DR-28 completes the economy authority class: build, buy, sell, supply, upgrade, ICBM and gear/service are all client-authoritative. Public-server hardening needs a server ledger/effect-validation design or BattlEye script filtering; local fixes live in Gear/loadout/EASA atlas, service guards and the server authority map.
UI IDD/display-handle collisions DR-17/DR-25a and Wave I found RscMenu_EASA and RscMenu_Economy both use idd = 23000; RscOverlay and OptionsAvailable both use idd = 10200. Wave Q added that EndOfGameStats has unique idd = 90000 but shares uiNamespace["currentCutDisplay"] with OptionsAvailable, while RHUD/action-icon recovery can re-cut OptionsAvailable during endgame display work. RHUD is folded into OptionsAvailable, not a standalone Client/RHUD subtree. Confirmed UI/resource risk. Normal dialog flow closes prior menus, so this is a maintenance/runtime hazard more than guaranteed visible breakage, but the endgame/RHUD handle collision is directly patch-ready. Assign unique IDs, split title display handles or gate RHUD/action-icon recreation during endgame, audit findDisplay assumptions and smoke EASA/Economy/RHUD/action/endgame title resources; see UI IDD collision repair.
Commander task assignment UI Rsc/Dialogs.hpp:2052-2053 exposes the Set Task button and GUI_Menu_Command.sqf:315-344 gathers task data/HQ speech, but the SetTask send calls are commented at :335-337 and :343. Visible partial UI. Do not document command task orders as active until the send path and JIP/spam behavior are restored or the UI is hidden.
Generated EASA/balance output LoadoutManager writes Client/Module/EASA/EASA_Init.sqf and Common/Functions/Common_BalanceInit.sqf; Common_BalanceInit.sqf exits on server while server buy code still calls BalanceInit. Generated/locality risk. Change C# data first, inspect generated diffs, and test spawn versus rearm behavior separately.
Discord sample/config hygiene DiscordBot/preferences_sample.json contains concrete sample IDs and a production-style DataSourcePath; DiscordBot/FileConfiguration.cs and GameData.cs have fallback paths to C:\a2waspwarfare\Data. Governance cleanup. Replace real-looking sample IDs with placeholders and document one intended config source. No token is committed.
DiscordBot JSON deserialization Claude DR-31 verified DiscordBot/src/ExtensionData/GameData/GameData.cs reads database.json with Newtonsoft TypeNameHandling.All on a 60-second status timer, at startup and from a command path. High local-write-gated RCE risk. Use TypeNameHandling.None for the flat GameData DTO and remove the dead .Auto deserialization helper. Secret hygiene and command auth are otherwise documented as good.
DiscordBot command/config ambiguity ProgramRuntime.cs says slash-command install is temporarily disabled, then immediately calls CommandHandler.InstallCommandsAsync(). The bot also has FileConfiguration.cs config support while active GameData reads Preferences.Instance.DataSourcePath ?? C:\a2waspwarfare\Data. Operational ambiguity. Document one intended config source and make slash-command install behavior explicit before deployment.
GLOBALGAMESTATS extension a2waspwarfare_Extension only implements GLOBALGAMESTATS; Claude DR-29 verified this path is not an SQF RCE path today because output is discarded, but it has dormant deserialization and async-write risks. Deployment/tooling risk. Remove or harden dead TypeNameHandling.Auto load path and fix async void file writes before treating the extension as robust persistence.
GLOBALGAMESTATS headless-player count GlobalGameStats.sqf derives player count and then uses abs(_playerCount - 1) to exclude one assumed headless client. Operational reporting edge. 0-HC, multi-HC or unusual bot/player states can misreport Discord/server stats; document or rederive HC count explicitly.
AntiStack DB extension AntiStack calls a separate A2WaspDatabase DLL that is absent from the repo; enabled-mode wrappers still compile returned strings. Current source now has a default-enabled parameter plus disabled-mode loop/wrapper guards. Wave I also confirmed launch-connect client-pushed identity and unchecked disconnect DB writes. Deployment dependency split. Do not assume building Extension satisfies AntiStack. Use AntiStack database extension audit and join/disconnect lifecycle before changing join checks, score persistence, compensation or DB wrappers.
WASP HQ recovery locality Action_RepairMHQDepot.sqf performs local payment/gating and pre-repair side effects, then requests the server repair path; Server_MHQRepair.sqf owns actual HQ respawn, marker cleanup and state reset. Authority-light legacy action. The risky part is client-side gating and pre-repair effects, not the final HQ object lifecycle.
WASP marker dialog busy-spin WASP/global_marking_monitor.sqf polls up to two seconds for display 54 / map UI state without a sleep; source and Vanilla both still carry it. Low-risk performance nit. Add a tiny sleep/backoff before expanding WASP marker behavior; see Performance opportunity sweep and Client UI systems atlas.
CI/reference validation gaps The docs branch now adds .github/workflows/docs.yml for wiki validation and MkDocs build, but it still does not build LoadoutManager, DiscordBot, the legacy x86 Extension or generated-drift checks. Partial tooling. Treat docs validation as present on the docs branch, not full release CI. Add .NET/tool builds, generated-mission drift, SQF reference scans and machine-file schema checks.
Stale old upgrade dialog RscMenu_Upgrade points to missing Client/GUI/GUI_Menu_Upgrade.sqf; the live main menu opens WFBE_UpgradeMenu / GUI_UpgradeMenu.sqf instead. Confirmed stale UI path. Do not revive without deleting/replacing the old resource class.
Extension build assumptions Extension/Extension.csproj is a .NET Framework 4.8 x86 old-style project using RGiesecke.DllExport/UnmanagedExports packages from ../packages; it is not a normal SDK-style dotnet build target. Tooling/deployment gap. Document MSBuild/package requirements before asking agents to build or ship the Arma extension.
Generated version.sqf boot dependency description.ext:39 and initJIPCompatible.sqf:4 both include version.sqf, and no checked-in version.sqf exists anywhere in the source tree. Fresh-checkout boot hazard. Pack/build inputs must supply terrain version.sqf at generation time before testing or release packaging.
LoadoutManager root and packaging hazards FileManager.FindA2WaspWarfareDirectory() now accepts either an ancestor named a2waspwarfare or repo-root markers; ZipManager can skip packaging when A2WASP_SKIP_ZIP is set. Tooling risk reduced; release packaging still needs 7za. Use parameters/build inputs and Tools/build before claiming generated propagation.
Suspect clickable-text sound config Rsc/Ressources.hpp defines RscClickableText.soundPush[] = {, 0.2, 1};. Likely malformed resource config; verify in-game parser behavior before reusing this base control.
Buy gear partials GUI_BuyGearMenu.sqf includes self-documented TODOs for target refresh, vehicle target content and template scope. Partial UI cleanup; avoid expanding templates until gear/vehicle/backpack behavior is mapped.
Fast travel fee GUI_Menu_Tactical.sqf TODO mentions travel fee/mod parameter work. Missing/unfinished feature. Route through Support/specials and tactical modules atlas.
Base/town dynamic logic TODO Common/Init/Init_Common.sqf has a TODO around dynamic logic presence. Low-level init cleanup candidate.
CoIn border TODO Client/Module/CoIn/coin_interface.sqf notes temporary border logic should move if logic position changes. Construction UI risk. Route through Construction and CoIn systems atlas.
AI attack radio/combat tuning Server_AI_SetTownAttackPath.sqf TODOs mention combat mode, speed and radio on waypoint completion. Enhancement backlog. Route through AI commander autonomy audit before changing AI behavior.

Broken Feature Candidate: AI Supply Logistics

Canonical page: Abandoned feature revival, with AI-specific context in AI commander autonomy audit. This register keeps only the owner-decision routing summary.

AI_UpdateSupplyTruck.sqf is present and loops over wfbe_ai_supplytrucks, but it cannot run correctly because the compile is disabled and the referenced supplytruck.fsm is absent. PR #1 correctly defers autonomous supply helicopters because the AI logistics base is incomplete.

Claude sharpened the status on 2026-06-01: the feature is not cleanly inert. In Server/Init/Init_Server.sqf, the compile line is commented, but the per-side init still calls [_side] Spawn UpdateSupplyTruck; when supply system 0 and AI commanders are enabled. Current source has two default layers: Rsc/Parameters.hpp:92-97 defaults the AI commander mission parameter to disabled, while Common/Init/Init_CommonConstants.sqf:161 falls back to automatic supply system 1 if no parameter provides the supply-system value. Normal play therefore avoids the branch, but if an admin selects truck supply and enables AI commanders, the server can hit a nil-code spawn error; restoring the compile would still fail later because Server/FSM/supplytruck.fsm is missing. See AI commander autonomy audit.

PR #1 Supply-Vehicle Killed Handler Guard

Canonical page: Supply mission authority cleanup, with branch context in Current supply heli PR.

PR #1 adds or extends Server/Module/supplyMission/supplyMissionStarted.sqf so supply vehicles can award interdiction supply when destroyed. Current origin/feat/supply-helicopter sets wfbe_supply_killed_eh_set before adding the Killed handler (supplyMissionStarted.sqf:13-30), so the older "stacked handler" finding is stale for the current branch. Keep the guard, smoke repeated load/deliver/destroy cycles before merge and use a handler-ID/removal plan if future side effects require true teardown/re-arm behavior.

Current master is different: it has no supply-vehicle Killed handler, but duplicate mission starts can still create parallel tracking loops. supplyMissionCompleted.sqf clears SupplyAmount and SupplyFromTown, which bounds repeated reward risk, but it does not prove idempotency or eliminate repeated server/PV work.

Missing Feature Candidates

Continue Reading

Previous: Integration trust boundary audit | Next: Hardening roadmap

Related: Pending owner decisions | Abandoned feature revival | Source fix queue | Progress dashboard | Evidence: Deep-review findings, Codebase coverage ledger | Agent files: agent-feature-status.jsonl, agent-hardening-backlog.jsonl

Main map: Home | Fast path: Quickstart | Agent file: agent-context.json

Sidebar

Clone this wiki locally