Repository navigation
fix(hydra-gates): vendor manifest schema 2.138.0 and name schema drift in gates 22 and 53 - #861
Merged
rubenvdlinde merged 2 commits intoOct 21, 2026
Conversation
…t in gates 22 and 53 The vendored app-manifest-v2 schema was at 2.96.0 while @conduction/nextcloud-vue 2.118.0 (npm latest) ships 2.138.0. dossiq, portaliq and shillinq failed gates 22 and 53 on keys the library accepts: entitySource "endpoint", rowIndicators[].after and statusPill.values. - Re-vendor the schema from the published 2.118.0 tarball. - Add scripts/lib/vendored_schema_freshness.js: compares the vendored copy with npm latest, a schema file, or an app's installed library. - check_manifest.js logs VENDORED SCHEMA BEHIND when the app's installed library ships a newer schema; gates 22 and 53 append it to their reason. - The sync workflow runs daily and closes older sync PRs it supersedes. Assisted-by: ClaudeCode:claude-opus-5-5
…refusal Schema 2.138.0 closes header actions and store pages with unevaluatedProperties rather than additionalProperties. The planted unknown key is still refused, so the anti-widening checks for gates 22 and 53 now accept either keyword. Assisted-by: ClaudeCode:claude-opus-5-5
This was referenced Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Gates 22 (manifest-validation) and 53 (effective-manifest-crossref) were validating against a vendored
app-manifest-v2schema at 2.96.0.@conduction/nextcloud-vue2.118.0 (npmlatest) ships 2.138.0. So valid manifests failed on keys the library already accepts:entitySource: "endpoint",rowIndicators[].afterandstatusPill.values.hydra-gates/scripts/schemas/app-manifest-v2.schema.jsonfrom the published 2.118.0 tarball. The schema is byte-identical to the one in the package.scripts/lib/vendored_schema_freshness.jscompares the vendored copy with npm latest (default), a schema file (--published), or an app's installed library (--app-dir). It warns by default.--strictexits 1 when the copy is behind, and it exits 2 when it cannot compare. Tests are intest_vendored_schema_freshness.js.check_manifest.jslogsVENDORED SCHEMA BEHIND: …when the app running the gate has a newer library installed. Gates 22 and 53 then add that line to their failure reason.hydra-gates-schema-sync.ymlnow runs daily instead of weekly. It also closes the older sync PRs that its new PR supersedes. The copy fell behind because chore(hydra-gates): vendor manifest schema 2.85.0 #842 (2.85.0) and chore(hydra-gates): vendor manifest schema 2.126.0 #859 (2.126.0) were left open.Stricter constraints (diff_schema_strictness 2.96.0 → 2.138.0)
To check these, every fleet app's
developmentsrc/manifest.jsonwas validated against both schemas. No app went red. Three went from red to green:Verified locally
developmentcheckouts:entitySource,rowIndicators/1andstatusPill. 2.138.0 gives rc 0 on all four steps.entitySource. 2.138.0 gives rc 0 on all four steps.test_check_manifest.sh,test_check_manifest_crossref.js,test_build_effective_manifest.js,test_check_manifest_ajv_collapse.js,test_diff_schema_strictness.js,test_lib_commonjs_scope.sh,test_manifest_scope_filter.js,test_vendored_schema_freshness.js.run-helper-suites.sh: 132 suites pass and 1 is quarantined (as onmain). One suite was red on the first run:test_gate_45_to_55_acceptance.sh. Its anti-widening checks for gates 22 and 53 grep foradditionalProperties, and 2.138.0 refuses the planted unknown key withunevaluatedPropertiesinstead. The defect is still caught, so the second commit accepts either keyword. That suite now passes.run-hydra-gates.sh --fullon portaliqdevelopmentreports[gate-22] manifest-validation: PASSand[gate-53] effective-manifest-crossref: PASS(33 non-blocking WARNs).The
require is not defined in ES module scopecrashThis was already fixed on
mainbyscripts/lib/package.json("type": "commonjs", #815, inhydra-gates/v2026.41and later).test_lib_commonjs_scope.shruns all three gate-53 helpers under a"type": "module"parent, and it passes. The crash still shows up for apps that run the composer-installed copy: dossiq locksconduction/hydra-gatesv1.16.1 and portaliq locks v1.18.0, and both tags predate that file. They also carry an older schema. Nov1.xtag has been cut since the fix, so a new composer release (or moving apps to thehydra-gates/v2026.*line) is needed for local composer runs to pick up both fixes. That is out of scope here. I did not rename to.cjs, because the package.json already makes both module modes work.AI disclosure: prepared with Claude Code (claude-opus-5-5) and reviewed by the contributor before submission.
🤖 Generated with Claude Code