The disagreement
appinfo/info.xml declares:
<nextcloud min-version="28" max-version="34"/>
<php min-version="8.3"/>
while composer.json requires "nextcloud/ocp": "^31.0" and the CI matrix is
nextcloud-test-refs: '["stable31", "stable32", "stable33"]'.
So this app advertises NC 28, 29, 30 and 34 to the App Store and tests none of
them, and static analysis has never read an API surface older than 31 — meaning
nothing added in 28–30 is checked against, and, more to the point, nothing removed
after 31 is reportable either.
Found by gate-65 rule 11 (ConductionNL/.github#393):
FAIL test-matrix-misses-declared-versions: appinfo/info.xml declares NC 28-34,
but no job runs on stable28, stable29, stable30, stable34.
The matrix is ['stable31', 'stable32', 'stable33']
Why the floor should move rather than the matrix widening
Adding stable28/29/30 legs would mean testing against servers this app cannot
plausibly support: it already requires PHP 8.3, and its own dependency pin has
been ocp ^31 throughout. The 28 is not a supported floor, it is a stale one.
What the change needs
appinfo/info.xml → <nextcloud min-version="32" max-version="34"/>, matching
every core Conduction app.
composer.json → "nextcloud/ocp": "^34.0". Required, not optional: with the
floor at 32, gate-65 rule 9 (ocp-below-declared-minimum) fails an ocp ^31.
- Regenerate
composer.lock in the same commit, or composer install exits 4 and
every PHP job dies before running a tool:
composer update --no-interaction --no-progress --no-install --no-audit --no-scripts \
nextcloud/ocp --with-all-dependencies
Do not add --ignore-platform-reqs — it also discards config.platform.php, so
the solver stops respecting the app's PHP floor and can write a lock that cannot
install on the 8.3 legs.
nextcloud-test-refs → '["stable34", "stable32", "stable33"]', stable34 first
because fromJSON(inputs.nextcloud-test-refs)[0] is the single server for newman,
playwright, journeydoc-capture and the coverage guard.
Expect the ocp ^31 → ^34 bump to surface real findings: that is the point of it.
app-versions had the same shape and is fixed in ConductionNL/versioniq#143 — it
needed no ocp bump, since it already tracked dev-master.
The disagreement
appinfo/info.xmldeclares:while
composer.jsonrequires"nextcloud/ocp": "^31.0"and the CI matrix isnextcloud-test-refs: '["stable31", "stable32", "stable33"]'.So this app advertises NC 28, 29, 30 and 34 to the App Store and tests none of
them, and static analysis has never read an API surface older than 31 — meaning
nothing added in 28–30 is checked against, and, more to the point, nothing removed
after 31 is reportable either.
Found by gate-65 rule 11 (
ConductionNL/.github#393):Why the floor should move rather than the matrix widening
Adding stable28/29/30 legs would mean testing against servers this app cannot
plausibly support: it already requires PHP 8.3, and its own dependency pin has
been
ocp ^31throughout. The28is not a supported floor, it is a stale one.What the change needs
appinfo/info.xml→<nextcloud min-version="32" max-version="34"/>, matchingevery core Conduction app.
composer.json→"nextcloud/ocp": "^34.0". Required, not optional: with thefloor at 32, gate-65 rule 9 (
ocp-below-declared-minimum) fails anocp ^31.composer.lockin the same commit, orcomposer installexits 4 andevery PHP job dies before running a tool:
--ignore-platform-reqs— it also discardsconfig.platform.php, sothe solver stops respecting the app's PHP floor and can write a lock that cannot
install on the 8.3 legs.
nextcloud-test-refs→'["stable34", "stable32", "stable33"]',stable34firstbecause
fromJSON(inputs.nextcloud-test-refs)[0]is the single server for newman,playwright, journeydoc-capture and the coverage guard.
Expect the
ocp ^31 → ^34bump to surface real findings: that is the point of it.app-versionshad the same shape and is fixed in ConductionNL/versioniq#143 — itneeded no
ocpbump, since it already trackeddev-master.