Skip to content

docs: credit zackcage6, and sweep the docs/CI for retired-flavour drift - #287

Merged
NathanNeurotic merged 2 commits into
masterfrom
claude/docs-sweep-and-credits
Jul 28, 2026
Merged

docs: credit zackcage6, and sweep the docs/CI for retired-flavour drift#287
NathanNeurotic merged 2 commits into
masterfrom
claude/docs-sweep-and-credits

Conversation

@NathanNeurotic

@NathanNeurotic NathanNeurotic commented Jul 28, 2026

Copy link
Copy Markdown
Owner

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 diaRenderUI pins diaScrollOffset to 0 while focus is 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 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.irx is byte-identical across the pinned digest, ps2dev:latest, and the vendored copy:

ps2dev@sha256:c64ae69c… (pin)   463fcb30cc4192dc…
ps2dev/ps2dev:latest            463fcb30cc4192dc…
modules/freepad/ (vendored)     463fcb30cc4192dc…

It also left compilation.yml disagreeing with rolling-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.sh is 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. 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.yml now probes the digest pin instead of ps2max/dev, plus 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 preserved as the reasoning trail.

Verification

  • make clean && make opl.elf green on ps2dev:latest
  • All four workflow/template YAML files parse
  • clang-format clean on the touched C sources
  • Container hashes compared directly rather than assumed

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Clarified SMBv1/SMB2 behavior, updated UDPFS/UDPBD and Neutrino installation/launch options, refined VCD and exFAT/BDM (HDD) guidance, and expanded theme authoring details.
    • Updated rolling-release recommendations, pinned-flavour fallback guidance, and release packaging notes.
    • Added guidance to append translation strings at the end to preserve stable IDs.
  • Builds & Releases

    • Updated fallback build/flavour recommendations to a digest-pinned PS2Dev-based option.
    • Adjusted CI/build tooling and replaced the older freepad installation step with mmceman in affected build jobs.
    • Updated issue-report build-flavour dropdown options.
  • Credits

    • Added zackcage6 to the real-hardware testing and in-app credits.

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>
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 74591330-1b91-4285-a0b8-c3cf2c568d37

📥 Commits

Reviewing files that changed from the base of the PR and between 62fa90c and 9d7abb0.

📒 Files selected for processing (5)
  • README.md
  • ROLLING_RELEASE.md
  • docs/LANGUAGES.md
  • docs/NEUTRINO.md
  • src/dialogs.c
