Follow-up from docs/issues/2026-04-12-accuracy-from-live-audit.md (R4) and docs/plans/2026-04-18-live-audit-follow-through.md.
Problem
The audit proposed several critical-fail rules so catastrophic problems cannot hide behind a decent average score. Today, robots-blocked accessibility appears to be handled, but the rest of the proposed short-circuit rules are still not clearly implemented as a complete rubric.
Goal
Finish the critical-fail rubric so obviously broken visibility states cannot receive flattering grades.
Remaining rules to implement
- Non-JS bot content collapse:
- if a non-rendering bot sees
<200 words where Googlebot sees >1000, force an F on content visibility for that bot
- Missing required structured data:
- if the page type expects schema and zero valid JSON-LD blocks are present, force an
F on structured data
- Canonical host/domain failure:
- if canonical is missing or points to a different domain, force an
F on technical signals
- Extreme latency:
- if TTFB exceeds the defined hard threshold, cap technical signals at
D or worse
Acceptance criteria
Why this matters
Average-based scoring is fine until it flatters a broken site. Critical fails are how crawl-sim keeps its backbone.
Follow-up from
docs/issues/2026-04-12-accuracy-from-live-audit.md(R4) anddocs/plans/2026-04-18-live-audit-follow-through.md.Problem
The audit proposed several critical-fail rules so catastrophic problems cannot hide behind a decent average score. Today, robots-blocked accessibility appears to be handled, but the rest of the proposed short-circuit rules are still not clearly implemented as a complete rubric.
Goal
Finish the critical-fail rubric so obviously broken visibility states cannot receive flattering grades.
Remaining rules to implement
<200words where Googlebot sees>1000, force anFon content visibility for that botFon structured dataFon technical signalsDor worseAcceptance criteria
A/Bgrades through averagingWhy this matters
Average-based scoring is fine until it flatters a broken site. Critical fails are how crawl-sim keeps its backbone.