Skip to content

Level-up: OpenArena + beta traces + spec_energy + Windows-safe CI#236

Draft
timfox wants to merge 29 commits into
mainfrom
cursor/level-up-idtech3-d22f
Draft

Level-up: OpenArena + beta traces + spec_energy + Windows-safe CI#236
timfox wants to merge 29 commits into
mainfrom
cursor/level-up-idtech3-d22f

Conversation

@timfox
Copy link
Copy Markdown
Owner

@timfox timfox commented Jun 1, 2026

Summary

Integration branch that levels up the engine for classic-mod compatibility, automated QA, and generative tooling in one validated stack.

Included (merged)

  • OpenArena / Q3 QVM: r_classicMod, classic_mod, Vulkan compat fixes, run_openarena.sh, openarena_validate.sh, Tier B devdata hooks
  • Spectral-Energy: spec_energy_generate pipeline (default-off cl_spec_energy_enable)
  • Automated beta testing: beta_record / beta_play / beta_test, JSONL events, example traces (paper-inspired)
  • Windows CI fix: PE-safe binary scans via scripts/lib/release_bin.sh + q3_compat markers

New in this PR

  • docs/LEVEL_UP.md — integration guide
  • scripts/level_up_validate.sh — one-command validation orchestrator
  • scripts/lib/release_bin.sh — shared bin_path / grep -a helpers for smoke + compat
  • Smoke test uses PE-safe scans for generative + beta trace symbols
  • validate_ci_build.sh step 8 runs level-up gates
  • CTest test_level_up_scripts

Validate locally

./scripts/compile_engine.sh vulkan
./scripts/level_up_validate.sh release

Notes

  • Petri-net high-level replay executor remains future work; trace format + docs are in place.
  • spec_energy_check.sh runs only when external/flux_spec_energy (or SPEC_ENERGY_REPO) exists.
Open in Web Open in Cursor 

cursoragent and others added 29 commits May 28, 2026 21:58
The cs_autoInit guard only matched ri.Cvar_Get, but qcommon uses
Cvar_Get in csharp_debug.c. Accept both patterns and document Vulkan
troubleshooting for classic Quake III / OpenArena installs.

Co-authored-by: Tim Fox <timfox@outlook.com>
- examples/q3_vulkan_compat.cfg for optional classic-mod renderer tuning
- q3_openarena_compat_check registered in CTest (validation;smoke)
- Link example from COMPATIBILITY.md and examples/README.md

Co-authored-by: Tim Fox <timfox@outlook.com>
- Do not ERR_FATAL when swapchain lacks TRANSFER_SRC (r_fbo 0); warn and
  disable screenshot readback instead; only request supported usage flags.
- Rebuild world pipelines when r_lightmap_srgb_decode changes (Q3/OA HDR fix).
- test_vk_vegetation_dispatch_order: use grep instead of rg for portability.
- Extend source guards; fix devdata OPTIONAL_GAME_ASSETS path comment.

Co-authored-by: Tim Fox <timfox@outlook.com>
- VK_SetLightParams: skip legacy r_gamma light scaling when r_fbo/HDR active.
- OpenGL dlight ARB path: same when r_hdr 1/2.
- Expand q3_openarena_compat_check for swapchain, lightmap, and dlight guards.
- Document volumetric fog on alpha geometry; dedupe validate_ci_build q3 run.
- Update HDR_GAPS §6.7 to match implementation.

Co-authored-by: Tim Fox <timfox@outlook.com>
- Add run_renderer_tier_b_devdata.sh (rtest_base map load + asset manifest).
- CTest renderer_regression_maps_devdata; validate_ci_build step 6b.
- production_readiness uses devdata when GAME_BASE unset.
- Auto-select devdata OPTIONAL_GAME_ASSETS when GAME_BASE is rtest_base.

