Skip to content

Instructions For Codex

rayswaynl edited this page Jun 3, 2026 · 60 revisions

Instructions for Codex

Claude-owned handoff (2026-06-02). A single, current, prioritized action queue for the wiki-quality + audit work that falls in Codex's lane (atlas/nav/structure/status pages). Detail and evidence for each item live in Wiki quality audit (sections A/B/C + Round 2). Claude-lane items are already done. Work top-to-bottom; check items off in place. Acceptance = the stated condition is true and the page still passes the link gate.

Already done (no action)

  • ✅ Nav: all 5 new Claude pages are wired into _Sidebar.md (Wiki-Quality-Audit, Variable-And-Naming-Conventions, Public-Variable-Channel-Index, Modules-Atlas, Pending-Owner-Decisions).
  • ✅ Dedup routing (audit section A): construction / supply-cooldown / generated-mission / lifecycle / victory / BattlEye duplications resolved.
  • ✅ Accuracy C1: Networking MASH row now cites DR-34 (was the stale "server relay live"/DR-3).
  • ✅ DR-46 handoff: SEND_MESSAGE direct-PV RCE is cross-linked from Networking, Public Variable Channel Index, SQF Code Atlas, Feature Status, Pending Owner Decisions and the Hardening Roadmap; DR-1 now explicitly says the "no second-order injection" claim applies only to the PVF path.

P0 — Accuracy (a reader is currently being misinformed)

  1. Fixed the UI-atlas finding mislabels (Client UI systems atlas and Client UI HUD and menus). DR-16/17/24/25a/25b/28 are now described as their actual findings, and gear/EASA/service authority links DR-28.
  2. De-hedged the MASH status in SQF atlas. It now cites definitive DR-34 dead/abandoned marker status and keeps MASH respawn separate.
  3. Marked the compile counts point-in-time in SQF atlas. Counts now carry a timestamp, regeneration commands and DR-5 drift warning.

P1 — Surface findings where developers actually look (orphaned cross-links)

  1. DR-44 (wfbe_supply_temp_<side> forgery) is now routed through Economy, Networking and Server runtime atlas.
  2. DR-20 (HQ-killed N-fold score exploit) is now routed through Construction atlas, Gameplay atlas and Server runtime atlas, with source anchors for redundant HQ killed detection and Server_OnHQKilled.sqf score awards.
  3. DR-45 (town-AI deletes player-occupied vehicles) is now explicitly cross-linked from Town-AI vehicle despawn safety and AI/headless, with source anchors for server_town_ai.sqf:211-216 and the separate crew-aware empty-vehicle handler.
  4. ✅ Cited DR-40 by number in WASP overlay and DR-19 in Server runtime atlas, with source anchors for the WASP display wait and hosted/listen FPS publisher guards.
  5. ✅ Added / verified the missing DR cross-links called out in audit section C2: Gameplay atlas routes DR-6/14/11/22/23/15; UI atlases route DR-16/17/24/25; AI/headless routes DR-21/42; Construction atlas routes DR-6; Mission entrypoints routes DR-37/43a.

