M2 and M3 alpha verification¶
Status: Implemented locally · 8 September 2026
The approved pack adds account sessions, durable character/economy state, five-player companies, two permanent havens and a three-holding Frontier I war. New Blender scenery is authored in art/blender/vyrgarde_campaign_v1.blend and exported to a shared atlas/instanced GLB.
Automated evidence¶
- Twelve campaign tests cover resource contention, economy conservation, replay after database reopen, private companies and shared credit, capture eligibility, interruption, all three connected holdings, victory accounting, unattended raids/loss/recovery, saved enemy wounds and clock, death/recovery, salted password verification and Kraz's finite reinforcement phase.
- An injected capture-save failure proves no materials, ownership, watchguards or success announcements escape a rolled-back transaction.
- Eight real HTTP/WebSocket checks use two synthetic accounts on an isolated server: unauthenticated rejection, canonical identity, one-time kit, companies, bank/gift conservation, invalid movement rejection, the public map, and process-restart persistence of sessions and action receipts.
- The existing starter-content, animation, environment and frame-smoothness suites are retained. Commands:
npm run test:campaign,npm run test:campaign-network,npm run test:starter,npm run test:characters,npm run test:environment,npm run test:smoothness. - Eight new Blender assets use one material and one primitive each; the pack is 1.69 MB and each asset is below 6,000 triangles.
npm run validate:environmentchecks both environment packs.
The network report is stored in docs/quality/campaign-network-check.json. The three-holding unit route uses fixture combat damage; it is not a human group clear or an encounter-balance claim. The unattended test simulates 450 seconds at zero population and observes muster, march, combat, loss and reclamation.
Local playtest boundaries¶
Browser inspection covers Greyfen, Breakwater, the new holdings, the map and campaign menus. Automated frame sampling describes that browser/render configuration only. Human encounter difficulty, long-session pacing, physical controllers, native M4 Pro high-refresh feel, public account recovery and measured server capacity still need playtesting. No six-frontier or public-beta readiness claim is made.
The operating database and production static build are kept outside cloud-synchronised source folders. Legacy characters are imported once; QA accounts and test war state stay in their separate temporary database.