Test-execution evidence for the V2 source tree as of this date, run on the
on-box Unreal Engine 5.5.4 Linux source build (UnrealEditor-Cmd, NullRHI,
unattended, run as the ueagent user). The raw exported report index is
committed next to this file as 2026-06-12-linux-editor-report.json.
Build#
- Target:
V2Editor Linux Development, built via direct UnrealBuildTool invocation against the engine at/root/workspace/UnrealEngine-5.5. - Pre-build step (
pnpm --filter @oshun/codegen run v2:grpc-stubs) regenerated and verified 44 gRPC service descriptors / 666 RPC descriptors. - Full rebuild plus incremental passes completed with zero compile or link errors across all 26 project modules and plugins.
Full suite#
Command:
UnrealEditor-Cmd V2.uproject -ExecCmds="Automation RunTests V2.; Quit" -ReportExportPath=... -unattended -nop4 -nosplash -NullRHI
Result: 168 / 168 tests Success (one success-with-warnings), zero failures,
zero not-run. This includes V2.Combat.MoveData.AssetContract (the §6.7
projectile / reflectable / multi-hit per-move verification),
V2.UI.RegionVariantBoot.AssetContract (§54.2 region variant data assets + boot
assert), and the two §56.1 golden-replay corpus tests below.
Golden-replay corpus (§56.1)#
V2.Netcode.GoldenReplayCorpus.Generator(run with-V2GenerateGoldenCorpus) wrote 200 manifests toContent/V2/Tests/GoldenReplays/Corpus/, each self-verified by an immediate in-process re-simulation before writing.V2.Netcode.GoldenReplayCorpus.Regressionwas then run in a separate editor process and replayed all 200 manifests throughFV2SimWorldwith frame-by-frame hash comparison: 200 / 200, zero divergence.
Determinism bug found and fixed by this run#
The first cross-process regression run failed loudly
(Golden.SimCorpus.000.json: DIVERGENCE at frame 10): the deterministic sim
state hash mixed in GetTypeHash(FName), which hashes the process-local
name-table index and therefore differs between processes. This silently broke
any cross-process hash comparison — exactly what §49 server re-simulation
verification depends on. Fixed by introducing V2StableNameHash (content-based
FCrc::StrCrc32 of the name string) and converting all 103 FName/tag hash sites
in V2NetcodeTypes.cpp / V2RollbackSimWorld.cpp (fighter state hash, snapshot
hash and serialized state, collision-event hashes, ability-state hash
accumulation). After the fix the corpus was regenerated and the fresh-process
regression passed 200 / 200.
Region variant data assets (§54.2)#
UnrealEditor-Cmd V2.uproject -run=V2CreateRegionVariants authored the eight
URV2_RegionVariant data assets at Content/V2/Regions/ from
V2/legal/rating-boards.json; every rule passed
URV2_RegionVariant::IsValidRegionVariant before save, and
V2.UI.RegionVariantBoot.AssetContract validates each asset's canonical variant
id, SKU tag, content-rule flags, and boot-assert pass.
Companion sweeps (same date)#
V2/ue/Tools/check-*.py: 547 / 547 pass (after the cook-staged rating samples landed; seestage-region-rating-config.py).- V2 service libraries (
apps/v2/*): 50 / 50 vitest suites pass. - V2 web surface (
apps/v2/web): 3 / 3 vitest tests pass.
Engine-side fix applied during the sample cook#
The first Linux cook died fatally in global shader compilation:
NiagaraStatelessSimulationTemplate.ush includes
Modules/NiagaraStatelessModule_ScaleMeshSizebySpeed.ush (lower-case "by")
while the file on disk is ...ScaleMeshSizeBySpeed.ush — harmless on
case-insensitive Windows, fatal on Linux. Fixed in the on-box engine checkout
(/root/workspace/UnrealEngine-5.5, one-character include correction) and the
cook was re-run. This is an engine-tree fix and is not part of this repository's
diff.
Scope honesty#
These runs exercise the C++ contract/spec layer, the deterministic sim core, and
editor commandlets on Linux. They are not cooked-platform runs, not
hardware-latency measurements, and not live-service verification; tasks gated on
those remain unchecked in V2/V2_TODOS.md.