A background job the browser polls
Why
Some sites take seconds to answer, and link checks add more. Replying
202 straight away means a slow target never holds the HTTP request
open, and the UI can show progress.
The cost
Jobs live in memory in one process, so a restart loses them and a
second instance could not see them. Delivery is polling, not push.
Checks as a registry of pure functions
Why
Adding a check is one function and one list entry. Checks do no
network work, so they are fast and easy to reason about, and the public
list of checks is generated from the same registry.
The cost
Checks for different categories take different inputs, and the
broken-links check runs outside the registry, so it is not in the
published count.
Isolate every check
Why
A bug in one check, or an odd page that trips it up, should cost one
line of the report, not the whole analysis.
The cost
The isolation covers the checks only. An error while parsing,
extracting contacts or scoring still fails the job.
Score each check on its worst finding
Why
It is simple to explain: a critical check counts seven and a half
times as much as a minor one, and the category score is the share of
credit earned.
The cost
A check that finds nothing counts as a pass, and the overall score
is a plain average, so a three-check category weighs as much as an
eight-check one.
Heuristics from the HTML, not a headless browser
Why
Response time, size, compression, caching headers and script counts
come straight from the response. No browser is needed, so an analysis
is fast and cheap, and every result traces back to what was received.
The cost
Layout shift, rendered contrast and anything built by JavaScript are
out of reach, and response time is measured from the server, so the
network path is included.
Proxies and TLS impersonation for hard sites
Why
Many real sites sit behind bot protection. Rotating proxies, burning a
proxy for a host after a failure, and one retry with a browser TLS
fingerprint let far more of them be analyzed.
The cost
It adds real complexity and a paid proxy provider, and timings and
headers can reflect the proxy path rather than a visitor's.