ci(quality): enable the Code Quality gates this repo was silently skipping - #728
Conversation
…pping A skipped job and a passing job are indistinguishable in the Quality Report. Every gate turned on here reported 'skipped' in every run. Each newly-enabled leg was measured against this tree BEFORE being enabled; the results are in the PR description. Legs that were measured failing are enabled anyway - the defects are pre-existing, and the only thing that changed is that CI can now see them. Journeydoc Capture and enable-axe are deliberately NOT enabled.
…pt-outs A second key in the same with: block is accepted last-one-wins by every YAML parser involved, so the file reads as configured while the value is decided somewhere else in it. Where enable-newman: false already carried a specific, still-live reason (OR React/Async await + SQLite REGEXP; ZGW API incomplete; collections hard-coding non-CI URLs and unseeded registers), it is left off and the reason is quoted rather than overridden. Where it was a bare line with no comment, the stale line is removed instead of shadowed.
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 | ❌ |
Quality workflow — 2026-08-04 15:30 UTC
Download the full PDF report from the workflow artifacts.
What the run actually producedRun 30921048391 — the measurement that matters, since it is the one that decides the verdict. Jobs: 29 → 31 (skipped: 7 → 5). Counted from the jobs API, not from the AttributionCaused by this change: Failing jobs
Correction to the pre-measurement in the descriptionThe description says I ran the script locally with no So I measured the fallback path, not the path CI takes, and drew a fleet-wide Hydra Gates: the one failing gate is the same one in all three repos
Every other gate passed. The run prints |
Note on the
|
What
Enables the Code Quality gates this repo was silently skipping.
frontend-checks: [])["check:manifest", "check:vue3-compile", "test:l10n"]enable-hydra-gatesunset)v1.0.1Why
A skipped job and a passing job are indistinguishable in the Quality Report.
Every gate listed above reported
skippedin this repository's runs, which readsas "fine". This turns them on.
Two prerequisites landed on
ConductionNL/.github@mainfirst and are what makethis viable:
no-admin-idor) now follows delegation, andgates 6/7 no longer pass on an empty scope. Before that, gate-7 flagged
correctly-guarded methods whose guard is reached through a helper, which is
why 19 of 20 repos kept the whole tier switched off.
frontend-checkslist deleted the Frontend Check jobfrom the run rather than skipping it, because
inputs.frontend-checks != '[]'was a literal string comparison.
Not enabled, on purpose
enable-axe— it produces the report hydra-gates gate-33 consumes, but avanilla Nextcloud 34 with no app installed already returns three
serious/critical violations from core's own UI. Turning it on in the same
change as the gates would confuse "this app has an accessibility defect" with
"Nextcloud core does". Separate change.
On red
Some legs below were measured failing before this PR was opened, and are
enabled anyway. The defects are pre-existing; the only thing that changed is
that CI can now see them. Per the brief, a gate is not switched back off because
it failed on arrival — the failure is the result.
Measured before flipping, not after
Every leg below was run against this branch's tree before it was enabled:
test:l10nPASSES — 2102 keys used, 3100 inen.json, anden.json/nl.jsonkey sets match.check:manifestFAILS on three counts —pages[4]andpages[5](type=custom requires component field) andpages[52].type: "roadmap" not in v1.2 enum.check:vue3-compilenot measurable locally — it needs@vue/compiler-sfc, which only exists after the leg's ownnpm ci. CI is the first place it gets a real verdict; that is stated rather than guessed.Left off, with reasons
enable-newman: falserecords that the ZGW compliance collections fail at 95%+ because the ZGW API implementation is still in progress. Four collections underdata/would meet that same known cause. It goes back on in the commit that gets the core CRUD assertions passing..coverage-baselinecommitted); unchanged at 29.6.test/test:unit— already run by the shared Frontend Tests (unit) job.