Sam asked to run QA on the staged Kentucky nursing-home hub (packet at /Users/samaguiar/Documents/Projects/Repos/sail-seo/Website_project/nursing-home-hub-2026-06-03/wp-stage/GO-LIVE-PACKET-nursing-home-hub-2026-06-03.md), make updates if needed, and report whether it is ready to go live. Nothing was published; the go-live gate stays closed until Sam's explicit approval.
Fresh authenticated REST readback of all six drafts (70768 hub + 70769-70773 spokes): all still draft, final slugs intact, one H1, one phone CTA, schema present, no staging note, no staging-slug references. Note: all six drafts were modified 2026-06-06 (design pass), which postdated the packet's June 4 evidence — this run re-verified everything against current content.
Ran the mandatory qa_gate.py stored-content gate (sail-marketing/bulk-rebuild, sa-copywrite-design rules adopted 2026-06-11) on all six drafts. Three FAILs on header rules, fixed in BOTH local source and WP drafts via REST (status draft preserved):
Wound, Skin, And Turning Records → Wound And Turning RecordsWhy Pressure Wounds Need A Records Review → What Pressure Wound Records Should ShowFacility Names, Legal Names, And Chain Records → Facility Names And Chain RecordsPost-fix run: 0 FAIL. Remaining WARNs are context-allowed only ("assisted living" facility type, "transfer assistance" care term, KRS 209.030 statutory phrase, already documented as an allowed exception).
Regenerated draft-readback screenshot QA at desktop 1365x900 and mobile 390x844 for all six drafts: 12/12 PASS (one H1, no 404 text, no staging note, no horizontal overflow). Node playwright is not installed on this Mac, so the JS runner was ported to Python (wp-stage/qa-wp-draft-previews.py, uses the same python-playwright chromium as qa_gate.py).
Verified Rank Math metadata persists on all six drafts via WP-CLI postmeta readback on the Flexible server (title/description/focus keyword all set). Standard WP REST meta does not expose Rank Math fields — WP-CLI or the Rank Math REST API is the correct readback path.
Confirmed intake endpoint sal/v1/contact-intake is registered on live (POST-only) via REST OPTIONS probe; the hub hero form will work at publish.
Discovered live page 22782 was modified 2026-06-11 19:31 by the bulk-rebuild wave-sidebar deploy (sidebar + standard intake form added to old live content). Staged hub is NOT live; this was wave work. Consequence: the June 3 live snapshot is STALE for rollback. The packet now mandates the fresh pre-go-live backup as the only valid rollback source and notes the wave-sidebar work on 22782 is intentionally discarded at hub go-live.
Rewrote the packet's launch sequence off the dead legacy Autonomous SSH host ($SSH_HOST etc., decommissioned 2026-06-01) to the Cloudways Flexible path, verified working end-to-end this session: sshpass -p "$CLOUDWAYS_FLEXIBLE_SSH_PASS" ssh "$CLOUDWAYS_FLEXIBLE_SSH_USER@$CLOUDWAYS_FLEXIBLE_PUBLIC_IP" then cd /home/master/applications/fctbkwwahp/public_html && wp ... (WP-CLI fails outside the app dir on a relative wp-salt.php require; fctbkwwahp is the live app, verified via wp option get siteurl). This resolves the June 4 SSH host-key blocker.
Added the mandatory post-publish qa_gate.py render pass (pages:22782 + five spokes) to the packet's step 7 QA list.
Committed and pushed everything to sail-seo, commit 3038e7f on branch agent/legacy-ssh-cred-purge-2026-06-01 (repo was already on that branch with the hub folder untracked; committed there to avoid disturbing the working tree).
qa-gate-stored-content-2026-06-11.json — post-fix qa_gate run, 0 FAILwp-draft-preview-qa-2026-06-11.json, wp-readback-pre-go-live-2026-06-11.json — readback + screenshot QAwp-draft-preview-screenshots-2026-06-11/ — 12 fresh desktop/mobile screenshotsqa-wp-draft-previews.py — repeatable Python QA runner