Skip to content

fix(nc35): register OpenRegister autoloader without removed OC_App API - #874

Merged
rubenvdlinde merged 1 commit into
developmentfrom
claude/nc35-support
Oct 6, 2026
Merged

rubenvdlinde merged 1 commit into
developmentfrom
claude/nc35-support

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Summary

Part of the fleet-wide Nextcloud 35 rollout (see ConductionNL/decidiq#1616). Nextcloud 35 removed the private \OC_App::registerAutoloading(); the OpenRegister autoload prelude now registers a PSR-4 loader with the public IAppManager + spl_autoload_register (as in keepiq#712). Declares NC35; OC_App psalm suppression removed.

Commits

  • fix(nc35): register OpenRegister autoloader without removed OC_App API

Validation and open risks

OpenRegisterAutoloaderTest OK (7) on OCP 34 and 35. Full suite: CI.

Merge order

Land ConductionNL/openregister#4406 first (CI installs openregister development).

🤖 Generated with Claude Code

https://claude.ai/code/session_01M7DxSg7d7wqqZsUppLWf7J


Generated by Claude Code

Nextcloud 35 removed the private \OC_App::registerAutoloading(). The
call threw inside OpenRegisterAutoloader::register(), which then
returned false, so the prelude never registered OpenRegister's prefix.

Register a PSR-4 loader for OCA\OpenRegister\ -> <openregister>/lib/
via spl_autoload_register(), using only the public IAppManager
(isEnabledForAnyone() + getAppPath()), same approach as keepiq#712.
register(): bool keeps its contract and call site; an optional
IAppManager can be injected for tests. Adds unregister() and
classFile() plus unit tests for the enabled, disabled, throwing and
mapping paths.

Also declare Nextcloud 35 support (info.xml max-version 35) and drop
the now-unneeded psalm OC_App suppression.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M7DxSg7d7wqqZsUppLWf7J
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/planninq @ 4345efb

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 646/646
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ❌
Newman ❌
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-06 10:26 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor Author

CI triage for quality / Hydra Gates (run 37448733312). The only failing gate is gate-64 apphost-autoload-prelude. The gate counts only a \OC_App::registerAutoloading() call as the OpenRegister prelude. Nextcloud 35 removed that method, and this PR replaces it with a public-API spl_autoload_register loader (OpenRegisterAutoloader::register()). The fix belongs in ConductionNL/.github, where the gate has to accept the public-API prelude. I applied that gate patch locally and this branch then passes gate-64. Per ADR-040, I did not add an apphost-prelude exclude suppression. Every other gate passed.

Update after the re-run (attempt 2). ConductionNL/openregister#4406 is merged, so openregister now enables on stable35 and the tests ran. Both remaining failures already exist on development:

  • Integration Tests (Newman) (job 112241648317): 9 of 85 assertions fail. Development run 37408488355 (job 112093134023, development @ 9782f94) fails the same 9 with the same messages. They are:

    • Project Phases: 2× "refused by the guard", where the test expects 403 and gets 422.
    • Cross-project Views: the non-member reads the view, the member edits it, and the title changes.
    • Code Links: the task gets no key (400). Because of that, the link returns 422, and the clean-up DELETEs return 404.

    These are OpenRegister guard/RBAC behaviour and status-code expectations in the collection. This PR only changes the autoloader prelude, its test, info.xml and psalm.xml.

  • PHPUnit (PHP 8.3, NC stable35, pgsql) (job 112241648295): 656 tests with 5 errors and 2 failures:

    • The 5 errors are all in BoardColumnWiringTest: "Access to undeclared static property OCA\OpenRegister\Event\ObjectEventSubscription::$calls". The test stub collides with the real OpenRegister class.
    • The 2 failures are BackfillAfterRegisterImportTest::testTheBackfillIsListedAfterTheRegisterImport and BackfillProjectMembersTest::testRegisteredAfterTheRegisterImportInBothBlocks.

    All 7 also fail on development, in PHPUnit stable34 of run 37408488355 (job 112093134119). That job has 7 errors and 2 failures, so stable35 here is a subset of it.

These need fixing on development, in the tests or the Newman collection against current OpenRegister, not in this PR.


Generated by Claude Code

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/planninq @ 4345efb

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 646/646
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ❌
Newman ❌
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-06 11:25 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 83e6c70 into development Oct 6, 2026
70 of 78 checks passed
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