fix(ci): adopt the merge-base coverage guard — hermiq was the last stale copy - #163
Merged
Merged
Conversation
…ale copy
`quality.yml` probes `scripts/coverage-guard.php --capabilities` for the word
`against` before it will trust the ratchet, and errors out when the probe comes
back empty:
##[error]scripts/coverage-guard.php predates merge-base comparison.
Update it from ConductionNL/.github before enabling the ratchet.
hermiq's copy was the pre-`--against` 59-line version, so the probe exited 2
with no output and `PHPUnit (PHP 8.3, NC stable33)` failed on every pull
request — job 92563882183 of run 31085325766, and identically on the re-run, so
it is not a flake.
This is the floating-caller / stale-callee shape one layer up from the version
pins: `quality.yml` is consumed `@main` and moved on, the per-repo script is a
copy that did not. Every other repo adopted the new script (openbuild#137,
pipelinq#716, scholiq#286, decidesk#415, portaliq#49, shillinq#448, hrmq#71);
hermiq is the last one.
The file is byte-identical to the copy on openbuild `development` and scholiq
`development`, so there is one version of this script in the fleet again.
Verified locally, both directions:
--capabilities -> against/update-baseline/capabilities, exit 0
(the stale copy: no output, exit 2)
499/1000 vs base 500/1000 -> FAIL, exit 1
501/1000 vs base 500/1000 -> OK, exit 0
base with 0 statements -> exit 2, refuses to set the floor to 0%
Nothing is silenced: no baseline entry, no continue-on-error, no re-pin.
rubenvdlinde
requested review from
WilcoLouwerse,
bbrands02 and
rjzondervan
as code owners
August 6, 2026 08:55
Contributor
Quality Report — ConductionNL/hermiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 117/117 | |||
| npm | ✅ | ✅ 744/744 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-06 09:03 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The defect, measured
quality.ymlprobes the repo's own guard before it will trust the ratchet:hermiq's copy was the pre-
--against59-line version. It has no--capabilitiesmode, so the probe exits 2 with no output,grep -qx againstreturns 1, and the job errors out.That is exactly what the log says — run 31085325766, job 92563882183,
quality / PHPUnit (PHP 8.3, NC stable33):That run is a pull_request run (32 jobs, not zero — the reusable workflow
resolved), so this is not the
exit 99"COULD NOT RUN" artefact a push-to-developmentrun produces. It failed identically on the re-run, so it is not aflake.
The shape
This is the floating-caller / stale-callee problem one layer up from the
version pins.
quality.ymlis consumed@mainand moved on; the per-reposcripts/coverage-guard.phpis a copy, and a copy has no ref to follow.Every other repo adopted the new script — openbuild#137, pipelinq#716,
scholiq#286, decidesk#415, portaliq#49, shillinq#448, hrmq#71. hermiq is the
last one.
The fix
Replace
scripts/coverage-guard.phpwith the adopted version. The file isbyte-identical to the copy on
openbuilddevelopmentand onscholiqdevelopment(verified withdiff), so there is one version of this script inthe fleet again.
Verified locally — both directions, not just "it didn't error"
--capabilitiesgrep -qx against= 1 → CI error (the failure reproduced)--capabilitiesagainst/update-baseline/capabilities, exit 0FAIL: coverage dropped by 0.1%, exit 1OK: coverage improved by 0.1%, exit 0php -lThe guard is shown to be able to fail before it is trusted to pass.
Not done
No baseline entry, no
continue-on-error, no re-pinninghydra-gates-ref.Nothing is silenced.
quality / Hydra Gatesandquality / Quality Reportalso fail ondevelopmentfor reasons unrelated to the coverage guard; they are left alonehere rather than folded into a CI fix.