Two issues hit during a real deploy: 1. The nginx example pinned fastcgi_pass to /run/php/php8.2-fpm.sock. When the target box runs a different PHP-FPM (8.3 here), the socket doesn't exist and nginx 502s. Switch to /run/php/php-fpm.sock (the alternatives symlink installed by Ondrej Sury's packaging) so the default config works against whatever current PHP is installed, with a comment explaining the fallback for boxes without the symlink. 2. The PHP version requirement was buried in a one-liner. Promote it to a multi-line note that names the specific 8.x features used, says loudly that 7.x will not parse the code, and points at Sury's repo for boxes stuck on an old default. Also added a callout warning against cp foo.conf foo.conf.bak inside sites-enabled/, since nginx loads every file in that directory and the backup becomes a second vhost claiming the same server_name (silently shadowed via the "conflicting server name … ignored" warning). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Site Healthcheck
Internal WordPress plugin that walks a technician through a structured healthcheck. Companion to wp-site-recovery, which it expects to be installed as step 0.
Install
ln -s ~/dev/wp-healthcheck /path/to/wp/wp-content/plugins/att-site-healthcheck
Then activate from Plugins. Settings appear under Tools → Site Healthcheck.
Use
- Open Tools → Site Healthcheck.
- Confirm the recovery plugin status panel shows ✓ active.
- Click Start new healthcheck.
- Work through each step card. For each: choose a status (done / skipped / blocked / n/a) and add notes.
- Click Finish & generate report.
- Download the Markdown report or copy it to clipboard.
One in-progress session per site at a time. Reports are not stored in the database (the plugin is meant to be uninstalled at the end of each engagement) — download them.
Adding, removing, reordering steps
Each step is a single file under includes/steps/ named <order>-<slug>.php.
<?php
// includes/steps/45-staging.php
return new class extends ATT_HC_Step {
public function id(): string { return 'staging'; }
public function title(): string { return 'Step 4.5 — Verify Staging Sync'; }
public function sub_items(): array {
return ['Re-deploy from production', 'Run smoke tests'];
}
};
- Add: drop a new file.
- Remove: delete the file.
- Reorder: rename the numeric prefix (steps are loaded in
natsortorder). - Conditionally drop on one install: use the
att_hc_stepsfilter tounsetthe step by id.
Stable string IDs (returned by id()) are what's stored in session data, so renaming a file does not break in-progress sessions as long as the id stays the same.
Phase roadmap
Phase 1 (this) is a checklist + Markdown report. Phase 3 will add per-step automation — backup detection, env auto-collect, plugin update intelligence, PageSpeed Insights, SSL checks, etc. See beads epic hc-5ix for the full plan.
Distribution
Internal/agency tool — not a WP.org plugin (decision hc-5ix.26). Distributed as a built ZIP. A self-hosted update channel is hc-5ix.27 on the phase-3 backlog.
Tracking
cd ~/dev/wp-healthcheck
bd list --label phase-1 # MVP work
bd list --label phase-3 # automation backlog