slopless 0.2.20
slopless 0.2.20
A precision-focused release: five new checks, the first warning/error severity tier, and a corpus-validated precision pass that removes the bulk of the historical false positives without dropping genuine slop catches. 62 → 67 rules.
New checks
- Four new slop-category rules
genre-cliches- stock genre/marketing cliche phrasingself-help-cliches- motivational/self-help fillerseo-filler- SEO boilerplate phrasingweasel-attribution- vague "studies have shown" style attribution without a citation
actually-overuse- density-based, not a flat ban. It never flags a single use; it warns above one "actually" per 1,000 words and errors above two per 1,000. Targets the AI tic of stacking "actually" while leaving normal contrastive use alone.- Expanded coverage in
corporate-speak,cliches, and the lead-in opener checks (boilerplate-framing).
New capability: warning vs error severity
slopless previously emitted every finding at error severity. It now supports a per-finding severity tier (severity: 1 warning, severity: 2 error) in the JSON output. Detection stays separate from judgment: rules detect occurrences, and the reporter decides the level. actually-overuse is the first rule to use it.
Precision (corpus sentence audit)
Every rule was audited sentence-by-sentence against a large human + AI corpus, classifying each flag as a genuine slop catch or a misfire on valid usage.
- Dropped 104 false-positive phrases across the phrase rules (e.g. "in other words", "as such", "of course", "best practices", "when it comes to", plus citation phrasing that is legitimate when actually cited).
- Guardrailed 14 rules so they target genuinely weak writing instead of valid usage:
prohibited-words(dropped the bare "actually" ban in favor of the density rule),perception-verb-density(kept narrative verbs, dropped generic/noun senses like "peer review"),universalizing-claims(no longer flags plain counts like "several factors"),generic-signposting(dropped the "as such" connective),softening-language(fixed an "in some cases" double-count),triple-repeat(skips tables of contents and list markers),boilerplate-framing(gates "when it comes to" to opener position),negation-reframe(skips additive "not only X but Y" correlatives), and more. - Net effect on a 5,923-document corpus: about 2,020 fewer false positives on human prose, with the AI/human discrimination preserved or improved (e.g.
actually-overuseflags AI prose roughly 5x more often than human prose).
Internal
- Density and severity judgment is decoupled from the detection rules into a reusable reporting module (
src/reporting/density.ts), so rules detect signals and the reporter decides whether a signal is acceptable, a warning, or an error.
No breaking changes. Output shape is unchanged; warning-level findings simply carry severity: 1.