chore(license): normalise licence declarations to EUPL-1.2 - #742
Conversation
Bring every licence declaration in procest into agreement on EUPL-1.2,
matching composer.json, package.json, appinfo/info.xml and LICENSE, which
already say EUPL-1.2.
- 30 files under tests/e2e/ carried `SPDX-License-Identifier: AGPL-3.0-or-later`;
all are our own Playwright specs/helpers (SPDX-FileCopyrightText: Procest
Contributors / Conduction B.V.). Changed to EUPL-1.2.
- project.md and docs/Technical/government-compliance.md claimed the app is
AGPL-licensed in prose. openspec/specs/app-metadata-claims/spec.md explicitly
forbids that ('No AGPL claim remains in prose'). Corrected to EUPL-1.2.
Copyright holders and years untouched. lib/**.php was already 100% EUPL-1.2,
so gate-28 (license-triangle) passed before and still passes.
Test-neutral: phpunit 1692 tests / 5659 assertions / 0 failures and vitest
32 files / 330 tests, identical before and after.
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 550/550 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-05 18:49 UTC
Download the full PDF report from the workflow artifacts.
Bring every licence declaration in procest into agreement on EUPL-1.2,
matching composer.json, package.json, appinfo/info.xml and LICENSE, which
already say EUPL-1.2.
- 30 files under tests/e2e/ carried `SPDX-License-Identifier: AGPL-3.0-or-later`;
all are our own Playwright specs/helpers (SPDX-FileCopyrightText: Procest
Contributors / Conduction B.V.). Changed to EUPL-1.2.
- project.md and docs/Technical/government-compliance.md claimed the app is
AGPL-licensed in prose. openspec/specs/app-metadata-claims/spec.md explicitly
forbids that ('No AGPL claim remains in prose'). Corrected to EUPL-1.2.
Copyright holders and years untouched. lib/**.php was already 100% EUPL-1.2,
so gate-28 (license-triangle) passed before and still passes.
Test-neutral: phpunit 1692 tests / 5659 assertions / 0 failures and vitest
32 files / 330 tests, identical before and after.
…/github.com/ConductionNL/procest into chore/eupl-license-normalisation-2026-08-05
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 550/550 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-05 19:28 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 550/550 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-05 20:08 UTC
Download the full PDF report from the workflow artifacts.
|
Held, not merged — blocked by a repo-wide gate-24 wiring failure, not by anything in this PR. Hydra Gates is red here, but the failure is "a gate did not run", not "a gate found something":
It is not this PR's doing. Measured across three independent procest PRs tonight with completely different diffs:
Three different diffs, three different sizes, identical outcome. gate-24 ( I deliberately did not reach for What unblocks this: the gate-24 parity work that is in flight ( Not merging on a red Hydra Gates, and not adding a waiver or flipping |
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 550/550 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-05 21:33 UTC
Download the full PDF report from the workflow artifacts.
|
Adjudication for this merge, recorded for the audit trail. The E2E failure that previously blocked this PR was resolved, and it was never caused by this diff. Earlier runs failed 2 of 83 E2E tests ( gate-28 license-triangle: PASS, on a real scope — The diff is licence-only. Grepping the diff for added lines that are not a licence declaration returns 0. No file added, deleted or renamed. (The One gate remained red: gate-58
Lines this PR adds containing The base branch's own Nothing was suppressed — no waiver, no baseline entry, no gate disabled. The pre-existing |
Brings every licence declaration in procest into agreement on EUPL-1.2 — the licence already declared by
composer.json,package.json,appinfo/info.xmlandLICENSE.Changed (32 files)
SPDX-License-Identifier: AGPL-3.0-or-later→EUPL-1.2tests/e2e/— our own Playwright specs + helpersAGPL→EUPL-1.2project.md,docs/Technical/government-compliance.md@licensePHPDoc tagslib/**.phpwas already 100% EUPL-1.2 (597/597)composer.json/package.json/appinfo/info.xml/LICENSEalready EUPL-1.2Every touched file carries our own copyright (
SPDX-FileCopyrightText: 2026 Procest ContributorsorConduction B.V.). No@copyright/SPDX-FileCopyrightTextline was altered — holders and years are untouched.The two prose fixes are mandated by this repo's own canonical spec,
openspec/specs/app-metadata-claims/spec.md: "THEN no free-text statement MUST claim the app is AGPL-licensed".Deliberately NOT changed
LICENSEline 177 —GNU Affero General Public License (AGPL) v. 3is part of the EUPL's own compatible-licences appendix. It is the EUPL text itself.README.mdline 284 — lists EUPL-compatible copyleft licences. Correct as written.license-report-composer/*,license-report-npm/*— generated dependency-licence reports. The AGPL rows are third-party packages (nextcloud/ocp,@nextcloud/vue,@nextcloud/files); the report already records procest itself asEUPL-1.2.composer.lock,package-lock.json— third-party dependency metadata.openspec/specs/app-metadata-claims/spec.mdand the archived2026-07-06-align-claims-and-licencechange — the word AGPL appears there as the thing being prohibited. Changing it would invert the requirement.Verification
license-triangleHost PHP is 8.2 and the repo pins
php: ^8.3, so a host phpunit run exits 255 (VOID). Both runs above were done in a PHP 8.5 container, identically conditioned.gate-28 was already passing for procest before this PR — the sweep worklist attributed 19 failing
lib/Service/{File,Object}/*.phpfiles to procest, but those files do not exist in this repo; they are openregister's (cross-repo attribution error in the worklist generator). procest'slib/is 597/597 EUPL-1.2. gate-28's ability to fail was confirmed with a positive control (temporarily flipping one@licenseto AGPL made it report FAIL; reverted).🤖 Generated with Claude Code