Skip to content

chore(ci): stop pinning hydra-gates — track the package at @main - #136

Merged
rubenvdlinde merged 4 commits into
developmentfrom
chore/hydra-gates-ref-v1.4.0
Aug 6, 2026
Merged

chore(ci): stop pinning hydra-gates — track the package at @main#136
rubenvdlinde merged 4 commits into
developmentfrom
chore/hydra-gates-ref-v1.4.0

Conversation

@rubenvdlinde

@rubenvdlinde rubenvdlinde commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

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 the hydra-gates-ref line from .github/workflows/code-quality.yml so this repo inherits the shared workflow's default.

enable-hydra-gates: true is unchanged. enable-axe is untouched.

Why not just bump it

The input's default in ConductionNL/.github/.github/workflows/quality.yml is already main, 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 to v1.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 .github main then 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

  • Roll back for everyone: revert on ConductionNL/.github main. One commit, whole fleet.
  • Hold this one repo still: set 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#177 adds the resolve probe plus the gates package suite gating .github main, so a gates change that would not resolve or would break the runner is caught before it can reach @main consumers like this one.

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.
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ 7ace809

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.
@rubenvdlinde rubenvdlinde changed the title chore(ci): move hydra-gates-ref v1.3.0 -> v1.4.0 chore(ci): stop pinning hydra-gates — track the package at @main Aug 6, 2026
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ 999dfec

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.
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ 2a6679b

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.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ 2a6679b

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.

@rubenvdlinde
rubenvdlinde merged commit d9d9d49 into development Aug 6, 2026
30 of 31 checks passed
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ b63dd77

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.

@rubenvdlinde

Copy link
Copy Markdown
Contributor Author

Hydra Gates is RED here on a genuine finding — not on this change

Hydra Gates fails on exactly one gate: gate-64 apphost-autoload-prelude (ADR-040). Everything else passes. This is a real finding and is being landed rather than silenced — no re-pin, no baseline, no continue-on-error.

Finding: lib/AppInfo/Application.php:45 has use OCA\OpenRegister\AppHost\Bootstrap; but nothing under lib/AppInfo/ registers OpenRegister's autoloader first.

Severity: LIVE-EXPOSED. Apps register in sorted order — getEnabledApps() sorts, then Coordinator::registerApps() calls registerAutoloading() and register() one app at a time, so every app's register() runs before the PSR-4 prefix of every alphabetically-later app exists.

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, Hydra Gates was already red before this change.

The fix (ADR-040 prelude, called before any OCA\OpenRegister\… reference including a class_exists() probe):

$p = \OCP\Server::get(\OCP\App\IAppManager::class)->getAppPath('openregister');
\OC_App::registerAutoloading('openregister', $p);

wrapped in try/catch (\Throwable). doriath has a reference implementation in lib/AppInfo/OpenRegisterAutoloader.php. This is left as a separate change so it gets its own review rather than riding along on a CI-config PR.

@rubenvdlinde
rubenvdlinde deleted the chore/hydra-gates-ref-v1.4.0 branch August 14, 2026 09:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants