Repository navigation
feat(hydra-gates): gate 120 fails a register version change without an app version change - #851
Merged
rubenvdlinde merged 1 commit intoOct 14, 2026
Conversation
…n app version change A register change reaches an existing instance only through the app's InitializeSettings repair step, and occ upgrade runs it only when appinfo/info.xml <version> changes. portaliq #1549 and pipelinq #2471 raised the register version and left the app version, so no running instance imported the closed registers. The gate compares each register document's info.version and each register's effective version after the register.d merge against the base. A move without a <version> change fails. Mocks do not count. Without a delta base the gate is not applicable, never a pass.
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 120,
register-version-needs-app-version. A PR fails when it moves a register version and leavesappinfo/info.xml<version>alone.Why
A register change reaches a running instance only through the app's
InitializeSettingsrepair step.occ upgraderuns that step only when<version>changes. This week two PRs closed a register to a staff group and kept the app version:portaliq_register.json0.96.0 to 0.97.0.register.dfragment raisedpipelinq,pipelinq-portalandslafrom 1.0.0 to 1.1.0. That fragment has noinfo.version.Both stayed open on every running instance until a follow-up release PR.
The rule
The gate reads
lib/Settings/*_register.jsonandlib/Settings/register.d/*.jsonat the base and in the change. It flags two kinds of move:info.version;components.registers.<slug>.versionafter the loaders' merge (base documents, thenregister.din sorted order, the last declaration winning).A move with an unchanged
<version>fails, one finding per move. Mocks (x-openregister.type: mock) do not count, because a repair step never imports them. Without a delta base the gate reports NOT APPLICABLE, never PASS. If a register document is not valid JSON, the gate reports SKIPPED (wiring), not a finding.Verified
python3 scripts/lib/test_check_register_version_bump.py: 14 tests OK.bash scripts/lib/test_gate120_register_version_scope.sh: all 6 arms pass through the real runner (FAIL, PASS, mock PASS, no base NOT APPLICABLE, no lib/Settings NOT APPLICABLE, broken JSON SKIPPED). Exit 0.check_gate_numbers_unique.sh: exit 0, every number claimed once. feat(hydra-gates): spec-screens gate #836 claims 118 and feat(hydra-gates): gate 117 reads PHP and schema strings as missing, not only as unused #782 claims 117, so this takes 120.test_gate_acceptance_matrix.sh: gate 120 counted as covered. Exit 1 on 2 inherited failures, both gate 96 (manifest-copy-style): its planted fixture run aborts and it has no coverage row. This PR does not touch gate 96. Not rerun on main.Not verified
<version>will now fail.🤖 Generated with Claude Code