chore: raise Nextcloud floor to 32 (PHP 8.3) and drop the impossible stable31 CI leg - #154
chore: raise Nextcloud floor to 32 (PHP 8.3) and drop the impossible stable31 CI leg#154rubenvdlinde wants to merge 2 commits into
Conversation
Quality Report — ConductionNL/openbuild @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ❌ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| composer | ❌ | ✅ 100/100 | |||
| npm | ✅ | ✅ 389/389 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ | ||||
| Hydra gates | ⏭️ |
Quality workflow — 2026-08-08 16:09 UTC
Download the full PDF report from the workflow artifacts.
|
Status update — the floor has landed on #148 merged 2026-08-09. Verified on
The rule is satisfied on #148 also added Leaving this PR open rather than closing it, because it is not fully superseded: |
Why
Product directive from the PO (Ruben): the fleet standardises on Nextcloud 32 so it can require PHP 8.3 — "we want php 8.3 so going for min version nc 32 fleet wide is a good thing."
The governing rule (openconnector#1172 / #1173): an app's
min-versionmust be>=the max of every<app>dependency's floor, or the App Store advertises a range the app cannot deliver — the dependency refuses to install and the app is non-functional there.openregister@developmentdeclaresmin-version 32as of openregister#2384 (merged 2026-08-08T10:45Z); re-measured on this branch with an XML parser and confirmed.Shape
Floor-only PR directly to
main. Reason:maintrailsdevelopmentby 188–5206 commits in every repo in this fleet, so adevelopment→mainmerge would be a full release, not a floor fix.Changes
1.
appinfo/info.xmlmin-versionmax-versionmin-versionA prose comment was added above the
nextcloudelement. It contains no XML element syntax: floor guards here count raw regex matches of the nextcloud element across the whole file including comments, so a quoted example would read as a second, contradictory declaration and trip the guard. Validated before push: the file parses as XML and<nextcloud\b[^>]*>matches exactly once.2.
.github/workflows/code-quality.yml— drop the impossible CI legnextcloud-test-refs: '["stable31", "stable32", "stable33"]'→'["stable32", "stable33"]'stable31 is removed because it tests an impossible configuration, not to trim coverage. A floor of 32 is enforced at install time, so
occ app:enablerefuses on NC31. The shared workflow runs app-enable as|| echo "::warning::...", so the failure is only a warning and the job continues without its data layer, then dies ~70 seconds later on missing schemas — which reads like an app/migration fault and sends you to the wrong file entirely.Order matters too: the newman / playwright / journeydoc jobs check out the server at
fromJSON(inputs.nextcloud-test-refs)[0], so astable31sitting first put all of them on the one version the app cannot be enabled on.This removes an impossible leg — it does not widen the matrix. No new refs are added. Some job names (
PHPUnit (PHP 8.x, NC stable31)) will legitimately disappear from the check set.Measurement notes
All version readings were taken with
xml.etree.ElementTree, never grep.mainappinfo/info.xmlcontains exactly one<nextcloud>occurrence and no commented-out examples. The "literal examples inside comments" hazard cited in the rollout brief does not apply to this file — the single-match validation was still run and still passes.openregister@mainstill declaresmin-version 28(max 34). Onlyopenregister@developmentis at 32. Stated explicitly so no reader infers a claim aboutmainthat is not true today.maininfo.xmldeclares no<app>dependency at all (developmentdeclaresopenregister). So the dependency-max rule does not mechanically bind onmainyet; the floor here is raised on the fleet directive and to match thedevelopmentlineage. The install-time argument for dropping stable31 stands on the app's own floor of 32 regardless.additional-appsinstallsConductionNL/openregisteratref: main(floor 28), so openregister itself would install on NC31 — it is this app's new floor that makes the stable31 leg impossible.hotfix/nc-floor-32-main. The sharedBranch Protectionworkflow requires PRs tomainto originate frombetaorhotfix/*; the originalchore/*branch failed that gate legitimately, so the branch was renamed to comply rather than the gate overridden. Content is byte-identical.