Skip to content

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

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#470
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 805a781 into development Aug 20, 2026
42 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/scholiq @ 312fa66

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
format
composer ✅ 104/104
npm ✅ 634/634
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman ⏭️
Playwright
Hydra gates

Quality workflow — 2026-08-20 06:01 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