Commit Graph
124 Commits
Author SHA1 Message Date
Abdessamad Derraz fd1d1b7b96 chore: merge round 2 fixes (pins)
# Conflicts:
#	install.ps1
#	install.sh
2026-10-21 10:31:09 +02:00
Abdessamad Derraz d87e1035ed chore: drop a clause semicolon in profile_sync 2026-10-21 10:24:39 +02:00
Abdessamad Derraz 3d2a521f8a fix: match profile_sync --system as verify does
--system compared the raw id, so the normalized spelling printed by verify.py --list-systems selected 1 Saturn profile of 11. The hint now counts the spellings that listing prints.
2026-10-21 09:52:13 +02:00
Abdessamad Derraz 6877512af7 feat: carry new upstream names and hashes in json
--detect-new-files and --watch-hashes were printed only by the text report and refused with --json, so check_freshness --profiles never saw a name or hash the cited code gained. Both now live on the report, and check_freshness passes them and marks such a profile stale.
2026-10-21 09:51:14 +02:00
Abdessamad Derraz 9409ec12b3 fix: keep the two mt32emu.h citations together
Each MT-32 entry cites the SHA-1 line and the ROMInfo line of one
mt32emu.h. dosbox_pure wrote them under two repository words, so the
ROMInfo line was self-checked alone and read MOVED onto the SHA-1 line.
Both now sit in the port that carries the file, and in the upstream for
dosbox-pure-unleashed, whose tree has no src/gui.

A recale that lands on a line a sibling part already cites goes to
review, and a part settled by its anchor keeps that anchor's repository.
2026-10-21 09:50:40 +02:00
Abdessamad Derraz fd9a9b14f8 fix: map rows edited in place one to one
A replace opcode of equal size is a line-by-line edit. Collapsing it onto its first line sent every ref citing a table row to the first row.
2026-10-21 09:48:33 +02:00
Abdessamad Derraz 6c2204a7a8 chore: merge tooling follow-up
# Conflicts:
#	tests/test_audit_regressions.py
2026-10-21 06:50:20 +02:00
Abdessamad Derraz 85a44d9bf7 chore: merge amiberry and hatari re-profile
# Conflicts:
#	README.md
#	emulators/amiberry.yml
#	install/batocera.json
#	install/emudeck.json
#	install/lakka.json
#	install/recalbox.json
#	install/retroarch.json
#	install/retrobat.json
#	install/retrodeck.json
#	install/rocknix.json
2026-10-21 06:21:30 +02:00
Abdessamad Derraz 5ce7ab8386 fix: self-check a ref in every repository
A prose citation of the port's own lines was read only in the upstream file that a source_ref attributes the path to, and a range past that file's end came back GONE although the port carries it.
2026-10-21 06:18:00 +02:00
Abdessamad Derraz 57ac252482 feat: check the profiles a branch adds or edits
profile_sync gains --changed (added or edited profiles, uncommitted
ones included) and --added, both against the merge base of --base
(origin/main by default). CONTRIBUTING runs --changed --strict instead
of one --emulator call per new profile, and the CI job runs --added
in place of its own diff loop.
2026-10-21 06:09:55 +02:00
Abdessamad Derraz b784a73d5c fix: name a repository the forge renamed
GitHub, GitLab and Gitea redirect a renamed repository, and every call
follows the redirect: AloysHF/NicaiEmu answers as AloysHF/CoolbarEmu
and the profile read as current. profile_sync now reads the name the
forge answers under and counts a move as review work.
2026-10-21 06:09:31 +02:00
Abdessamad Derraz d6fc66274f fix: let check_freshness read the profile report
check_freshness ran profile_sync with --json and the detection flags,
which profile_sync refuses, so --profiles always reported an unreadable
report. The version check now lives on the report and travels in the
JSON and markdown outputs; check_freshness asks for --json
--check-version only.
2026-10-21 06:09:15 +02:00
Abdessamad Derraz 73d73e0f2a chore: merge audit fixes (profsync) 2026-10-21 05:44:32 +02:00
Abdessamad Derraz b464ed9202 fix: count prose that holds the pin as review work
The triage, --changed-only and --strict counted refs only. Prose that
--realign-prose would move or refuse blocks every recale and bump, and
blastem read 0 to review. Each report now carries that reading. The
triage also gets a header, a closing count, and one sampling notice per
run instead of one per profile.
2026-10-21 05:24:17 +02:00
Abdessamad Derraz 805ca3bb6b fix: pass over a profile revision that won't parse
One unparsable commit in a profile's history stopped the walk and
marked every older prose citation unknown, which refused the recale and
bump for good (lindbergh-loader, df7346b3). The revision is now passed
over unless the pins differ on its two sides while the field's
citations changed across it.
2026-10-21 05:18:49 +02:00
Abdessamad Derraz 31566ce618 fix: read a past pin only for its own repository
A source_commit string from before the field was keyed by mode pinned
the standalone repository, yet was read as a writing pin for every mode.
xenia-edge then saw its libretro pin move under unchanged prose, and
the recale and bump were refused.
2026-10-21 05:17:01 +02:00
Abdessamad Derraz 64b2967ffb fix: read a source_ref role per part, prose too
The role a part writes (source or upstream) was kept per path, first
met first kept, so a later part naming the other role was read in the
other repository. In prose the word source made a citation external
and the word upstream was dropped. The role now travels on each part.
2026-10-21 05:14:47 +02:00
Abdessamad Derraz 7095aa61e7 fix: make maintainer tool output actionable
--emulator accepts a buildbot core name from a profile's cores:, and a
mistyped target gets the closest names instead of every target. diff_truth
shows destinations and reports unpaired entries as evidence, not removals.
The verify summary counts discrepancies, a shared destination names both
systems, a truth hash conflict names both cores, and pipeline steps carry
their place in the real run instead of N/8. Every GitHub API caller takes
the token from github_token(), which falls back to gh auth token.
2026-10-21 04:42:01 +02:00
Abdessamad Derraz f6ac473e78 docs: no double hyphen used as a dash
The home page's methodology list and a few comments wrote ' -- ' where a colon or parentheses belong.
2026-10-20 06:23:02 +02:00
Abdessamad Derraz 2cba2383ca refactor: move the prose citation grammar
The site linked prose citations through profile_sync, which made the site build depend on the checker. The prose runs and their patterns move to sourceref, the grammar module both read, and profile_sync re-exports them.
2026-10-20 06:06:34 +02:00
Abdessamad Derraz dec0fdc163 feat: each citation names the code that asks
A profile that reads a libretro core and the original emulator cited both trees alike, and readers could not tell whether the core or the emulator asked for a file. A cited path now opens with source or upstream, the repository its lines are in. Emulator code a port carries is attributed upstream when the original holds the same value on the cited line.

