Skip to content

ci(quality): unpin the hydra-gates package, which is now failing the job outright - #230

Closed
rubenvdlinde wants to merge 1 commit into
developmentfrom
chore/unpin-hydra-gates
Closed

ci(quality): unpin the hydra-gates package, which is now failing the job outright#230
rubenvdlinde wants to merge 1 commit into
developmentfrom
chore/unpin-hydra-gates

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

quality / Hydra Gates is red on development, and not for anything in this repo.

ConductionNL/.github#177 added a step that verifies the pinned package contains every path the workflow executes by name. Our pin, v1.3.0, ships none of check_spec_anchors.py, check_form_labels.py or check_license_triangle.py, so the job fails before a single gate runs. Listing all nine required paths at each tag:

ref missing
v1.3.0 axe-run.cjs, check_spec_anchors.py, check_form_labels.py, check_license_triangle.py
v1.4.0 check_spec_anchors.py, check_form_labels.py, check_license_triangle.py
v1.5.0 / main none

Second time, same shape

quality.yml is consumed @main while the package was pinned, so the two move independently and a change on one side reaches an old runner on the other. #164 was the first instance: it flipped hydra-gates-require-full-coverage to default TRUE while the accounting that makes that flag survivable ships in the package, and every older pin went red on gates it has no subject matter for.

Why remove the input rather than bump to v1.5.0

That is the fleet contract as of ConductionNL/.github#177 — the PO's ask was "stop pinning the package per repo". A pin is a silent expiry date on every upstream fix, and it turned each fix into a 23-PR treadmill.

The guard that makes tracking main safe landed in the same PR. An unresolvable reusable workflow is not a red check — GitHub produces a run with no jobs, so every dashboard stays green while every caller quietly stops being checked. quality-resolve-probe.yml counts the jobs a caller materialises and asserts > 0.

Rollback for this repo alone stays available: set hydra-gates-ref: explicitly. An escape hatch, not a resting state.

Blocks #228. Same fix is needed in 16 other repos — sweeping them once this one is verified green.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/nldesign @ 3fd57dd

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
composer ✅ 100/100
npm ✅ 2/2
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-06 06:09 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/nldesign @ 3fd57dd

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
composer ✅ 100/100
npm ✅ 2/2
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-06 07:22 UTC

Download the full PDF report from the workflow artifacts.

…it was cut

development moved from v1.3.0 to v1.5.0 while this branch was open, which
fixes the symptom that opened it: v1.5.0 satisfies #177's capability probe,
so Hydra Gates no longer fails before a gate runs. Unpinning entirely still
matters, and the reason is now sharper than when this branch started.

v1.5.0 carries a fleet-wide falsely-RED gate. gate-28 license-triangle
reported a `structural` coverage gap whenever the diff scope was empty —
that is, on every PR that does not touch lib/**/*.php, which is most of
them — because "no file in scope" and "files in scope, none carried a
licence declaration" reached the same branch. With
hydra-gates-require-full-coverage defaulting TRUE, that is exit 98.

It is fixed in ConductionNL/.github#182, on main. A repo pinned to v1.5.0
cannot see that fix, and the tag will not move. Measured here against the
real runner, three arms:

    diff = .github/workflows/code-quality.yml   before SKIPPED(structural)
                                                after  NOT APPLICABLE
    diff = 3 files under lib/                   PASS, both
    diff = a lib/*.php declaring AGPL while
           composer.json declares EUPL-1.2      FAIL — 1 file(s)

That is the whole argument for #177's contract in one branch: this repo was
pinned at v1.3.0, bumped to v1.5.0 to clear one breakage, and would have
needed a third commit to clear the next one. A pin is a silent expiry date
on every upstream fix.

Verified on this PR's own run after the unpin: Hydra Gates PASS in 20s,
58 applicable gates green, 5 correctly NOT APPLICABLE.

Rollback for this repo alone stays available: set hydra-gates-ref
explicitly. An escape hatch, not a resting state.
@rubenvdlinde
rubenvdlinde force-pushed the chore/unpin-hydra-gates branch from 76302eb to 3aea1bc Compare August 6, 2026 07:25
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/nldesign @ db6a83d

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
composer ✅ 100/100
npm ✅ 2/2
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-06 07:41 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde

Copy link
Copy Markdown
Contributor Author

Duplicate of #227, which makes the same change (removing hydra-gates-ref so the repo inherits the shared workflow's default). Continuing on #227 to keep the fleet sweep to one PR per repo.

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.

1 participant