fix(catalog): preflight package versions

Full catalog generation previously prepared each game sequentially, so a
version mismatch late in the catalog could surface only after earlier packages
had already been extracted and hashed. Validate every selected version.ini
against game.db before starting manifest preparation, while retaining the
per-package validation during preparation to detect later input changes.

Document the ordering and cover it with a regression where an earlier archive
would fail if archive processing began before a later version mismatch.

Test Plan:
- `just fmt` -- passed
- `just test` -- passed
- `just clippy` -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-13 07:13:00 +02:00
parent 3bdd8d06da
commit a977585f6d
3 changed files with 25 additions and 10 deletions
+6 -5
View File
@@ -111,11 +111,12 @@ Generate the complete production manifest set:
just catalog-generate-production /srv/lanspread/packages
```
The publisher independently reads and hashes each selected package twice before
publication. Under a durable publication marker, it atomically replaces each
manifest and writes the complete content index last. Interruption leaves the
marker in place so later checks and builds fail closed instead of accepting a
mixed generation.
The publisher first checks every selected package's `version.ini` against
`game.db`, then independently reads and hashes each selected package twice
before publication. Under a durable publication marker, it atomically replaces
each manifest and writes the complete content index last. Interruption leaves
the marker in place so later checks and builds fail closed instead of accepting
a mixed generation.
Verify the published database/index/manifest set without rereading the package
corpus: