Commit Graph
62 Commits
Author SHA1 Message Date
Abdessamad Derraz ccb35b9b82 refactor: read the preferred-entry rule from packresolve 2026-10-17 10:38:18 +02:00
Abdessamad Derraz 7a6e494597 fix: name custom and system packs by their selection
Two --from-md5 runs with different hash lists wrote the same file, the
second replacing the first, and a pack limited to thirty systems built
a name longer than a file name may be. The custom pack now carries a
digest of its hash list, and a long system list keeps its first system,
a count and a digest, as the emulator pack does.
2026-10-17 10:28:11 +02:00
Abdessamad Derraz 45b58d2417 fix: write the truth model and clone map atomically 2026-10-17 08:54:29 +02:00
Abdessamad Derraz 53625156d6 fix: key the zip member index on all its inputs 2026-10-17 08:52:21 +02:00
Abdessamad Derraz d1807af791 fix: stop the scan on an unreadable database 2026-10-17 08:52:04 +02:00
Abdessamad Derraz 08b239f22a fix: resolve a name with its directory as a path 2026-10-17 08:29:34 +02:00
Abdessamad Derraz 51f3249a7d fix: give a shared core slot to the pinned claim
hypseus-singe asks for gamecontrollerdb.txt by name alone and, first
in profile order, took the BIOS root of Batocera, RetroBat and
RetroPie with C-Dogs' small table while Solarus pins its own by sha1.
A destination two cores claim now goes to the one naming its content.
2026-10-17 08:27:08 +02:00
Abdessamad Derraz 6810e8df9a fix: never prove a file by another emulator's tree
lrps2 names no hash for its GameIndex.yaml, and the only full-tail
copy was ARMSX2's: it counted as path proof and replaced the file
RetroArch pins on desktop targets, which have no ARMSX2. Upstream
PCSX2 took ARMSX2's patches.zip by name the same way. A copy in
another emulator's tree now proves nothing at any tail length, and
LRPS2's own GameIndex comes from the tree the buildbot publishes.
2026-10-17 08:12:24 +02:00
Abdessamad Derraz cb41a52b17 fix: skip region-dropped extras in the hidden report 2026-10-17 02:03:26 +02:00
Abdessamad Derraz 42950a553c feat: refresh data trees once per online pipeline
Step 2 refreshed the data directories, then the pack build and the
manifest build refreshed them again, so a tree tracking a moving
branch could differ between the pack and the manifest. generate_pack
gains --no-refresh-data, which packs the cached trees and still
fetches release assets; the online pipeline passes it to both builds.
2026-10-17 01:59:20 +02:00
Abdessamad Derraz e26516fc0e fix: write a group's pack under the group's name
The RetroArch and Lakka pack was built under RetroArch's own name and
renamed afterwards, which overwrote then carried away a --platform
retroarch pack in the same directory, and failed on Windows where
os.rename refuses an existing target.
2026-10-17 01:58:15 +02:00
Abdessamad Derraz 29fb1a58e4 fix: name long emulator packs within a file name
--system snes joined 23 emulator names into the ZIP name and died
with ENAMETOOLONG before writing anything. The system pack now passes
its own name in, and an --emulator selection too long to join keeps
its first name, a count and a digest of the selection.
2026-10-17 01:57:53 +02:00
Abdessamad Derraz bf47d3d998 chore: run the pipeline to test its offline guard 2026-10-17 01:55:49 +02:00
Abdessamad Derraz 08761e250f chore: fail when the readme loses its contributors 2026-10-17 01:55:49 +02:00
Abdessamad Derraz 78162e7022 fix: write the database cache atomically 2026-10-17 01:54:35 +02:00
Abdessamad Derraz c14e3e90b1 fix: keep stella kidvid tapes out of bios packs 2026-10-17 01:51:15 +02:00
Abdessamad Derraz cd4a9143f7 fix: compare md5 one way in verify and packs 2026-10-17 01:47:16 +02:00
Abdessamad Derraz 20638fde93 fix: check packs with the builder's own verdict 2026-10-17 01:44:38 +02:00
Abdessamad Derraz 61f49b7ac0 fix: report missing assets when no cache exists 2026-10-16 22:09:39 +02:00
Abdessamad Derraz 5bbc69fab1 fix: skip the backup check without jsonschema 2026-10-16 19:22:40 +02:00
Abdessamad Derraz b2e6a2b978 chore: keep jsonschema out of the build scripts 2026-10-16 18:10:45 +02:00
Abdessamad Derraz d4e2e5ac8a fix: skip hash merge backups in every loader 2026-10-16 18:09:45 +02:00
Abdessamad Derraz 866f214e20 refactor: share the baseline verdict with the manifest 2026-10-16 17:09:08 +02:00
Abdessamad Derraz a91ffc0b83 fix: remove test scratch directories 2026-10-16 17:01:52 +02:00
Abdessamad Derraz 0b4e324054 fix: stop generate_db when pyyaml is missing 2026-10-16 16:07:04 +02:00
Abdessamad Derraz 0408c5d359 fix: state and check the 3.12 build floor 2026-10-16 16:05:10 +02:00
Abdessamad Derraz e42c98d176 fix: let no exclusion excuse a count mismatch 2026-10-16 09:59:58 +02:00
Abdessamad Derraz a0a9e04e2b fix: give extracted files their pack mode 2026-10-16 09:58:57 +02:00
Abdessamad Derraz bfa741a9c9 fix: accept the slug omission in the installer 2026-10-10 03:59:23 +02:00
Abdessamad Derraz d3e3c08b6c chore: name the slug omission in the schema 2026-10-09 23:18:36 +02:00
Abdessamad Derraz 8a0c3b34ea fix: resolve the region audit like the pack 2026-10-09 22:45:57 +02:00
Abdessamad Derraz 3dc353dc73 fix: hold verify and pack to the same count both ways 2026-10-09 21:59:38 +02:00
Abdessamad Derraz f3d01aeeeb refactor: split this round's fixes into small helpers 2026-10-06 11:16:06 +02:00
Abdessamad Derraz e9653069a2 fix: require the jsonschema format checkers 2026-10-06 09:45:25 +02:00
Abdessamad Derraz 177896a021 fix: count exclusions from the full pack only 2026-10-06 08:52:51 +02:00
Abdessamad Derraz 226a5df74a refactor: hoist test imports, rank pairs at module level 2026-10-06 06:38:35 +02:00
Abdessamad Derraz 95b5a038f2 fix: give a targeted export the full truth model 2026-10-06 05:09:45 +02:00
Abdessamad Derraz b307de5719 fix: skip schema tests when jsonschema is absent 2026-10-06 05:08:40 +02:00
Abdessamad Derraz ce135b788f fix: compare only the full pack to verify 2026-10-06 04:49:21 +02:00
Abdessamad Derraz 41474596d0 fix: gate on slot crashes and empty consistency 2026-10-06 01:34:59 +02:00
Abdessamad Derraz b5c1e4fc03 fix: count engine and publisher trees as game data 2026-10-04 23:47:21 +02:00
Abdessamad Derraz 08bce47668 fix: keep install manifests and release assets true 2026-09-14 01:17:49 +02:00
Abdessamad Derraz 4f67e3cad3 fix: honour a contradicted hash that is not an md5 2026-09-07 07:48:54 +02:00
Abdessamad Derraz fd524d343b docs: declare the site build dependencies 2026-09-07 07:12:33 +02:00
Abdessamad Derraz 6d97fbe127 fix: stop a check that cannot answer exiting zero 2026-09-07 05:39:50 +02:00
Abdessamad Derraz 1c976390d7 fix: let a refresh failure reach the exit code 2026-09-07 05:30:56 +02:00
Abdessamad Derraz 17b7633314 fix: fail the bios job when validation fails 2026-09-07 04:36:03 +02:00
Abdessamad Derraz 691ccbfca7 feat: make the native export round-trip a platform file 2026-09-05 17:32:48 +02:00
Abdessamad Derraz 6f27a296f7 feat: refuse a citation no repository can hold
kenji-nx cited tmp/es-de/ANDROID.md:470-474, a path from the machine of
whoever profiled it. No revision of any declared repository holds it, so
profile_sync could only report it missing, every pass, forever, and no
amount of reading would ever settle it.

