Skip to content

chore(deps): take hydra-gates v1.8.1 — the contract v1.8.0 shipped broken - #553

Merged
rubenvdlinde merged 1 commit into
developmentfrom
chore/hydra-gates-v1.8.1
Aug 20, 2026
Merged

chore(deps): take hydra-gates v1.8.1 — the contract v1.8.0 shipped broken#553
rubenvdlinde merged 1 commit into
developmentfrom
chore/hydra-gates-v1.8.1

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

v1.8.0 shipped an ObjectServiceInterface without patchObject() and with updateObject() still summarised as "Apply a partial update to an existing object" — the exact wording that sent a consumer down the erasing path. The correction landed on main in f8cad2f0, two days after v1.8.0 was tagged; every app has been pinned to the broken copy ever since. v1.8.1 publishes it.

Why every app and not just openregister. hydra-gates/composer.json claims the app's own namespace:

"psr-4": { "OCA\\OpenRegister\\Contract\\": "hydra-gates/contracts/" }

That is a longer prefix than openregister's own OCA\OpenRegister\lib/, so the gate package wins. Nine repos vendor it, so under OC_App::loadApps() whichever app registers first defines the contract for the whole instance. Measured on a running instance:

WINNER: custom_apps/softwarecatalog/vendor/conduction/hydra-gates/.../ObjectServiceInterface.php
patchObject: NO

softwarecatalog's vendor directory was defining openregister's contract — and updating openregister alone did not change the winner. Verified empirically before opening these PRs.

v1.8.1 also carries everything else merged on main since v1.8.0 (63 commits), including gate-behaviour changes: phpcs errors fail the gate (#483), gate-8 judges how the caller consumes the null (#506), coverage-guard ignores deletions (#480), and the release step now bumps openapi.json alongside appinfo/info.xml (#515).

Lockfile only — the ^1.0 constraint already allowed this.

…oken

v1.8.0 shipped an ObjectServiceInterface WITHOUT patchObject() and with
updateObject() still summarised as "Apply a partial update" — the wording
that sent a consumer down the erasing path. The correction landed on main
two days after the tag; every app has been pinned to the broken copy since.

It is not confined to this repo: hydra-gates claims OCA\OpenRegister\Contract\
in its composer autoload, a LONGER psr-4 prefix than openregister's own
OCA\OpenRegister\ -> lib/, so the gate package wins. Nine repos vendor it, so
under OC_App::loadApps() whichever app registers first defines the contract
for the whole instance. Measured on a running instance, softwarecatalog's
vendor directory was supplying openregister's interface, and updating
openregister ALONE did not change the winner — which is why this lands
across the fleet rather than in one repo.
@rubenvdlinde
rubenvdlinde merged commit bf2a5da into development Aug 20, 2026
77 checks passed
@rubenvdlinde
rubenvdlinde deleted the chore/hydra-gates-v1.8.1 branch August 20, 2026 05:32
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/softwarecatalog @ 069feae

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue-demi
test-l10n
format
composer ✅ 130/130
npm ✅ 704/704
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman ⏭️
Playwright
Hydra gates

Quality workflow — 2026-08-20 05:53 UTC

Download the full PDF report from the workflow artifacts.

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