Skip to content

Run EPV through the organization's strict EPV workflow - #90

Merged
bonelifer merged 2 commits into
mainfrom
strict-epv
Oct 19, 2026
Merged

bonelifer merged 2 commits into
mainfrom
strict-epv

Conversation

@bonelifer

Copy link
Copy Markdown
Contributor

Switches the wiki's EPV (Extension Pre Validator) check to the organization's strict EPV workflow, phpbbmodders/.github/.github/workflows/epv.yml@v1 (phpbbmodders/.github#2), as piloted in phpbbmodders/contactadmin#46.

Why

  • EPV exits 0 unless it finds a Fatal problem, so its Error findings never failed this workflow.
  • Pointing EPV at the extension folder made it report a false "Packaging structure" error. The shared workflow points it at phpBB/ext/ instead.
  • The shared workflow fails on any Fatal or Error finding that isn't listed, with a reason, in the extension's .github/epv-allowed.txt.

Changes

  • tests.yml: both phpbb-extensions/test-framework calls (3.3.x and master) get EPV: 0, so EPV doesn't run twice. A new epv job calls the shared workflow for phpBB 3.3.x and master, matching the extension's <4.1 phpBB range.
  • 29 htmlspecialchars($value, ENT_COMPAT, 'UTF-8') calls in 12 files now use phpBB's utf8_htmlspecialchars($value), which is exactly the same call, so output doesn't change.
  • New .github/epv-allowed.txt for the findings kept on purpose:
    • htmlspecialchars with ENT_QUOTES in event/wikilink_listener.php, wiki/markup.php and wiki/templates.php (anchors, table of contents, link fragments), and with ENT_NOQUOTES | ENT_XML1 in wiki/discussion.php. utf8_htmlspecialchars() can't pass those flags.
    • addslashes in controller/acp_search.php: the progress-bar URL for a JavaScript string, as in phpBB 4.0's own acp_search.php.
    • unserialize in ext.php: phpBB's own migration dependency lists and reparser resume point, read with allowed_classes off when an old install is moved.
    • Released migrations update_0_2_0, update_0_3_0, update_0_3_1 and update_0_3_2 without revert_schema(): they add columns to wiki_article, which initial_module's revert_schema() drops with the whole table. Released migrations must not be changed.

Testing

Claude ran:

  • EPV locally on this branch with dev-master (on PHP 8.4, and on PHP 7.4 as the 3.3.x job does) and with dev-epv-phpbb4. Each time it reports 17 Errors, all in the allowlist, and the shared workflow's filter passes.
  • The wiki's PHPUnit suite on phpBB 3.3.x: 356 tests pass.
  • php-lint.sh --strict on PHP 8.2 and 8.4 (the extension needs 8.2): clean.

This PR's CI is the first run of the new job here.


Investigated and written by Claude on behalf of William Jacoby (bonelifer).

🤖 Generated with Claude Code

bonelifer and others added 2 commits October 19, 2026 01:07
EPV exits 0 on Error findings, so they never failed this workflow, and
pointing it at the extension folder gave a false "Packaging structure"
error. EPV now runs in an epv job that calls phpbbmodders/.github's
reusable EPV workflow (v1) on phpBB 3.3.x and master, which fails on any
Fatal or Error finding not listed in .github/epv-allowed.txt. The
test-framework calls get EPV: 0 so EPV doesn't run twice.

The 29 htmlspecialchars($value, ENT_COMPAT, 'UTF-8') calls EPV flags now
use utf8_htmlspecialchars($value), which is the same call. The calls that
use ENT_QUOTES or ENT_XML1 on purpose, the JavaScript-string addslashes()
in the search ACP, ext.php's unserialize() and four released migrations
without revert_schema() are listed in .github/epv-allowed.txt with their
reasons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bonelifer
bonelifer merged commit 0417725 into main Oct 19, 2026
60 checks passed
@bonelifer
bonelifer deleted the strict-epv branch October 19, 2026 07:29
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