Commit Graph
156 Commits
Author SHA1 Message Date
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
Abdessamad Derraz d368b37165 docs: surface region filtering in the readme 2026-09-04 08:31:05 +02:00
Abdessamad Derraz 7ff6ea20d1 docs: one pack per platform, the complete one 2026-09-04 04:10:15 +02:00
Abdessamad Derraz 26df60db75 chore: build releases locally, retire the ci build 2026-09-04 03:37:01 +02:00
Abdessamad Derraz e2863b13ca chore: regenerate database, manifests and readme 2026-09-03 23:21:17 +02:00
Abdessamad Derraz 27e722d8f3 chore: remove 177 duplicate copies
dedup.py removes a copy only when another file has the same SHA-1 and
the same name, keeping the higher-priority path, so resolution by hash
still finds the content. Verified rather than assumed: all 17268
manifest entries ship the same bytes as before, no destination gained
or lost, only the source paths consolidate. Every deleted path's content
is still held elsewhere.

12.1 MB and 48 empty directories go with them. The index and the
published artefacts are regenerated on top.
2026-08-23 14:14:14 +02:00
Abdessamad Derraz 3a266be7a5 fix: keep the contributors when the request fails
The contributors block is the only part of the README that comes from
the network, and a refused request returned an empty list, which deleted
the section. That happened during a pipeline run and the result was
committed; the freshness check then regenerated the section and failed
on the difference.

An unavailable list now republishes the one already there and says so.
Losing it is a worse answer than a stale one, and it makes an offline
regeneration additive rather than destructive. Reverting the change and
simulating the same outage empties the section again.
2026-08-23 09:59:26 +02:00
Abdessamad Derraz 31b0cab1d3 chore: regenerate the index and the published figures
Rebuilt from the complete state: 8923 files indexed, 436 emulators, and
coverage up on every platform that gained a profile. The gap count falls
from 9 to 7, the three that closed being the C128 kernal, the Cave Story
build and Supermodel's Games.xml.

