-
Notifications
You must be signed in to change notification settings - Fork 0
Developer History And Upstream Lessons
This page turns upstream development history from Miksuu/a2waspwarfare into practical guidance for future Wasp Warfare developers and AI agents.
Evidence sources used for this page: the original deep pass covered upstream master through 8bcc42b1 (2026-06-02), GitHub PRs #1-#12, branch list from the upstream repository, merge/revert commits, commit messages and file-level deltas. The page was then refreshed on 2026-06-05 for miksuu/master 69e1958a / e4be1958 capture-state evidence. Treat all of this as developer-intent evidence, not a substitute for current-source inspection before code changes.
| Pattern | Evidence | Developer lesson | Confidence |
|---|---|---|---|
| Supply missions attract exploit fixes, UX follow-ups and JIP regressions. | PR #10 Supply run remote activation glitch fix / merge 97dfff26, commit 65fa3332 "Fix remote supply truck glitch", PR #11 / 8164cc33, PR #12 body: prevents the extra too-far notification during JIP. |
Do supply changes as a server-owned state machine: validate requester, source town, vehicle range, cooldown and reward on the server, then test normal start, remote start, JIP join, reused vehicle and Takistan propagation. | confirmed |
| JIP bugs repeatedly appear after client-facing features. | PR #12, commits b02782f1 "Move main logic of heavy attack mode to server to avoid JIP issues", a9044821 "Refactor logic of JIP during heavy attack feature", 6eb09dc3 "Make JIP players spawn at HQ or factories only". |
Any UI/action/state feature needs a JIP plan before merge: decide whether it is replayed state, pull-response, or event-only; add a late-join smoke path to the validation checklist. | confirmed |
| Debug logging is useful during archaeology but must not become shipped noise. | Attack-wave cluster on 2026-03-13 includes multiple "Add debug logging" commits followed by 32895cae "Remove debug logging"; 891a70ea later says "Remove all the logging"; supply and marker clusters also remove unnecessary logs. |
Use WF_Debug-gated diagnostics and remove temporary broad logs before publish. If logs explain a fragile edge, preserve the lesson in docs instead of leaving unconditional runtime spam. |
confirmed |
| Mission-copy divergence is a standing maintenance cost. | Many upstream commits are explicit Takistan copies: 994150da "Add supply run upgrade to Takistan", ba25ada0 "Add extra score bug fix to Takistan", 101e3452 "Remove unnecessary debug logging from Takistan too", repeated "update taki" commits during May/June 2026. |
Patch source Chernarus first, then propagate generated Vanilla/Takistan deliberately. Review generated diffs; do not assume a feature is fixed everywhere because Chernarus changed. | confirmed |
| Performance work succeeded after instrumentation, not blind simplification. |
88e0749a "Performance audit instrumentation for FPS diagnostics", ff1ea838 "Extend performance audit logs with environment state", 62becdda "performance audit analyzer and session-aware reports", then optimizations like 4aaa814a, 6e5b3c50, 6189f3c5. |
Measure first, then reduce scans/marker churn. Keep audit toggles cheap and optional; preserve counters that show whether an optimization starves gameplay. | confirmed |
| Town defense activation is fragile because performance and gameplay correctness compete. |
4aaa814a reduced town/camp loops and AI activation spikes; a20a5a0f restored reliable activation from capture scans; 84b1b684 restored pre-capture town defense activation; ea0bff2e prevented defenders from activating enemy towns; 913ecdf6 added diagnostics; e4be1958 clears old active town-AI state after capture so new-side occupation teams are not blocked. |
Do not optimize town AI wakeups solely by reducing scans. Preserve capture-driven wake signals, defender-origin tagging, diagnostics and capture-side active-state reset semantics. | confirmed |
| Client marker/UI loops are locality-sensitive and easy to over-optimize. | Marker cluster includes 9a550b7a reverting "Do group leaders need actually global marker vars? Only few know.", 9c72a281 fixing marker tracking after cache optimization, 951e72cb fixing stale squad markers after disconnect, 332874fd fixing town SV visibility leaking to both teams. |
Treat marker variables as client-local unless source proves a shared-state need. Validate disconnect, side visibility, cache invalidation and player-led AI labels after marker performance edits. | confirmed |
| Reverts mark negative knowledge: some plausible improvements were too risky or incomplete. |
97da2aeb and 993e8ed5 reverted configurable accelerated day/night cycle; 9424f0c8 reverted Marty_repair_camp_menu; PR #9 "Add endgame music" was closed unmerged; PR #1/#2 merge-separated-codebase attempts were closed. |
Before reviving reverted/closed work, inspect why it failed in current source and stage it as a small feature branch with smoke evidence. Do not resurrect old branch code wholesale. | confirmed |
| Branch names expose abandoned or risky experiments. | Upstream branches include A3_*, Arma2Warfare_GPT, oldMasterBranch, 0=1_*, remove_wasp_change_wheel_car_simulator, AntistackJustMonitoring, AntiStackV6, many dated dev_*/v* branches. |
Use branches as search leads only. Treat A3/dev/old branches as non-authoritative unless current master or a merged PR confirms behavior. |
likely |
| Shared helper fixes often affect AI, players, HC/delegation and generated missions together. |
782c9b8a fixed town vehicle crews by changing Common_CreateTeam.sqf in both Chernarus and Vanilla; ea0bff2e marked resistance town defenders across common creation, client delegation, server delegation and town-defense operation files. |
When touching shared creation/delegation helpers, audit all call families: server-created town AI, client-delegated AI, static defenses, generated mission copies and player purchase analogues. | confirmed |
| LoadoutManager history is release process, not convenience tooling. |
7ca05e3e family, zipping/deploy branches, 2a13ce36 7za env-var requirement and d3a2d78d stray .7z cleanup all show release artifacts evolving through fixes. |
Treat generator output, packaging logs, rollback archives, generated version.sqf and maintained Vanilla propagation as release gates, not optional cleanup after code is "done." |
confirmed |
Map layout fixes often belong in mission.sqm, outside generated-copy comfort. |
d0a5f642 fixed Rogovo/Bor depot positions in mission.sqm, and map-copy history repeatedly left terrain-specific data outside ordinary source propagation. |
For map/object/depot/HQ-position defects, inspect mission.sqm and terrain assets directly. LoadoutManager will not safely infer or propagate all editor layout fixes. |
confirmed |
- Source evidence: PR #10 body says the exploit allowed a player to keep a supply truck next to a remote command center and activate the mission remotely; merge
97dfff26, commits65fa3332and0542edf8, fileClient/Module/supplyMission/supplyMissionStart.sqf. - Affected subsystem: supply missions, economy, command-center proximity, client action gating.
- What happened: the first fix blocked the remote activation exploit, then detection reliability was improved, then PR #11 added player feedback when the supply truck was too far away.
- Why it matters: local action checks were being used as gameplay authority for an economy reward path.
- Do differently: future supply work should make the server accept/reject mission start from trusted state and keep client checks as UX only.
- Confidence: confirmed.
- Follow-up: current wiki already tracks server-owned loaded/tracking state in Supply mission authority cleanup.
- Source evidence: PR #12 body says the too-far notification fired when a player spawned in-game; commit
b76f9645changed the same supply start file in Chernarus and Vanilla. Heavy attack mode later moved main logic server-side inb02782f1explicitly "to avoid JIP issues". - Affected subsystem: supply missions, attack wave/heavy attack, client init/update loops.
- What happened: features that looked correct for already-connected players needed follow-up patches for join-in-progress.
- Why it matters: OA mission state is a mix of PVEH events, missionNamespace state, local UI loops and server callbacks. New clients do not automatically replay intent.
- Do differently: every new public variable or action-driven feature should document JIP semantics and include a late-join test.
- Confidence: confirmed.
- Follow-up: add explicit JIP smoke rows to feature playbooks when implementation work starts.
- Source evidence:
88e0749a,ff1ea838,62becdda,49aa1e53created/expanded performance audit tooling;4aaa814aand6189f3c5optimized town/camp loops and scan budgeting while adding counters like scanned/skipped towns. - Affected subsystem: server town loop, town AI activation, client markers/RHUD.
- What happened: upstream built measurement tools, then reduced scans, marker churn and activation spikes.
- Why it matters: blindly slowing loops can break capture responsiveness, town defense activation or markers.
- Do differently: keep an audit counter for any loop you throttle, and test quiet-map FPS plus active-town behavior.
- Confidence: confirmed.
- Follow-up: preserve performance audit parameter documentation and analyzer workflow in the runtime/performance pages.
- Source evidence:
a20a5a0frestored activation from capture scans;84b1b684restored pre-capture town defense activation;ea0bff2eignored units/vehicles/groups marked as resistance town defenders so they do not wake enemy towns. - Affected subsystem: town AI, static defenses, capture FSM, delegation.
- What happened: earlier scan-budget changes needed follow-up fixes so attacked towns still woke reliably and defender units did not create false activations.
- Why it matters: the town AI activation path balances CPU cost against visible fairness in PvE/TvT capture fights.
- Do differently: when optimizing town AI, keep separate tests for remote player-led attacks, pre-capture defenders, occupied-town vehicles, and defender bleed into nearby towns.
- Confidence: confirmed.
- Follow-up: add town-defense diagnostics to any future town AI smoke plan.
- Source evidence:
9a550b7areverted an experiment about global group-leader marker vars;9c72a281fixed marker tracking after marker cache optimization;951e72cbfixed stale markers after disconnect;332874fdfixed town SV marker visibility leaking to both teams. - Affected subsystem: client map markers, player/unit labels, town supply-value marker visibility.
- What happened: marker work went through repeated attempts around scope, cache, side visibility and disconnect cleanup.
- Why it matters: marker bugs can leak side information or leave stale UI state without obvious server errors.
- Do differently: marker changes need side-specific visibility checks and reconnect/disconnect cleanup tests, not just FPS or UI appearance tests.
- Confidence: confirmed.
- Follow-up: keep marker loop changes routed through Client UI/HUD/menus and Public variable channel index where networked.
- Source evidence:
97da2aeband993e8ed5reverted configurable accelerated day/night cycle;9424f0c8revertedMarty_repair_camp_menu; PR #9 "Add endgame music" closed unmerged; PR #1/#2 codebase-merge attempts closed unmerged. - Affected subsystem: day/night runtime, repair camp actions, endgame media, repository merge strategy.
- What happened: some apparently useful features were backed out or abandoned.
- Why it matters: reverts often indicate runtime, UX, merge-shape or deployment problems not visible from current files alone.
- Do differently: if reviving reverted work, treat the old branch as a design sketch. Rebuild from current source with a small diff and include the missing validation that the original lacked.
- Confidence: confirmed for reverts/closures; speculative for exact failure cause when no PR comment explains it.
- Follow-up: inspect RPT/server notes or owner memory before reviving repair-camp or accelerated day/night variants.
- Source evidence: upstream branch list contains A3 branches (
A3_v20240123,A3_0=1_new), experimental branches (Arma2Warfare_GPT,AntistackJustMonitoring,AntiStackV6), and many dateddev_*/v*snapshots. - Affected subsystem: repository archaeology, mission-copy divergence, Arma 2 OA compatibility.
- What happened: upstream preserved many experiments and snapshots that are not merged into current protected
master. - Why it matters: an AI agent can easily cite or copy stale branch code that conflicts with OA 1.64 or current mission structure.
- Do differently: prefer current upstream
master, merged PRs, and current rayswaynl source. Use unmerged branches only to generate questions or locate abandoned ideas. - Confidence: likely.
- Follow-up: if a branch becomes implementation-relevant, compare it to current
masterwith file-level diffs and note whether it is A3-only, old folder layout, or current OA-compatible SQF.
- Start every upstream-history claim with evidence: PR number, commit hash, branch name, file path or a short quoted PR/commit phrase.
- Separate
confirmedfromlikely: commit messages and PR bodies prove developer intent; branch names only suggest it. - For supply/economy work, assume client-side action checks are UX until the server recomputes the final effect.
- For JIP-sensitive work, write the late-join behavior before proposing code.
- For town AI/performance work, preserve gameplay wakeup signals and diagnostics while reducing scan cost.
- For marker/UI work, test side leakage, stale markers and disconnect/reconnect behavior.
- For generated missions, document Chernarus and Vanilla/Takistan evidence separately.
- For reverted or closed work, do not copy it forward without a fresh current-source design and smoke plan.
This second pass goes further back than the first snapshot. It shows that several "modern" risks are old recurring maintenance patterns, not new accidents.
| Lesson | Older evidence | Affected subsystem | What happened | Future rule | Confidence |
|---|---|---|---|---|---|
| Early imports are balance/config baselines, not design proof. |
558537c3 initial commit, bb9cd85e import Chernarus, f7bc288c import rest of maps, then 2018 balance edits such as 6e120ebf ICBM enabled on all maps and b66d2681 max supply limit. |
repository baseline, map copies, balance constants | The earliest history is an import plus immediate balance/config changes by mixed authors. | Treat 2018 commits as provenance and baseline only; do not infer current intent without later current-source evidence. | confirmed |
| AntiStack/RequestJoin has been brittle since the 2022 rewrite. |
09131233 "Fix HORRIBLE typo in command", 841d16af changed CONNECTED_AT_LAUNCH from bool to player side, 88a2ef49 "Fix RequestJoin logic/semantics", 8bf294ac teamswap special-case variable fix. |
AntiStack, join flow, teamswap | Join eligibility and launch-state variables needed repeated semantic fixes immediately after introduction. | Before touching AntiStack, map the exact variable type and lifecycle; add join-at-launch, late-join, teamswap and disabled-AntiStack tests. | confirmed |
| Database-backed skill/team logic needs type and load-shedding guards. |
a103b538 async queries, 448b1d85 string-to-integer database crash, 25cec171 limited retry attempts, 4f9c21d7 fixed double team-score requests taking a toll on the DB, b32babc7 reverted AntistackV6. |
AntiStack DB, Discord/status integration, player skill | Async DB and score logic repeatedly hit type, polling, retry and rollback issues. | Treat DB/extension responses as untrusted strings; clamp retries, parse types explicitly, and keep monitoring-only rollout paths. | confirmed |
| Public-variable payload shape mistakes are old and recurring. |
680f4191/8036db59 moved side-supply updates server-side, then 33143928 found publicVariable wrapping sent var into an array, 591a217f fixed wrong PVEH array indices, 17b5fb6e fixed flawed client PVEH logic. |
side supply, PVEH/PVF, economy | Server migration was directionally right but still needed several payload-shape fixes. | Any server-authority migration must document exact PV/PVEH payload shape and test both sender and receiver parameter arrays. | confirmed |
| Arma 2 OA compatibility failures predate the current docs push. |
2a62eaa0 fixed A3 createGroup syntax, c7b17c70 says "Replace name with typeOf (Arma 2 syntax :D)", later commits repeatedly fix isNil, syntax and missing semicolons. |
SQF compatibility, construction, generated files | A3 syntax and modern assumptions have already broken mission scripts. | Keep OA 1.64 command/version checks in the review path; never copy A3 branch snippets without compatibility proof. | confirmed |
| Task system removal was intentional and propagated across terrains. |
b8c66b41/a3e56ca9 removed Warfare task system in 2023; f61f7222 removed task system entirely in 2024; 4881e0d5 removed it from all terrains. |
task UI, town-capture notifications, generated missions | The task system was not merely forgotten; it was removed repeatedly across mission copies. | Do not revive tasks as a small UI toggle. Rebuild as a fresh JIP-safe feature or keep it removed. | confirmed |
| Copy/paste and generated-map workflows repeatedly caused boot or syntax failures. |
62279d8e ignored version.sqf; 081c1dc4 added copypasted untested modded terrain files; c312b0ec added missions with "copypaste method without running the python script"; 812e9596 removed Tasmania because it was bugged and broke clean-repo loads due to ignored version.sqf. |
LoadoutManager, version.sqf, modded maps | Manual copy workflows and ignored generated files caused clean checkout and map-load failures. | Prefer LoadoutManager/generator paths; for every manual map copy, test a clean checkout and generated version.sqf presence. |
confirmed |
| LLM/GPT output was useful but produced guesswork and syntax debt. |
da2fc886 "Add first iteration by GPT prompt", e699cf30 "Add merged Skill_Init arrays with GPT (untested)", a0b891f4 adds Arma2Warfare_GPT system prompt, 24bddb66 fixes "prompting failures/guess work by the LLM". |
docs, generated guides, code snippets | Upstream used GPT for scaffolding, comments, prompts and guides, then had to fix guessed levels/syntax. | Use LLM output as a draft only; require source verification for levels, class names, syntax and mission semantics. | confirmed |
| Construction refactors can reintroduce duplication for safety. |
1ea99ebb moved HandleSpecial away from construction-site execVM thread; b6a12aec refactored duplicate code away from small/medium construction scripts; 77a07bc0 reverted that duplicate-code refactor. |
construction, RequestStructure, server threading | A neat dedupe was reverted, likely because construction-side effects needed local script context or timing. | Do not remove duplication in construction paths unless RequestStructure, small-site and medium-site execution context are all tested. | confirmed |
| Removed/bugged maps are negative knowledge. | Tasmania branch history includes boundary disable/fix attempts (fb04d70a, 3104a07f, 72a86849), skip-update commit 50443d75, and final removal 812e9596. |
modded maps, terrain generation | Tasmania was tried, patched, skipped, then removed. | Treat removed map folders as hostile evidence, not dormant targets. Re-adding a map requires terrain-specific position/version generation and clean-load smoke. | confirmed |
| Map/UI helper messages need channel discipline. |
95a12305 used Marty's marker function to fix UAV marker messages appearing in global chat; cbea9f36, 358e9e6b, d71a9d5d moved teamstack messages through group/command/cutText variants. |
UAV markers, AntiStack messaging, chat/UI | Older history repeatedly adjusted who saw messages and where they appeared. | For any notification, specify channel, audience, locality and JIP behavior before implementation. | confirmed |
| FPS/view-distance helpers can fight map-open UI state. |
a388f073 added automatic view-distance by FPS target; 7e3b9f4c fixed the script starting while the map was open, causing very low view distance and high FPS after closing map; 6eb1cbfa fixed tooltip range values. |
client FPS optimizer, map UI, view distance | A performance helper accidentally reacted to map-open state and left bad runtime settings. | FPS optimizer logic must ignore map/menu contexts or restore state after UI transitions. | confirmed |
| AntiStack is a generation of experiments, not one stable module. | Branches/commits include upstream/DisableAntiStackByNumbers, upstream/AntistackV6, upstream/AntistackJustMonitoring, 6f1d7af5 monitoring-only, 45cb5192 "Revert all the antistack stuff", 8e2d585b "All the antistack remains gone, forever", and later a201f58b reintroduction. |
AntiStack, RequestJoin, DB score balancing | Enforcement, monitoring, removal and reintroduction all happened in history. | Document AntiStack by generation and rollout mode; keep teamswap/session validation separate from skill balancing. | confirmed |
| Disabling AntiStack must not disable teamswap protection. |
2624e943 added an AntiStack disable mission parameter, then 6b34b46d fixed teamswap protection when AntiStack was disabled. |
lobby parameters, RequestJoin, teamswap | A broad disable switch bypassed more join validation than intended. | Name toggles narrowly and test disabled-AntiStack with teamswap, launch join and late join. | confirmed |
| Score persistence is part of AntiStack correctness. |
fc55456c saved player score on disconnect; b69b901e set disconnected side to NONE; 8b1e220b fixed disconnect-side logic; 8b8ea8e7 stopped score DB update loops when match ends; b31539b4 and c9a93263 moved score logic server-side. |
score, DB persistence, AntiStack team totals | Stale side values, duplicate update loops and score authority all feed team-balance inputs. | Treat score mutation and disconnect cleanup as AntiStack dependencies, not separate chores. | confirmed |
| Client init flags are lifecycle contracts. |
3ff02aea on 0=1_InitClientFix moved clientInitComplete = true to the true end of Client/Init/Init_Client.sqf after a merge lost the fix. |
JIP, client init, PV/UI setup | The flag could be set before the client had finished registering state. | Place init-complete flags after PV registration, UI release, player variables and town/map setup; diff generated maps for placement. | confirmed |
| UI globals and nil/null mistakes were recurring client bugs. |
c6d2539e replaced global MenuAction with private _menuAction; 5b056013 added gear-template isNil guards; 5de4d1a2 changed CoIn preview checks from isNull to isNil. |
buy units, gear templates, CoIn construction UI | Long-running UI loops reused global state and confused undefined variables with null objects. | Keep dialog action state private; validate list row data before namespace lookups; use isNil only for maybe-uninitialized values. |
confirmed |
| Marker optimizations must not freeze or leak marker state. |
9795f317/a074319b added marker helpers; b7bdb70b commented HQ wreck markers as heavily bugged; 6e5b3c50 marker caching was followed by 9c72a281 restoring marker movement; 95a12305 fixed UAV marker global-chat leakage. |
markers, side visibility, AAR/team/HQ/UAV UI | Marker creation, side audience, moving-object updates and cache keys repeatedly regressed. | Centralize marker APIs; cache text/type separately from position; test JIP, side visibility, moved objects and disconnect. | confirmed |
| Branch names can be tombstones, not revival invitations. |
upstream/oldMasterBranch tip 3a7972a2 says "Remove files from the master branch (use the Main branch)"; upstream/RevertedTo2018Version tip 44abda43 is only a test commit; A3 branches were later purged by 83298186. |
branch archaeology, release baselines | Some old refs are deleted snapshots, experiments or foreign-port imports. | Mine old branches for intent only; never treat tombstone/A3/debug branches as current source without revalidation. | confirmed |
| Merged work can still be negative knowledge. | PR #3 "Add increasing cost of repairing HQ" merged then 346e3be8 reverted it; PR #9 "Add endgame music" closed unmerged; f10d5bd9 and 8d74c332 reverted bomb restriction/debug work; 31d8a06d reverted cheaper nukes test pricing. |
HQ repair, audio/endgame, bomb logic, nuke economy | Merge status alone did not mean a design survived. | Check later reverts and branch names like Test, Debug, RevertLater before reviving an idea. |
confirmed |
| Removing a structure or system reaches AI/FSM/delegation code. |
16856ae7, 8b7fab95, 4e45acad removed guerilla barracks across init, resistance FSM, HC delegation and buy-unit code; f61f7222/4881e0d5 removed task code across terrains but later e9685b04/1d017dec still cleaned residue. |
guerilla barracks, task system, HC AI, camera/spectator | Removals required follow-up outside the obvious init file. | Grep client, server, camera, FSM, HC delegation and generated map copies before declaring a feature removed. | confirmed |
| Supply performance fixes can accidentally switch authority context. |
7bc4b7ac was reverted by 3c2efb8a; 008ac5aa was reverted by 33fb2676; history notes server-side supply logic checking getPos player instead of the truck position. |
supply missions, runtime performance, locality | Optimization attempts moved checks but used the wrong implicit object context. | Optimize around authoritative mission objects, not globals like player; dedicated-server and JIP tests are mandatory. |
confirmed |
- Add AntiStack-specific smoke cases to future DB or team-balance PRs: launch join, late join, disabled AntiStack, teamswap, DB unavailable and double-request prevention.
- Treat
version.sqfand generated mission files as a release gate, because older clean-repo failures were tied to ignored/generated mission metadata. - Keep the Task System listed as intentionally removed unless a new owner writes a JIP-safe replacement design.
- When reviving old branch ideas, check whether they came from
A3_*, GPT/LLM, copied terrain or reverted construction/map branches before trusting the snippet. - Add clean-checkout bootstrap and generated-output validation to release notes before map or LoadoutManager changes.
- Treat marker, UI and client-init fixes as lifecycle/API contracts: do not optimize them without preserving audience, object position, JIP and init-complete semantics.
- For old branches, capture the branch family first (
A3_*,AntiStack*,Debug,Test,oldMasterBranch,RevertedTo2018Version) before interpreting any commit as reusable.
This pass used five read-only specialist agents to go below the first commit-history layer: PR bodies/titles, branch-only commits, tooling/deployment history, economy/ordnance reversions, and AI/HC/performance experiments. Branch-only evidence is useful negative knowledge, but it is not current-source authority unless noted.
| Branch | Evidence | Why it matters | Future rule |
|---|---|---|---|
upstream/commonbalanceinit_Old, upstream/AirReworkTestBranch
|
tips 37e08f33, 9973ef27; branch-only histories around AV8B pylons, Hellfire validation, A-10C generated loadouts |
Aircraft/loadout generator rules were discovered through many fixes, not one stable design. | Keep tool data, EASA rows, labels/prices and Common_BalanceInit.sqf in one generated-change unit. |
upstream/AutomationSystems |
25f2b5ab; restart work moved from direct RESTARTSERVER callExtension toward backend/pipe process, absolute paths, delays and priority timing |
Long-running ops work inside the game extension path was brittle. | callExtension should hand off long-running restart/deploy work to an external process and log aggressively. |
upstream/HeadlessClientMultithreading |
a241ac75, 6760f1a3, bb01ebfc, 1d79ba2a, 6b90c872, f5e8fa47 plus HC upstream history
|
Multi-HC work needed role-specific slots, typed HC pools, side-less client-call filtering, generated mission slot propagation and static-defense routing. | Treat HC work as a routing protocol change, not a simple AI offload. |
upstream/Tournament_SideSpeakerWIP |
tip 8ddeb502 says civilian side speaker "currently broadcasts to all players...?" |
Spectator/tournament UX can leak to the wrong audience. | Side/channel/audience must be part of spectator feature design. |
upstream/MgNestRestriction |
branch-only fixes moved logic from the wrong if block and changed class checks to isKindOf
|
Static-defense restrictions were easy to place in the wrong class path. | Prove Chernarus/Takistan logic before map-wide propagation. |
upstream/BlinkingDone, upstream/WorkingBlinking, upstream/BlinkingMapIconsV2
|
Dec 2025 marker-blinking chain includes 2f6ff43d, 9a550b7a, 9c1fe110 and many debug/fix commits |
Blinking touched event handlers, local/global vars, vehicle firing and color restoration. | Keep blinking off by default unless lifecycle cleanup is proven. |
| Lesson | Evidence | Affected subsystem | What happened | Future rule | Confidence |
|---|---|---|---|---|---|
| PR comments were empty, so PR bodies/titles and afterlife commits carry the evidence. | GitHub PR #1-#12 had no issue/review comments; useful evidence came from PR titles/bodies and afterlife commits. | upstream archaeology | The PR surface is sparse; the history is in merge/revert commits and file diffs. | Do not claim comment-based intent unless comments exist; cite PR title/body plus commit afterlife instead. | confirmed |
| Closed PRs can still leave landed commits. | PR #1 body says "huge merge between separated codebases"; PR #2 says "correct folder structure"; related commits include 96809ac3, 7a38af51, 01ea8db4. |
repo topology, DiscordBot submodule, merge strategy | Closed broad-merge PRs were not complete non-events; pieces persisted elsewhere. | Check git branch --contains for individual commits before calling closed PR work abandoned. |
confirmed |
| PR #4 latest-factory spawn needed type filtering later. | PR #4 / 38b662aa; later 6eb09dc3 scanned backward for Barracks/Light/Heavy/Aircraft. |
JIP spawn, structures | "Latest structure" was too broad for player spawn routing. | Spawn logic must filter by wfbe_structure_type; array order is not a contract. |
confirmed |
| PR #5 supply runs needed lobby and init follow-through. | PR #5 / d086863c says class descriptions were still missing; follow-up e3ec8a17; current duplicate Skill_Init.sqf calls noted in Init_Client.sqf. |
supply mission, mission.sqm, client init | Feature code landed before all role metadata and init-idempotence concerns were settled. | Role-gated features must update mission.sqm, stringtable.xml, generated missions and init duplication checks together. |
confirmed/likely |
| Profile-backed UI toggles outlive the match. | PR #6 / 670ecb6c stored buy-units driver preference in profileNamespace. |
Buy Units UI, player preferences | A purchase/menu behavior became persistent local state. | Profile-backed toggles need explicit defaults, visible refresh and cost/crew-count validation. | likely |
| HQ repair price escalation was reverted until server-owned. | PR #3 / 7cd0e18d, revert 346e3be8, merge 59a995e8, a855081d; current Action_RepairMHQ.sqf still mutates client-side repair count/price. |
MHQ repair economy | Increasing HQ repair prices touched client action scripts and was flattened back to 25k. | Move repair count, affordability, debit and acceptance server-side before adding repair economics. | confirmed |
| 75k nukes are live-test data, not balance truth. |
5db438ca changed ICBM fee to 75k "for testing ... on the live server"; 31d8a06d reverted it. |
ICBM economy | A broad test discount was propagated then backed out. | Never revive 75k ICBM price from history without explicit owner live-test approval. | confirmed |
| Nuke pricing churn did not fix ICBM authority. | Current nukeincoming.sqf sends RequestSpecial and tactical debits still run through client GUI paths; DR-27 records server validation gap. |
ICBM authority | Price/radius/effect history did not move authority to server. | Server must validate commander/team, side, funds, upgrade, cooldown and debit before spawning ICBM effects. | confirmed |
| Maverick/Spike and bomb branches are ordnance experiments, not current truth. |
67886498 used extreme Maverick parameters; 4720880a mass-replaced Mavericks with Spikes in generated output; 0c14f001, 82fbab1f, bc5f23d5, 7fddb251 show bomb workaround churn. |
aircraft ordnance, EASA, bomb limits | Branch names suggest clean policy, but current master and history show partial experiments and reversions. | Inspect current EASA/handler values and runtime-test GBU/unguided/lock-on behavior before changing ordnance. | confirmed |
| Score and bounty changes feed AntiStack, not just the scoreboard. |
f17445c1, b31539b4, cc127ef4, 415615c9; current score changes route through server/PVF paths and DB skill uses score. |
score, bounty, AntiStack skill, economy | Score authority and bounty edge cases were fixed while score also became a skill/team-balance input. | Review every score award as economy plus AntiStack input; handle score <= 0, teamkills, self-kills and building kills explicitly. |
confirmed |
| Skill-diff compensation rides on a still-risky supply channel. |
upstream/SkillDiffCompensation adds DB skill polling and ChangeSideSupply; current Common_ChangeSideSupply.sqf still publishes wfbe_supply_temp_<side>. |
AntiStack compensation, side supply | Team skill now affects side supply while side-supply mutation remains a known direct-PV risk. | Do not expand compensation until side supply is server-authoritative or direct-PV mutation is hardened. | confirmed |
| Current packaging is Chernarus plus generated Vanilla/Takistan, not modded maps. |
ZipManager.cs packages Missions and Missions_Vanilla; Modded_Missions is commented out; earlier 0ffc3cb8 still had all three. |
release packaging, generated maps | Modded generation/packaging was disabled or left TODO after earlier inclusion. | State packaging scope explicitly; do not promise modded map release artifacts without re-enabling and testing propagation. | confirmed |
| LoadoutManager packaging has Windows/env/file-lock traps. |
2a13ce36 requires env var 7za; 3458e714 replaced overwrite copy with stream copy plus IOException logging; 0ffc3cb8 moved temp zip dir under repo root; d3a2d78d removed stray .7z; current ZipManager.cs deletes existing _MISSIONS.7z before it proves the new archive. |
tooling, release zipping, Windows paths | Generation and packaging can partially succeed while file copies or archive writes fail, and a failed package run can remove the previous archive. | Inspect tool output and git diff --stat; keep rollback copies; missing or failing 7za is packaging failure, not necessarily generation failure. |
confirmed |
version.sqf load order is a config contract. |
.gitignore ignores version.sqf; generator writes it; 6d380c22 moved parameters before it, then 0fd730b0 reverted; 24f4656f added admin override for IS_AIR_WAR_EVENT. |
mission config, generated defines | Generated defines and mission parameters had real ordering conflicts. | Change generator inputs, not ignored version.sqf; smoke description.ext include order after config changes. |
confirmed |
| Takistan map identity needed generator-side post-copy repair. |
aa3f0451 added Takistan DB map ID; f095e461 added EnsureTakistanInitServerUsesCorrectMapId() because copy generation overwrote it. |
generated maps, DB map ID | Terrain-specific server init values were stomped by source-map copy. | Put terrain-specific literals into generator post-copy logic, not manual generated-folder edits. | confirmed |
PersistanceDB removal does not mean extension risk is gone. |
0d0ac310 removed Server/Module/PersistanceDB/* for callExtension errors; current AntiStack and GlobalGameStats still use callExtension families. |
persistence, AntiStack DB, global stats | One persistence module is a tombstone, but extension-backed systems remain live. | Distinguish removed PersistanceDB from current A2WaspDatabase and a2waspwarfare_Extension deployment needs. |
confirmed |
| Sound config generation has a filename contract. |
a31cfdb4 added automated sound config; current generator splits .ogg names on -; e2d23d00 removed merged sounds after LoadoutManager processing issues. |
sound assets, description.ext, LoadoutManager |
Audio files became generator inputs with strict naming assumptions. | New sounds need ClassName-volume.ogg naming and generated Sounds/description.ext inspection. |
confirmed |
| Town activation must happen before capture pressure. |
a20a5a0f moved activation to capture detection; 84b1b684 restored pre-capture scans; ea0bff2e tags town defender AI. |
town AI, resistance defenders | Capture-scan wakeups were too late and defender AI needed exclusion tags. | Preserve pre-capture activation and tag defender units/crews/vehicles/groups across server and HC paths. | confirmed |
| HC work needs update-back accounting, not only delegation. |
HeadlessClientMultithreading branch commits a241ac75, 6760f1a3, bb01ebfc, 1d79ba2a, 6b90c872, f5e8fa47; current DR-42 notes static-defense update-back gaps. See HC upstream history. |
headless client, static defenses | Branch work solved routing pieces but accounting/update-back remains a known smell; map-copy commits also show scripts can propagate before mission.sqm slots are complete. |
Every HC delegation path needs typed routing, fallback, side-less HC tests, server update-back and generated mission slot verification. | confirmed/likely |
| Marker blinking is intentionally default-off negative knowledge. | Dec 2025 chain includes 2f6ff43d, 9a550b7a; 9c1fe110 adds mission-wide default WFBE_C_MAP_ICON_BLINKING_ENABLED = 0 and rejects per-player toggles due EH cleanup complexity. |
marker blinking, event handlers, performance | Many attempts fought color restoration, global/local vars and vehicle firing edge cases. | Do not add per-player blinking toggles without a full EH ownership and teardown registry. | confirmed |
| Cleanup/despawn bugs are array-shape and ownership bugs. |
95481b37 fixed mines = mines - _x to mines - [_x] and added wfbe_trashed; DR-45 flags town-AI vehicle despawn occupancy risk. |
cleanup, despawn, low-FPS cadence | Cleanup could leak stale pairs, duplicate coroutines or delete player-occupied AI vehicles. | Validate array shape, idempotency marker, full crew/player occupancy and low-FPS cadence behavior. | confirmed |
| AI commander revival remains branch evidence until merged and smoked. | Local feat/ai-commander head 4dba060e builds on 585c3519, 1a3e3def and 4c2abced: default-on parameter, server-side supervisor, assign-types/assign-towns/produce workers, upgrade-cost indexing fix and explicit order executor. |
AI commander | Branch work may revive latent AI commander, but it is Chernarus-only branch evidence and not stable-master truth. | Keep docs split between current-source status and branch experiment until merged, propagated and tested; smoke no-human full command, human-commander assist, order execution, production cap, upgrade funds/supply and commander handoff. | confirmed branch-only |
- Build compact branch-only appendices for
AutomationSystems,AirReworkTestBranch, marker blinking and HQ repair afterlife before reviving those systems; theHeadlessClientMultithreadingappendix now lives at HC upstream history and lessons. - Add release-tooling checks for
7za,_MISSIONS.7zoverwrite behavior,version.sqfgeneration, Takistan map ID and sound filename contracts. - Treat score, bounty, ICBM, HQ repair and skill-diff compensation as one economy/AntiStack risk surface until server authority boundaries are hardened.
- Add town-defense smoke cases for remote attack, pre-capture approach, capture-in-progress, defender bleed-over and aircraft fly-by before changing town scans.
- Keep
feat/ai-commanderand other local branch work documented as branch-only until it appears in upstream/current source and passes generated-mission smoke.
Evidence index: Upstream Miksuu commit intel | HC appendix: HC upstream history | Risks: Feature status register | Runtime: Server gameplay runtime atlas | Supply: Supply mission authority cleanup
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