Skip to content

Claude/zen archimedes og yfs - #257

Closed
verzog wants to merge 19 commits into
moodlehq:mainfrom
verzog:claude/zen-archimedes-OGYfs
Closed

Claude/zen archimedes og yfs#257
verzog wants to merge 19 commits into
moodlehq:mainfrom
verzog:claude/zen-archimedes-OGYfs

Conversation

@verzog

@verzog verzog commented Jun 8, 2026

Copy link
Copy Markdown

No description provided.

claude and others added 19 commits May 15, 2026 11:12
Add GitHub Actions CI coverage for MOODLE_501_STABLE (PHP 8.2-8.4) and
MOODLE_502_STABLE (PHP 8.3-8.4), add the Australia/Sydney timezone to the
CI environment, and bump to version 2026051500 (5.2.0).

https://claude.ai/code/session_0198QRrQfscGQYcRjAm49xwZ
Drop MOODLE_401 to MOODLE_404 matrix entries; CI now covers 4.5 (current
LTS) through 5.2 plus main.

https://claude.ai/code/session_0198QRrQfscGQYcRjAm49xwZ
The PHPCompatibility library was unbundled in 5.1.0 but its location
remained in thirdpartylibs.xml. Moodle's grunt ignorefiles task stats
every declared location and aborted on the missing directory, failing
moodle-plugin-ci install (and cascading into every later step). Remove
the dead entry and sync remaining versions with composer.lock.

https://claude.ai/code/session_0198QRrQfscGQYcRjAm49xwZ
Moodle main (5.3-dev) composer.json now requires php >=8.3.0, so the
matrix's PHP 8.2 main jobs failed at "composer install". Bump the main
lowest-PHP entries to 8.3. MOODLE_501_STABLE stays at 8.2 (its
composer.json is >=8.2.0).

https://claude.ai/code/session_0198QRrQfscGQYcRjAm49xwZ
Moodle 5.2 and main (5.3-dev) require PostgreSQL 16; the pinned
postgres:15 service failed their environment check early in
moodle-plugin-ci install, so those jobs failed fast while 4.5/5.0/5.1
(which accept pg 15) progressed. Mirrors the earlier postgres:13->15
bump done for Moodle 5.1.

https://claude.ai/code/session_0198QRrQfscGQYcRjAm49xwZ
The codechecker CI step (phpcs --max-warnings 0) failed on every
matrix job: the plugin's own code did not satisfy the stricter
moodle-cs v3.7.0 sniffs bundled since 5.1.0 (multi-line call
signatures, brace/operator spacing, long list syntax, etc.). Applied
phpcbf; changes are formatting only, no behaviour change. phpcs is
now clean and php -l passes on all touched files.

https://claude.ai/code/session_0198QRrQfscGQYcRjAm49xwZ
test_local_codechecker_find_other_files failed on Moodle 5.0+ with
"Unknown named parameter $notmatches": four data sets used the key
"notmatches" while the method parameter is $nomatches. PHPUnit 9
(Moodle 4.5) passed provider values positionally so the typo was
harmless; PHPUnit 11 maps associative keys to named parameters,
making it fatal. Normalised the four keys to "nomatches".

https://claude.ai/code/session_0198QRrQfscGQYcRjAm49xwZ
The README badge hard-coded the moodlehq upstream repo URL, so a fork
displayed upstream's CI status rather than its own. Repoint it to
verzog/moodle-local_codechecker (pinned to main) so the badge reflects
this fork's actual pipeline.

https://claude.ai/code/session_012ifmDbPGCS3EL53ReLtfmU
Point CI badge at this fork instead of upstream
The web form used a Post/Redirect/Get flow that placed the filesystem
path into the URL query string. nginx LFI/path-traversal WAF rules
(e.g. YunoHost defaults) reject such requests with a 403 before they
reach Moodle, making the tool unusable behind such a proxy.

Handle the submission directly on the POST request instead, keeping the
path in the request body. A GET fallback is retained for direct links.

https://claude.ai/code/session_012ifmDbPGCS3EL53ReLtfmU
Trigger Moodle's upgrade/cache flow so the WAF 403 workaround and badge
fix are picked up on pull. Adds the 5.2.1 changelog entry.

https://claude.ai/code/session_012ifmDbPGCS3EL53ReLtfmU
Release 5.2.1: nginx/WAF 403 fix on check submit (PR #2 follow-up)
The form action was the bare /local/codechecker/ directory URL while the
plugin registers and loads the page as /local/codechecker/index.php.
Posting to the directory forced the web server to resolve the directory
index itself - a different, stricter-permission path that returned a
bare 403 Forbidden on submit when the plugin dir was not traversable by
the web server user, even though the page loaded fine. Submitting to the
explicit index.php endpoint makes the plugin self-sufficient and removes
the need for any server-side permission patch. Bumps to 5.2.2.

https://claude.ai/code/session_012ifmDbPGCS3EL53ReLtfmU
Release 5.2.2: submit check form to index.php (real 403 root-cause fix)
The on-screen help showed a single example path. Expanded it to a short
list covering a plugin, a subplugin (e.g. tiny_bootstrap at
lib/editor/tiny/plugins/bootstrap), an activity module and a single
file, and noted that a component name maps to its directory. Bumps to
5.2.3.

https://claude.ai/code/session_012ifmDbPGCS3EL53ReLtfmU
Release 5.2.3: add worked path examples to the check form help
Compiled from PR review across the verzog/moodle-* plugin suite
(codechecker, enrol/local/block/theme_educheckout, tiny_bootstrap,
local_freshdesk, datafield_gradeentry, local_imageblog).

Updates the baseline to Moodle 5.0-5.2 / PHP 8.2-8.4 and folds in the
new lessons surfaced by merged PRs:

- ubuntu-24.04 runner (22.04 retired)
- max_input_vars=5000 for PHPUnit
- Service-image pinning + install retry + gated later steps
- PHP 8.4 implicit-nullable parameter deprecation
- get_default_enrol_roles() for enrol-instance forms
- Enrol cost/currency on mdl_enrol; unformat_float; core_payment currency picker
- Pinning cross-plugin $plugin->dependencies; explicit ref: after main rename
- Block {block}.name unique-violation on migration
- N+1 query patterns (preload by id; single UPDATE ... REPLACE())
- Server-side JSON validation in external functions
- Stranded commits after merge; revert-PR risk
- Marketplace hygiene: LICENSE file, MATURITY_BETA, TERMS.md, install.php docs
- core/modal over TinyMCE windowManager; scoped file_picker_callback
- Payment-flow idempotency, account guard, server-side capacity checks
- null_provider for plugins that store no personal data
- $plugin->supported clashes with 'main' in the matrix
- CI badge points at the fork, pinned to main

https://claude.ai/code/session_01PTCkXxSg9PqPcEVSKtykTf
@verzog verzog closed this Jun 8, 2026
@verzog
verzog deleted the claude/zen-archimedes-OGYfs branch June 8, 2026 09:09
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.

2 participants