The nightly V5 Gauntlet plan runs V5.Tests.GoldenReplay first, then every
scenario returned by UV5_Test_FeelTestCatalog::BuildFeelTestScenarios.
Failures block the affected cell release gate because the scenarios cover the
cell-specific feel promises in features section "Cell Feel Tests".
Failure Modes#
| Signal | Likely cause | Required triage |
|---|---|---|
| Missing scenario record | FeelTests/*.feeltest.json and the C++ catalog no longer match |
Add or remove both records in the same change, then rerun validate-cells.py and V5.Tests.Feel.Catalog |
| Golden replay output mismatch | Deterministic input stream changed without updating expected outputs | Confirm the gameplay change is intended, update expected outputs, and rerun V5.Tests.GoldenReplay |
| Gauntlet entry missing | UV5_Test_GauntletDriver::BuildNightlyRun stopped wiring a catalog scenario |
Restore the entry before the nightly gate can pass |
| Runtime timeout | The authored scenario exceeded its expected duration plus buffer | Inspect automation capture, tighten the scenario path, or raise the timeout with producer approval |
| Criteria regression | One or more scenario success criteria did not emit a pass signal | Fix the owning system or update the criteria only when the feature promise changed |
Local Verification#
Run the focused Unreal automation before pushing a feel-test change:
bash
runuser -u ueagent -- /root/workspace/UnrealEngine-5.5/Engine/Binaries/Linux/UnrealEditor-Cmd \
/root/workspace/oshun-nisaba/V5/ue/V5.uproject \
-NullRHI -NoSound -Unattended -NoSplash -NoP4 \
-TestExit="Automation Test Queue Empty" \
-ExecCmds="Automation RunTests V5.Tests; Quit"
Also run the docs and cell validators because the JSON scenario records are release-gate inputs:
bash
python3 V5/tools/validate-v5-docs.py
python3 V5/tools/validate-cells.py
pytest -q V5/tools/test_validate_v5_docs.py V5/tools/test_validate_cells.py