📜 Recent review details
⏰ Context from checks skipped due to timeout. (17)
  • GitHub Check: build-probe (ps2dev/ps2dev:latest, ps2dev-latest)
  • GitHub Check: Analyze (c-cpp)
  • GitHub Check: Analyze (python)
  • GitHub Check: build-debug (ingame_debug, @sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95d9d35be995)
  • GitHub Check: build-debug-ps2dev-latest (DTL_T10000=1)
  • GitHub Check: build-debug-ps2dev-latest (iopcore_ppctty_debug)
  • GitHub Check: build-debug (ingame_ppctty_debug, @sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95d...
  • GitHub Check: build-variants (EXTRA_FEATURES=1, PADEMU=0)
  • GitHub Check: build-debug-ps2dev-latest (ingame_debug)
  • GitHub Check: build-debug (iopcore_ppctty_debug, @sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95...
  • GitHub Check: build-debug-ps2dev-latest (ingame_ppctty_debug)
  • GitHub Check: build-variants-ps2dev-latest (EXTRA_FEATURES=0, PADEMU=1)
  • GitHub Check: build-debug (eesio_debug, @sha256:c64ae69c9817865ed98ff054e4ae5360b9e280ed952c97946bca95d9d35be995)
  • GitHub Check: build-variants (EXTRA_FEATURES=0, PADEMU=0)
  • GitHub Check: build
  • GitHub Check: build-variants-ps2dev-latest (EXTRA_FEATURES=1, PADEMU=0)
  • GitHub Check: build-ps2dev-latest
⚠️ 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

View job details

##[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

View job details

##[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 comments (7)
ROLLING_RELEASE.md (2)

16-16: Also qualify the bare pinned ELF artifact.

The package description now correctly says the pinned folder may be omitted, but the adjacent RIPTOPL-<version>-PS2DEVPINNEDSDK.ELF row still reads as unconditional. Since the pinned workflow is best-effort, document that this bare artifact may also be absent when that build fails. This is the same optional-artifact contract raised in the previous review.


19-28: LGTM!

Also applies to: 37-48, 79-86

README.md (2)

36-36: LGTM!

Also applies to: 152-158, 177-193, 263-263, 277-286, 300-307, 370-374, 376-385


396-401: Check the HDD/VCD docs against the implementation. The documented hdd_partition path/key and VCD BDMA Apply on Launch defaults need to line up with the parser and launch flow.

docs/NEUTRINO.md (1)

82-89: LGTM!

Also applies to: 105-121, 142-158, 173-176, 258-262, 286-295

docs/LANGUAGES.md (1)

44-53: LGTM!

src/dialogs.c (1)

1126-1138: LGTM!


📝 Walkthrough

Walkthrough

The PR transitions rolling builds from three toolchains to latest and digest-pinned ps2dev variants, updates CI installation steps, revises networking and feature documentation, and adjusts issue-template, release, theme, translation, and contributor-credit references.

Changes

Build flavour and documentation alignment

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

🚥 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between e8d37a5 and 62fa90c.

📒 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.yml
  • CREDITS
  • Makefile
  • README.md
  • ROLLING_RELEASE.md
  • docs/LANGUAGES.md
  • docs/NEUTRINO.md
  • docs/THEME_ENGINE.md
  • docs/VCD.md
  • include/system.h
  • src/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

View job details

##[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

View job details

##[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

Comment thread docs/LANGUAGES.md
Comment thread docs/NEUTRINO.md Outdated
Comment thread include/system.h
// 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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.

Suggested change
// 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.

Comment thread README.md Outdated
> **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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

Comment thread ROLLING_RELEASE.md Outdated
Comment thread src/dialogs.c Outdated
Comment on lines +1136 to +1138
// 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}}},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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.

Suggested change
// 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.

@NathanNeurotic

Copy link
Copy Markdown
Owner Author

Triaged all six CodeRabbit findings against the code. Five accepted, one declined.

Accepted

  • ROLLING_RELEASE.md / README.md — pinned artifact is conditional (rated Major, and it's right). Verified: build-rolling-pinned is continue-on-error: true, 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 the pinned folder is best-effort and that only the latest build gates the publish.
  • docs/LANGUAGES.md — MD031. Blank lines added around the fence.
  • README.md:373 — MD028. Empty blockquote line joined.
  • docs/NEUTRINO.md-bsd ambiguity. The table'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. Added a clause saying OPL always emits it and nightly Neutrino just ignores the explicit token.
  • src/dialogs.c — QA row length. My comment did have a wrong number, so the finding stands, though not at the stated value: the row above is 70 chars, not 71. Counted directly:
    70  algol - Berion - Blade1984 - El_Patas - EP - gledson999 - jolek - lee4
    68  LocalH - RandQalan - ShaolinAssassin - yoshi314 - zero35 - zackcage6
    
    Comment corrected to 68-of-70.

Declined

include/system.h:61 — "update it to PS2MAXSDK". This is backwards. PS2MAXSDK is the retired brand that this PR removes: the ps2max/dev container was replaced by a digest pin of ps2dev/ps2dev in #285, and the LOCALVERSION the workflow now passes is PS2DEVPINNEDSDK (rolling-release.yml:125, :243). Applying this would reintroduce a name that no longer corresponds to any build. Leaving the comment as PS2DEVPINNEDSDK.

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>
@NathanNeurotic
NathanNeurotic merged commit 51419b3 into master Jul 28, 2026
67 of 68 checks passed
@NathanNeurotic
NathanNeurotic deleted the claude/docs-sweep-and-credits branch July 28, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant