Commit Graph
169 Commits
Author SHA1 Message Date
Abdessamad Derraz 43562cbebe docs: explain bios_used and the offline rejudge
The tools page lists the load and fallback lines each core's BIOS is read from, and core_probe rejudge. The method page says a game can work on the emulator's own BIOS.
2026-10-28 05:23:56 +01:00
Abdessamad Derraz f850ac36ee chore: merge pack probes
# Conflicts:
#	scripts/generate_site.py
#	scripts/sitemeasurements.py
#	wiki/testing-guide.md
#	wiki/tools.md
2026-10-28 03:28:41 +01:00
Abdessamad Derraz f78aacac29 fix: hold pack_probe to the repository's checks
run_cli entry point, --platform through platform_arg with -p and the registry's suggestion, help on every option, typed probe_lock, options documented, the module in the testing guide. The platform Tested rows fold under one line, run output joined without semicolons, and the measurements page section fits its start-level budget.
2026-10-28 01:51:52 +01:00
Abdessamad Derraz 356a101c53 fix: call a region claim ambiguous on every file
PCSX-ReARMed opens the three regional BIOS files whatever the disc, and the rule called that a confirmation because one of them held the region. A run that opened its own region's file and the others too now settles nothing.
2026-10-28 00:29:09 +01:00
Abdessamad Derraz e6f7ea8f07 chore: merge the region reference frames 2026-10-27 23:07:23 +01:00
Abdessamad Derraz d7e17491f0 chore: merge the per-run probe lock 2026-10-27 22:53:16 +01:00
Abdessamad Derraz 6d3045cbb3 fix: no region verdict from frames that differ
The first runs showed it: beetle_psx reaches the game of the US disc on the Japanese and European BIOS, through a different licence screen, so its frames differ from the full run while the oracle says boots. The interim rule read those frames as a failure. A variant now boots on the same frames as the full run or by its oracle verdict, and otherwise has no answer.
2026-10-27 22:28:43 +01:00
Abdessamad Derraz dd64434122 chore: merge main 2026-10-27 22:05:47 +01:00
Abdessamad Derraz 1c613dc4b4 fix: take the probe lock per standalone run
standalone_probe now holds the host probe lock for one run, its load check included, as core_probe does, and the docs no longer wrap region_check or standalone_probe in flock.
2026-10-27 21:08:47 +01:00
Abdessamad Derraz f8b54cc53a chore: merge the per-run probe lock 2026-10-27 21:07:57 +01:00
Abdessamad Derraz 7433d49666 fix: tell core_probe the lock is held 2026-10-27 21:03:05 +01:00
Abdessamad Derraz 9327d3f97f docs: two campaign passes share one state 2026-10-27 21:02:20 +01:00
Abdessamad Derraz 5fd691a7db docs: say which lock a campaign pass keeps 2026-10-27 21:02:15 +01:00
Abdessamad Derraz fabd431adb feat: take the host probe lock per run
core_probe takes probe.lock itself around one execution, load check included, and releases it when the run ends. A campaign pass never holds it between runs, so two passes interleave. RETROBIOS_PROBE_LOCK names another file, RETROBIOS_PROBE_LOCK_HELD says the caller holds it. Tests use their own lock file.
2026-10-27 21:02:03 +01:00
Abdessamad Derraz d035a26828 fix: take the probe lock per run
pack_probe holds ~/.local/state/retrobios/probe.lock around each core_probe run and releases it between runs, so a platform pass never blocks other probes for its whole length.
2026-10-27 21:00:51 +01:00
Abdessamad Derraz 5184b55b82 chore: merge the oracle pages 2026-10-27 19:24:19 +01:00
Abdessamad Derraz 77a1a7285a feat: write the romset table from the profiles
The FAQ table of arcade romsets was typed by hand and told readers to
collect MAME 0.160 and FinalBurn Neo 1.0.0.2 sets for cores whose source
states 0.159 and 1.0.0.03. generate_site now writes it between generated
markers from the profiles, and a test holds the page to the generator.
An emulator page names where its version is read (the file, the tag and
the commits after it, the package), and says when the code states none
or the version could not be confirmed. HBMAME no longer claims a MAME
romset. tools.md and profiling.md document version_basis and the two
modes.
2026-10-27 18:59:30 +01:00
Abdessamad Derraz 21e6520fdf fix: let region runs wait for a busy host
core_probe refuses to record above its load threshold. region_check gave up on the first refusal, so twelve runs ended at once on a host still busy from the previous run. It now tries a refused run again every 15 seconds for up to --max-load-wait seconds, the threshold unchanged.
2026-10-27 18:17:24 +01:00
Abdessamad Derraz 70c3bbd853 feat: settle a file only when the run uses it
hle_fallback needs the file to change the run: Beetle PSX hashes every file of its folder, so opened is not used. PCSX-ReARMed hides the BIOS logo by default: its BIOS load line stands for the bios stage. A check runs again only when the oracle entries of its content and core change, and the rules run on every pass from the kept records.
2026-10-27 17:58:48 +01:00
Abdessamad Derraz 417ed86405 chore: merge the boot oracle work 2026-10-27 17:20:35 +01:00
Abdessamad Derraz f9f688ae6e fix: hold the probes to the repository checks
The new probes now refuse abbreviated options, read the GitHub token through github_headers, type every signature and document every option. The site build watches region_check.py and the content list, and validate.yml's tests/** counts as watching the list. The testing guide names the two new test modules.
2026-10-27 17:05:10 +01:00
Abdessamad Derraz 4cc0a34d3c docs: describe the region and standalone probes 2026-10-27 16:17:56 +01:00
Abdessamad Derraz 052986c923 fix: an alias read settles the names tried first 2026-10-27 15:59:19 +01:00
Abdessamad Derraz a17406edae feat: let the campaign read another content list
--content-file names the test content list for run and references.
2026-10-27 15:53:25 +01:00
Abdessamad Derraz 873b645c0c chore: merge main 2026-10-27 15:52:46 +01:00
Abdessamad Derraz 3f93da6394 docs: show boot verdicts on the measurement pages
The Tested blocks and the explorer show each variant's verdict. A frame comparison from before the oracle shows no verdict. The SQLite variants table gains verdict columns. The method page says what each verdict means and how a file is proven.
2026-10-27 15:52:29 +01:00
Abdessamad Derraz 38dd7401fd feat: keep the campaign timer as an opt-in
campaign.py install-timer writes the autorun units and enables nothing unless --enable is passed. The docs say a contributor who wants a schedule on their own machine installs the timer.
2026-10-27 15:46:20 +01:00
Abdessamad Derraz 7c221c95f8 docs: describe pack_probe 2026-10-27 15:37:40 +01:00
Abdessamad Derraz 50e84866cf docs: autorun schedules nothing by default 2026-10-27 15:25:06 +01:00
Abdessamad Derraz 332c217155 feat: pass GITHUB_TOKEN to declared API steps
A step marked github_token: true receives the token. autorun accepts the key only on check_freshness.py, refresh_stale.py and python -m scripts.scraper.* tracked in this repository, refuses it on any other step and in the campaign job. The nightly steps declare it.
2026-10-27 13:41:40 +01:00
Abdessamad Derraz f5e98bfda6 refactor: fetch builds into bare mirrors
Host git only fetches into bare mirrors no sandbox ever sees, https only, with no user or system config and overrides emptying hooks, fsmonitor, ssh and proxy commands and every filter driver the mirror defines. Each build is a git archive of the commit and of each submodule commit from its own mirror. Old working-tree clones are deleted. The core copied out must be a regular file inside the build folder, opened without following links.
2026-10-27 12:19:55 +01:00
Abdessamad Derraz fdcf120a7d refactor: build cores from an exported tree
make runs on a git archive export of the commit and its submodules, the clone and its .git never bound into the sandbox. Host-side git runs with no user or system config, no hooks, no fsmonitor and the file and ext transports refused.
2026-10-27 12:07:16 +01:00
Abdessamad Derraz 34963a732f docs: describe the allowlist sandbox 2026-10-27 11:53:35 +01:00
Abdessamad Derraz a76129f0df docs: describe the campaign and its sandbox 2026-10-27 11:48:25 +01:00
Abdessamad Derraz 07c34781e7 chore: merge the autorun runner and jobs 2026-10-27 10:41:53 +01:00
Abdessamad Derraz 343a4e8bd7 feat: add the autorun job runner
Runs the jobs of automation/jobs.yml under one host lock, with load and disk guards, one idle retry on a host misread, artifacts computed twice, explicit-path commits in .cache/autorun/worktree, an opt-in push (--push) and a CI circuit breaker. First jobs: nightly refresh chain, large-files asset dry run, disk cleanup and check, weekly bios integrity. install-timers writes systemd user units without enabling them.
2026-10-27 10:40:10 +01:00
Abdessamad Derraz 0fbf920e45 chore: merge one-file measurement records 2026-10-27 10:24:41 +01:00
Abdessamad Derraz 11c65f40fc chore: align card depth test and document page 2026-10-27 10:14:56 +01:00
Abdessamad Derraz da68f19411 refactor: keep one full record per line
Each line of measurements/<emulator>.jsonl now holds the whole run:
every repetition, core logs, per-frame hashes and raw timings. The gzip
data files, the data schema and the split and join code are gone, and
core_probe --record appends one line. record_version moves to 3.

