-
Notifications
You must be signed in to change notification settings - Fork 1
Compatibility
Empirical results from the version compatibility sweep (.github/workflows/compat.yml),
which builds Atlas against each game version's own dlls and runs the full E2E suite on a real
embedded server:
| Version | Status | Notes |
|---|---|---|
| 1.22.3 | Compatible | All E2E scenarios green, tested on every push |
| 1.22.2 | Compatible | All E2E scenarios green, tested on every push |
| 1.22.1 | Compatible | All E2E scenarios green, tested on every push |
| 1.22.0 | Compatible | All E2E scenarios green, tested on every push |
| 1.21.7 | Compatible | All E2E scenarios green, tested on every push (the CI-verified 1.21 version) |
| 1.20.12 | Best effort | Full E2E suite green when rebuilt against its dlls; verified on the weekly sweep, not per push |
| 1.19.8 | Not supported | Rejected at boot: ServerMain.PreLaunch and the ServerProgramArgs boot signature differ beyond what the shim bridges |
| 1.18.15 | Not supported | Rejected at boot: same as above, plus Vintagestory.API.Common.Func collides with System.Func
|
Each row is the latest patch of its minor available on the stable CDN; 1.18.0 through 1.18.7
predate the game's .NET migration and ship under a different server archive entirely. The
supported floor is Vintage Story 1.21.0 since Atlas 0.9.0 (issue #15): the entire
compile-level gap below 1.22 was the server exit lifecycle, now owned by the runtime shim
EngineCompat (exit-state field, Stop signature, network version read from the loaded
engine's metadata), boot-validated fail-fast on engines whose layout drifted.
For 1.19.x and older, the boot API changes shape beyond what reflection can reasonably
bridge (ServerMain.PreLaunch, the ServerProgramArgs signature), so Atlas rejects those
versions up front with an AtlasSetupException citing the floor. One caveat below 1.22: the
verified flow rebuilds Atlas against the target install's own dlls (the documented
VINTAGE_STORY flow); running the prebuilt NuGet binaries on an older engine is designed
for but has no CI lane yet.
.github/workflows/compat.yml runs on a schedule (cron: "0 6 * * 1", every Monday) across a
matrix of Vintage Story versions. For each version:
- Download and cache that version's Linux server archive from the Vintage Story CDN.
-
dotnet build Atlas.slnx -c Releaseagainst that version's dlls (continue-on-error: true, so a failure here does not abort the workflow, only that version's leg). - If the build succeeded, run
Atlas.Engine.TestsandSample.Scenarios, both filtered toCategory=E2E(alsocontinue-on-error: true). - Compute a verdict per version:
compatible(build and both E2E suites passed),incompatible (API)(build failed), orpartial(build succeeded but at least one E2E suite failed), with a short note naming which suite failed forpartial. - An
aggregatejob collects every version's verdict artifact and renders a consolidated table into the workflow's step summary.
Trigger a sweep on demand from the Actions tab (workflow_dispatch), or from the CLI:
gh workflow run compat.yml --repo Pixnop/Atlasworkflow_dispatch accepts an optional versions input (space- or comma-separated) to sweep
a custom set of versions instead of the default matrix
(1.18.15, 1.19.8, 1.20.12, 1.21.7, 1.22.0, 1.22.1, 1.22.2, 1.22.3):
gh workflow run compat.yml --repo Pixnop/Atlas -f versions="1.22.0,1.22.3"