SIG scores
This page is our own measurement, not Sigrid. We run gate 122
(check_sig_maintainability.py --profile five-star) on each app's
development branch. The result estimates what the Software Improvement Group
(SIG) will say in Sigrid. Sigrid uses its own parsers and scoping, so its
numbers can differ.
Measured on 2026-11-04. The commit under each app name is the head that was measured.
Until 31 October 2026 the fleet followed the Nextcloud coding standards. From 1 November 2026 we apply the SIG maintainability rules of the SIG/TÜV NORD guidance. Gates 122 and 123 check them on every change. That is why the scores rise from 1 November.
How to read the matrix
Each column is an app. Each row is one SIG check for one language. A cell shows the star level the check earns, with the measured share under it. Hover a cell for the value and both limits.
- Unit size, complexity and interfacing: the share of unit code above the bound, for example the code in units longer than 15 lines.
- Duplication: the share of redundant lines, in fragments of 6 lines or more.
- Module coupling: the share of module code in files with more than 10, 20 or 50 incoming dependencies.
- Component independence: the share of code that no other component calls. Higher is better here. For every other check, lower is better.
The 4-star limits come from the SIG/TUV NORD CERT Guidance for Producers v17.0.
SIG publishes no 5-star limits, so our 5-star yardstick is half of each 4-star
limit. The guidance also gives no limits for 3, 2 or 1 stars. A check that
misses 4 stars is therefore shown as <4, not as an estimated lower star.
The totals at the top count the checks per app. An app is only measured on the languages it contains, so the totals differ between apps. The percentages and the average above the matrix are our own figures, not SIG scores.
The matrix scrolls in both directions. Use the search box to show only the apps you want to compare.
A cell with a ring and a lock is floored. Gate 123 holds that check: the app
met it when its floor was recorded, and a change that loses it fails. The
"floored checks" row counts them and shows the commit the floor was recorded
at. Floors come from each app's .github/sig-floor.json on development, read
on 2026-11-04. They can be newer than the measurement, so a floored
cell can still show <4 until the next measurement.
- 5 meets our 5-star yardstick, half of each 4-star limit
- 4 meets the 4-star limit of the guidance
- <4 misses the 4-star limit; the guidance gives no limits for 3, 2 or 1 stars
- 4 floored: gate 123 refuses a change that loses this check
- · the app has no code in this language
All 20 apps: 601 of 758 checks at 4 stars or better (79%). This average is our own figure, not a SIG score.
| check | buildiq6e5bb7ed | decidiq527cc29d | dossiq7b7f39dc | filinqe4aaaf0d | hermiq5441f8bc | humaniq5a66e36a | integriq4e77e956 | keepiq8288f8b5 | larpinq4bb8327c | launchpadcb104a99 | learniq4cb9cdda | opencatalogi63c364fc | openregister05806b13 | pipelinqadf78a64 | planninq562b6113 | portaliqa66e0840 | shillinqd4b35508 | stackiq7f5b3499 | thematiq9deef849 | versioniq0ee3a27e |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| checks at 4 stars or betterand the share of the app's checks | 26/3476% | 27/3479% | 19/3456% | 40/4491% | 25/3474% | 30/3488% | 26/3476% | 46/5879% | 33/3497% | 28/3482% | 22/3465% | 40/4491% | 43/5874% | 21/3462% | 33/3497% | 24/3471% | 32/4473% | 24/3471% | 21/2488% | 41/4493% |
| checks at 5 stars | 16/34 | 19/34 | 12/34 | 32/44 | 16/34 | 22/34 | 24/34 | 31/58 | 27/34 | 19/34 | 14/34 | 20/44 | 37/58 | 13/34 | 22/34 | 12/34 | 27/44 | 13/34 | 18/24 | 37/44 |
| floored checksfloor recorded at commit | 27fa904a53 | 244242e8e1 | 1939ea188e | 40aff2d605 | 2557a9fd98 | 29d83ab23e | 2645eaf576 | 46441230ac | 29ebf9d6ef | 289080e1fa | 22200757f8 | 39d34462cb | 43eb3a3908 | 2135f34859 | 323b8ff73f | 24debf1d9b | 327a3bf1b6 | 17dd80cc1c | 21c2740962 | 418a3e548d |
| php | ||||||||||||||||||||
| unit size >154-star at most 47.1%, 5-star at most 23.6% | <473.7% | <457.3% | <465.2% | <457.8% | <469.7% | <453.8% | <467.6% | <455.8% | 440.3% | <471.6% | <459.0% | 446.1% | <471.1% | <466.0% | 4floored35.5% | <458.4% | <471.3% | <480.7% | 4floored45.7% | 4floored35.8% |
| unit size >304-star at most 23.1%, 5-star at most 11.6% | <437.8% | 422.8% | <425.3% | 4floored14.9% | <433.2% | 4floored14.8% | <431.5% | 4floored23.1% | 5floored4.8% | <436.0% | 419.5% | 4floored12.3% | <438.8% | <428.3% | 5floored4.3% | 4floored17.3% | <442.4% | <456.4% | 5floored10.0% | 5floored7.0% |
| unit size >604-star at most 8.3%, 5-star at most 4.2% | 4floored6.9% | 5floored3.3% | 5floored2.2% | 5floored0.1% | 4floored6.3% | 5floored2.6% | 5floored3.9% | 5floored2.1% | 5floored1.1% | 5floored2.7% | 5floored1.3% | 5floored0.8% | <410.6% | 5floored3.6% | 5floored0.0% | 5floored1.4% | <413.6% | <428.2% | 5floored0.0% | 5floored0.0% |
| unit complexity >54-star at most 20.2%, 5-star at most 10.1% | <446.8% | <429.8% | <435.4% | 4floored19.9% | <435.1% | <437.9% | <432.9% | <425.5% | 415.6% | <434.4% | <432.5% | <421.0% | <442.9% | <437.6% | 4floored10.3% | <442.2% | <444.0% | <446.0% | <427.7% | <421.6% |
| unit complexity >104-star at most 7.3%, 5-star at most 3.7% | 4floored7.0% | 5floored0.3% | 5floored0.8% | 5floored0.1% | 5floored3.5% | 5floored3.3% | 5floored3.5% | 5floored1.8% | 5floored0.0% | 5floored2.0% | 5floored0.1% | 5floored1.2% | <410.0% | 5floored3.2% | 5floored0.4% | 5floored0.7% | <48.0% | <414.5% | 5floored0.0% | 5floored1.8% |
| unit complexity >254-star at most 1.1%, 5-star at most 0.5% | 4floored0.6% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 4floored0.8% | 5floored0.5% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 4floored1.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.3% | <42.8% | 5floored0.0% | 5floored0.0% |
| unit interfacing >=34-star at most 15.0%, 5-star at most 7.5% | <429.3% | <422.7% | <430.2% | <422.1% | <429.4% | <425.1% | <428.4% | <435.5% | 413.3% | <425.0% | <423.7% | 4floored12.7% | <434.3% | <424.3% | 414.4% | <436.2% | <426.7% | 413.1% | <421.8% | <417.2% |
| unit interfacing >=54-star at most 3.3%, 5-star at most 1.7% | <46.6% | <45.1% | <48.8% | <45.1% | <411.5% | 4floored3.3% | <49.6% | <412.1% | 42.5% | 4floored2.3% | <44.7% | 4floored2.5% | <411.5% | <46.0% | 4floored2.8% | <412.9% | <47.8% | 4floored2.7% | 4floored2.7% | 4floored1.7% |
| unit interfacing >=74-star at most 0.9%, 5-star at most 0.4% | 4floored0.6% | <41.1% | <42.1% | 5floored0.3% | <44.6% | 5floored0.4% | <43.5% | <44.4% | 5floored0.2% | 4floored0.6% | 4floored0.7% | 4floored0.6% | <44.0% | 4floored0.8% | 4floored0.8% | <44.6% | <42.2% | 4floored0.5% | 5floored0.3% | 5floored0.1% |
| duplication4-star at most 5.6%, 5-star at most 2.8% | 4floored5.2% | 4floored5.0% | <47.2% | 4floored4.5% | <48.7% | 45.4% | <47.6% | <47.4% | 5floored2.1% | <47.2% | <411.0% | 4floored3.7% | <48.3% | <411.5% | 4floored3.5% | 45.4% | <412.1% | <49.0% | 5floored1.8% | 5floored1.9% |
| module coupling fan-in >104-star at most 10.0%, 5-star at most 5.0% | 5floored3.6% | 5floored2.1% | 5floored3.4% | 5floored1.4% | 4floored9.0% | 5floored3.7% | 5floored2.8% | 4floored7.4% | 5floored2.5% | 4floored5.1% | 5floored0.7% | 5floored0.4% | <411.6% | 5floored1.7% | 4floored7.0% | 4floored6.1% | 5floored1.1% | 4floored9.3% | 4floored6.5% | 5floored2.7% |
| module coupling fan-in >204-star at most 5.6%, 5-star at most 2.8% | 5floored1.5% | 5floored0.4% | 5floored1.2% | 5floored0.4% | 5floored0.9% | 4floored3.1% | 5floored0.2% | 4floored3.0% | 5floored2.5% | 4floored2.8% | 5floored0.5% | 5floored0.2% | <48.1% | 5floored1.0% | 4floored3.9% | 4floored3.5% | 5floored1.1% | <49.3% | 5floored2.1% | 5floored0.2% |
| module coupling fan-in >504-star at most 1.9%, 5-star at most 0.9% | 5floored0.0% | 5floored0.1% | 5floored0.5% | 5floored0.0% | 5floored0.3% | 4floored1.8% | 5floored0.0% | 4floored1.6% | 5floored0.0% | 5floored0.5% | 5floored0.3% | 5floored0.0% | <45.0% | 5floored0.5% | 5floored0.0% | 5floored0.6% | 5floored0.9% | 50.0% | 5floored0.2% | 5floored0.0% |
| component independence4-star at least 93.7%, 5-star at least 96.9% | <446.1% | <445.6% | <449.4% | 4floored93.8% | <446.1% | <446.2% | 4floored93.7% | <445.0% | <448.7% | <440.4% | <445.1% | 4floored94.0% | <450.9% | <443.4% | <451.0% | <446.4% | <452.6% | <431.2% | <450.1% | <464.1% |
| javascript | ||||||||||||||||||||
| unit size >154-star at most 47.1%, 5-star at most 23.6% | 4floored33.7% | 4floored29.2% | <449.4% | 4floored34.9% | 4floored34.3% | 5floored17.9% | 5floored16.0% | <451.3% | 5floored21.4% | 4floored32.1% | 4floored42.8% | 4floored24.6% | 5floored21.9% | 4floored41.4% | 5floored21.2% | 4floored44.1% | 4floored27.0% | 438.0% | 5floored0.0% | 5floored18.4% |
| unit size >304-star at most 23.1%, 5-star at most 11.6% | 5floored4.9% | 5floored2.7% | 4floored21.5% | 5floored6.9% | 5floored11.4% | 5floored0.0% | 5floored0.0% | 4floored15.9% | 5floored2.2% | 5floored2.9% | 4floored12.3% | 4floored12.5% | 5floored1.2% | 4floored15.0% | 5floored0.0% | 4floored11.8% | 5floored3.7% | 412.9% | 5floored0.0% | 5floored0.0% |
| unit size >604-star at most 8.3%, 5-star at most 4.2% | 5floored0.0% | 5floored0.0% | 4floored5.1% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored1.9% | 5floored0.0% | 5floored0.0% | 5floored2.3% | 4floored5.9% | 5floored0.0% | 4floored4.7% | 5floored0.0% | 5floored2.9% | 5floored0.0% | 50.0% | 5floored0.0% | 5floored0.0% |
| unit complexity >54-star at most 20.2%, 5-star at most 10.1% | 4floored18.6% | 419.8% | <440.2% | 4floored19.4% | 4floored18.4% | 5floored6.7% | 5floored1.9% | <430.3% | 5floored6.1% | 4floored17.5% | <446.5% | 5floored9.6% | 5floored6.7% | <432.1% | 4floored17.5% | <441.6% | 417.3% | 419.0% | 5floored0.0% | 5floored0.0% |
| unit complexity >104-star at most 7.3%, 5-star at most 3.7% | 5floored1.1% | 5floored1.8% | <413.7% | 5floored0.0% | 5floored3.5% | 5floored0.0% | 5floored0.0% | 4floored5.9% | 5floored0.0% | 5floored0.3% | <411.2% | 5floored2.8% | 5floored0.3% | <48.9% | 5floored1.6% | <411.3% | 5floored2.6% | 50.7% | 5floored0.0% | 5floored0.0% |
| unit complexity >254-star at most 1.1%, 5-star at most 0.5% | 5floored0.0% | 5floored0.0% | <42.6% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 4floored0.9% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% |
| unit interfacing >=34-star at most 15.0%, 5-star at most 7.5% | 5floored5.2% | 4floored8.5% | 4floored9.1% | 5floored4.5% | 5floored6.9% | 5floored6.4% | 5floored3.3% | 4floored11.0% | 5floored2.1% | 5floored3.4% | 4floored10.8% | 5floored4.9% | 5floored4.9% | 4floored8.4% | 4floored12.7% | 4floored14.5% | 5floored7.0% | 5floored6.0% | 5floored0.0% | 5floored0.0% |
| unit interfacing >=54-star at most 3.3%, 5-star at most 1.7% | 5floored0.0% | 5floored1.0% | 5floored1.2% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.3% | 5floored0.0% | 5floored0.0% | 4floored1.7% | 5floored0.8% | 5floored0.2% | 5floored0.8% | 5floored0.0% | 5floored0.6% | 5floored0.9% | 5floored0.8% | 5floored0.0% | 5floored0.0% |
| unit interfacing >=74-star at most 0.9%, 5-star at most 0.4% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.1% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% |
| duplication4-star at most 5.6%, 5-star at most 2.8% | 5floored2.3% | 5floored1.6% | 4floored2.9% | 5floored2.4% | 5floored2.5% | 5floored1.7% | 5floored0.0% | 5floored2.1% | 5floored1.3% | 5floored1.0% | 5floored1.1% | 5floored1.8% | 5floored1.8% | 5floored2.4% | 5floored1.6% | 5floored2.6% | 5floored1.1% | 4floored3.3% | 5floored0.0% | 5floored2.5% |
| typescript | ||||||||||||||||||||
| unit size >154-star at most 47.1%, 5-star at most 23.6% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 4floored33.1% | no typescript code | no typescript code | no typescript code | 4floored45.3% | 5floored18.8% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored12.4% |
| unit size >304-star at most 23.1%, 5-star at most 11.6% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 4floored12.2% | no typescript code | no typescript code | no typescript code | 4floored14.9% | 5floored7.8% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored0.0% |
| unit size >604-star at most 8.3%, 5-star at most 4.2% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored1.3% | no typescript code | no typescript code | no typescript code | 4floored7.6% | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored0.0% |
| unit complexity >54-star at most 20.2%, 5-star at most 10.1% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | <437.1% | no typescript code | no typescript code | no typescript code | 4floored17.7% | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored8.5% |
| unit complexity >104-star at most 7.3%, 5-star at most 3.7% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | <417.4% | no typescript code | no typescript code | no typescript code | 4floored6.0% | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored0.0% |
| unit complexity >254-star at most 1.1%, 5-star at most 0.5% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 4floored0.8% | no typescript code | no typescript code | no typescript code | 5floored0.0% | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored0.0% |
| unit interfacing >=34-star at most 15.0%, 5-star at most 7.5% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 4floored7.8% | no typescript code | no typescript code | no typescript code | 5floored4.1% | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored5.4% |
| unit interfacing >=54-star at most 3.3%, 5-star at most 1.7% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.8% | no typescript code | no typescript code | no typescript code | 5floored0.0% | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored0.0% |
| unit interfacing >=74-star at most 0.9%, 5-star at most 0.4% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored0.0% |
| duplication4-star at most 5.6%, 5-star at most 2.8% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | no typescript code | 5floored0.4% | no typescript code | no typescript code | no typescript code | 4floored3.3% | 5floored0.6% | no typescript code | no typescript code | no typescript code | 5floored0.0% | no typescript code | no typescript code | 5floored0.0% |
| vue | ||||||||||||||||||||
| unit size >154-star at most 47.1%, 5-star at most 23.6% | 4floored33.6% | 4floored45.6% | 4floored45.1% | 4floored33.5% | 4floored40.0% | 4floored25.1% | 4floored25.8% | 4floored36.0% | 4floored30.3% | 4floored35.7% | <457.6% | 4floored44.4% | 4floored41.5% | 4floored40.6% | 5floored21.7% | 4floored28.5% | 4floored47.0% | 4floored43.5% | no vue code | 4floored34.5% |
| unit size >304-star at most 23.1%, 5-star at most 11.6% | 4floored12.3% | 4floored12.7% | 4floored16.0% | 4floored11.9% | 5floored10.3% | 5floored2.3% | 5floored8.0% | 4floored14.1% | 5floored6.5% | 5floored8.5% | <428.9% | 4floored18.5% | 4floored17.2% | 4floored17.0% | 5floored3.6% | 5floored10.4% | 4floored19.7% | 4floored14.1% | no vue code | 5floored3.2% |
| unit size >604-star at most 8.3%, 5-star at most 4.2% | 5floored0.9% | 5floored0.0% | 5floored3.1% | 5floored2.5% | 5floored0.9% | 5floored0.0% | 5floored1.5% | 5floored2.4% | 5floored0.0% | 5floored0.0% | 4floored7.9% | 4floored4.3% | 4floored6.2% | 4floored6.0% | 5floored0.0% | 4floored4.7% | 5floored1.1% | 5floored0.8% | no vue code | 5floored0.0% |
| unit complexity >54-star at most 20.2%, 5-star at most 10.1% | <4floored23.3% | 419.9% | <422.3% | 5floored9.1% | 4floored19.9% | 4floored10.9% | 5floored8.0% | 4floored18.4% | 5floored7.6% | 4floored19.2% | <4floored26.0% | <424.7% | 4floored19.4% | <424.9% | 5floored8.2% | 4floored16.3% | <4floored24.3% | 4floored18.8% | no vue code | 4floored15.1% |
| unit complexity >104-star at most 7.3%, 5-star at most 3.7% | 4floored5.7% | 5floored1.8% | 4floored6.7% | 5floored2.2% | 4floored4.5% | 5floored0.0% | 5floored0.0% | 4floored4.4% | 5floored1.6% | 5floored2.8% | 4floored6.1% | <48.3% | 4floored4.7% | <48.0% | 5floored2.1% | 4floored5.1% | 4floored4.5% | 5floored2.4% | no vue code | 5floored1.5% |
| unit complexity >254-star at most 1.1%, 5-star at most 0.5% | 5floored0.0% | 5floored0.0% | <41.7% | 5floored0.0% | 4floored0.6% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 4floored0.8% | <41.7% | <43.4% | 5floored0.0% | <4floored3.2% | 5floored0.0% | 5floored0.0% | no vue code | 5floored0.0% |
| unit interfacing >=34-star at most 15.0%, 5-star at most 7.5% | 5floored2.1% | 5floored0.5% | 5floored0.5% | 5floored0.2% | 5floored0.4% | 5floored0.0% | 5floored0.5% | 5floored0.0% | 5floored0.0% | 5floored0.9% | 5floored1.5% | 5floored0.5% | 5floored0.4% | 5floored0.7% | 5floored0.7% | 5floored0.7% | 5floored1.2% | 5floored0.4% | no vue code | 5floored2.2% |
| unit interfacing >=54-star at most 3.3%, 5-star at most 1.7% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.1% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | no vue code | 5floored0.0% |
| unit interfacing >=74-star at most 0.9%, 5-star at most 0.4% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | 5floored0.0% | no vue code | 5floored0.0% |
| duplication4-star at most 5.6%, 5-star at most 2.8% | <410.4% | <416.9% | <49.4% | <46.1% | <412.6% | 4floored3.6% | <49.2% | <410.0% | 4floored3.8% | 4floored5.1% | <410.8% | <413.5% | <416.5% | <49.1% | 4floored5.3% | <47.1% | <49.1% | <412.2% | no vue code | 5floored2.5% |
| python | ||||||||||||||||||||
| unit size >154-star at most 47.1%, 5-star at most 23.6% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored5.7% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit size >304-star at most 23.1%, 5-star at most 11.6% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit size >604-star at most 8.3%, 5-star at most 4.2% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit complexity >54-star at most 20.2%, 5-star at most 10.1% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit complexity >104-star at most 7.3%, 5-star at most 3.7% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit complexity >254-star at most 1.1%, 5-star at most 0.5% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit interfacing >=34-star at most 15.0%, 5-star at most 7.5% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored3.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit interfacing >=54-star at most 3.3%, 5-star at most 1.7% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| unit interfacing >=74-star at most 0.9%, 5-star at most 0.4% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| duplication4-star at most 5.6%, 5-star at most 2.8% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| module coupling fan-in >104-star at most 10.0%, 5-star at most 5.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| module coupling fan-in >204-star at most 5.6%, 5-star at most 2.8% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| module coupling fan-in >504-star at most 1.9%, 5-star at most 0.9% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | 5floored0.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
| component independence4-star at least 93.7%, 5-star at least 96.9% | no python code | no python code | no python code | no python code | no python code | no python code | no python code | 5floored100.0% | no python code | no python code | no python code | no python code | 5floored100.0% | no python code | no python code | no python code | no python code | no python code | no python code | no python code |
Floors and ratchets per app
Besides the SIG floor, each app keeps its own floors and baselines on
development. A baseline lists debt that may stay, so a lower count is
better. A coverage floor is a minimum, so a higher value is better. A ·
means the app has no such file. Hover a cell for the file it came from. The
commit under each app name is the development head that was read on
2026-11-04.
| floor | buildiq6e5bb7ed | decidiq527cc29d | dossiq7b7f39dc | filinqe4aaaf0d | hermiq5441f8bc | humaniq5a66e36a | integriq4e77e956 | keepiq8288f8b5 | larpinq4bb8327c | launchpadcb104a99 | learniq4cb9cdda | opencatalogi63c364fc | openregister05806b13 | pipelinqadf78a64 | planninq562b6113 | portaliqa66e0840 | shillinqd4b35508 | stackiq7f5b3499 | thematiq9deef849 | versioniq0ee3a27e |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SIG floor (gate 123)4-star checks the app must keep | 27 | 24 | 19 | 40 | 25 | 29 | 26 | 46 | 29 | 28 | 22 | 39 | 43 | 21 | 32 | 24 | 32 | 17 | 21 | 41 |
| procedure code (gate 119)procedure-named classes allowed | 0 | 0 | 166 | 1 | 0 | 0 | 10 | 0 | 0 | 0 | 0 | 27 | 0 | 3 | 0 | 0 | 10 | 0 | 0 | 0 |
| PHP coverage (coverage-guard)line coverage the PHP suite may not drop below | 57.39% | 57.66% | 29.69% | 61.41% | 68.25% | 77.60% | 60.65% | 55.79% | 67.68% | 49.47% | 71.16% | 70.69% | 58.88% | 45.36% | 69.15% | 79.70% | 57.71% | 13.01% | 77.48% | none |
| test coverage ratchetsuite coverage per runner, raised on every gain | vitest 64.72% | phpunit 52.25% / vitest 1.62% | phpunit 22.48% / vitest 1.03% | phpunit 46.68% / vitest 4.24% | none | none | vitest 2.34% | phpunit 57.59% / vitest 18.31% | phpunit 57.34% / vitest 8.48% | none | none | phpunit 82.39% / vitest 1.59% | phpunit 54.55% | none | none | none | phpunit 55.42% / vitest 0.37% | phpunit 0.38% | phpunit 11.37% / vitest 66.25% | none |
| debt ratchetsuppressions and ignores counted by check:debt-ratchet | none | none | 862 | none | none | none | none | none | none | none | none | none | none | none | none | none | none | none | none | none |
| eslint suppressionssuppressed eslint violations | 123 | 182 | 151 | 152 | 160 | none | 162 | 110 | none | 0 | 62 | 559 | 731 | none | none | 0 | 121 | 414 | none | none |
| phpstan baselineignored phpstan errors, all baseline files | 2 | 1 | none | 0 | 2 | 6 | 62 | none | 0 | none | none | 0 | 1391 | 79 | 0 | 0 | 0 | 146 | none | none |
| psalm baselinebaselined psalm issues | none | none | none | 0 | 0 | 4 | none | none | none | none | none | 0 | 94 | none | none | 0 | none | none | none | 34 |
| phpmd baselinebaselined phpmd violations | 170 | none | none | none | none | 199 | 388 | none | none | 106 | none | 43 | 480 | 26 | none | none | none | 8 | none | none |
| schema l10n baselineuntranslated schema strings allowed | 396 | 1590 | 0 | 213 | 0 | 0 | 0 | 0 | 84 | 15 | 2151 | 219 | 569 | 0 | 123 | 0 | 12169 | 479 | none | none |
| .reuse-baseline.jsonother floor-like file | none | none | none | none | none | none | none | none | none | none | none | none | none | none | none | present | none | none | none | none |
| l10n/.l10n-parity-baseline.jsonother floor-like file | none | none | none | none | none | none | none | none | none | none | present | none | none | none | none | none | none | none | none | none |
| tests/nav-reachability-baseline.jsonother floor-like file | none | none | none | none | none | none | none | none | none | none | none | none | none | none | none | none | present | none | none | none |
Refresh the data
The matrix reads website/src/data/sig-matrix.json. A script writes that file
from gate 122 reports.
-
Clone each app's
developmentbranch and run gate 122 on it in report mode. Write one<app>.jsonper app into one directory:python3 hydra-gates/scripts/lib/check_sig_maintainability.py report <app-dir> \--profile five-star --json <report-dir>/<app>.jsonThe file name sets the column name, so name it after the app.
-
Run the generator from the repository root:
python3 website/scripts/build-sig-matrix.py <report-dir> --date YYYY-MM-DDLeave out
--dateto use the date of the newest report. The generator then reads each app's floors and baselines fromdevelopmentthroughgh api, so it needs a logged-in GitHub CLI. Add--clones DIRto read them from local clones inDIR/<app>instead, or--no-floorsto keep the floors already in the file. -
Commit the new
sig-matrix.json.
The generator takes the limits from gate 122 itself, so the matrix follows any change to the profiles. It stops when its five-star count for an app differs from the count in the gate's own report.
Back to app health.