validate_schemas now refuses a scratch directory, an absolute path, a
Windows drive path and one climbing out of the tree, and names the
offending citation rather than the scalar that carries it. Offline, so it
runs on every push and every pull request rather than waiting for a
network pass.

The ES-DE citation reads as external now, which is what it always was.
kenji-nx is at 37 refs, all anchored: the three changed blocks were var
giving way to explicit types.
2026-09-04 18:26:27 +02:00
Abdessamad Derraz 1a96853aee feat: sign the release checksum list
SHA256SUMS.txt sat beside the artifacts it vouches for, so whoever could
rewrite a release rewrote the list with it. The packs were already
reproducible, which answers corruption and lets a third party rebuild an
archive byte for byte; nothing answered a rewritten release.

The list is now signed with an ed25519 key kept for this alone, and the
public half is allowed_signers at the repository root, so verification
does not go through the release page: ssh-keygen -Y verify against the
committed file, then sha256sum --check. Rehearsed on all three outcomes:
a good signature, a tampered pack caught by the sums, a rewritten list
caught by the signature.

The release steps sign and upload the signature, the README points a
downloader at the procedure, and the reproducibility section says what
each half proves. Rotation keeps retired lines so past releases stay
verifiable. Three tests hold the trust root, the signing step and the
documented principal in agreement.
2026-09-04 14:01:05 +02:00