This is a manual regression plan for the current 2.16 candidate against the last 2.15 maintenance release. The review basis was v2.15.1 (6228c72e) through 0fdfd05d; the original v2.15 tag itself contains only the version bump and Shredder levelshot, while v2.15.1 adds heartbeat/Steam-pipe fixes.
No item is pre-checked. A checked item means the stated pass condition was observed on the exact build identified in the report, not merely that the action was attempted.
- P0 — release gate. A failure blocks the candidate until triaged.
- P1 — important changed behavior. Must have representative coverage.
- P2 — compatibility, specialist fixture, or edge-case coverage.
- Stop a test after a crash, hang, device loss, corrupted download, or repeated disconnect. Preserve the console log and do not overwrite the reproducing profile/download directory.
Publish these with every candidate:
- Candidate version, Git commit, Steam branch/artifact name, and publish time.
- Known issues and an explicit statement on whether Vulkan demo AVI and Vulkan
envshotare supported. The reviewed Vulkan AVI path currently asserts/does not write frames, and Vulkanenvshotreports that it is unimplemented. - One stock pure dedicated server, one Steam-auth dual-transport server, one non-Steam UDP server, and one TV relay.
- A small downloadable custom-map PK3, a larger resumable PK3, and a server that can deliberately make the preferred Steam/UDP route unreachable.
- Named locations for a portal/mirror, fog/water, cubemap sky,
videomap, and a material intentionally lacking a normal map. - Keep hostile BSP fuzz files internal. Public testers should receive only sanctioned malformed fixtures designed to fail safely.
Review-time release flags to resolve before inviting a large group:
- The committed candidate reviewed here removes the client
initdownloadhandler while the server still emitsinitdownload. There is a local, uncommittedsource/client/cl_parse.crepair in the review worktree. NET-10 must be run against the exact published artifact. - Steam-first connection setup can wait on an unopened SDR socket. NET-04 must prove that a failed first route reaches the advertised fallback or exits with a bounded, useful error.
- Received microphone audio uses an integer read of a fractional volume cvar. AUDIO-04 must explicitly verify audibility at default and non-default voice volume.
- Confirm the final package includes
map_pressure.pk3,map_return.pk3, andmap_shredder.pk3; the shared asset packager does not itself copy top-level map PK3s.
Do not ask every tester to run everything. Every tester runs Batch A, then claims one specialist batch.
| Dimension | Minimum public coverage |
|---|---|
| Windows | Windows 10/11, Steam and direct executable, OpenGL and Vulkan |
| Linux | Steam Runtime plus a native launch; X11 and Wayland; OpenGL and Vulkan |
| macOS | Intel and Apple Silicon package smoke where shipped; OpenGL; Vulkan only if intentionally offered |
| GPUs | At least one NVIDIA, AMD, and Intel Vulkan result |
| Profiles | One clean profile and one real profile upgraded from 2.15.1 per OS |
| Network | UDP dedicated, listen server, Steam SDR/P2P, dual-transport fallback, TV relay |
| Multiplayer | At least one Windows-to-Linux session and one 8+ client/bot soak |
Suggested assignment:
- Batch A — everyone, 20 minutes: package, launch, backend, local match, public join.
- Batch B — renderer/content, 45–60 minutes: GL/Vulkan parity, shaders, maps, models.
- Batch C — networking/Steam, 60 minutes: browser, UDP/SDR, fallback, download, auth.
- Batch D — gameplay/UI, 45 minutes: modes, movement, votes, scoreboard, HUD.
- Batch E — platform/audio/media, 45 minutes: input/focus, OpenAL, voice, demos, screenshots.
- Batch F — group soak, 60+ minutes: mixed clients, map changes, joins/leaves, voice and effects.
Copy this into each result or bug:
Build commit / Steam branch:
Test ID:
Result: PASS / FAIL / BLOCKED
OS and version:
CPU / RAM:
GPU and driver:
Renderer: ref_gl / ref_nri
Display mode and resolution:
Launch: Steam / direct
Profile: clean / upgraded from 2.15.1
Topology: local / listen / UDP dedicated / SDR / TV
Server address or name:
Reproduction rate:
First bad step:
Expected:
Actual:
Console log path:
Screenshot/video/demo:
- REL-01 [P0] Clean packaged launch — Install/extract the official artifact in a clean directory, launch without developer files, reach the menu, start
wfdm1, and return to the menu. Pass: UI, fonts, modules, map, and sound load without a missing library/module/PK3 error. - REL-02 [P0] Upgrade profile — In 2.15.1 set a distinctive name, bind, favorite, block entry, and video/audio settings; update and launch the candidate. Pass: supported settings persist or migration is explained; there is no silent first-run reset or stale asset override.
- REL-03 [P0] Shipped package contents — On each OS verify
pressure,return, andshredderappear with correct levelshots and launch. Start one stock map too. Pass: all map anddata*_21/modules_21content is discoverable without using a source checkout. - REL-04 [P0] Steam and direct launch — Launch from Steam, directly with Steam running, and directly with Steam stopped. Continue past the no-Steam warning. Pass: Steam identity is present when active; menu/local play and non-Steam UDP remain usable when inactive; no hang or assertion.
- REL-05 [P0] Renderer startup — Start once with
vid_ref ref_gland once withvid_ref ref_nriwhere offered. Pass: menu, console, local map, HUD, players, weapons, and effects render; unsupported Vulkan gives a usable fallback/error rather than a black-screen boot loop. - REL-06 [P0] Live backend switch — Switch GL→Vulkan→GL five times through Options, opening console and entering a match after each restart. Pass: the selected renderer, fonts, UI, cgame, input, and audio reinitialize with no crash, blank UI, duplicate sound, or progressive slowdown.
- REL-07 [P0] Window/fullscreen lifecycle — Toggle fullscreen ten times, Alt+Tab/minimize between toggles, and change resolution in windowed and fullscreen modes. Pass: correct image/aspect/focus returns; no black frame, off-screen window, frozen cursor, or device loss.
- REL-08 [P0] Local and public match smoke — Spawn locally, then join one public server; move, collect an item, fire every weapon, die/respawn, show scoreboard, chat, disconnect, and rejoin. Pass: normal prediction, HUD, audio, scoring, and transitions with no crash or missing media.
- REL-09 [P0] Non-Steam UDP join — With Steam stopped and
cl_prefer_steam_p2p 1, join asteam=nobrowser row and viaconnect <ip>:<port>. Pass: connection proceeds over UDP without a fake Steam target, indefinite wait, or preference change. - REL-10 [P0] Stock pure join — From a clean install join
sv_pure 1, runpurelist, play and change maps. Pass: stock packages/modules match and no download or pure loop occurs. - REL-11 [P0] Custom PK3 join — Remove the test PK3 from downloads and join the supplied pure custom-map server. Pass: progress advances, checksum verifies, media restarts, the map mounts, and connection completes. Record whether transport was UDP or SDR.
- REL-12 [P0] Browser stability — Refresh and switch All/Normal/Instagib/Race/TV/Favorites twenty times, backing out while results arrive. Pass: rows settle without crash, freeze, stale blank screen, or duplicate/lost results.
- REL-13 [P0] New demo and screenshot — Record one minute, stop, replay the
.wfdz23, seek once, and take PNG/JPG/TGA screenshots. Pass: demo metadata/playback and all image files are valid, correctly oriented, and written under the user directory.
Use the same viewpoint for GL/Vulkan comparisons and attach paired screenshots. Run Vulkan on multiple GPU vendors.
- RENDER-01 [P0] Scene parity — Compare world geometry, patches, sky, players, view weapon, pickups, HUD, decals, and transparent effects. Pass: contents, culling, depth order, colors, and lightmap placement match closely; nothing is missing, inverted, or fullbright only on Vulkan.
- RENDER-02 [P0] Map/resource lifecycle — Cycle
pressure,return,shredder, and two older stock maps three times; disconnect, join another map, return local, thenvid_restart. Pass: no prior-map textures/lightmaps/entities leak and registration does not crash or progressively lose assets. - RENDER-03 [P1] Portal/mirror — At the published portal location set
r_portalmaps 1; view it head-on/obliquely, enter/leave its PVS, resize, and fire effects nearby. Pass: orientation, clipping, pairing, update rate, and main view remain correct without black/stale content or flicker. - RENDER-04 [P1] Cubemap/skybox — Rotate through 360 degrees under a cubemap sky, then change maps. Pass: all faces have correct orientation/seams with no duplicated, black, upside-down, or previous-map face.
- RENDER-05 [P1] Fog/water/transparency — At the published fog/water location move above, through, and below the boundary while firing effects. Pass: density/color transitions and transparent depth ordering are smooth and consistent across renderers.
- RENDER-06 [P1] Health deform shaders — Watch all health models while moving around them for 20 seconds. Pass: wave/bulge animation is smooth and does not collapse, explode, reverse, or diverge between GL and Vulkan.
- RENDER-07 [P1] Normal/specular/offset materials — Toggle
r_lighting_deluxemapping 0/1,r_lighting_specular 0/1, andr_offsetmapping 0/2, restarting when latched. Pass: expected lighting changes occur without black, white, checkerboard, inverted, or sparkling surfaces. - RENDER-08 [P1] Default normal fallback — Inspect the marked material that intentionally has no
_normimage under changing light. Pass: it uses neutral normal lighting with intact diffuse texture and no missing-texture or wild directional shading. - RENDER-09 [P1] Dynamic lights — Toggle
r_dynamiclight 0/1and fire rocket/plasma near walls, models, fog, and pickups. Pass: enabled lighting has stable color/falloff and disabled mode removes it without flashing whole surfaces. - RENDER-10 [P1] Shadows — Test
cg_shadows 0,1, and2with players, first-person weapon, and pickups near walls/ledges. Pass: modes are none/blob/projected as intended; shadows do not detach, clip early, cover the view, flicker, or disappear on Vulkan. - RENDER-11 [P1] Outlines — Test
cg_outlinePlayers 0/1/2,cg_outlineModels 0/1, andcg_outlineWorld 0/1; launch grenades/plasma. Pass: player modes are off/black/team-colored, models/projectiles follow their toggle, and world outlines neither flicker nor draw through occluders. - RENDER-12 [P1] Post-processing — Test all combinations of
r_fxaa 0/1andcg_colorCorrection 0/1, then resize/change maps. Pass: each effect is limited and visible with no black/washed-out frame, stale frame, or LUT binding corruption. - RENDER-13 [P1] Soft particles — Toggle
r_soft_particles 0/1while explosions/smoke intersect floors and walls. Pass: enabled mode fades intersections and neither mode produces halos, inverted depth, disappearance, or framebuffer artifacts. - RENDER-14 [P1] Weapon/effect assets — Fire every weapon repeatedly and observe muzzle flashes, trails, projectiles, bullet/plasma/gunblade impacts, explosions, and animated weapon textures from several angles. Pass: all frames advance and repaired meshes retain complete, correctly aligned silhouettes.
- RENDER-15 [P1] Image/mipmap paths — Change
r_picmip 0to4, restart, and varyr_texturefilter; inspect angled floors, normal/gloss maps, previews, and cubemaps. Pass: mip/filter changes are predictable with no solid-color mip, corrupt layer, or extreme shimmer. - RENDER-16 [P1] Screenshot formats — With each backend and display mode take default and named screenshots using
r_screenshot_format 1,2, and3. Pass: PNG/JPG/TGA names, dimensions, orientation, channels, and current frame are correct; unsafe names are rejected. - RENDER-17 [P2] Cinematic/YUV surface — Play the published
videomapfixture and open/close menus and fullscreen. Pass: video continues with correct RGB channels/orientation and without stale/black frames. - RENDER-18 [P2] Debug geometry — In a cheats-enabled local match toggle
r_showtris 1/0over world, patches, models, and effects. Pass: expected debug lines appear and leave no persistent render state. - RENDER-19 [P2] Custom lightmap size — Load approved BSPs using
_lightmapImageSize256/512/1024 and an over-limit case. Pass: valid lightmaps align at the correct resolution; over-limit input gives a controlled error, not a crash. - RENDER-20 [P2] Legacy community compatibility — Tour one known older community map and one current custom map while watching console. Pass: no new missing shader/texture regression after removal of
legacyfromshaderlist.txt; report exact shader names if found.
- MAP-01 [P1] Pressure — Inspect water above/below, orange rock, normal/gloss panels, and scrolling jump beams. Pass: no checkerboards; water/fog/alpha, material lighting, and all beam layers are correct.
- MAP-02 [P1] Return — Inspect decals at shallow angles and tour every texture set. Pass: clean alpha, no z-fighting/disappearing decals, and no missing or mismatched diffuse/normal/gloss asset.
- MAP-03 [P1] Shredder — Inspect toxic sky, slime above/below, lamps, curved rock, and alpha floors. Pass: sky orientation, scrolling layers, pulsing lamps, two-sided transparency, and smoothed lighting are correct.
- MAP-04 [P1] Repaired models — Inspect ammobox/spawn marker/instagun, then observe strong grenade, gunblade, plasma, rocket, and hit meshes. Pass: no mirrored icon, culling hole, faceted/inverted shading, vanishing edge, or misaligned outline.
- MAP-05 [P1] All shipped BSPs — Rotate every shipped map once and walk/shoot around representative patches, movers, teleports, liquids, and collision. Pass: every map loads and visual geometry agrees with collision.
- MAP-06 [P2] Controlled invalid BSP recovery — Organizer loads sanctioned truncated/bad-lump/patch fixtures, then loads
wfdm1. Pass: readable controlled rejection, no crash/hang/huge allocation, and the next valid map is clean.
Topology labels: UDP-D = public dedicated UDP server; LISTEN = listen server plus remote client; SDR = Steam Datagram Relay/P2P; TV = game server → TV relay → viewer.
- NET-01 [P0] Direct SDR session — Join a Steam-auth server via browser and
connect "steam:<serverSteamID>"; move, fire, chat, score, and disconnect. Pass: challenge/auth/spawn/snapshots/commands/close complete without stall, duplication, or wrong identity. - NET-02 [P0] Transport preference — On a dual-advertised server test
cl_prefer_steam_p2p 1and0, then Steamless and P2P-only listings. Pass: preferred route is honored, absent routes are skipped, and every row with one usable target joins. - NET-03 [P0] Automatic fallback — Deliberately break the preferred route while keeping the second route reachable; test SDR→UDP and UDP→SDR. Pass: the client tries the second target within a documented bound or returns a useful error; it never spins forever on Connecting.
- NET-04 [P0] SDR map lifecycle — Keep 2+ authenticated clients connected across five map changes and one server restart, then deliberately close the server connection. Pass: map changes reauthenticate/reconnect; a real close clears the dead socket and returns cleanly rather than hanging.
- NET-05 [P0] Listen/local Steam auth — Start a local game with
sv_useSteamAuth 1and add one remote client. Pass: loopback is not kicked for auth timeout and the remote player authenticates normally. - NET-06 [P0] Dedicated lifecycle — Launch
wf_server; join/rejoin, rotate maps, and restart withsv_useSteamAuth 1, then0. Pass: login/tickets close exactly once, Steam-off remains usable, and no server hang occurs. - NET-07 [P1] Public listing heartbeat — Start/stop listen and dedicated servers, issue
heartbeat, refresh, then change map/player count. Pass: address, Steam flag/ID, counts, gametype, and ping update and the listing disappears after shutdown. - NET-08 [P0] Pure/version set — Join stock pure with a clean install and again with stale/duplicate 2.15 files in the home path. Pass: current installed
*21*.pk3andmodules_21.pk3win; obsolete duplicates do not shadow, loop, or mismatch. - NET-09 [P0] Missing custom PK3 over UDP — Clean downloads and join the supplied pure custom map. Watch
cl_download_name,cl_download_percent, anddownloadstatus. Pass: transfer/checksum/mount/reconnect complete and the map is playable. - NET-10 [P0] Missing custom PK3 over SDR — Repeat NET-09 via Steam relay. Pass: in-band transfer completes without relying on an invalid HTTP base address, and the client joins rather than looping or dropping.
- NET-11 [P1] Download cancel/resume/corruption — Cancel a large transfer, reconnect to resume, then test stale oversized temp and wrong-checksum data. Pass: state cleans/resumes appropriately; corrupt data is removed and never mounted; UI remains responsive.
- NET-12 [P1] Browser sort and parsing — Sort every column both directions during refresh; inspect colored/UTF-8, empty/full, bot, password, mode, Steam/no-Steam, and TV rows. Pass: monotonic sort, no lost/duplicate row, correct sanitized fields/filters, no assertion.
- NET-13 [P1] Favorites and rapid selection — Favorite/unfavorite, restart, select rows while refresh events arrive, double-click and use Connect separately, then press Back during refresh. Pass: state persists, the correct server is joined once, and removed selection cannot be activated.
- NET-14 [P1] Connection cancel timing — Press Escape immediately, near one/two/three seconds, during fallback, and while loading for UDP and SDR. Pass: early guard/cancel behavior is consistent, no new active match is accidentally dropped, and the next connect has no stale chain.
- NET-15 [P1] Protocol compatibility — Connect 2.15.1 client↔candidate server in both directions. Pass: protocol 26/27 mismatch is rejected promptly with readable UI/console text, not a hang or parse crash.
- NET-16 [P1] TV relay — Attach viewers, change maps, show scoreboard, spectate/multipov, and record/play a relay demo. Pass: upstream/downstream reconnect cleanly with no stale configstrings, score, protocol crash, or relay hang.
- NET-17 [P0] Call-vote data transport — On a server with many maps/players repeatedly open vote UI and inspect map/gametype/kick/mute/remove lists. Pass: every row arrives once, loading terminates, selections work near the bottom, and there is no reliable-command overflow or stale list.
- STEAM-01 [P0] Shim lifecycle — Repeatedly launch/quit, force-close the game, and if approved terminate the shim during menu/play. Pass: no orphan after watchdog interval, blocked pipe, deadlock, SIGPIPE crash, or permanent startup failure.
- STEAM-02 [P1] Persona sanitization — Launch with persona names containing Unicode, color tokens, quotes, semicolons, backslashes, empty and long values. Pass: valid safe name or safe fallback; no console injection or corrupt userinfo.
- STEAM-03 [P1] Overlay/profile/avatar — Open overlay, View Profile, view scoreboard/voice avatars, change one avatar, and change maps. Pass: correct profile/data/dimensions update for the right player without freeze or swapped/corrupt image.
- STEAM-04 [P0] Friend invite/join — Join a hosted game through Steam from menu and while on another server. Pass: correct server launches/connects and prior connection cleanup plus route selection/fallback completes.
- STEAM-05 [P1] Rich presence — Observe menu, connecting, warmup, match, spectator, postmatch, map change, and disconnect. Pass: state/joinability updates promptly and clears without stale previous-server details.
- STEAM-06 [P1] Discord presence/join — Repeat with Discord active, use Join Game, then launch without Discord. Pass: correct join target/state when active; controlled logging and no functional regression when absent.
- GAME-01 [P0] Mode smoke — Play FFA, Duel, TDM/CA, CTF, Race, and Bomb through a scoring event and map end; join/spectate/change team/spawn/use objectives. Pass: rules, prediction, HUD, announcer, scoring, and transitions behave normally.
- GAME-02 [P0] Default movement — With defaults
1000/1300/700, repeat dash-jump, wall-jump, failed wall-jump, crouch, and bunnyhop under latency. Pass: familiar timing/air control and no client/server prediction snap. - GAME-03 [P1] Live movement timing — Server changes all three
g_pmove_*_timedelayvalues to obvious alternatives, then restores defaults while two clients play. Pass: both adopt changes without reconnect, stay predicted, and retain configured values after map change. - GAME-04 [P1] Instagib vote — Authenticated caller passes
callvote instagib 1, verifies rules, then votes0; try invalid/current values. Pass: valid state changes; invalid/current state is clearly rejected. - GAME-05 [P1] Failed-vote user cooldown — Set
g_vote_usercooldowntime 30; player A loses then recalls, player B calls, then A retries after 30 seconds. Pass: only A is temporarily blocked and operators are not wrongly blocked. - GAME-06 [P0] Scoreboard states/layout — Press/release during play, warmup, postmatch, spectator, multipov, demo, and TV at 720p/1080p/ultrawide and varied font/width scales. Pass: immediate display, correct hide/postmatch state, no overlap, and deterministic team/FFA backgrounds.
- GAME-07 [P1] Damage-number options — Test Tiny/Small/Medium/Large, several colors, and bullet/plasma/riotgun hits. Pass: selector never goes blank, visible size/color changes apply, and riotgun reports only intended damage.
- GAME-08 [P1] RGB/color strings — Use legacy
^colors,#RRGGBB, malformed/short RGB sequences in names/chat/server messages. Pass: valid color is consistent in chat/scoreboard/console/UI; malformed tokens do not eat text, bleed, or crash. - GAME-09 [P1] Blocklist — Block a player sending chat, vsay, and microphone voice; restart/rejoin, unblock, and View Profile. Pass: all blocked content/icons/audio are suppressed, persistence works, and unblocking/profile target is correct.
- GAME-10 [P1] HUD controls — Exercise normal/strong/hit crosshair types/sizes/colors,
cg_strafeHUDin race, outlines, and shadows. Pass: immediate correct behavior and persistence with no blank selection or backend-specific clipping/flicker. - UI-01 [P1] Map/model previews — Rapidly browse every Local Game levelshot and Player/Teams model/skin; rotate, change tabs,
vid_restart, and try missing preview. Pass: correct centered/clipped live preview and stable fallback without stale/black/checkerboard image. - UI-02 [P1] Privacy Save/Cancel — Toggle
crashreport, Save, restart, then test Cancel. Pass: Save persists and reports state; Cancel restores it. Do not intentionally crash a public tester's machine. - UI-03 [P1] Options persistence — Change representative Player/Teams/Video/Audio/Input/Privacy settings, testing Save and Cancel, then restart. Pass: only saved values persist and every sidebar link/form remains operable.
- UI-04 [P1] Russian/localized UI smoke — Switch to Russian where supported and tour changed menus/server browser. Pass: no missing keys, raw identifiers, clipped critical controls, or crash; English remains intact.
- PLAT-01 [P0] Cursor scaling — Use render resolution different from physical window size, DPI 125/150/200%, and ultrawide; sweep/click edges and small controls. Pass: cursor tracks 1:1 and clicks the element under it without drift or offset.
- PLAT-02 [P0] Mouse/focus transitions — Alternate game↔menu↔console and Alt+Tab/minimize in each state. Pass: relative look returns without a jump, menus use absolute cursor, focus loss releases pointer, refocus restores state, and no key/button sticks.
- PLAT-03 [P1] Invalid video recovery — Request unsupported resolution/frequency/fullscreen and negative/zero window positions, then restart. Pass: safe/previous mode returns with on-screen title bar and no config-deletion boot loop.
- PLAT-04 [P1] Read-only install/write paths — Run without admin rights from a read-only install; change bind, favorite/block, record demo, screenshot, and save stats; restart. Pass: installation stays unchanged and all writable state persists under the stable user directory.
- PLAT-05 [P0] Packaged dependencies — Test on a clean VM without developer SDL/OpenAL/Vorbis libraries. Pass: packaged libraries/modules resolve; Windows loads canonical
soft_oal.dll; UI and audio work without PATH edits. - AUDIO-01 [P0] OpenAL lifecycle — Verify music/announcer/player/effects, run
s_devicesands_restart, then change renderer. Pass: valid device, categories resume once, and no silence, duplicate playback, crash, or hang. - AUDIO-02 [P1] Mirrored stereo — Compare a clearly lateral sound with
cl_flip 0/1while turning. Pass: view and stereo swap exactly once; centered sounds stay centered and restoring0restores both. - AUDIO-03 [P1] Focus and sliders — Test
s_globalfocus 0/1and every mix slider at zero/intermediate/max through map changes, Save/Cancel, and restart. Pass: only intended category changes; streams recover and values persist/restore correctly. - AUDIO-04 [P0] Voice opt-in/PTT — Two Steam clients enable
cl_enablevoice, bind/hold/release+voicerecord, overlap speakers, and varycg_volume_voicechatsincluding its default. Pass: intelligible audible voice from the correct client only while held; correct avatar/name/icon/team tint; disable and expiration stop sound/indicator. - AUDIO-05 [P1] Voice block/no-Steam — Verify block persistence suppresses live voice/vsay/HUD, then press PTT repeatedly without Steam. Pass: unblock restores content; no-Steam use is inert or clearly unavailable with no deadlock, flood, or stuck key.
- MEDIA-01 [P0] Demo record/play/seek — Record 1–2 minutes, replay
.wfdz23, pause/resume, and use absolute/relativedemojump. Pass: correct writable path/metadata/audio/HUD and stable seeks across GL/Vulkan. - MEDIA-02 [P1] Old/corrupt demo — Open a 2.15
.wfdz22and truncated demo. Pass: promised compatibility works, otherwise explicit clean rejection and return to menu without deletion/crash/hang. - MEDIA-03 [P1] Demo AVI — If declared supported, capture video+audio from a known v23 demo and inspect frames/audio. Pass: readable sequential frames and synchronized audio. Mark Vulkan BLOCKED/known unsupported, not PASS, if its current assertion remains.
- SOAK-01 [P0] Mixed transport match — Run 8+ clients/bots for 60 minutes using UDP and SDR, mixed Windows/Linux, every weapon, chat, scoreboards, voice on/off, joins/leaves, and at least five map changes. Pass: stable client/server frame time, ping and memory; no reliable-command overflow, queued SDR growth, device loss, Steam-shim CPU spike, deadlock, or heartbeat stall.
- SOAK-02 [P1] UI/network churn — During SOAK-01 repeatedly refresh/sort browser, accept/reject invites, spectate/join teams, open vote lists, toggle scoreboard, and reconnect. Pass: correct selection/state and no stale rows, avatars, scores, voice indicators, connection chain, or crashes.
- SOAK-03 [P1] Renderer churn — A designated client alternates busy effects, menus, fullscreen/Alt+Tab, screenshots, map changes, and one GL/Vulkan switch between sessions. Pass: no accumulating corruption, missing draw, lost input/audio, long stall, or worsening frame pacing.
developer 1
vid_ref ref_gl | ref_nri
vid_restart
vid_fullscreen 0 | 1
r_screenshot_format 1 | 2 | 3
screenshot [name]
r_portalmaps 0 | 1
r_fxaa 0 | 1
r_soft_particles 0 | 1
cg_colorCorrection 0 | 1
cg_shadows 0 | 1 | 2
cg_outlinePlayers 0 | 1 | 2
cg_outlineModels 0 | 1
cg_outlineWorld 0 | 1
cl_prefer_steam_p2p 0 | 1
connect <primary> <fallback>
sv_useSteamAuth 0 | 1
sv_pure 1
heartbeat
downloadstatus
downloadcancel
cl_enablevoice 0 | 1
bind <key> +voicerecord
cg_volume_voicechats <value>
g_pmove_dashjump_timedelay 1000
g_pmove_walljump_timedelay 1300
g_pmove_walljump_failed_timedelay 700
g_vote_usercooldowntime 30
callvote instagib 0 | 1
record <name>
stop
demojump <time>
demoavi
- Every P0 passes on Windows/OpenGL, Windows/Vulkan, Linux/OpenGL, and Linux/Vulkan unless the row is platform-specific.
- Clean and upgraded profiles pass on every shipped OS.
- All three network transports/topologies and custom pure download have a passing result.
- No open crash, hang, data corruption, security-fixture escape, infinite connection/download loop, or renderer device loss.
- Every P1 has at least one representative result per applicable backend/topology; every omitted P2 has an owner and reason.
- Release owner publishes resolved status for Vulkan demo AVI/
envshot, custom downloads, route fallback, map PK3 packaging, and any known limitations.