Some audits are no longer needed. Add an archive toggle so they can be filed
away without deleting the history.
- Migration 0003 adds healthchecks.archived (INTEGER 0/1, NOT NULL DEFAULT 0
— portable across MySQL/SQLite).
- Per-site page (/dashboard?site=X): each session row gets an Archive /
Unarchive button and archived rows carry a muted "archived" badge.
- Home page: archived healthchecks are gathered under an "Archived" heading
at the foot, each with an Unarchive button.
- POST /dashboard/healthchecks/{id}/archive, mirroring the reopen flow:
session-cookie auth + CSRF token. archived=1 archives, else un-archives.
The redirect-back target is validated to a same-origin /dashboard path
(no open-redirect / header injection).
- setArchived() deliberately leaves updated_at alone, so filing a session
doesn't jump its site to the top of the dashboard ordering.
- Archived items are NOT hidden from their normal listings, per the request.
Dashboard-only; not exposed through the plugin API. 7 new tests (49 total).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>