Date: 2026-05-15 (push mode, 60 min cadence, semantic-html audits iter)
Built 2 audits checking semantic HTML correctness on build pages. One surfaced a major systemic finding (178 pages with multiple H1s). Audit count: 35 -> 37.
Built audit-h1-uniqueness.py (~75 lines). For each /builds/<slug>/index.html, verifies exactly 1 <h1> element. Multiple H1s break:
Result: 69/247 clean. 178 pages with multiple H1s (most have 2, 4 have 3).
The pattern: most build pages have a DUAL-HERO layout. First H1 is styled inline (font-size 4.6vw clamp, brand fonts) for visual prominence. Second H1 is bare <h1> that inherits from h1 { font-size: 48px } CSS rule. Both pretend to be "the main heading".
Why not fixed in this iter: a programmatic h1->h2 conversion would shrink the second hero visually (CSS rule h1 { font-size: 48px } doesn't apply to h2). Risk: 178 pages with broken visual hierarchy. Safer as a deliberate refactor pass (Wes-task) where the second hero either: (a) gets converted to h2 with explicit class to preserve visual size, OR (b) the layout is intentionally restructured to one-hero.
Cron: every hour at :57
Built audit-button-anchor-consistency.py (~75 lines). For each build page, flags <div>/<span>/<p> elements with class="btn|button|cta-button|primary-btn|secondary-btn" - non-semantic fake buttons posing as CTAs. Accessibility-broken: keyboard users can't activate them, screen readers don't announce them as actionable.
Result: 246/247 clean. 1 page with a fake-button element.
A single warn-state hit. The catalog overwhelmingly uses <a> and <button> for CTAs correctly (the placeholder-CTA cleanup work iters 134-136 also helped here - those were all <a href="#"> not div-as-button).
Cron: every hour at :59
Patched regen-quality-report.py:
latest_h1_uniqueness() + latest_button_anchor()Live-check card count: 37 -> 39. Total content invariants: 43 -> 45.
New FAIL card: H1 uniqueness 69/247 - the first FAIL state since iter 136 closed the placeholder-CTA card. This is genuine structural drift that the audit caught and flagged for editorial review.
Class breakdown:
2 substantive ships at 60-min cadence. H1 audit caught the dual-hero pattern that's been present since the catalog was built but never audited. 178 pages affected = largest single-audit finding since iter 134's 778 placeholder CTAs. Unlike that case, this one needs visual-aware refactoring (not just URL replacement), so it stays Wes-task.
The audit-cross-cutting count is now equal to per-surface count (17 vs 18). The buyer's structural experience is verified across 18 distinct dimensions (naming, structured data, SEO meta, social meta, navigation, images, voice, layout, accessibility, freshness, semantic HTML). Each new cross-cutting audit either confirms or surfaces drift; no audit class has been redundant.