Whole pipeline green on this revision: database, provenance, recipes,
data directories, hash scrapers, truth, verify, packs, manifests,
consistency and pack integrity across the twelve platforms.
2026-08-23 09:37:25 +02:00
Abdessamad Derraz 87ff398f9a chore: refresh the pack sizes in the readme
The manifests moved and the table did not. Most packs grow by about
1.4 GB: a filename-agnostic core takes any file of the declared shape in
its directory, and melonDS now finds all six regional DSi NAND images
where the anchor previously settled on one. The Android app assets that
left in the same pass were small by comparison.
2026-08-23 08:15:05 +02:00
Abdessamad Derraz 22eac1e3db chore: match the readme to the committed profiles
The counts were generated from a working tree holding profiles that are
still being written and are not committed, so the freshness check
regenerated different numbers from the same revision. They are read from
the committed set now, which is what the check compares against.
2026-08-12 13:17:41 +02:00
Abdessamad Derraz bcad05eaf7 chore: refresh database and readme 2026-08-12 13:08:32 +02:00
Abdessamad Derraz 52ace172b4 chore: refresh database, manifests and readme
The findable gap moves from five to nine: the files the builder drops
under a digest mode are reported absent instead of counted as held.
2026-08-12 05:52:37 +02:00
Abdessamad Derraz 50dd523493 chore: refresh database, manifests and readme 2026-08-11 20:42:36 +02:00
Abdessamad Derraz fec53f7a20 chore: refresh database, manifests and readme
Regenerated with the large-file cache populated, the state CI builds
from: without it ten preserved entries resolve differently and the
counts drift by one file.
2026-08-11 19:28:08 +02:00
Abdessamad Derraz cffb067a59 chore: refresh database, manifests and readme 2026-08-11 19:06:19 +02:00
Abdessamad Derraz 8a3c4ea2fb chore: refresh database, manifests and readme 2026-08-11 17:14:25 +02:00
Abdessamad Derraz 80ea7f5764 chore: refresh database, manifests and readme 2026-08-11 16:05:57 +02:00
Abdessamad Derraz 4b1ab7cb74 fix: separate findable gaps from unsourceable ones
The README said 14 files were 'not in the collection yet', which
implies somebody could still put them there. Nine of them cannot be:
WHDLoad.key is a per-user signed registration, Custom.dat and key.txt
are slots the emulator expects the user to fill, gpib.rom and
dragonfly-2.3.rom have never been dumped, CARTS.CRC belongs to a dead
code path. The profiles already record why, so the two are now counted
apart: five still to be found, nine that cannot be.
2026-08-11 15:56:26 +02:00
Abdessamad Derraz b890998a94 chore: refresh database, manifests and readme 2026-08-11 14:45:18 +02:00
Abdessamad Derraz 759d3c0341 chore: refresh manifests, readme and nav 2026-08-11 06:22:49 +02:00
Abdessamad Derraz cf3302efd9 chore: refresh database, manifests and readme 2026-08-11 06:01:01 +02:00
Abdessamad Derraz dbb055f4ac feat: add the thomson cd90-640 controller rom
Clock Signal loads it from Thomson/cd90-640.rom.
2026-08-11 05:45:46 +02:00
Abdessamad Derraz 7c79e4ff4f chore: refresh database and readme 2026-08-11 01:46:46 +02:00
Abdessamad Derraz e32ae3a558 chore: refresh database, manifests and readme
The database drops the duplicate PS3UPDAT.PUP entry and regains
adler32 on every file. RetroPie gains an install manifest, so the
download table reports its size instead of a dash.
2026-08-11 01:13:36 +02:00
Abdessamad Derraz 47182f4cb1 chore: refresh database, manifests and readme
7851 files.
2026-08-10 15:13:15 +02:00
Abdessamad Derraz 8ef73daca3 chore: refresh database, manifests and readme
7847 files. Regenerated after the laserdisc acquisition.
2026-08-10 14:34:34 +02:00
Abdessamad Derraz 0d4a4b3355 chore: refresh database, manifests and readme
7779 files. Regenerated after the archive renames, the Triforce filing
and the fourteen acquired runtimes.
2026-08-10 13:37:25 +02:00
Abdessamad Derraz 45f89cc6c0 feat: add region filters and profiles 2026-08-09 14:15:56 +02:00
Abdessamad Derraz f4a8d8c54b chore: rebuild manifests and docs 2026-08-08 13:36:57 +02:00
Abdessamad Derraz b00ca4d237 docs: state only what the data supports 2026-08-08 13:16:17 +02:00
Abdessamad Derraz 088caef45e docs: use one plain vocabulary across surfaces 2026-08-08 12:59:46 +02:00
Abdessamad Derraz c94771459c chore: rebuild manifests and docs 2026-08-08 12:51:42 +02:00
Abdessamad Derraz 38e39af561 docs: say what each platform actually checks 2026-08-08 12:42:06 +02:00
Abdessamad Derraz af52c7ed24 chore: rebuild manifests and docs 2026-08-08 11:31:05 +02:00
Abdessamad Derraz eb2c064518 fix: create scratch dir and scope catalog ratio 2026-08-08 11:05:23 +02:00
Abdessamad Derraz 5c776d19fb fix: count unsourceable files in the code ratio 2026-08-08 09:04:30 +02:00
Abdessamad Derraz 918d6bc7cd refactor: fold coverage tables into two ratios 2026-08-08 08:50:16 +02:00
Abdessamad Derraz 3e7805f838 feat: show core requirements in coverage tables 2026-08-08 08:34:23 +02:00
Abdessamad Derraz c860dd7666 chore: rebuild database, manifests and docs 2026-08-08 08:21:29 +02:00
Abdessamad Derraz 3a4f8a5111 feat: publish source coverage beyond shipped cores 2026-08-08 07:00:46 +02:00
Abdessamad Derraz f3bf8f365c chore: regenerate database and manifests 2026-08-08 06:19:38 +02:00
Abdessamad Derraz b586eddb2a feat: report pack contents instead of list coverage 2026-08-08 05:42:13 +02:00
Abdessamad Derraz 5f60138dce docs: correct and complete the documentation set 2026-08-08 04:24:08 +02:00
Abdessamad Derraz 018709c624 chore: regenerate database with three catalogs 2026-08-08 02:48:10 +02:00
Abdessamad Derraz 7bb9108892 docs: merge gap analysis pointers in legend 2026-08-07 19:53:18 +02:00
Abdessamad Derraz e1a0907583 docs: define source-backed in readme legend 2026-08-07 19:49:19 +02:00
Abdessamad Derraz 110400043e chore: regenerate database and manifests 2026-08-07 19:04:33 +02:00
Abdessamad Derraz 0150bcb3ed fix: retype test and game cores 2026-08-07 16:46:57 +02:00
Abdessamad Derraz 446f690541 feat: publish source-backed coverage ratio 2026-08-07 16:23:15 +02:00
Abdessamad Derraz 954e093271 docs: publish divergence table and license scope 2026-08-07 15:30:37 +02:00