Repository navigation
feat(hydra-gates): gate 123, a per-app SIG score floor checked on every change - #891
Merged
Merged
Conversation
Assisted-by: ClaudeCode:claude-opus-5-5
… reports 5-star check_sig_floor.py measures the head and the merge base with gate 122's report and fails when a check in the floor is lost. The floor is .github/sig-floor.json read at the base plus every check the base meets, so it only rises. 5-star misses go to the step summary and never block. Units are cached by content; a sig-floor-raise job offers the raised floor as a pull request after a push to development. Assisted-by: ClaudeCode:claude-opus-5-5
This was referenced Nov 2, 2026
ci(quality): block on the SIG unit ratchet and commit the SIG score floor
ConductionNL/integriq#2956
Merged
Merged
| class Raise(FloorCase): | ||
| def setUp(self): | ||
| super().setUp() | ||
| self.proposed = tempfile.mktemp(suffix=".json") |
… leave only through sigrid.yaml An app without a floor file is NOT APPLICABLE before any tool is loaded or base resolved. A floored check the head no longer measures fails unless the change edits sigrid.yaml, or the base no longer measured it either. The raise proposal keeps committed checks the head misses. Tests pin the 4-star boundaries, equal shares as not worse, and the scope rule. ShellCheck SC2016 is disabled on the PHP template line. Assisted-by: ClaudeCode:claude-opus-5-5
This was referenced Nov 2, 2026
ci(quality): block on the SIG unit ratchet and commit the SIG score floor
ConductionNL/pipelinq#3044
Merged
ci(quality): block on the SIG unit ratchet and commit the SIG score floor
ConductionNL/portaliq#1904
Merged
ci(quality): block on the SIG unit ratchet and commit the SIG score floor
ConductionNL/shillinq#2190
Merged
Merged
Merged
Merged
Merged
Merged
Merged
Merged
ci(quality): block on the SIG unit ratchet and commit the SIG score floor
ConductionNL/versioniq#564
Merged
ci(quality): block on the SIG unit ratchet and commit the SIG score floor
ConductionNL/thematiq#1510
Merged
ci(quality): block on the SIG unit ratchet and commit the SIG score floor
ConductionNL/launchpad#925
Merged
Merged
Merged
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 123 (
sig-floor): a per-app SIG score floor, checked on every change. Openspec change:openspec/changes/gate-123-sig-floor/..github/sig-floor.jsonin an app lists the SIG 4-star checks it meets, under gate 122's check names (php unit_size >30,vue duplication,php component_independence, ...).check_sig_floor.py write .generates it.sig-floor-raise: after a push to development that meets more checks, a job opens a pull request that changes only the floor file. The org ruleset refuses a direct push, so a pull request is the route. The job declares no permissions and inherits the caller's grant (humaniq grants no pull-requests write, so there it pushes the branch and warns).actions/cache/restore; only pushes save, so pull requests read development's cache.build_reportin gate 122 gains an optional unit reader and can skip the jscpd cross-check; its output is unchanged.Verified locally
test_check_sig_floor.py: 15 tests OK. Capped mutants on the verdict logic (base-met guard, inherited vs worse, lowered file, floor read from the base, proposal only on a pass): all killed; no-op control survives.test_gate123_sig_floor_scope.shthrough the real runner: all 4 arms pass (planted FAIL naming the check, refactor PASS with census and sig-floor.md, no floor NOT APPLICABLE, missing tools SKIPPED wiring).test_check_sig_maintainability.py(30 OK) andtest_gate122_sig_maintainability_scope.sh(all arms) still pass.test-changed-path-filter.pyis 12/14 on main too (inherited; test(quality): give the changed-path filter suite the push env #881 reads #884 addresses it).php unit_size >30: 24.3% > limit 23.1%; met at the base (16.5%).AI-assisted: written with Claude Code (claude-opus-5-5).