Co-authored-by: Tim Fox <timfox@outlook.com>
- evidence_status.sh: detect shipped rtest_base devdata path.
- bootstrap_ioq3_qvm.sh for rebuilding qagame.qvm when devdata is missing.
- FINDINGS Tier A row for 2026-05-29 automated gate; AGENTS.md ctest note.

Co-authored-by: Tim Fox <timfox@outlook.com>
- docs/Q3_OPENARENA_VULKAN.md consolidates setup, scripts, and tuning.
- CHANGELOG [Unreleased] entries for compat, Tier B, and Vulkan fixes.
- Link from QUICKSTART and COMPATIBILITY.

Co-authored-by: Tim Fox <timfox@outlook.com>
When SDL cannot create a VK_KHR_surface window (headless CI, missing ICD),
fall back to OpenGL before VKimp_Init fatals — Q3/OA and demo shells still start.
ARM-only guard removed; compat check and docs updated.

Co-authored-by: Tim Fox <timfox@outlook.com>
Co-authored-by: Tim Fox <timfox@outlook.com>
Integrate rajabi2001/sega as an external PyTorch generation hook mirroring
FLUX/TRELLIS: async SDL jobs, console commands, and texture hot-reload.

- Vendored upstream flux_sega/ and qwen_sega/ under external/sega/
- scripts/sega_flux_generate.py wrapper copied to release on build
- src/client/cl_sega.c with cvars, sega_generate/status/cancel/view
- Shared cl_pipeline.c/h for shell template expansion (FLUX/TRELLIS/SEGA)
- USE_SEGA CMake option (default ON), docs/SEGA.md, runtime check script
- cl_sega_enable defaults to 0 for classic mod compatibility

Co-authored-by: Tim Fox <timfox@outlook.com>
User-facing commands, cvars, CMake flag, docs, and scripts now use
spec_energy_* / USE_SPEC_ENERGY instead of sega_* / USE_SEGA.

Vendored upstream moved to external/flux_spec_energy/ (upstream
flux_sega/ layout unchanged). GitHub repo URL kept only as upstream
reference in docs.

Co-authored-by: Tim Fox <timfox@outlook.com>
- Add spec_energy_runtime_check to CTest, validate_ci_build, smoke_test
- Fix cs_autoInit compat grep (Cvar_Get vs ri.Cvar_Get)
- Document release wrappers in DEVELOPMENT_SETUP; cross-link TRELLIS.md

Co-authored-by: Tim Fox <timfox@outlook.com>
- Upstream layout validator (flux_sega/, qwen_sega/, requirements.txt)
- spec_energy_runtime_check runs layout check on vendored copy
- COMPATIBILITY.md notes generative hooks default off

Co-authored-by: Tim Fox <timfox@outlook.com>
ASAN and other raw-CMake jobs may not copy release/spec_energy_flux_generate.py.
Skip spec_energy_runtime_check in that case (warn), so smoke_test doesn't fail
unless the wrapper is actually present.

Co-authored-by: Tim Fox <timfox@outlook.com>
- vk_shader_determinism_check: compile_shaders to temp dir and compare to tracked blobs
- vulkan_state_of_art_check: enforce RTX feature gating (Features2), pNext chain use, and extension-list guards
- Wire both into validate_ci_build and CTest

Co-authored-by: Tim Fox <timfox@outlook.com>
Co-authored-by: Tim Fox <timfox@outlook.com>
- Merge cursor/implement-spec-energy-d22f (spec_energy, Vulkan CI gates)
- Add r_classicMod cvar and classic_mod console command
- vk_apply_classic_mod_preset for Q3/OA-safe Vulkan at init
- docs/OPENARENA.md and scripts/run_openarena.sh launcher

Co-authored-by: Tim Fox <timfox@outlook.com>
- classic_mod sets renderer cvars immediately (vid_restart for latch)
- run_openarena.sh: inline boot cvars, CLASSIC_MOD=1, copy cfgs to OA_BASE
- examples/q3_classic_mod.cfg; ship to release/examples/ on build
- pr_ready_summary.sh targets evolution PR #233; compat checks expanded

