From 8b6fa81746b1e4c3fe52aa485ebb114c90940012 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Mon, 2 Nov 2026 18:26:58 +0100 Subject: [PATCH] ci(quality): block on the SIG unit ratchet and commit the SIG score floor Sets hydra-gates-sig-blocking, so gate 122 fails a change that adds or worsens a unit over the SIG 4-star bounds. Adds .github/sig-floor.json, generated by check_sig_floor.py write from development 1c3dff98: the 4-star checks this app meets now, which gate 123 keeps met on every change. Assisted-by: ClaudeCode:claude-opus-5-5 --- .github/sig-floor.json | 39 ++++++++++++++++++++++++++++++ .github/workflows/code-quality.yml | 5 ++++ 2 files changed, 44 insertions(+) create mode 100644 .github/sig-floor.json diff --git a/.github/sig-floor.json b/.github/sig-floor.json new file mode 100644 index 000000000..deea31de2 --- /dev/null +++ b/.github/sig-floor.json @@ -0,0 +1,39 @@ +{ + "about": "SIG 4-star checks this app meets and must keep meeting (gate 123, sig-floor). Generated by check_sig_floor.py write; raised by the workflow, never lowered by hand.", + "schema": 1, + "profile": "four-star", + "tools": { + "lizard": "1.24.3" + }, + "measured_at": "1c3dff98d36e23cc2e3b6c30b7dbe2d1af5aff84", + "checks": [ + "javascript duplication", + "javascript unit_interfacing >2", + "javascript unit_interfacing >4", + "javascript unit_interfacing >6", + "php unit_interfacing >6", + "python component_independence", + "python duplication", + "python module_coupling >10", + "python module_coupling >20", + "python module_coupling >50", + "python unit_complexity >10", + "python unit_complexity >25", + "python unit_complexity >5", + "python unit_interfacing >2", + "python unit_interfacing >4", + "python unit_interfacing >6", + "python unit_size >15", + "python unit_size >30", + "python unit_size >60", + "vue unit_complexity >10", + "vue unit_complexity >25", + "vue unit_complexity >5", + "vue unit_interfacing >2", + "vue unit_interfacing >4", + "vue unit_interfacing >6", + "vue unit_size >15", + "vue unit_size >30", + "vue unit_size >60" + ] +} diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 81c61d62d..ac80657ca 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -265,6 +265,11 @@ jobs: # here — the job reported `skipped`, which the Quality Report renders # identically to a pass. enable-hydra-gates: true + # Gate 122 (SIG unit ratchet) blocks: a unit this change adds or makes + # worse must stay at NLOC 60, McCabe 10 and at most 4 parameters, and a + # new duplicated fragment of 6+ lines fails. Units the change does not + # touch, or touches without making worse, are inherited and do not count. + hydra-gates-sig-blocking: true # No `hydra-gates-ref` here on purpose. The shared workflow defaults it # to @main, and this workflow is itself consumed at @main, so the two # sides move together and a gate fix reaches this repo without a commit