-
Notifications
You must be signed in to change notification settings - Fork 224
Implement multi-platform CI sync testing #2906
Copy link
Copy link
Open
0 / 40 of 4 issues completedLabels
area: devops/gitopsCI/CD pipelines, Docker builds, CMake build system, and repository infrastructureCI/CD pipelines, Docker builds, CMake build system, and repository infrastructurearea: toolsAuxiliary engine tools and developer/server tooling (e.g. pr-downloader)Auxiliary engine tools and developer/server tooling (e.g. pr-downloader)enhancementFeature request or improvement to existing behaviorFeature request or improvement to existing behavior
Metadata
Metadata
Assignees
Labels
area: devops/gitopsCI/CD pipelines, Docker builds, CMake build system, and repository infrastructureCI/CD pipelines, Docker builds, CMake build system, and repository infrastructurearea: toolsAuxiliary engine tools and developer/server tooling (e.g. pr-downloader)Auxiliary engine tools and developer/server tooling (e.g. pr-downloader)enhancementFeature request or improvement to existing behaviorFeature request or improvement to existing behavior
Task
Create a GitHub Actions CI workflow that runs engine sync tests on both arm64 and amd64 architectures, and compares the resulting checksums against each other and against historical "golden" runs to automatically detect sync regressions.
Context
Currently, verifying that the engine remains deterministic across different platforms requires manual testing. As we look to introduce new compiler optimizations (like enabling SSE4) or refactor core simulation code, we need automated safeguards to ensure we don't introduce desyncs between players on different hardware.
The proposed solution is to run sync tests as part of the CI pipeline on both
amd64andarm64runners. A dependent job will then compare the outputs to ensure cross-platform determinism. However, comparing architectures against each other isn't enough, as a bug could theoretically alter the simulation deterministically across all platforms at once. To catch this, the CI must also compare the results against historical or "golden" checksums from previous revisions. We can draw inspiration from the BAR game repository's integration tests, which write results to disk in one job and evaluate them in another, potentially storing a rolling history of recent runs in a structured format.Acceptance Criteria
amd64andarm64runners.Author: Bruno D
Discord: https://discord.com/channels/549281623154229250/724924957074915358/1484690181482221638
Model: gemini-3-pro-preview