profile_sync --attribute-refs writes the words from where the lines are found and follows a word already written. The site links each citation to that repository's pin, labels it libretro core or upstream emulator, and says on each file card whose code asks for it. A recale keeps the word, and mame_ref_audit reads the tree it names.
2026-10-20 05:52:13 +02:00
Abdessamad Derraz adea35e12a fix: a recale keeps the repository word of a ref
A source_ref written as `stella src/a.c:120` names the repository its lines are in. The path is read without the word, and --rebase-refs wrote the new span back without it, losing the attribution.
2026-10-20 05:46:09 +02:00
Abdessamad Derraz 77389236e6 feat: record a release with no genuine copy
Paid Android emulators announce versions that circulate only rebuilt or re-signed. The profile stays on the newest unmodified build, and version_source.no_genuine_copy names the release searched for, so check_freshness stops flagging it until the page announces a later one.
2026-10-20 04:49:24 +02:00
Abdessamad Derraz 282f8d5d0a feat: watch the release page of off-forge profiles
About forty profiles describe projects published outside any forge (Altirra, ePSXe, DraStic, mednafen, xroar). profile_sync skipped them as an unsupported host and check_freshness reported the same UNKNOWN line every run, so a new release adding a firmware went unseen. A profile can now name the page announcing its releases and a pattern for the version: --check-version reads it, and check_freshness --profiles calls the profile stale when the page announces another version than core_version.
2026-10-20 04:28:27 +02:00
Abdessamad Derraz 392a5d68cc fix: strict sync fails a profile it cannot check
profile_sync skipped a profile whose repository no longer answers, which carries no pin, or whose declared death the forge contradicts, with empty counts. --strict counted refs to review only, so the CI job meant to stop an unchecked new profile passed a mistyped repository. Such skips now fail a strict run. An unsupported host, a declared takedown and a profile without refs stay accepted.
2026-10-20 02:23:56 +02:00
Abdessamad Derraz d1ff233990 fix: profile_sync reports in English
The summary line and the markdown table header were the only French strings among the project's command output.
2026-10-20 00:29:57 +02:00
Abdessamad Derraz 6bfd73f4f8 fix: a truncated tree does not prove a file gone
When the forge truncates the HEAD tree, the rename search cannot see every path, yet a bare filename it did not find was reported GONE. eden's fs_paths.h and path_util.cpp exist under src/common/fs/. Such a citation is now AMBIGUOUS with the reason, as the realign path already says unclear and never absent.
2026-10-20 00:15:39 +02:00
Abdessamad Derraz d62ada2e6e fix: read a citation wrapped before its colon
jgenesis, ioquake3, yquake2, playdiaemu, samcoupe, skyline and plastic wrap a citation as `path.ext` then `:N-M` on the next line. The collector only joined a line ending with a colon or comma, so these runs were never compared and a bump moved the pin past them silently. They are now read, as wrapped runs that hold the pin until rewritten.
2026-10-20 00:14:43 +02:00
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00
Abdessamad Derraz 44ac56b4d6 fix: date prose by its citations, not its wording
A note reworded around unchanged citations took the rewording commit as its writing revision. That commit's pin is current, so citations a bump had left behind stopped being reported. A sentence end now separates a project word from the citation before it, like a comma.
2026-10-19 05:31:57 +02:00
Abdessamad Derraz 7577ec4c18 fix: count the profiles the named listing shows 2026-10-19 04:30:38 +02:00
Abdessamad Derraz 04deb95a35 docs: give every command-line option a help text 2026-10-19 04:23:34 +02:00
Abdessamad Derraz c229daac3a refactor: move the source_ref grammar out of sync
The site imported two parsing functions from profile_sync, so every change to the comparison tool redeployed an unchanged site. The grammar now lives in sourceref.py.
2026-10-18 20:38:47 +02:00
Abdessamad Derraz 4521edca59 fix: name every pin a bump changes 2026-10-18 19:33:11 +02:00
Abdessamad Derraz d42236fc84 fix: cite the gam4980 fork at the revision pinned
The refs described upstream's libretro.c while source_commit named the fork, where the loader moved to src/ and a missing ROM now shuts the core down cleanly. A bump no longer advances a pin no ref resolves in.
2026-10-18 19:32:14 +02:00
Abdessamad Derraz ce2417ce0f refactor: read hash lists with one parser 2026-10-18 14:52:02 +02:00
Abdessamad Derraz db3eba1cfc fix: find the branch in a URL into a folder
A /tree/<branch>/<dir> URL was read as one branch name, so the
repository never resolved. Each prefix is tried, shortest first.
A repository that answers nothing now says so, or reports the
declared upstream_gone.
2026-10-18 13:34:37 +02:00
Abdessamad Derraz 3bfe89c5a2 fix: read past a blank line when attributing a ref 2026-10-18 13:28:54 +02:00
Abdessamad Derraz 8605f85657 fix: never nudge a ref that cites code 2026-10-18 13:23:41 +02:00
Abdessamad Derraz ba36d9586f fix: print full hashes on collection cards 2026-10-18 09:54:28 +02:00
Abdessamad Derraz 92d639253a refactor: drop sixteen unused imports 2026-10-18 08:52:19 +02:00
Abdessamad Derraz 7531ccad8f fix: refuse a profile_sync filter matching nothing 2026-10-18 07:33:11 +02:00
Abdessamad Derraz 2db83a5e01 feat: confront added profiles in CI
profile_sync --strict exits 1 when a profile has refs to review. The
validation workflow runs it on every profile a pull request or a push to
main adds, so a profile whose refs miss their value no longer lands green.
2026-10-18 06:29:14 +02:00
Abdessamad Derraz e1b6aad51b fix: refuse abbreviated flags in every script
argparse completed a prefix into the only flag starting with it:
slots.py --emulator read profiles from a directory named after the
emulator and reported nothing, and pipeline.py --all built every pack
variant. Every parser now refuses an abbreviation.
2026-10-18 05:30:58 +02:00
Abdessamad Derraz 8a9d6919d9 feat: record the pin a prose reread confirmed
A prose citation whose text lived under several pins stayed in
read again until the text changed, so fixnes, zesarux and emucorex,
exact at their pins, would have refused every later bump.
prose_written_at names the pin a reader confirmed; it settles the
readings and never overrides a history with one candidate.
2026-10-18 02:49:24 +02:00
Abdessamad Derraz a5f41511cc fix: read a semicolon as a citation separator
lynx-emu cites the mednafen upstream after a semicolon, which the
prose scanner did not treat as a list delimiter, so the citation
was charged to the fork the profile was read from.
2026-10-18 02:47:37 +02:00
Abdessamad Derraz 9802804a9a fix: tell an offline cache miss from absence
Offline, fetch_file answered None for a path the cache never
stored, the same answer as a path known to be absent, and
profile_sync reported existing files as gone. A miss now raises
NotCachedError and the profile is reported unverified.
2026-10-18 02:46:57 +02:00
Abdessamad Derraz b91449590d fix: follow an upstream the port vendors as module
libretro/TIC-80 builds nesbox/TIC-80 through its core submodule
and tic80's upstream_commit is that submodule commit. Compared to
nesbox HEAD, profile_sync reported changes the shipped core never
had, and a bump would have moved the pin past it. When an upstream
pin is a submodule pointer of the source pin, its head is the
pointer at the source HEAD.
2026-10-18 02:45:27 +02:00
Abdessamad Derraz faa8af0800 refactor: annotate every remaining signature 2026-10-18 00:44:20 +02:00
Abdessamad Derraz 55631a2fbc fix: end listings quietly when the reader leaves 2026-10-17 20:50:22 +02:00