chore(ci): stop pinning hydra-gates — track the package at @main - #136
Conversation
A pinned `hydra-gates-ref` is a silent expiry date on every upstream fix: this repo cannot receive a gate-package change until this line moves. v1.4.0 is the latest tag and the first one that carries `hydra-gates/scripts/axe-run.cjs` (verified absent at v1.3.0), so it is also the first that has ConductionNL/.github#168 axe DOM scoping and ConductionNL/.github#165 gate-46 fix. `enable-axe` is deliberately NOT enabled in this commit. Ordering matters: the ref lands first, enabling axe is a separate decision.
Quality Report — ConductionNL/openbuild @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 101/101 | |||
| npm | ✅ | ✅ 654/654 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-05 22:21 UTC
Download the full PDF report from the workflow artifacts.
Removes `hydra-gates-ref` entirely instead of moving it v1.3.0 -> v1.4.0. The shared workflow already defaults the input to @main, and this repo consumes `ConductionNL/.github/.github/workflows/quality.yml@main`, so both sides now move together: a gate-package fix reaches this repo with no commit here. A pin is a silent expiry date. 22 repos sat on v1.0.1 while 16 gates were dead fleet-wide and every one of them reported PASS (.github#159), and a default flipped at @main later reached those same old runners and failed them on gates they had no subject matter for (.github#173). Bumping the pin is a treadmill that reintroduces the same failure mode on the next release. The pin-justifying comment block is replaced with a short note saying why there is no ref here and how to reintroduce one deliberately. The rationale for `enable-hydra-gates: true` is kept unchanged, as is `enable-axe` being left off.
Quality Report — ConductionNL/openbuild @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 101/101 | |||
| npm | ✅ | ✅ 654/654 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-06 06:12 UTC
Download the full PDF report from the workflow artifacts.
…is failing this repo now development moved the pin to v1.5.0 while this branch removes it. Resolved in favour of removing it: a pin is what broke, and v1.5.0 is not a better pin. Since this branch was opened, the pinned-package-vs-floating-@main desync produced its most acute form yet. quality.yml@main now executes three gate helpers BY NAME — check_spec_anchors.py, check_form_labels.py and check_license_triangle.py — and NO tag before v1.5.0 contains any of them, so the Hydra Gates job here fails at "Verify the pinned gates package satisfies this workflow", before a single gate runs, with the workflow's own message: "This is NOT a code-quality finding about your repository." Verified by DIRECTORY LISTING of each tag rather than per-file lookups. Those answered "present" UNIFORMLY across v1.0.0..v1.5.0 — and uniformity across independent inputs is a statement about the instrument, not the inputs. The listing gives 0 of 3 at every tag through v1.4.0 and 3 of 3 at v1.5.0. Unpinning also picks up .github#179 (v1.5.1): on a push to `development`, `origin/development` IS `HEAD`, so the diff was empty by construction — <= v1.4.0 passed over it (permanently green) and v1.5.0 refused with exit 99 (permanently red). The scope is now `github.event.before...HEAD`, what the push actually changed, with exit 99 kept only for the cases that genuinely cannot be scoped.
Quality Report — ConductionNL/openbuild @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 101/101 | |||
| npm | ✅ | ✅ 654/654 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-06 06:46 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openbuild @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 101/101 | |||
| npm | ✅ | ✅ 654/654 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-06 07:47 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openbuild @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| composer | ✅ | ✅ 101/101 | |||
| npm | ✅ | ✅ 654/654 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-06 08:24 UTC
Download the full PDF report from the workflow artifacts.
Hydra Gates is RED here on a genuine finding — not on this change
Finding: Severity: LIVE-EXPOSED. Apps register in sorted order — Why it is not a regression from this PR: the failure is pre-existing, and unpinning did not introduce it — it made it visible. Measured against this repo's own baseline, The fix (ADR-040 prelude, called before any $p = \OCP\Server::get(\OCP\App\IAppManager::class)->getAppPath('openregister');
\OC_App::registerAutoloading('openregister', $p);wrapped in |
What changed
This PR started life as
hydra-gates-ref: v1.3.0 -> v1.4.0. It now does the opposite of a bump: it deletes thehydra-gates-refline from.github/workflows/code-quality.ymlso this repo inherits the shared workflow's default.enable-hydra-gates: trueis unchanged.enable-axeis untouched.Why not just bump it
The input's default in
ConductionNL/.github/.github/workflows/quality.ymlis alreadymain, and this repo consumes that workflow@main. With the override gone, both sides move together — a gate-package fix reaches this repo without needing a commit in this repo.A pin is a silent expiry date on every upstream fix, and we have now been bitten by it from both directions:
.github#159— all 22 repos were pinned tov1.0.1, which predated the gate fixes. 16 gates were dead fleet-wide, and every one of them reported PASS. A check that did not run looks exactly like one that passed..github#173— a default flipped on.githubmainthen reached those same old pinned runners, which could not honour it, and they went red on gates they had no subject matter for.Bumping the pin fixes neither: it just resets the clock and guarantees the same two failures on the next release. The pin-justifying comment block (v1.3.0, reproducibility, the pin-move history) is replaced with a short note explaining why there is deliberately no ref here. The rationale for having the gates on at all is kept.
Rollback and escape hatch
ConductionNL/.githubmain. One commit, whole fleet.hydra-gates-ref:explicitly here with a comment saying why. The input is still honoured — this PR removes an unexamined default, not the capability.Safety net
ConductionNL/.github#177adds the resolve probe plus the gates package suite gating.githubmain, so a gates change that would not resolve or would break the runner is caught before it can reach@mainconsumers like this one.