Implemented probe(target) returning the spec’d Findings shape: key-route status/TTFB for /, /lab, /work, /writing, /rss.xml; SSL daysToExpiry via a node:tls handshake that closes on connect; a depth-1 homepage link crawl (HEAD, falling back to GET on 405/501) flagging non-2xx; security-header presence; and homepage htmlBytes/assetCount. Key decision: every external dependency (fetch, tls.connect, the monotonic and wall clocks) is injectable, so the aggregation is tested without a network — including the degradation paths, where a dead route, a failed handshake and an unreachable link become status 0 / null findings rather than thrown exceptions, since a monitor that crashes on an unhealthy site reports nothing. Added linksFound/linksChecked so the MAX_LINKS crawl cap can’t read as full coverage. npm test 70/70 pass (21 new) and npm run check is clean; a live run against whatupwolf.com returned all routes 200, SSL 89 days, zero broken links, and one real finding — CSP, HSTS and X-Content-Type-Options are all absent.
Full depth — file names, mechanisms, and trade-offs.Concise and competent — what it does, without the internals.Plain language — the value of the work, no jargon.
Build engine/probes/site-health.mjs exporting `async probe(target)`…A deterministic site-health probeBuilt the tool that checks a website's health
Built engine/probes/site-health.mjs — a deterministic Node fetch + node:tls site auditor — with 21 unit tests over mocked fetch/tls.Built the site auditor itself — page checks, response times, SSL expiry and link checking — with 21 unit tests.Built the part that actually inspects a website: is every page loading, how fast, is the security certificate about to expire, and are any links broken.
Below is the machine's full write-up, in its own words.
Below is the machine's own write-up. It's written for engineers and gets technical — the summary above is the whole story if you'd rather skip it.