mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-12 14:16:28 +03:00
Consolidates eval-side detection logic into the canonical impeccable
detector. Before this change, the eval harness had its own duplicate
implementations of em-dash, copy-slop, and broken-image checks. They
now live alongside the existing 28 antipatterns in the impeccable
registry, available to the CLI, browser extension, critique skill,
and eval (via the existing slop grader child-process call).
New antipatterns:
- em-dash-overuse: 5+ em-dashes in body text content (threshold
permits legitimate prose use of em-dash; only triggers on AI
cadence-level density)
- broken-image: <img> with empty src, missing src, or src="#"
- marketing-buzzword: SaaS phrase list (streamline / empower /
supercharge / enterprise-grade / cutting-edge / etc)
- numbered-section-markers: repeated 01 / 02 / 03 sequence as
section labels — the AI editorial scaffold one tier deeper than
tracked eyebrow chips
- aphoristic-cadence: 3+ manufactured-contrast ("Not a X. A Y.")
or short-rebuttal ("Sentence. No clause." / "Sentence. Just
clause.") constructions in body text
Engine wiring:
- broken-image runs as a static-html element rule (selector: img)
and a fallback regex matcher (for non-HTML files)
- em-dash / buzzword / numbered / aphoristic run as regex
page-analyzers, factored into a new runTextContentAnalyzers()
helper that both detectText (non-HTML) and detectHtml (HTML)
call, so .html files get the same coverage as .css/.tsx
Tests: 166 detector + 12 browser + 24 fixture all pass.
Browser detector rebuilt (162.7 KB).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>