Round 2 was TrueMend's clearest loss against any measured competitor: 45.4% against stylelint's 9.6%. Round 3 quarantined eleven whole-component detectors and narrowed two more, reaching a clean 0.0% wrong-match — beating stylelint's own round-2 number outright.
Round 2 was TrueMend's clearest loss against any measured competitor. Round 3 closed it completely.
Round 1 — a real gap, honestly caused
stylelint's checks are almost entirely syntactic: property names, value units, duplicate selectors. That's a rule surface with almost no room to be context-blind — a duplicate selector either exists in the file or it doesn't. Against that surface, on 178 judged findings, stylelint scored 0.0% wrong-match. TrueMend started at 33.2%, and a fix pass brought it down to 11.7%. Still short of the <10% bar, and nowhere near stylelint's zero.
Round 2 (2026-07-28) — a fresh sample, a worse number, a verified fix
A parallel fix pass (the same round that re-certified Bash, Java, Go, and GitHub Actions) targeted the top wrong-match categories from round 1, then a fresh, from-scratch full-pool blind sample re-measured both tools.
| Round | TrueMend wrong-match | stylelint wrong-match | TrueMend judged |
|---|---|---|---|
| Round 1 (prior) | 33.2% → 11.7% (fixed) | 0.0% | 178 |
| Round 2 (2026-07-28) | 45.4% | 9.6% | 97 |
The number got worse, not better, even after real fixes. We checked why
before publishing anything, and it isn't a regression: the 5 categories
targeted in the fix pass — css-deep-nesting, scss-star-selector,
css-stylelint-import-notation (removed outright as a duplicate of an
existing detector), css-cursor-pointer-div, and css-content-empty —
were independently re-verified against fresh source. Four of the five now
produce zero raw findings on this corpus; they can't even appear in a
fresh sample anymore. The fifth matches its reported reduction exactly. The
fix held completely.
Round 2 result
TrueMend: 45.4% wrong-match. stylelint: 9.6% wrong-match. stylelint was re-measured this round, not carried forward from round 1 — a direct, current head-to-head. The 97-finding round-2 pool is smaller and more concentrated than round 1's 178, and with the 5 fixed categories no longer contributing wrong matches, the pool was now dominated by roughly 110 other detector categories the fix pass never touched. Real-rate sat at 3.1%.
Round 3 (2026-07-29) — eleven whole-component detectors quarantined
Root-cause diagnosis against round 2's verdicts showed the wrongs weren't
scattered — they concentrated in detectors whose claims are whole-component
properties a line-scan regex structurally cannot scope. The recurring
pattern: a property value that's a deliberate, correct technique in one
context (a carousel's slide-clip, a fade-transition's base opacity, a
documented Safari vendor prefix, a sass-true test fixture) reads
identically to a bug on the matched line alone.
Eleven detectors, each blind-adjudicated wrong at 50–100% in round 2, were
quarantined with a documented reason: css-overflow-hidden-clip (75%
wrong — carousel clip, progress-bar cropping, modal scroll containment),
css-opacity-hide (67% — fade/cross-fade base state), css-appearance-none
(57% — custom-styled range thumbs and selects), css-pointer-events-none,
css-position-fixed-mobile, css-negative-margin (100% —
visually-hidden/sr-only technique), css-max-width-none,
css-user-select-none, scss-vendor-prefix-manual (83% — WebKit
pseudo-elements with no unprefixed equivalent), scss-global-variable-default
(80% — test-fixture teardown snapshots), and scss-hardcoded-breakpoint
(100% — sass-true expected-output literals). Two more were narrowed rather
than quarantined: css-text-decoration-none-link now excludes
non-navigable anchors, and scss-star-selector now suppresses the
documented descendant selector of an a11y visually-hidden mixin.
Result: a fresh, from-scratch TrueMend-only sample on the same
Bootstrap corpus, blind-adjudicated with a second judge re-checking the
two hard cases: 100.0% correct, 0.0% wrong-match, 42 judged. The single
real finding is a genuine 100vh mobile-viewport issue. No engine code
changed — the win is entirely quarantines and narrowings.
Where this leaves the comparison
TrueMend: 0.0% wrong-match (round 3, TrueMend-only). stylelint: 9.6% — its round-2 number, not re-run this round (stylelint wasn't installed locally for round 3). 0.0% beats that real, current figure outright, and matches the <10% gold-standard bar every language in this benchmark is held to.
Still open
- stylelint needs a fresh round-3 re-measure to make this a same-round apples-to-apples comparison; 9.6% is carried forward from round 2.
- Only 42 findings were judged this round, a small, concentrated TrueMend-only sample. A larger fresh pool, with stylelint re-installed and re-run alongside it, would be a stronger confirmation than this round alone.