The seven records are rewritten once: each new line equals its old line
joined with its data file, and rebuilds the first-layout file its id
hashes.
2026-10-27 09:57:39 +01:00
Abdessamad Derraz 9cf0f9177d chore: merge installer tables from code
# Conflicts:
#	install.ps1
#	install.sh
#	install/launchers/index.json
#	scripts/measurement_records.py
#	tests/test_install_tui.py
#	wiki/installer.md
2026-10-27 09:48:44 +01:00
Abdessamad Derraz fb15ca68bb docs: name the sync_measurements path options
The option audit test failed on --clone and --pin, and two docstrings in
measurement_records.py joined clauses with a semicolon.
2026-10-27 09:47:36 +01:00
Abdessamad Derraz ec2b7081ad docs: describe measurements/ in the repository 2026-10-27 09:11:12 +01:00
Abdessamad Derraz 7fa8d2d019 docs: document measurement sync clone and pin 2026-10-27 09:02:28 +01:00
Abdessamad Derraz b02dd77d37 docs: describe the measurements repository
core_probe options --emulator, --subject and --supersedes, the record split into line and sidecar, sync_measurements.py and what the site build compiles from the pin.
2026-10-27 08:30:20 +01:00
Abdessamad Derraz cb5bb738cb fix: core probe through run_cli, documented
The probe skipped run_cli, accepted option prefixes in its shared options, left three options undocumented and was missing from the published schemas. The worker runs under -I, so the script directory is put back on sys.path before importing common.
2026-10-27 07:11:45 +01:00
Abdessamad Derraz 8b12685c16 feat: settle a probe check per observable
A check is inconclusive when the compared observable differs between repetitions, a run fails to load or a file changes during it. A disagreement on another observable stays flagged without voiding the comparison. Core log lines name the staged directories instead of the host paths.
2026-10-27 05:53:52 +01:00
Abdessamad Derraz 9690579f34 feat: record env files by name and sha256
A path given to --env is a detail of the host that ran the probe. The record keeps the file name and its sha256, which is what the run depended on.
2026-10-27 05:34:31 +01:00
Abdessamad Derraz 00b034612f feat: add headless libretro core probe
core_probe.py loads a libretro core with no window, runs it for a
number of frames and reports the files it opened (strace), its log
lines, frame, audio and save-state hashes and its speed. bench repeats
a run after warm-up and gives median, mean, deviation and range; check
swaps one system file between runs and compares one observable.

--record writes a JSON record with the core build, frontend commit,
host and every input by hash, validated against
core-probe-record.schema.json. A busy host is refused, and a
repetition that disagrees with the first is flagged.
2026-10-27 05:18:10 +01:00
Abdessamad Derraz 4b11a43a86 feat: version check reads tags and numbers
A project that tags without releases (eightyone, higan) was never compared,
and a core_version naming no tag (parallel-launcher 9.0.5 beside v9.0-6)
silenced the passed-release warning. The newest tag stands in when it is a
version number, and an untagged core_version is compared by number within
one scheme. --emulator is repeatable: a stored value kept only the last.
2026-10-27 04:16:31 +01:00
Abdessamad Derraz 1fc85ce601 docs: name --fresh in the tools page 2026-10-26 21:28:36 +01:00