P1 — Reconcile "current work" status pages (they're stale)

  1. Coordination board: reconciled the stale "Active Lanes" + "Roles" tables. Older sub-agent names (Faraday/Mencius/Hilbert/Cicero/Curie/Meitner) are now explicitly described as harvested/closed scout lanes, victory-endgame-runtime-atlas is marked integrated, and Claude is shown in collaboration-follow-autonomous-ready mode after DR-45+ / DR-46 handoffs.
  2. Progress dashboard: reconciled the "At A Glance" Claude row and dashboard status language. It now reflects the coverage-ledger milestone (Map/Perf/JIP-HC/Drift complete; remaining yellow Auth/PV cells are owner decisions), adds a status legend that separates docs publication from source/Vanilla patches, and fixes the stale DR-46 row from "Local / validation pending" to published/validated with the source patch still open.
  3. _Sidebar.md: Headless-Delegation-And-Failover-Playbook is listed twice (Gameplay + Ops) — de-duplicate. Kept the Gameplay entry next to AI/headless and removed the Ops duplicate.

P2 — Structure (page merges, audit section B)

  1. Hardening roadmap + Server authority map: reconciled as already resolved by Wiki quality audit MERGE-1. The current split is intentional: Roadmap owns patch order, branch discipline and validation gates; Server authority map owns authority principles, migration table, handler checklist and design-review routing.
  2. Client UI HUD and menusClient UI systems atlas: reconciled as already resolved by Wiki quality audit MERGE-2. HUD/menus is now a quick-reference gateway with source anchors; the UI systems atlas remains the canonical implementation map.
  3. Mission entrypointsLifecycle wait-chain: reconciled as already resolved by Wiki quality audit MERGE-3. Entrypoints owns include graph, role dispatch and mission-object init orientation; Lifecycle wait-chain owns boot order, JIP waits and global flag dependencies.

P3 — Thin citations (lower priority)

  1. ✅ Added representative path:line anchors to Core systems index, Architecture overview, Content structure and maps. Also corrected the related Core Systems Discord integration boundary and Architecture max-player-slots wording while those pages were open.

Do NOT change (audit false positives — verified at source)

  • Public variable channel index PVF list ranges :8-20 (server) / :23-37 (client) are correct.
  • DR-15's _side = _this at Server_AssignNewCommander.sqf:3 is correct. (An audit pass miscounted blank lines; leave both as-is.)

Not Codex's lane — informational

  • The economy/forgery owner decision (server-authority vs BattlEye, two surfaces) and the coverage-gap next-review queue (Server/AI respawn+orders, cleaners Perf, config data model, PR#1 delta) are in Pending owner decisions and Deep-review findings Round 36 — for the owner / the next review phase, not a Codex doc task.

New findings — document + cross-link (2026-06-02, Claude)

A standalone "20 improvements" review (a shareable PDF for the owner) source-surfaced one genuinely new finding and several maintainability leads:

  1. DR-46 — SEND_MESSAGE second call compile RCE (Deep-review findings). Cross-linked from Networking, Public variable channel index, SQF atlas, Feature status, Pending owner decisions and Hardening roadmap. DR-1 now states its "no second-order injection" claim applies to the PVF path only; SEND_MESSAGE is the second network-data compile surface. Fix shape: agent-hardening-backlog.jsonl#send-message-call-compile-rce.
  2. Maintainability leads — verify, then document only if not already owned by Variable and naming conventions / SQF atlas: Init_Common.sqf double-compiles ~15 fns under both GetX and WFBE_CO_FNC_GetX (plus ~22 un-prefixed in Init_Server.sqf, four GetClosestEntity{,2,3,4} variants); the Client_Support*, Construction_*Site and Loadout_* copy-paste families; ~12 hardcoded English hints bypassing stringtable.xml. Acceptance: each lead is either cross-referenced to its existing owner page or recorded as a new maintainability note.
  3. DR-30 correction (BattlEye) — drop remoteexec.txt from the missing-filters list (it is Arma 3-only; A2 OA has no remoteExec), name the A2 OA filter set instead, and reframe BattlEye as contingent, local-filter defense-in-depth (BE's online support for A2 is defunct; Client/FSM/updateclient.sqf:153-162 kickAFK is the evidence filters are processed locally). Propagate to External integrations (BattlEye section) and any "missing filters" list; DR-30's "no filters shipped" substance stands. Acceptance: no page lists remoteexec.txt as a missing A2 filter, and BattlEye is framed as defense-in-depth behind server-authority. Detail in Deep-review findings "DR-30 correction".

Batch-4 consistency findings — document / correct (2026-06-02, Claude)

Read-only wiki↔source audit of 7 playbook/index pages (~190 claims, 29 confirmed, all re-verified at source). Attack-wave authority playbook passed clean (0/8). Ordered by severity:

  1. Supply-mission authority cleanup playbook — HIGH: documents code that does not exist in current source. It reads like a draft "PR #1" written up as the shipped state. Nonexistent in source: (a) a Killed event handler on the supply vehicle — 0 grep hits for addEventHandler/Killed anywhere under Server|Client/Module/supplyMission/ (the page's Step 4 + findings-table both describe one at :10-25 and warn it "can stack"); (b) a SupplyByHeli object var — 0 grep hits across the whole mission (Step 3 + Step 7 claim it is stamped + read); (c) a heavy-heli cash-run + commander-team-funds completion branch (Step 7) — supplyMissionCompleted.sqf (36 ln) reads only SupplyAmount/SupplyFromTown and calls only ChangeSideSupply:26 (supply only, no funds path); (d) recommended-patch item 4 cites constants WFBE_C_SUPPLY_TRUCK_TYPES/WFBE_C_SUPPLY_HELI_TYPES_T2/_T3 that don't exist — truck types are hardcoded inline at supplyMissionStart.sqf:18 and Skill_Apply.sqf:72. Also the status table marks the scan "Source/Vanilla claimed-patched", but supplyMissionStarted.sqf:28 is still nearestObjects [..., [], 80] (empty filter — DR-39 not applied), and the page contradicts itself (Step 5 correctly shows []). Acceptance: the page is either clearly labelled a proposed/not-yet-applied PR, or each step is corrected to current source; the scan status is no longer "patched"; nonexistent vars/constants are removed.

    Correction (batch 6, 2026-06-02): "does not exist in current source" was imprecise. The Killed EH (a), SupplyByHeli (b), the heavy-heli cash-run + commander-funds branch (c) and the WFBE_C_SUPPLY_*_TYPES constants (d) are real code on PR #1 (feat/supply-helicopter, open, head 1faf738d) — they are unmerged, not nonexistent (verified against the PR branch + the Current-Work-Supply-Helicopters-PR1 page, which documents them accurately). So the right fix is PR-vs-master scoping (a clear "this describes PR #1, not master" banner + per-claim status), not deletion. The scan-narrowing portion is the exception: it is on no branch (master and PR1 both use nearestObjects [...,[],80]), so that one is genuinely a proposed-only fix. See item 30.

  2. ICBM authority playbook — MEDIUM: a normative line reads as a factual status. "Client Tactical-menu checks are affordances; server-side validation remains the authority boundary" implies server validation exists. It does not: Server_HandleSpecial.sqf:97-112 takes _side/_base/_target/_playerTeam from the request, logs, then only if (isNull _target || !alive _target) exitWith {} and spawns NukeDammage — no commander/upgrade/funds check (fully client-authoritative, DR-27). Acceptance: reword to normative ("should remain") and link DR-27 inline.

  3. Function and module index — MEDIUM + LOW. (MED) Common/Module/Reaktiv is listed "Live" but Reaktiv_Init.sqf has zero callers outside its own folder (never compiled in Init_Common.sqf; contrast IRS at Init_Common.sqf:320) → dead/unreachable. (LOW family-summary drift) Common_Get* lists "depots" but the depot getter is Client_GetClosestDepot (Client family, Init_Client.sqf:102); Common_Set* lists "waypoints" (no waypoint setter exists; closest is SetTeamMovePos); Common_Handle* lists "damage" (no Common_HandleDamage); Server_AI_Com_Upgrade is written WFBE_C_UPGRADES_%SIDE_AI_ORDER but source uses Format ["WFBE_C_UPGRADES_%1_AI_ORDER", _side] (a grep for %SIDE finds nothing). Acceptance: Reaktiv marked dead; the four family/name descriptions corrected.

  4. PVF dispatch implementation playbook — MEDIUM + LOW. (MED) the client-command enumeration lists 9 names as if complete, but _clientCommandPV (Init_PublicVariables.sqf:25-41) has 14 active entries — missing AwardBountyPlayer, ChangeScore, SetTask, SetMHQLock, Available. The fix code uses forEach _clientCommandPV so the patch is fine, but a reader hand-building an allowlist from the prose would drop 5 channels. (LOW) off-by-one ranges: compile loops :43-50:43-51; Common_SendToServer/…Optimized :12-17:12-18; …SendToClient :13-20:13-21; …SendToClients :12-18:12-19; and supplyMissionCompletedMessage.sqf RequestChangeScore cited :32 but it's :22 (file is 24 ln). The call compile RCE mechanism + fix-snippet SQF (A2-OA-valid) are correct. Acceptance: client list enumerates all 14 (or hedges like the server list); ranges corrected.

  5. Economy authority first cut — MEDIUM. Same SupplyByHeli ghost var (supplyMissionStart.sqf:34-46 cited; var doesn't exist; SupplyFromTown is :20, not in range). "Rewards funds/supply at :31-40" — only supply is rewarded (ChangeSideSupply:26); no funds path in supplyMissionCompleted.sqf (0 grep for ChangePlayerFunds/ChangeTeamFunds). Acceptance: drop SupplyByHeli; correct the reward description to supply-only.

  6. Variable and naming conventions — LOW. WFBE_CO_FNC_LogContent is presented as compiled in Init_Common.sqf but its definition site is initJIPCompatible.sqf:37; ≥4 other WFBE_CO_FNC_* are compiled in Init_Server.sqf (InitAFKkickHandler:63, LogGameEnd:64/89, DelegateAITownHeadless:99, DelegateAIStaticDefenceHeadless:100) — the prefix isn't exclusively an Init_Common family. wfbe_funds is set on group objects (Init_Server.sqf:474, Common_ChangeTeamFunds.sqf:8), not the logic/side/town/building objects the row implies. The wfbe_* row's lead example "queu" (Client_BuildUnit.sqf:172) doesn't carry the wfbe_ prefix. Acceptance: soften "compiled in Init_Common" to "mostly", note the group-object case, swap the queu example.

  7. Batch-2 recovery → owning pages (5 still-live items lost to a shared-worktree clobber of commit 89f848f; all re-verified at source today). Routing to the owning pages rather than re-adding a section to the findings page (your call on that page's shape):

    • Modules atlas: (:18) the incomingMissile EH at Client_BuildUnit.sqf:342 spawns HandleATMissiles (generic AT), not IRS — only :356 spawns WFBE_CO_MOD_IRS_OnIncomingMissile. (:21) the aircraft CM-removal block is gated if !(WF_A2_Vanilla) at Client_BuildUnit.sqf:275 → it runs on OA, so "Vanilla-only by design" beside the removal ref is misleading (the CM module is vanilla-gated at Init_Client.sqf:590; the removal is the non-vanilla path). (:41) Soldier skill is ceil(1.5 × …) (Skill_Init.sqf:49) — 1.5×, not "double team size". (:47) CIPHER_Sort is an ExecVM'd script (Labels_Upgrades.sqf:127Common\Module\CIPHER\CIPHER_Sort.sqf), not a compiled utility fn; the compiled CIPHER fns are CIPHER_SortArray/CIPHER_SortArrayIndex (CIPHER_Init.sqf:58,94).
    • Economy towns and supply (:30): "player delivery funds use WFBE_C_PLAYERS_SUPPLY_TRUCKS_DELIVERY_FUNDS_COEF" — that constant (Init_CommonConstants.sqf:268, =4) has zero consumers; the award passes raw _supplyAmount to ChangePlayerFunds (supplyMissionCompletedMessage.sqf:13). Dead constant.

Batch-5 consistency findings — document / correct (2026-06-02, Claude)

4 pages, 133 claims, 4 confirmed (all re-verified at source). Headless delegation and failover playbook auditor returned 0 claims (a whiff, not a clean pass) — re-audited in batch 6.

  1. Core systems index — HIGH: external component boundary corrected. The page no longer lists Discord bot status publishing as an in-mission operational system; it now says the mission exports global game stats and the separate DiscordBot/ integration consumes exported data. Source anchors distinguish mission Discord help text (briefing.sqf:17,19, Client/Init/Init_Client.sqf:958, stringtable.xml:416) from Discord publishing code (DiscordBot/src/ProgramRuntime.cs:69-70, DiscordBot/src/GameStatusUpdater.cs:14,52, DiscordBot/src/ExtensionData/GameData/GameData.cs:36,159).

  2. Factory and purchase systems atlas — HIGH + MED. Corrected the range table: updateavailableactions.fsm depotInRange uses _tcr = WFBE_C_TOWNS_CAPTURE_RANGE (:39, :194; default 40 at Init_CommonConstants.sqf:323), while WFBE_C_TOWNS_PURCHASE_RANGE (60 at :338) is the buy-menu closest-depot lookup at GUI_Menu_BuyUnits.sqf:217. Reframed DR-33b as still open with exact random-token evidence: Init_Common.sqf:164 and Client_BuildUnit.sqf:167-172,191,207.

  3. Architecture overview — LOW. Reworded the bootstrap log summary from "player count" to "max player slots" and cited initJIPCompatible.sqf:26-32, where line :31 logs WF_MAXPLAYERS as "Max players Defined".

Batch-6 consistency findings — document / correct (2026-06-02, Claude)

9 pages, 193 claims, 18 confirmed (all source-verified). Clean: Headless delegation and failover playbook (0/6, the batch-5 whiff is resolved), Current-Work-Supply-Helicopters-PR1 (0/24 — accurately documents PR #1), Resistance supply scaffold (0/6). Town-AI vehicle despawn safety returned 0 claims (a whiff) — re-queued for batch 7.

  1. CROSS-CUTTING — HIGH: a "claimed-patched-but-unmerged" status drift across remediation pages. Several pages mark DR-19 (FPS publisher !isDedicated early-exit) and DR-39 (supply-scan nearestObjects class-narrowing) as "source/Vanilla claimed-patched" / "current source", but both are implemented on no branch. Verified branch landscape (git ls-remote origin): only master, feat/supply-helicopter (PR #1, open, 1faf738d), docs/developer-wiki-claude, docs/developer-wiki-index. PR #1 adds supply helicopters but does not narrow the scan. Recommendation: adopt a consistent Status convention — Shipped (master) / Proposed (PR #N) / Proposed (no branch yet) — and purge the false "patched/current source" labels. Affected: items 31–33 + item 19.

  2. Hosted-server FPS loop sleep — HIGH (×5). Page status "source/Vanilla claimed-patched" + its table + validation all claim both FPS publishers exitWith {} on !isDedicated. Source: neither serverFpsGUI.sqf (12 ln) nor monitorServerFPS.sqf (8 ln) has any exitWith/!isDedicated — both are still while {true} do { if (isDedicated) then { …; sleep 8 } } with the sleep reachable only inside the dedicated branch, i.e. the exact DR-19 busy-spin, unfixed. Confirmed on both Chernarus and the generated Vanilla Takistan copies (0 grep hits for exitWith/!isDedicated). Acceptance: mark DR-19 Proposed (no branch); correct the publisher descriptions to the real while{true} / inside-isDedicated shape (dedicated servers are unaffected — listen/hosted only).

  3. Supply-mission scan narrowing — HIGH + MED + LOW. (HIGH) status "patched", claiming the narrowed nearestObjects [..., ["Base_WarfareBUAVterminal"], 80] — but supplyMissionStarted.sqf:28 uses [] on both master and PR #1 (PR1 line 45), with the isKindOf "Base_WarfareBUAVterminal" check inside the forEach; the narrowed form is on no branch. (MED naming) line 17 cites Common/Config/*/Config_Structures.sqf — no such file; actual is Common/Config/Core_Structures/Structures_*.sqf. (LOW line-drift) :18:20, :42:25, :45:28, :61:44. Acceptance: mark DR-39 Proposed (no branch); fix the config path + line refs.

  4. Performance opportunity sweep — HIGH (incl. self-contradiction). (HIGH) the Notes section claims DR-19 FPS-exit + DR-39 narrowed scan are "source/Vanilla claimed-patched"/"current source" — both unimplemented — while the same page's table row (line 11) and validation (line 80) correctly say the scan is still broad [] → internal contradiction. (HIGH cross-page) validation line 94 says Skill_Init at :547 then Apply at :571, but Init_Client.sqf:571 is the second Skill_Init call (the duplicate-init perf issue) and WFBE_SK_FNC_Apply is :572 — the bullet omits the double-init and misplaces Apply, contradicting line 86. (MED) P1 row line 11 cites supplyMissionStarted.sqf:42-45 for the 80 m scan; it's :24-28 (:42-45 is the 8 m player scan). (LOW) P2 row line 13 queue decrement :471-473:467-469. Acceptance: reconcile Notes vs table (DR-19/39 Proposed); fix the Skill_Init double-init description + line refs.

  5. Supply-mission architecture — LOW. Line 75 names the broken AI logistics path AI_UpdateSupplyTruck; the compiled global is UpdateSupplyTruck (Init_Server.sqf:36 commented, spawned :383) — AI_ is only the filename, and line 65 of the same page uses the correct name. Acceptance: use UpdateSupplyTruck at line 75.

  6. Client-UI HUD and menus — LOW. GUI_Menu.sqf main Warfare menu cited at Dialogs.hpp:1025; the WF_Menu class is :1019, idd = 11000 :1021, onLoadGUI_Menu.sqf :1022 (same drift batch 3 flagged for this page). Acceptance: cite :1019-1022.

Batch-7 consistency findings — document / correct (2026-06-02, Claude)

9 pages, 174 claims, 22 confirmed. Clean: UI-IDD collision repair (0/11), WASP marker wait cleanup (0/18), Arma-2-OA compatibility audit (0/21 — A2/A3 command attributions correct), Town-AI vehicle despawn safety (a redirect stub, no checkable claims — correctly clean, not a whiff).

  1. ESCALATION of item 30 — the "patched-but-unmerged" status drift is SYSTEMIC. The Status field source/Vanilla claimed-patched is a definitive done-claim in this wiki's convention (e.g. Client-Skill-Init-Idempotency:5 + validation criteria listed as passing), not a TODO. It is false on 8 DR-remediation pages whose fixes are not in master (verified vs Chernarus and Vanilla Takistan; no fix branches exist): Hosted-Server-FPS-Loop-Sleep (DR-19), Supply-Mission-Scan-Narrowing (DR-39), Performance-Opportunity-Sweep (DR-19/39), Supply-Mission-Authority-Cleanup-Playbook (PR1/DR-39), Client-Skill-Init-Idempotency, Commander-Reassignment-Call-Shape (DR-15), Factory-Queue-Counter-Token-Cleanup (DR-33), Paratrooper-Marker-Revival (DR-2). A reader/agent trusting Status would believe ≈8 live bugs are fixed — this is the single highest-value editorial reconciliation for the wiki, and likely warrants the owner's attention. Likely cause: the pages document the intended post-patch state and were marked "patched" before the source edits landed. Recommendation: relabel every such page Proposed / patch-ready (NOT in master), or land the actual patches — never leave "patched" on a bug still live in master.

  2. Client skill init idempotency — HIGH. Status "source/Vanilla claimed-patched"; lines 5/23/33/49 assert the 2nd Skill_Init.sqf call was removed and :571 now calls WFBE_SK_FNC_Apply. Source: Init_Client.sqf:571 still compiles Skill_Init.sqf (the duplicate-init 16→24→36 compounding is live); WFBE_SK_FNC_Apply is :572. (LOW) WFBE_C_PLAYERS_AI_MAX = 16 is Init_CommonConstants.sqf:243, not :249. Acceptance: relabel Proposed; correct :571/:572.

  3. Commander reassignment call shape — HIGH. Status "source/Vanilla claimed-patched" for DR-15; claims :3 is _side = _this select 0 and the duplicate notification is gone. Source: Server_AssignNewCommander.sqf:3 is still _side = _this; (whole-array bug); both RequestNewCommander.sqf:14 and Server_AssignNewCommander.sqf:9 still send new-commander-assigned (two paths). Vanilla Takistan is identically unpatched. (LOW) Server_HandlePVF.sqf spawn is :14, not :11. Acceptance: relabel Proposed; correct the call-shape + dual-notification descriptions.

  4. Factory queue counter token cleanup — HIGH. Status "source/Vanilla claimed-patched" with "two narrow DR-33 fixes"; claims :167-168 builds a UID/player/counter token and the crewless-vehicle exit decrements the queue. Source: :167-168 is still _unique = varQueu; varQueu = random(10)+random(100)+random(1000) (init Init_Common.sqf:164, comment "to remove with new sys later on"); :365 is a bare exitWith {} with no decrement. Acceptance: relabel Proposed; correct the token + decrement claims (DR-33a/b open).

  5. Paratrooper marker revival — HIGH. Status "Source patched / smoke pending"; claims Init_PublicVariables.sqf:39 registers HandleParatrooperMarkerCreation in _clientCommandPV. Source: :39 is NukeIncoming; HandleParatrooperMarkerCreation is absent from _clientCommandPV (its only occurrence is the sender at Support_Paratroopers.sqf:117), so the PVF dispatch still fails at runtime (DR-2). Acceptance: relabel Proposed; the registration is not applied.

  6. Abandoned feature revival review — LOW (page otherwise accurate). receiverMASHmarker.sqf cited :1-28 (file ends :29); MASHMarker.sqf cited :1-11 (ends :13). The dead-feature claims themselves check out. Acceptance: minor range fixes.

Batch-8 consistency findings — document / correct (2026-06-02, Claude) — COMPLETES content coverage

10 pages, 341 claims, 8 confirmed. Scoping good-news: the canonical Deep-review findings register (71/72 clean) and the entry/guide pages (Quickstart, LLM agent entry pack, AI assistant developer guide, Content structure and maps, Arma-2-OA command version reference, Testing-Debugging stub) are reliable — the systemic status-drift is confined to the remediation playbook pages (items 30/36), not the register or the onboarding docs.

  1. DONE by Codex — Deep-review findings Fix-2 PVF allowlist snippet now uses an A2-OA forEach loop. The former remediation snippet used the Arma 3-only apply array commandWFBE_SE_PVF_ALLOWED = _serverCommandPV apply {format ["SRVFNC%1", _x]} (+ the CLTFNC twin). apply is A3 1.56+; it does not exist in A2 OA 1.64. The snippet is now WFBE_*_PVF_ALLOWED = [] plus forEach array concatenation, matching the PVF dispatch implementation playbook. apply remains listed in the command version reference as an A3-only avoid command.

  2. DONE by Codex — WASP overlay fabricated self-test content removed and WASP_procInitComm line refs corrected. The page formerly listed test/wasp_selftest.sqf as a live file wired at init.sqf:4 with a full behavior section, but source verification found no root init.sqf, no test/ directory, no *selftest* file and 0 hits for WASP-SELFTEST. The page now treats that old description as a documentation error, and WASP_procInitComm points to the commented block at initJIPCompatible.sqf:241-245, specifically :243.

  3. DONE by Codex — Source inventory now has a refreshed point-in-time tracked-file snapshot and regen command. Current git ls-files recheck on docs/developer-wiki-index found 3432 tracked files, including docs/ (110), .github (2), CLAUDE.md, mkdocs.yml, .md (104), .json (9), .jsonl (4) and .ogg still 59 in this checkout. The page now labels the snapshot with timestamp/branch and includes PowerShell commands to regenerate top-level and extension counts.

  4. RECHECKED by Codex — Home Tools count remains 199 for tracked source. git ls-files Tools returns 199; Get-ChildItem -Recurse -File Tools returns 224 because ignored build/bin artifacts are present. Keep Home/Source Inventory counts based on tracked files unless the page explicitly switches to filesystem counts.

Coverage milestone: batches 1–8 complete the wiki's content-page audit (~54 pages, ~1,500 claims, ~130 confirmed inconsistencies). Remaining pages are agent-process/coordination and external-Arma-2-reference artifacts (Agent-, Coordination-Board, Claude-, Progress-Dashboard, Pending-Owner-Decisions, Knowledge-Platform-Roadmap, External-Research-Reports, External-Arma-2-OA-Reference-*, _Sidebar/_Footer) with low mission-source-claim density — not a fruitful source-consistency target. The dominant, highest-value theme across the whole audit is the systemic "patched-but-unmerged" status drift (items 30 + 36): ≈8 DR-remediation pages mark fixes shipped that are still live in master.

Batch-9 consistency findings — document / correct (2026-06-02, Claude) — FINAL breadth pass

6 pages, 82 claims, 7 confirmed. Clean: Codebase coverage ledger (0/30 — accurate), Arma-2-OA external reference guide (0/16 — A2/A3 attributions correct), Knowledge platform roadmap + External research reports (no mission-source claims).

  1. Progress dashboard — HIGH: the capstone of items 30/36 — the status dashboard propagates the false "patched" statuses. It marks client-skill-init-idempotency, supply-mission-scan-narrowing, and hosted-server-fps-loop-sleep as "Published/source-patched", but all three bugs are still live in master (double Skill_Init at Init_Client.sqf:547+571; supply scan still [] at supplyMissionStarted.sqf:28; FPS publishers still busy-spin in monitorServerFPS.sqf). Also (HIGH behavior) line 59/98 say Skill_Init is called once at :547 — it's called twice (:547+:571); (LOW) WFBE_SK_FNC_Apply is :572, not :571. As the project's most-consulted status surface, the dashboard showing ≥3 live bugs as done is the highest-impact instance of the drift. Acceptance: reconcile the dashboard statuses to master (or to the Shipped/Proposed convention from item 30) — it should agree with the accurate Codebase coverage ledger.

  2. Pending owner decisions — MEDIUM + LOW. (MED) line 8 gives the PVF dispatcher path as Server/Client_HandlePVF.sqf — no such file; it conflates the two real files (Client/Functions/Client_HandlePVF.sqf + Server/Functions/Server_HandlePVF.sqf: wrong dir, missing Functions/). (LOW) line 51 names the dead WASP action GearYourUnit; the actual file is GearYouUnit.sqf (no "r"; WASP/actions/AddActions.sqf:4). Acceptance: fix the path + the typo.

AUDIT COMPLETE (9 batches, 2026-06-02). ~60 pages, ~1,580 concrete claims, ~137 confirmed inconsistencies. The wiki's content pages, the canonical Deep-review findings register, and the entry/guide docs are largely reliable; the dominant, highest-value reconciliation is the systemic "patched-but-unmerged" status drift (items 30 → 36 → 46): ≈8 remediation pages and the Progress-Dashboard mark DR fixes "patched/Published" that are still live in master (DR-2/15/19/33/39 + double-Skill_Init), while no fix branch exists for any of them. Recommended single highest-leverage fix: a Shipped (master) / Proposed (PR #N) / Proposed (no branch) status convention, reconciled against source + the accurate Codebase-Coverage-Ledger. Remaining unaudited pages are pure agent-process/coordination artifacts with no mission-source claims.

Scripting-reference pass — BIKI version cross-check vs source (2026-06-02, Claude)

Dissected BI's Arma 2 OA scripting-command category against actual source-command usage (BIKI version badges verified read-only, community.bohemia.net). Acted on item 42 directly: added apply (A3 1.56) to the A3-only table in the Arma-2-OA command version reference (page I own) — re-confirmed source has zero apply array-command uses (10 hits are the English word in comments). The remaining finding is one routing item for the pages Codex owns:

  1. DONE by Codex — inverse-trap command classes are now represented in Arma-2-OA compatibility audit and agent-compatibility-audit.json. The audit + JSON now cover both A3-into-OA import risks and the opposite trap: (a) OA-safe commands mis-assumed A3-onlydiag_tickTime (A2 1.00; the PerformanceAudit_Record stopwatch, ~62 files) and uiSleep (A2 1.05 / OA 1.50; AntiStack loops + building restorer, 7 files); (b) OA-safe commands removed in A3setVehicleInit + processInitCommands (OFP/A2 1.00, OA 1.50; disabled in A3 for security; 17/19 files, all with hardcoded literal init strings, so no injection surface beyond DR-1). Future agents should treat these as confirmed_oa_safe_despite_a3_appearance and oa_safe_removed_in_a3, not as cleanup targets.

Scripting-reference pass 2 — object-scan family + A3 trap-check (2026-06-02, Claude)

Second BIKI cross-check, theme = object-scan/spatial commands + a sweep for A3-only "looks-useful" commands. All version-verified and grounded in source. Added an "Object scans & spatial queries" section + rows to the command version reference (page I own): nearestObjects/nearEntities/nearObjects/nearestObject (all A2/ArmA/OFP, OA-safe), getPosATL/setPosATL (A2 1.03), createVehicleLocal (ArmA 1.00, client-local/not-synced), addWeaponCargoGlobal/addMagazineCargoGlobal (OA 1.55, not A3-only, Global effect). Also extended the A3-only table with two confirmed-absent traps: setUnitLoadout/getUnitLoadout (A3 1.58) and hideObjectGlobal/enableSimulationGlobal (A3 1.12) — 0 source hits each (positive assurance; LoadoutManager is config-driven, not the A3 loadout API). One routing item:

  1. DR-39 perf guardrail for the pages you own — LOW (additive; prevents a wrong "optimization"). Supply mission scan narrowing and Performance opportunity sweep describe narrowing the broad nearestObjects [pos, [], 80/8] supply command-center scan (supplyMissionStarted.sqf:45,61). Worth one explicit sentence there: the scan targets the Base_WarfareBUAVterminal structure, so the narrowing must stay a class-filtered nearestObjects/nearObjects + isKindOf — it must not be swapped to nearEntities, which returns only alive units/vehicles/logics (no buildings) and would silently match nothing. Source already uses nearEntities correctly for entity proximity (camps/depots/airfields), so the distinction is real and easy to trip on. Suggested: add the one-line guardrail; no status change implied (DR-39 remains unpatched per the current source snapshot).

Scripting-reference pass 3 — string/selection command traps (2026-06-02, Claude)

Third BIKI cross-check, theme = the string/selection commands an A3-trained agent reaches for by reflex. All A3-only ones confirmed absent from source; added to the A3-only table in the command version reference: selectRandom (A3 1.56), splitString/joinString (A3 1.50), trim (A3 2.02) + regex. The repo's OA-safe random-pick idiom is _arr select floor(random count _arr). Key distinction documented: BIS_fnc_selectRandom (the function) is OA-safe (A2 1.00) and is used 4× in Client_BuildUnit.sqf, but the selectRandom command is A3-only — don't collapse one into the other.

  1. (Optional, LOW) Reflect the new A3-only string/selection traps in agent-compatibility-audit.json. The unsafeIfAddedAsImplementationAdvice list could gain selectRandom, splitString, joinString, trim (all verified A3-only, absent from source) to match the avoid-list now on the command version reference. Purely additive guardrail; no doc currently misuses them. Acceptance: the four commands appear in the JSON avoid-list (or an explicit decision to keep the JSON scoped to remote-exec/extension risks only).

Continue Reading

Detail: Wiki quality audit | Findings: Deep-review findings | Decisions: Pending owner decisions

Sidebar

Clone this wiki locally