docs: credit zackcage6, and sweep the docs/CI for retired-flavour drift - #287
Conversation
Credits ------- Adds zackcage6 to every credit surface: CREDITS, the README's real-hardware testing section, and the in-app About dialog. The About entry APPENDS to the existing QA row rather than adding one: that dialog cannot scroll (its only navigable control is the trailing OK, and diaRenderUI pins diaScrollOffset to 0 while focus sits on the first control), so a new row would push both the credit and the OK button past visibleBottom on a 448-line theme. The row is 68 chars, still inside the width the block already proved safe. The rule is now recorded in the comment so it is not rediscovered the hard way. Docs sweep ---------- Retiring the WOPL flavour (#273) and ps2max (#285) left stale references behind. Corrected across README.md, ROLLING_RELEASE.md, docs/NEUTRINO.md, docs/VCD.md, docs/THEME_ENGINE.md and docs/LANGUAGES.md. Findings were verified against the code and then adversarially re-verified before being applied; the two dated snapshots (docs/PARITY-AUDIT-*, docs/RECOVERY-*) were deliberately left alone, since they record history rather than making current claims. CI consistency -------------- * compilation.yml: drop the freepad swap from the three pinned jobs. It was a PROVABLE NO-OP -- freepad.irx is byte-identical (sha256 463fcb30cc4192dc...) across the pinned digest, ps2dev:latest, and the vendored copy -- and it left compilation.yml disagreeing with rolling-release.yml, which had already dropped it. Both workflows now treat the two flavours the same, so they differ by SDK DATE ONLY. * install_coherent_freepad.sh: now unreferenced. Kept, not deleted -- the vendored bytes and PROVENANCE.md are the record of the #254 investigation, and it is the ready-made remedy if a container ever ships an older freepad again. Header records the hashes and says to re-verify before trusting it. * ISSUE_TEMPLATE: the build-flavour dropdown still offered "WOPLSDK variant" and "PS2MAXSDK variant", so reporters were picking builds that no longer exist on the form used to triage them. Now PS2DEVLATESTSDK / PS2DEVPINNEDSDK. * ci-ps2dev-migration-probe.yml: probe the ps2dev digest pin, not ps2max/dev. * Comment drift in install_coherent_mmce.sh, build_rolling_extras.sh, rolling-release.yml and include/system.h. Historical mentions -- the notes explaining why WOPL was dropped and what ps2max used to do -- are deliberately preserved as the reasoning trail. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📜 Recent review details⏰ Context from checks skipped due to timeout. (17)
|
| Layer / File(s) | Summary |
|---|---|
CI toolchain transition .github/workflows/*, .github/scripts/* |
The migration probe uses a digest-pinned ps2dev image, build jobs install coherent mmceman, and the unused freepad script is documented accordingly. |
Release flavour and packaging updates .github/ISSUE_TEMPLATE/*, Makefile, ROLLING_RELEASE.md, README.md, .github/workflows/rolling-release.yml |
Release assets, fallback recommendations, issue options, archive comments, and toolchain branding now describe the two ps2dev variants. |
Feature and configuration documentation README.md, docs/NEUTRINO.md, docs/VCD.md, docs/LANGUAGES.md, docs/THEME_ENGINE.md |
Documentation updates cover network settings, Neutrino arguments and probing, VCD fallback behavior, translation IDs, and theme assets. |
Credits and explanatory comments CREDITS, src/dialogs.c, include/system.h |
Contributor credits and About-menu rows are updated, and the SDK-pin comment is corrected. |
Estimated code review effort: 3 (Moderate) | ~20 minutes
Possibly related PRs
- NathanNeurotic/Open-PS2-Loader#261: Removes CI usage of
install_coherent_freepad.shand replaces it with coherentmmcemaninstallation. - NathanNeurotic/Open-PS2-Loader#273: Updates workflow and documentation references for the move to two rolling SDK flavours.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | The title accurately summarizes the main changes: adding zackcage6 credit and updating docs/CI references for retired build flavours. |
| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
✨ Finishing Touches
📝 Generate docstrings
- Create stacked PR
- Commit on current branch
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Commit unit tests in branch
claude/docs-sweep-and-credits
Comment @coderabbitai help to get the list of available commands.
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/LANGUAGES.md`:
- Around line 44-51: Add blank lines around the fenced YAML example in the
language documentation: separate the opening fence from the preceding list text
and the closing fence from the following paragraph, without changing the example
content.
In `@docs/NEUTRINO.md`:
- Around line 82-89: The launch-arguments table around the -bsd entry must
clarify version-dependent behavior: state whether OPL emits -bsd=udpfs for all
Neutrino versions or only stock Neutrino, and document the nightly Neutrino
auto-detection exception consistently with the UDPFS Files section. Preserve the
existing backend mappings while making the unconditional wording accurate.
In `@include/system.h`:
- Line 61: Update the comment near the container-independence note to replace
the outdated PS2DEVPINNEDSDK terminology with PS2MAXSDK, matching the toolchain
naming used throughout the PR.
In `@README.md`:
- Line 373: Remove the standalone empty blockquote line in the README blockquote
so the quoted content remains contiguous and complies with markdownlint MD028.
In `@ROLLING_RELEASE.md`:
- Around line 16-18: Update ROLLING_RELEASE.md lines 16-18 to state that
APP_RIPTOPL-PS2DEVPINNEDSDK and its bare pinned artifact are included only when
the best-effort fallback build produces an ELF, and may otherwise be absent;
update README.md lines 300-305 similarly so “ships two loader ELFs” is
conditional and the pinned fallback recommendation applies only when available.
In `@src/dialogs.c`:
- Around line 1136-1138: Update the explanatory comment above the UI_LABEL entry
in the dialog row definitions to state that the referenced label is 71
characters rather than 69, preserving the rest of the comment and layout
guidance.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 27111d39-d6ef-4d2b-80cd-81dc06a35450
📒 Files selected for processing (17)
.github/ISSUE_TEMPLATE/issue-report.yml.github/scripts/build_rolling_extras.sh.github/scripts/install_coherent_freepad.sh.github/scripts/install_coherent_mmce.sh.github/workflows/ci-ps2dev-migration-probe.yml.github/workflows/compilation.yml.github/workflows/rolling-release.ymlCREDITSMakefileREADME.mdROLLING_RELEASE.mddocs/LANGUAGES.mddocs/NEUTRINO.mddocs/THEME_ENGINE.mddocs/VCD.mdinclude/system.hsrc/dialogs.c
💤 Files with no reviewable changes (1)
- .github/workflows/compilation.yml
📜 Review details
⏰ Context from checks skipped due to timeout. (20)
- GitHub Check: build-probe (ps2dev/ps2dev@sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95d9d35be99...
- GitHub Check: build-probe (ps2dev/ps2dev:latest, ps2dev-latest)
- GitHub Check: build-debug-ps2dev-latest (iopcore_ppctty_debug)
- GitHub Check: build-debug-ps2dev-latest (iopcore_debug)
- GitHub Check: build-variants (EXTRA_FEATURES=0, PADEMU=1)
- GitHub Check: build-debug-ps2dev-latest (eesio_debug)
- GitHub Check: build-debug-ps2dev-latest (DTL_T10000=1)
- GitHub Check: build-lang-ps2dev-latest
- GitHub Check: build-variants-ps2dev-latest (EXTRA_FEATURES=0, PADEMU=1)
- GitHub Check: build-variants (EXTRA_FEATURES=0, PADEMU=0)
- GitHub Check: build-variants-ps2dev-latest (EXTRA_FEATURES=1, PADEMU=0)
- GitHub Check: build-lang
- GitHub Check: build
- GitHub Check: build-ps2dev-latest
- GitHub Check: Analyze (actions)
- GitHub Check: Analyze (c-cpp)
- GitHub Check: build-debug (iopcore_ppctty_debug,
@sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95... - GitHub Check: build-variants-ps2dev-latest (EXTRA_FEATURES=1, PADEMU=0)
- GitHub Check: build-debug (ingame_debug,
@sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95d9d35be995) - GitHub Check: build-debug (DTL_T10000=1,
@sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95d9d35be995)
⚠️ CI failures not shown inline (2)
GitHub Actions: Code scanning AI findings on PR #287 / github-advanced-security: Code scanning AI findings on PR #287
Conclusion: failure
##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1mecho "RUNNER_TEMP=$RUNNER_TEMP"�[0m
�[36;1mfind "$RUNNER_TEMP" -maxdepth 1 -type f -name 'git-credentials-*.config' -print -delete�[0m
�[36;1m�[0m
�[36;1m# Generate a unique token and stop processing workflow commands to prevent the runtime from injecting commands�[0m
�[36;1mSTOP_***REDACTED*** /proc/sys/kernel/random/uuid)�[0m
�[36;1m�[0m
�[36;1m# Use a trap to ensure we always resume command processing and check for�[0m
�[36;1m# fallback error annotations, even if the runtime exits with a non-zero code�[0m
�[36;1m# (which would otherwise cause set -e to abort the shell before we get here).�[0m
�[36;1m# The trap preserves the original exit code.�[0m
�[36;1mcopilot_cleanup() {�[0m
�[36;1m �[0m
�[36;1m if [ -n "${GIT_PROXY_PID:-}" ] && kill -0 "$GIT_PROXY_PID" 2>/dev/null; then�[0m
�[36;1m echo "Stopping git-proxy (pid=$GIT_PROXY_PID)..."�[0m
�[36;1m kill "$GIT_PROXY_PID" 2>/dev/null || true�[0m
�[36;1m for _ in {1..25}; do�[0m
�[36;1m if ! kill -0 "$GIT_PROXY_PID" 2>/dev/null; then break; fi�[0m
�[36;1m sleep 0.2�[0m
�[36;1m done�[0m
�[36;1m if kill -0 "$GIT_PROXY_PID" 2>/dev/null; then�[0m
�[36;1m echo "git-proxy did not stop gracefully; forcing termination."�[0m
�[36;1m kill -KILL "$GIT_PROXY_PID" 2>/dev/null || true�[0m
�[36;1m fi�[0m
�[36;1m wait "$GIT_PROXY_PID" 2>/dev/null || true�[0m
�[36;1m fi�[0m
�[36;1m �[0m
�[36;1m echo "::$STOP_***REDACTED***
�[36;1m FALLBACK_FILE="${RUNNER_TEMP}/copilot-fallback-error.txt"�[0m
�[36;1m if [ -f "$FALLBACK_FILE" ]; then�[0m
�[36;1m FALLBACK_MSG=$(head -c 500 "$FALLBACK_FILE" | tr -d '\n\r')�[0m
�[36;1m echo "::error title=Copilot Error::${FALLBACK_MSG}"�[0m
GitHub Actions: Code scanning AI findings on PR #287 / 0_github-advanced-security.txt: Code scanning AI findings on PR #287
Conclusion: failure
##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1mecho "RUNNER_TEMP=$RUNNER_TEMP"�[0m
�[36;1mfind "$RUNNER_TEMP" -maxdepth 1 -type f -name 'git-credentials-*.config' -print -delete�[0m
�[36;1m�[0m
�[36;1m# Generate a unique token and stop processing workflow commands to prevent the runtime from injecting commands�[0m
�[36;1mSTOP_***REDACTED*** /proc/sys/kernel/random/uuid)�[0m
�[36;1m�[0m
�[36;1m# Use a trap to ensure we always resume command processing and check for�[0m
�[36;1m# fallback error annotations, even if the runtime exits with a non-zero code�[0m
�[36;1m# (which would otherwise cause set -e to abort the shell before we get here).�[0m
�[36;1m# The trap preserves the original exit code.�[0m
�[36;1mcopilot_cleanup() {�[0m
�[36;1m �[0m
�[36;1m if [ -n "${GIT_PROXY_PID:-}" ] && kill -0 "$GIT_PROXY_PID" 2>/dev/null; then�[0m
�[36;1m echo "Stopping git-proxy (pid=$GIT_PROXY_PID)..."�[0m
�[36;1m kill "$GIT_PROXY_PID" 2>/dev/null || true�[0m
�[36;1m for _ in {1..25}; do�[0m
�[36;1m if ! kill -0 "$GIT_PROXY_PID" 2>/dev/null; then break; fi�[0m
�[36;1m sleep 0.2�[0m
�[36;1m done�[0m
�[36;1m if kill -0 "$GIT_PROXY_PID" 2>/dev/null; then�[0m
�[36;1m echo "git-proxy did not stop gracefully; forcing termination."�[0m
�[36;1m kill -KILL "$GIT_PROXY_PID" 2>/dev/null || true�[0m
�[36;1m fi�[0m
�[36;1m wait "$GIT_PROXY_PID" 2>/dev/null || true�[0m
�[36;1m fi�[0m
�[36;1m �[0m
�[36;1m echo "::$STOP_***REDACTED***
�[36;1m FALLBACK_FILE="${RUNNER_TEMP}/copilot-fallback-error.txt"�[0m
�[36;1m if [ -f "$FALLBACK_FILE" ]; then�[0m
�[36;1m FALLBACK_MSG=$(head -c 500 "$FALLBACK_FILE" | tr -d '\n\r')�[0m
�[36;1m echo "::error title=Copilot Error::${FALLBACK_MSG}"�[0m
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~398-~398: Consider using a different verb to strengthen your wording.
Context: ...drives for the exFAT filesystem, please make sure the Allocation unit size is set to `D...
(MAKE_SURE_ENSURE)
🪛 markdownlint-cli2 (0.23.1)
docs/LANGUAGES.md
[warning] 45-45: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 48-48: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
README.md
[warning] 373-373: Blank line inside blockquote
(MD028, no-blanks-blockquote)
docs/NEUTRINO.md
[warning] 113-113: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (13)
CREDITS (1)
104-105: LGTM!docs/NEUTRINO.md (1)
11-42: LGTM!Also applies to: 105-121, 142-158, 173-176, 258-262, 286-295
docs/VCD.md (1)
63-65: LGTM!Also applies to: 76-76, 121-123, 151-161, 173-173, 187-188, 206-208
docs/THEME_ENGINE.md (1)
123-123: LGTM!Also applies to: 361-363
.github/workflows/ci-ps2dev-migration-probe.yml (1)
19-20: LGTM!.github/scripts/install_coherent_mmce.sh (1)
3-4: LGTM!.github/scripts/install_coherent_freepad.sh (1)
2-21: LGTM!.github/scripts/build_rolling_extras.sh (1)
10-10: LGTM!.github/ISSUE_TEMPLATE/issue-report.yml (1)
63-63: LGTM!Makefile (1)
42-47: LGTM!Also applies to: 82-82
ROLLING_RELEASE.md (1)
19-28: LGTM!Also applies to: 37-48, 79-85
.github/workflows/rolling-release.yml (1)
700-701: LGTM!README.md (1)
36-36: LGTM!Also applies to: 152-158, 177-193, 263-263, 277-286, 368-372, 374-383, 394-399
| // caller-controlled -- unlike LoadELFFromFileWithPartition, which clobbers the target's argv[0] | ||
| // with "<partition><filename>" (that clobber is what broke POPSTARTER's XX./SB. selector). | ||
| // Container-independent: works the same on ps2dev:latest and the PS2MAXSDK pin. Returns only on | ||
| // Container-independent: works the same on ps2dev:latest and the PS2DEVPINNEDSDK pin. Returns only on |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Finish the SDK-pin terminology update.
This comment still says PS2DEVPINNEDSDK; update it to PS2MAXSDK so the header matches the toolchain terminology used by this PR.
Proposed fix
-// Container-independent: works the same on ps2dev:latest and the PS2DEVPINNEDSDK pin. Returns only on
+// Container-independent: works the same on ps2dev:latest and the PS2MAXSDK pin. Returns only on📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // Container-independent: works the same on ps2dev:latest and the PS2DEVPINNEDSDK pin. Returns only on | |
| // Container-independent: works the same on ps2dev:latest and the PS2MAXSDK pin. Returns only on |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@include/system.h` at line 61, Update the comment near the
container-independence note to replace the outdated PS2DEVPINNEDSDK terminology
with PS2MAXSDK, matching the toolchain naming used throughout the PR.
| > **SMBv1**; setting it to **SMB2** switches *both* sides — browsing loads the SMB2 driver instead | ||
| > of the SMBv1 one, and so does the in-game reader — so the server must speak SMB2 for the whole | ||
| > session. | ||
|
|
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Remove the empty line inside this blockquote.
The standalone > line triggers markdownlint MD028. Keep the blockquote contiguous or remove the empty quoted line.
🧰 Tools
🪛 markdownlint-cli2 (0.23.1)
[warning] 373-373: Blank line inside blockquote
(MD028, no-blanks-blockquote)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` at line 373, Remove the standalone empty blockquote line in the
README blockquote so the quoted content remains contiguous and complies with
markdownlint MD028.
Source: Linters/SAST tools
| // 67 chars, still shorter than the 69-char row above it, so this stays inside the width the | ||
| // block already proved safe on a 448-line theme. | ||
| {UI_LABEL, 0, 1, 1, -1, 0, 15, {.label = {"LocalH - RandQalan - ShaolinAssassin - yoshi314 - zero35 - zackcage6", -1}}}, |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Correct the QA row length in the explanatory comment.
The label at Line 1132 is 71 characters, not 69. Update the comment so future layout decisions use the correct width.
Proposed fix
- // 67 chars, still shorter than the 69-char row above, so this stays inside the width the
+ // 67 chars, still shorter than the 71-char row above, so this stays inside the width the📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // 67 chars, still shorter than the 69-char row above it, so this stays inside the width the | |
| // block already proved safe on a 448-line theme. | |
| {UI_LABEL, 0, 1, 1, -1, 0, 15, {.label = {"LocalH - RandQalan - ShaolinAssassin - yoshi314 - zero35 - zackcage6", -1}}}, | |
| // 67 chars, still shorter than the 71-char row above it, so this stays inside the width the | |
| // block already proved safe on a 448-line theme. | |
| {UI_LABEL, 0, 1, 1, -1, 0, 15, {.label = {"LocalH - RandQalan - ShaolinAssassin - yoshi314 - zero35 - zackcage6", -1}}}, |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/dialogs.c` around lines 1136 - 1138, Update the explanatory comment above
the UI_LABEL entry in the dialog row definitions to state that the referenced
label is 71 characters rather than 69, preserving the rest of the comment and
layout guidance.
|
Triaged all six CodeRabbit findings against the code. Five accepted, one declined. Accepted
Declined
|
Five of six accepted; the sixth declined as inverted. * ROLLING_RELEASE.md + README.md: the pinned loader folder is CONDITIONAL. The build-rolling-pinned job is continue-on-error, and packaging guards the folder with `if [ -d APP_RIPTOPL-PS2DEVPINNEDSDK ]` (rolling-release.yml:507) plus a HAS_PS2DEVPINNEDSDK gate (:538, :612). Both documents promised it unconditionally. Now both say it is best-effort and that only the latest build gates the publish. * docs/NEUTRINO.md: the -bsd table entry's "always" is correct -- sysGetNeutrinoBsdToken returns "udpfs" unconditionally (system.c:1031-1035) -- but the nightly-auto-detect note elsewhere made it read as a version split. Says so explicitly now. * docs/LANGUAGES.md (MD031) and README.md (MD028) formatting. * src/dialogs.c: the QA row comment had a wrong width. The row above is 70 chars, not the 69 I wrote (nor the 71 the review stated); ours is 68. DECLINED: reverting include/system.h to "PS2MAXSDK". That is the retired brand this PR removes -- ps2max/dev was replaced by a ps2dev digest pin in #285 and the workflow passes LOCALVERSION=PS2DEVPINNEDSDK (rolling-release.yml:125, :243), so the suggestion would reintroduce a name matching no build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Credits — zackcage6
Added to all four surfaces:
CREDITS, the README's real-hardware testing section, the in-app About dialog, and the docs site.The About entry appends to the existing QA row rather than adding one. That dialog cannot scroll — its only navigable control is the trailing OK, and
diaRenderUIpinsdiaScrollOffsetto 0 while focus is on the first control — so a new row would push both the credit and the OK button pastvisibleBottomon a 448-line theme. The row is now 68 chars, still shorter than the 69-char row above it. The rule is written into the comment.Docs sweep
Retiring WOPL (#273) and ps2max (#285) left stale references behind. Every finding was verified against the code, then adversarially re-verified before being applied — the verifier defaulted to "not stale" when it could not confirm a contradiction.
The two dated snapshots (
docs/PARITY-AUDIT-*,docs/RECOVERY-*) were deliberately left untouched: they record history rather than making current claims. That check returned 0 confirmed / 8 refuted, which is the correct outcome.CI consistency
The freepad swap was a provable no-op.
freepad.irxis byte-identical across the pinned digest,ps2dev:latest, and the vendored copy:It also left
compilation.ymldisagreeing withrolling-release.yml, which had already dropped it in #285. Both now treat the flavours identically, so they differ by SDK date only.install_coherent_freepad.shis now unreferenced. Kept, not deleted — the vendored bytes andPROVENANCE.mdare the record of the #254 investigation, and it is the ready-made remedy if a container ever ships an older freepad again. Its header records the hashes and says to re-verify first.The issue template was pointing testers at builds that no longer exist — the flavour dropdown still offered "WOPLSDK variant" and "PS2MAXSDK variant" on the very form used to triage reports.
Also:
ci-ps2dev-migration-probe.ymlnow probes the digest pin instead ofps2max/dev, plus comment drift ininstall_coherent_mmce.sh,build_rolling_extras.sh,rolling-release.ymlandinclude/system.h.Historical mentions — the notes explaining why WOPL was dropped and what ps2max used to do — are preserved as the reasoning trail.
Verification
make clean && make opl.elfgreen onps2dev:latestclang-formatclean on the touched C sources🤖 Generated with Claude Code
Summary by CodeRabbit
Documentation
Builds & Releases
Credits