Quake Live Parity Audit
May 31, 2026 ยท View on GitHub
Last updated: 2026-05-31
This file is the current cross-subsystem ledger for the repository. Detailed
reconstruction history belongs in the dedicated subsystem audits under
docs/reverse-engineering/; this top-level audit now records the current
repo-wide state, the active remaining work, and a minimal set of historical
closure anchors kept for existing parity gates.
This ledger now distinguishes between:
- the strict-retail Windows replacement target that the dedicated parity gates score; and
- repo-wide parity across the whole checked-in tree, including the compatibility-only and packaging-dependent surfaces that the strict-retail score intentionally excludes.
Current status
The current audited state, with the aggregate pytest sweep refreshed on 2026-05-17, is:
ui, strict retail module,qcommon, the mappedqsharedhelper family, renderer, server, remaining engine host/support, andclientparity gates are green on the current worktree.- The focused 2026-04-16 Windows platform-specific engine audit remains closed, as do the focused 2026-04-16 engine netcode and Awesomium/browser-host audits.
- The focused gameplay validation sweep remains closed on the current worktree
through dedicated Race, gametype-lifecycle, ready-up, and
pmovefixtures. - The 2026-05-25 movement/playerState re-audit keeps the shared pmove, playerState replication, pmove settings transport, and prediction wiring surface at 100% for the scoped retail source reconstruction; no source patch was required.
- The 2026-05-25 pmove factory wiring re-audit keeps the retail
pmove_*factory cvar table, reset/apply ordering, reload-to-pmove refresh handoff, custom-settings mask grouping, and cgame/UI publication wiring at 100%; the pass added a focused regression guard for the factory apply sequence. - The 2026-05-25 deep pmove/playerState mapping sweep keeps the shared
qagame/cgame movement island at 100% while adding executable coverage
for the
PMF_NO_MOVEcommand gate and validating selectedpmove_*cvars from retail registration through cgame parse and active movement consumers. - The follow-up 2026-05-25 profile/utility pmove/playerState wiring sweep keeps that same scoped surface at 100% while pinning the remaining profile and utility cvars through registration, cache/transport, playerState profile flags, movement consumers, and custom-settings mask wiring.
- The 2026-05-25 active-client pmove/playerState wiring reconstruction closes
the qagame frame-step-to-
ClientThink_realsource mismatch by dispatching bot/synchronous client movement frames inline from the entity loop, matching the recovered retailG_RunFrameshape while keeping the scoped movement wiring estimate at 100%. - The 2026-05-25 cgame prediction pmove replay re-audit keeps the local
prediction/playerState handoff at 100% while pinning
CG_PredictPlayerStatethrough localpmove_tsetup, command replay, item/trigger prediction, mover adjustment, step smoothing, predictable-event handoff, and committed cgame symbol evidence. - The 2026-05-25 qcommon playerState delta-codec re-audit keeps the snapshot
replication bridge at 100% while pinning the Quake Live scalar netfield
table, signed movement command mirrors, and the
stats[],persistant[],ammo[], andpowerups[]array-mask round trips that feed cgame prediction. - The 2026-05-25 server/client snapshot playerState transport re-audit keeps
the live server-to-cgame bridge at 100% while pinning
SV_BuildClientSnapshot,SV_WriteSnapshotToClient,CL_ParseSnapshot,CL_GetSnapshot, andtrap_GetSnapshotordering around playerState, areamask, packet entities, andps.commandTimeping derivation. - The 2026-05-25 client/server usercmd movement-transport re-audit keeps the
command side of the movement bridge at 100% while pinning client
CL_CreateCmd/CL_WritePacket, qcommon keyed usercmd deltas, serverSV_UserMove/SV_ClientThink, qagameG_GET_USERCMD, and cgametrap_GetUserCmdprediction access. - The 2026-05-31 referenced-pak publication re-audit keeps the
sv_referencedPaks/sv_referencedPakNamesfilesystem publication and client autodownload decision lane at 100% by matching the retailFS_ReferencedPakChecksums/FS_ReferencedPakNamesflag-only condition instead of the older Quake III fs_game-wide publication rule. - The 2026-05-26 renderer framebuffer/post-process reconstruction keeps the
scoped post-process framebuffer owner lane at 99.93% by retiring the
disconnected legacy
GL_TEXTURE_2Dscene-target and scratch-bloom helper family in favor of the retailRBPP_CreateRenderTargetrectangle-texture owner. - The follow-up 2026-05-26 renderer bloom teardown reconstruction keeps the scoped post-process bloom teardown lane at 99.95% by matching retail's grouped program, texture, framebuffer, and renderbuffer shutdown order.
- The next 2026-05-26 renderer renderbuffer-cache reconstruction keeps the scoped post-process depth-stencil renderbuffer cache lane at 99.97% by matching retail's eight-entry width/height renderbuffer reuse helper and its render-target creation wiring.
- The follow-up 2026-05-26 renderer GL-error/link reconstruction keeps the
scoped post-process GL error and link lane at 99.985% by restoring the
return-valued
GL_CheckErrorscontract, render-target error branches, and the recovered post-effect program link helper. - The next 2026-05-26 renderer proc-gate reconstruction keeps the scoped post-process proc gate lane at 99.99% by splitting framebuffer-only render-target procedure loading from the shader/uniform procedure gate used by post-effect program setup.
- The 2026-05-31 renderer post-process command-payload reconstruction closes the scoped post-process command wiring lane at 100% by matching retail's command-buffer texture/program handle consumption for color-correct and bloom execution.
- The strict-retail Windows replacement target remains defensible at 100% on the current worktree.
- Repo-wide parity is not 100% once the deliberate compatibility-only lanes, the bounded non-Windows portability debt, and the remaining evidence-freshness gap are counted. The current repo-wide estimate for the whole checked-in tree is 98%.
- A new source-file parity campaign is now open under
docs/reverse-engineering/source-file-parity-ledger-2026-04-22.mdanddocs/reverse-engineering/source-file-parity-audit-plan-2026-04-22.md. That campaign decomposes the current repo-wide story into567tracked source entries plus dedicated per-file notes where the current evidence is already concrete, without changing the top-level 100% strict-retail / 98% repo-wide assessment. - A broad current-worktree parity sweep spanning the top-level parity gates,
gameplay fixtures, portability checks, and the staged retail-runtime audit
lane now passes at
72 passed, 7 skipped. - The checked-in
src/uiruntime-panel compare is now clean (65 / 65,0content diffs), and the UI overlay/runtime-package machinery now acts as a regression sentinel rather than an active correction path. It no longer stands as an active repo-wide proof gap.
Treat the 2026-04-10 engine-wide 100% report as a strict-retail Windows closure milestone, not as a claim that every checked-in portability or compatibility surface has reached retail parity.
Evidence checked
Runtime artifacts below remain the 2026-04-21 refresh set unless a newer date is called out; the aggregate pytest sweep was refreshed on 2026-05-17.
Verified directly:
pwsh -NoProfile -ExecutionPolicy Bypass -File tools/client/run_client_runtime_probe.ps1-> refreshedartifacts/client_validation/logs/client_runtime_evidence_20260410.jsonpwsh -NoProfile -ExecutionPolicy Bypass -File tools/qcommon/run_qcommon_runtime_probe.ps1-> refreshedartifacts/qcommon_validation/logs/qcommon_runtime_evidence_20260410.jsonpwsh -NoProfile -ExecutionPolicy Bypass -File tools/renderer/run_renderer_runtime_probe.ps1-> refreshedartifacts/renderer_validation/logs/renderer_runtime_evidence_latest.jsonvia the clean dated20260421bundlepwsh -NoProfile -ExecutionPolicy Bypass -File tools/server/run_server_runtime_probe.ps1-> refreshedartifacts/server_validation/logs/server_runtime_evidence_20260410.jsonpwsh -NoProfile -ExecutionPolicy Bypass -File tools/modules/run_retail_module_runtime_probe.ps1-> refreshedartifacts/module_validation/logs/retail_module_runtime_evidence_latest.jsonthrough the bounded20260421retail-module probe bundleC:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools\ci\wow64-smoketest.ps1-> refreshedartifacts/wow64-smoketest/wow64-smoketest.logpytest tests/test_client_full_parity_gate.py -q --tb=no->2 passed, 1 skippedpytest tests/test_ui_full_parity_gate.py -q --tb=no->1 passed, 1 skippedpytest tests/test_game_module_retail_parity_gate.py -q --tb=no->2 passed, 1 skippedpytest tests/test_qcommon_full_parity_gate.py -q --tb=no->2 passed, 1 skippedpytest tests/test_renderer_full_parity_gate.py -q --tb=no->2 passed, 1 skippedpytest tests/test_server_full_parity_gate.py -q --tb=no->2 passed, 1 skippedpytest tests/test_engine_host_support_full_parity_gate.py -q --tb=no->2 passed, 1 skippedpytest tests/test_ui_src_panel_parity.py tests/test_non_windows_portability.py -q --tb=no->28 passedpytest tests/test_gametype_lifecycle.py -q->8 passedpytest tests/test_game_readyup_parity.py tests/test_game_team_count_parity.py -q->7 passedpytest tests/test_racepoint_commands.py -q->1 passedpytest tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py -q->14 passedpython -m pytest tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py tests/test_pmove_movement_fixtures.py tests/test_pmove_helper_parity.py tests/test_pmove_acceleration_scope_parity.py tests/test_pmove_crouch_time_parity.py tests/test_pmove_crouch_slide_friction_parity.py tests/test_pmove_reload_fallback_parity.py tests/test_pmove_water_scale_parity.py tests/test_bg_playerstate_bridge_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_playerstate_replication.py tools/tests/test_pmove_settings_configstring.py -q --tb=short->145 passed, 107 subtests passedpython -m pytest tools/tests/test_pmove_settings_configstring.py tests/test_game_factory_regen_parity.py tests/test_game_weapon_parity.py::test_grappling_hook_full_server_and_cgame_wiring_matches_retail tests/test_ui_menu_files.py::test_ui_retail_server_settings_ownerdraw_restored tests/test_ui_menu_files.py::test_game_retail_weapon_reload_configstring_restored tests/test_cgame_displaycontext_parity.py::test_cgame_weapon_reload_configstring_bridge_restored tests/test_cgame_displaycontext_parity.py::test_cgame_server_settings_panel_reconstruction_uses_retail_custom_setting_configstrings -q --tb=short->32 passed, 107 subtests passedpython -m pytest tests/test_pmove_selected_cvar_parity.py -q --tb=short->12 passedpython -m pytest tests/test_game_active_pmove_wiring_parity.py -q --tb=short->4 passedpython -m pytest tests/test_game_active_pmove_wiring_parity.py tests/test_game_helper_seam_parity.py tests/test_game_spectator_connection_parity.py -q --tb=short->30 passedpython -m pytest tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py tests/test_pmove_movement_fixtures.py tests/test_pmove_helper_parity.py tests/test_pmove_acceleration_scope_parity.py tests/test_pmove_crouch_time_parity.py tests/test_pmove_crouch_slide_friction_parity.py tests/test_pmove_reload_fallback_parity.py tests/test_pmove_water_scale_parity.py tests/test_bg_playerstate_bridge_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_playerstate_replication.py tools/tests/test_pmove_settings_configstring.py tests/test_pmove_selected_cvar_parity.py -q --tb=short->158 passed, 107 subtests passedpython -m pytest tests/test_game_active_pmove_wiring_parity.py tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py tests/test_pmove_movement_fixtures.py tests/test_pmove_helper_parity.py tests/test_pmove_acceleration_scope_parity.py tests/test_pmove_crouch_time_parity.py tests/test_pmove_crouch_slide_friction_parity.py tests/test_pmove_reload_fallback_parity.py tests/test_pmove_water_scale_parity.py tests/test_bg_playerstate_bridge_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_playerstate_replication.py tools/tests/test_pmove_settings_configstring.py tests/test_pmove_selected_cvar_parity.py -q --tb=short->162 passed, 107 subtests passedpython -m pytest tests/test_cgame_snapshot_parity.py -q --tb=short->11 passedpython -m pytest tests/test_cgame_snapshot_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_cgame_item_respawn_timer_parity.py -q --tb=short->23 passedpython -m pytest tests/test_game_active_pmove_wiring_parity.py tests/test_cgame_snapshot_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_cgame_item_respawn_timer_parity.py tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py tests/test_pmove_movement_fixtures.py tests/test_pmove_helper_parity.py tests/test_pmove_acceleration_scope_parity.py tests/test_pmove_crouch_time_parity.py tests/test_pmove_crouch_slide_friction_parity.py tests/test_pmove_reload_fallback_parity.py tests/test_pmove_water_scale_parity.py tests/test_bg_playerstate_bridge_parity.py tests/test_playerstate_replication.py tools/tests/test_pmove_settings_configstring.py tests/test_pmove_selected_cvar_parity.py -q --tb=short->180 passed, 107 subtests passedpython -m pytest tests/test_playerstate_replication.py -q --tb=short->10 passedpython -m pytest tests/test_playerstate_replication.py -q --tb=short->14 passedpython -m pytest tests/test_playerstate_replication.py tests/test_game_active_pmove_wiring_parity.py tests/test_cgame_snapshot_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_cgame_item_respawn_timer_parity.py tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py tests/test_pmove_movement_fixtures.py tests/test_pmove_helper_parity.py tests/test_pmove_acceleration_scope_parity.py tests/test_pmove_crouch_time_parity.py tests/test_pmove_crouch_slide_friction_parity.py tests/test_pmove_reload_fallback_parity.py tests/test_pmove_water_scale_parity.py tests/test_bg_playerstate_bridge_parity.py tools/tests/test_pmove_settings_configstring.py tests/test_pmove_selected_cvar_parity.py -q --tb=short->184 passed, 107 subtests passedpython -m pytest tests/test_playerstate_replication.py tests/test_game_active_pmove_wiring_parity.py tests/test_cgame_snapshot_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_cgame_item_respawn_timer_parity.py tests/test_game_native_export_helper_parity.py tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py tests/test_pmove_movement_fixtures.py tests/test_pmove_helper_parity.py tests/test_pmove_acceleration_scope_parity.py tests/test_pmove_crouch_time_parity.py tests/test_pmove_crouch_slide_friction_parity.py tests/test_pmove_reload_fallback_parity.py tests/test_pmove_water_scale_parity.py tests/test_bg_playerstate_bridge_parity.py tools/tests/test_pmove_settings_configstring.py tests/test_pmove_selected_cvar_parity.py -q --tb=short->194 passed, 107 subtests passedpython -m pytest tests/test_usercmd_movement_transport_parity.py -q --tb=short->5 passedpython -m pytest tests/test_usercmd_movement_transport_parity.py tests/test_engine_client_command_parity.py::test_usercmd_cgame_bridge_matches_retail_weapon_primary_and_fov_bytes tests/test_engine_client_command_parity.py::test_client_input_mapping_round_277_promotes_console_input_and_usercmd_symbols -q --tb=short->7 passedpython -m pytest tests/test_usercmd_movement_transport_parity.py tests/test_playerstate_replication.py tests/test_game_active_pmove_wiring_parity.py tests/test_cgame_snapshot_parity.py tests/test_cgame_playerstate_transition_parity.py tests/test_cgame_item_respawn_timer_parity.py tests/test_game_native_export_helper_parity.py tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py tests/test_pmove_movement_fixtures.py tests/test_pmove_helper_parity.py tests/test_pmove_acceleration_scope_parity.py tests/test_pmove_crouch_time_parity.py tests/test_pmove_crouch_slide_friction_parity.py tests/test_pmove_reload_fallback_parity.py tests/test_pmove_water_scale_parity.py tests/test_bg_playerstate_bridge_parity.py tools/tests/test_pmove_settings_configstring.py tests/test_pmove_selected_cvar_parity.py -q --tb=short->199 passed, 107 subtests passedpython -m pytest tests/test_bg_misc_validation_fixtures.py tests/test_bg_misc_runtime_parity.py tests/test_bg_misc_helper_parity.py -q --tb=short->39 passedpython -m pytest tests/test_game_module_retail_parity_gate.py tests/test_qcommon_full_parity_gate.py -q --tb=short->4 passed, 2 skippedpython -m pytest tests/test_game_module_retail_parity_gate.py tests/test_qcommon_full_parity_gate.py tests/test_client_full_parity_gate.py -q --tb=short->6 passed, 3 skippedpytest tests/test_non_windows_portability.py tests/test_retail_dependency_runtime_audit.py tests/test_ui_src_panel_parity.py tests/test_ui_full_parity_gate.py tests/test_client_full_parity_gate.py tests/test_game_module_retail_parity_gate.py tests/test_qcommon_full_parity_gate.py tests/test_renderer_full_parity_gate.py tests/test_server_full_parity_gate.py tests/test_engine_host_support_full_parity_gate.py tests/test_gametype_lifecycle.py tests/test_game_readyup_parity.py tests/test_game_team_count_parity.py tests/test_racepoint_commands.py tests/test_pmove_validation_fixtures.py tests/test_pmove_air_control_runtime_parity.py tests/test_pmove_jump_timing_parity.py -q --tb=no->72 passed, 7 skipped
Audited by source/doc inspection:
src/common/platform/platform_config.hsrc/common/platform/platform_services.csrc/common/platform/backends/platform_backend_open_steam.csrc/common/platform/backends/platform_backend_steamworks.csrc/code/unix/unix_main.ctools/ci/audit-retail-dependencies.ps1tools/ci/validate-windows-native.ps1docs/platform/authentication.mddocs/platform/retail-dependencies.mddocs/platform/toolchain-matrix.mddocs/toolchain-ci.mddocs/windows-native-pipeline.mddocs/quakelive_asset_audit.mddocs/ui/hud-audit.mddocs/reverse-engineering/awesomium-browser-host-parity-audit-and-implementation-plan-2026-04-16.md- the legacy planning/status notes demoted in this pass:
docs/parity-plan.md,docs/ui_deltas.md, anddocs/ui_followup_issues.md
Active remaining work
The strict-retail Windows gate set is green. RW-G01 online services and
external ecosystems are now tracked as a documented bounded divergence rather
than active parity debt: default builds still set
QL_BUILD_ONLINE_SERVICES=0, the service table still reports build-disabled
providers, and the open/hybrid auth backends remain heuristic
accept/retry/deny shims rather than live service implementations, but that
lane is now explicitly excluded from the repo-wide deficit instead of being
left as ambiguous open work.
Two repo-wide gap families remain active:
RW-G02Non-Windows portability is still incomplete. The Linux path remains server-only, the documented glibc preset is server-module-only evidence rather than Linux client/runtime parity proof, UnixSys_LowPhysicalMemory()plus Linux/glibcSys_FunctionCmp()/Sys_FunctionCheckSum()are now restored, the historicalq3monkeyidrelease-marker probe is now reconstructed, the Unix engine now exposes a boundedgprof-compatible profiling control path viamoncontrol/_mcleanupwhen built withQL_ENABLE_GPROF=1, UnixSys_GetClipboardData()now exposes a bounded clipboard retrieval path viawl-paste,xclip, orxselwhen the host environment provides those helpers, UnixSys_CheckCD()now performs a boundedbaseq3data-root probe acrossfs_basepath,fs_cdpath, and the default install roots, UnixSys_LoadDll()now clears failed-load outputs, validates candidate exports, closes incompatible handles, and probes cwd,fs_homepath,fs_basepath, andfs_cdpath, UnixSys_GetEvent()now queues only unread packet bytes afternetmsg.readcount, and the Linux sound host now provides a bounded silent DMA sink viasnddevice null/none/silentplus explicit OSS descriptor and mmap cleanup on shutdown, Linux joystick input now bounds device probing to/dev/input/js0-3and/dev/js0-3while clearingui_joyavailand closingjoy_fdacross shutdown orin_joystickrestarts, and Linux input shutdown now releases retained X mouse grabs before clearing mouse availability, Linux GLX shutdown now handles partial-init display/context/window state, closes the QGL log, releases QGL state, and guards end-frame swaps after shutdown, while the null host/runtime now carries current executable-name, path, timer, loopback-network, browser/advert/input, a renderer GL init refusal, an explicit null silent DMA sink, and sound/device activation/voice compatibility shims plus the newer input bootstrap-cvar and no-device key-pump surface, but the profiling lane is still optional, the Linux sound lane still lacks a real modern audible backend, and the broader Unix runtime still remains compatibility-only rather than retail-equivalent hosts.RW-G04Evidence freshness outside the tracked artifacts remains incomplete. This audit reran the gate suites, refreshed the tracked client, qcommon, server, and renderer runtime bundles, reran the retained WOW64 smoke harness, and introduced guardedlatestaliases for the renderer/module runtime probes so degraded reruns do not silently replace authoritative evidence. The retail native validation lane now also stagesbuild\win32\<Config>\retail-runtime\and audits that strict runtime root for missing or extra DLLs, so the formerly documented local/runtime DLL guard follow-up is no longer open. That strict runtime-root boundary is now also pinned bytests/test_retail_dependency_runtime_audit.py, which proves the mixedbuild\win32\Debug\binlane still fails the strict audit while a clean staged root passes with rebuilt module slots treated as required but hash-optional. The module alias still points at the bounded2026-04-21retail-module artifact, whose remaining live-map shortfall was explicitly the renderer-ownedR_fonsErrorCallbackfont-atlas saturation lane rather than an ambiguous module-host failure. The 2026-05-20 renderer wiring pass removed the non-retail eager FontStash prebuild that most plausibly caused that saturation, restored directGL_ALPHAatlas refreshes, and re-aligned the retailGetRefAPIexport ABI tail around API version9, the no-op legacy font slot, and the privatepostprocess_restartoffset. This part ofRW-G04is now stale evidence awaiting a fresh module-runtime rerun. The remaining debt is concentrated in fresh native build outputs and the broader glibc plus self-hosted publication follow-ups indocs/platform/toolchain-matrix.md.
The former RW-G03 UI packaging/proof gap is now bounded rather than active:
the checked-in src/ui runtime-panel baseline is clean, and explicit
runtime-root package emission is now described by
artifacts/ui_bundle/runtime_ui_package_manifest.json, verified in
tests/test_ui_src_panel_parity.py, and consumed by the client runtime probe
before launch when future drift needs investigation.
Historical planning/docs convergence is no longer an active gap family after this pass; the stale broad-planning notes that still described older open UI and HUD deltas are now explicitly marked historical.
Detailed repo-wide audit
docs/reverse-engineering/repo-wide-parity-audit-2026-04-21.mddocs/reverse-engineering/source-file-parity-ledger-2026-04-22.mddocs/reverse-engineering/source-file-parity-audit-plan-2026-04-22.mddocs/reverse-engineering/historical-audit-index-2026-04-22.md
Subsystem references
- Repo-wide gap register and rationale:
docs/reverse-engineering/repo-wide-parity-audit-2026-04-21.md - Engine-wide closure milestone:
docs/reverse-engineering/engine-full-parity-audit-and-implementation-plan-2026-04-10.md - Current strict retail module ledger:
docs/reverse-engineering/game-module-parity-audit-and-implementation-plan-2026-04-10.md - UI parity ledger:
docs/reverse-engineering/ui-full-parity-audit-and-implementation-plan-2026-04-05.md - Client closure milestone and validation note:
docs/reverse-engineering/client-full-parity-audit-and-implementation-plan-2026-04-09.mdanddocs/reverse-engineering/client-validation-and-runtime-evidence-2026-04-10.md - Qcommon parity ledger:
docs/reverse-engineering/qcommon-full-parity-audit-and-implementation-plan-2026-04-10.md - Qshared helper parity ledger:
docs/reverse-engineering/qshared-retail-helper-parity-audit-2026-04-17.md - Renderer parity ledger:
docs/reverse-engineering/renderer-full-parity-audit-and-implementation-plan-2026-04-09.md - Server parity ledger:
docs/reverse-engineering/server-full-parity-audit-and-implementation-plan-2026-04-10.md - Remaining engine host/support ledger:
docs/reverse-engineering/engine-host-support-full-parity-audit-and-implementation-plan-2026-04-10.md - Platform-specific Windows engine ledger:
docs/reverse-engineering/platform-specific-engine-parity-audit-and-implementation-plan-2026-04-16.md - Engine netcode ledger:
docs/reverse-engineering/engine-netcode-parity-audit-2026-04-16.md - Awesomium/browser host ledger:
docs/reverse-engineering/awesomium-browser-host-parity-audit-and-implementation-plan-2026-04-16.md
Historical closure anchors kept for parity-gate compatibility
These lines intentionally preserve a minimal set of exact historical closure strings that the checked-in parity gates still consume. They document past closure milestones, not the full current 2026-04-21 top-level state by themselves.
Module closure milestones
GMR-P7is now complete in the current worktree.GMR-P8is now complete in the current worktree.- The current module audit, the top-level ledgers, and the supporting pipeline notes now all point at the same closure state again.
- The current strict retail module estimate for the current worktree is back at 100% in the refreshed module report.
Renderer closure milestones
- The open renderer gap register is now wider than the old single-tranche
RG-G05story. RG-P5is now complete.
Qcommon closure milestones
- The refreshed strict
qcommonestimate is now 92%. QC-P2andQC-P3are now complete.QC-G04andQC-G01are now closed.- The refreshed strict
qcommonestimate is now 95%. QC-P4is now complete.QC-G02is now closed.- The refreshed strict
qcommonestimate is now 98%. QC-P5is now complete.QC-G03is now closed.- The refreshed strict
qcommonestimate is now 100%. QC-P6is now complete.QC-G05is now closed.- No open gap remains in the audited qcommon register.
Qshared closure milestone
- The refreshed strict
qsharedhelper estimate is now 100%. QS-P1andQS-P2are now complete.QS-G01andQS-G02are now closed.
Server closure milestones
- The refreshed strict
serverestimate is now explicitly tracked as 100%. SV-P7is now complete.- No open gap remains in the audited server register.
Remaining engine host/support closure milestones
- The refreshed strict
remaining engine host/supportestimate is now tracked as 100%. EH-P1is now complete. The host/support artifact now carries machine-readable scope boundary and classification metadata and reportsoverall_status: pass.EH-P4is now complete.EH-G04is now closed.EH-P6is now complete.EH-G06is now closed.
Client closure milestone
CL-P6is now complete.- The refreshed strict
clientestimate is now 100%. - No open gap remains in the audited client register.
Those three lines record the 2026-04-10 client closure milestone. The 2026-04-21 worktree now revalidates that same closure state with a refreshed workflow plus runtime bundle, as described in the current-status sections above.