Repository navigation
feat(hydra-gates): gate 121 fails register schemas on an authorization dialect OpenRegister never reads - #862
Merged
Conversation
…n dialect OpenRegister never reads OpenRegister reads a schema's access rules from `authorization` and its administered checks from `x-openregister-validations`. `x-openregister-rbac`, `x-rbac-role` and the singular `x-openregister-validation` are read by nothing, so a schema carrying them looks protected and is open. shillinq's 528 schemas had no authorization block, 333 of them leaning on x-openregister-rbac. The gate reads lib/Settings/*register*.json, register.d/*.json and packages/**.json. A dead key inside a schema body fails. A schema without an authorization block is counted in a report-only coverage line, merged the way RegisterDocumentLoader merges register.d; HYDRA_GATE_REGISTER_AUTHORIZATION_BLOCKING=1 promotes it to a failure. Assisted-by: ClaudeCode:claude-opus-5-5
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 gate 121 checks
OpenRegister reads a schema's access rules from
authorizationand its administered checks fromx-openregister-validations. Three other keys look like they do the same job and are read by nothing:x-openregister-rbac,x-rbac-role, and the singularx-openregister-validation. A schema that carries them looks protected in review and is open to anyone who reaches the register.Gate 121
register-auth-dialectreads every register document underlib/Settings:*register*.jsonat the top level (mocks included),register.d/*.json, andpackages/**.json.x-rbac-roleincluded). A property that is merely named like a dead key is not judged.authorizationblock is counted, and the run printsauthorization coverage: X of Y. The census deep-merges the base document andregister.dthe wayRegisterDocumentLoaderdoes, so a fragment that closes a base schema counts. Mocks are left out and packages are counted on their own. SettingHYDRA_GATE_REGISTER_AUTHORIZATION_BLOCKING=1turns the census into a failure for a repo that has closed every schema.Files:
scripts/lib/check_register_auth_dialect.py(helper), its runner block inrun-hydra-gates.sh,test_check_register_auth_dialect.py(14 rule-by-rule tests),test_gate121_register_auth_dialect_scope.sh(6 arms through the real runner, with a plantedx-openregister-rbac), and a row inCOVERED-ELSEWHERE.md.Fleet run
developmentof every app infleet-apps.json, shallow clones, run on 2026-10-21 at full scope.Fleet total: 514 of 1,595 schemas declare an
authorizationblock. Commits read: buildiq f439295, decidiq 70a4c46, dossiq b30bea8, filinq 2e9d492, hermiq 0b42c8e, humaniq 7f8c7ca, integriq 25dc7ff, keepiq 0fd2f13, larpinq 410f14c, launchpad c5a4490, learniq c6d6754, nextcloud-app-template d42dfce, opencatalogi cd3e575, openregister d9a2f9d, pipelinq 3ca4fb5, planninq 91d84ce, portaliq d95a5db, shillinq 2186503, stackiq a6a28fa, thematiq 505956d, versioniq ab57692.shillinq fails as expected until SH-S0a/S0b land. Its 528 schemas have no
authorizationblock at all.buildiq also fails:
lib/Settings/openbuild_register.jsonputs the singularx-openregister-validationonApplicationandApplicationVersion, so thehybrid-requires-baseRefrule and its sibling are never run. That is a real dead key, not a false positive, and it needs a buildiq fix (rename tox-openregister-validations, checking the rule shape against what OpenRegister accepts) before or alongside this merge.Every other app passes the dead-key check. keepiq, thematiq and versioniq ship no register document and are NOT APPLICABLE.
Verified
python3 hydra-gates/scripts/lib/test_check_register_auth_dialect.py: 14 tests OKbash hydra-gates/scripts/lib/test_gate121_register_auth_dialect_scope.sh: all 6 arms passbash -non the runner, andshellcheck -S warningon the new suiteNot in this PR
The hydra
hydra-gatesskill's gate table lives in ConductionNL/hydra and is not updated here.AI assistance: written with Claude Code (claude-opus-5-5), and reviewed by the merging maintainer.
🤖 Generated with Claude Code