Co-authored-by: Tim Fox <timfox@outlook.com>
- run_openarena_server.sh for dedicated QVM hosting
- test_run_openarena_script CTest (CLASSIC_MOD, OA_BASE cfg copy)
- check_artifacts validates release/examples/*.cfg
- Fix compat check SIGPIPE with grep process substitution
- cl_flux_enable default-off gate; smoke_test release/examples check

Co-authored-by: Tim Fox <timfox@outlook.com>
- Single script: compat check, launcher test, smoke, Tier B devdata
- RELEASE_CHECKLIST, evidence_status, OPENARENA.md PR merge note
- CHANGELOG and compat check for orchestrator

Co-authored-by: Tim Fox <timfox@outlook.com>
Implement client-side beta trace framework inspired by Hernández et al.
(Entertainment Computing 2017): record usercmds and JSONL high-level events,
replay for regression tests, and evaluate success/fail patterns with timeouts.

Includes documentation, demo_game example traces, Petri net JSON sample, and
CTest format validation script.

Co-authored-by: Tim Fox <timfox@outlook.com>
- Resolve idtech3/idtech3_server with .exe and arch suffixes like smoke_test.sh
- Scan binaries with grep -a and strings -a/-el (PE-safe) instead of strings|grep
- Add q3_compat markers in qcommon so stripped Windows builds retain QVM/fs strings

Co-authored-by: Tim Fox <timfox@outlook.com>
…el-up-idtech3-d22f

Co-authored-by: Tim Fox <timfox@outlook.com>
…p-idtech3-d22f

Co-authored-by: Tim Fox <timfox@outlook.com>
Merge evolve-openarena + automated-beta-testing onto spec-energy baseline.
Add level_up_validate.sh orchestrator, shared release_bin.sh for Windows PE
string scans in smoke/compat, extend openarena_validate with beta traces,
document stack in docs/LEVEL_UP.md, and add CTest test_level_up_scripts.

Co-authored-by: Tim Fox <timfox@outlook.com>
- vk_handle_device_lost: warn and skip frame instead of ERR_FATAL on device lost
- cl_autoClassicMod (default 1): apply classic_mod when baseq3/OA base detected
- examples/q3_fbo_safe.cfg + release copy; document in Q3_OPENARENA_VULKAN.md
- Bot: unimplemented AAS travel types use PRT_ERROR and movement failure
- evidence_status.sh --strict; compat checks for new safety hooks

Co-authored-by: Tim Fox <timfox@outlook.com>
…spec_energy check

- Add stage_ci_release.sh (copy scripts + example cfgs like compile_engine.sh)
- GHA: use staging before smoke/ctest; chmod validation scripts; ctest -j1 on Ubuntu
- spec_energy_runtime_check: release_bin PE scans; skip when Python wrapper absent
- level_up_validate: fix ctest filter regex

Co-authored-by: Tim Fox <timfox@outlook.com>
CMake picks up new qcommon sources via AUX_SOURCE_DIRECTORY; the MSVC
quake3e and quake3e-ded projects list sources explicitly. Add the three
files so ARM64/x64 Debug server and client builds resolve
Q3_Compat_TouchMarkers, Com_ScriptEmitEvent, and cs_* command stubs.

Co-authored-by: Tim Fox <timfox@outlook.com>
- beta_status command; test_result=pass|fail on beta_test stop; CL_BetaTrace_LastTestResult
- cmd.c: register cs_* only when USE_CSHARP (align with Lua); script_emit include guard
- tests/scripts/test_msvc_qcommon_parity.sh + CTest (prevents Windows LNK2019 drift)
- level_up_validate step 1/7; docs and compat check for beta_status

Co-authored-by: Tim Fox <timfox@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants