Why this session ended
Sam requested handoff: too many visible defects surfaced one at a time on live components, and he wants the next agent to finish the cleanup with a hard QA gate so he does not have to police pages manually. Context was also near limit.
Canonical handoff document
Repos/sail-marketing/bulk-rebuild/HANDOFF-site-cleanup-and-qa-gate-2026-06-11.md - complete defect list, fix order, QA gate spec, standing authorizations, environment gotchas. Companion: README-PIPELINE.md, SESSION-LOG-2026-06-10-resume.md, rebuild-queue.csv, drafts-inventory.csv.
Open defects (fix order)
- 11094 bottom conversion band width broken (full-bleed calc inside asymmetric grid; stabilize in-column or replace with registry #78 after grid close).
- Doubled trust-card checkmarks on 4 Option-B pages (sitewide snippet 60656 ::before + element span.ck): add content:none armor to pages + registry el18.
- Footer: origin fixed to ONE instance; still need Varnish + Cloudflare purge_everything then live verify (1 footer, callrail/intaker/schema intact). Rollback backups on prod server home dir.
- Render-verify late deploys: 72294/10749 banner layout, 72294 image swap (now 42835), 11094 copy patch, 61365 grey callouts.
QA gate (Sam directive: firm up QA)
Build qa_gate.py per the spec in the handoff doc; mandatory after every deploy and in waves. Checks encode every defect class from this week: invisible text via computed styles, full-bleed width vs viewport, banned headers (The/Why/Step N:/compound), spaced commas, banned topics (comparative fault/SOL/case-worth) incl. FAQ and JSON-LD, deprecated F89C22 and dark/white-full-border callouts, byline format (firm author, Updated date, no avatar), snippet left-border-only, single checkmark per trust item, 1 h1, 1 footer, canonical phones in STORED content only (CallRail swaps at runtime).
Key environment facts (do not relearn)
- TWO Cloudways apps: emubdqbbhw = STAGING clone, fctbkwwahp = PRODUCTION. Always cd ~/applications/fctbkwwahp/public_html. The 2026-06-10 session burned hours operating on staging via ls|head -1.
- http://localhost = 301 with tiny body (phantom zero-counts); use https://localhost -k + Host header + Cookie to bypass Varnish.
- wp db query output escapes newlines: not a byte-identical backup; unescape before unserialize.
- Registry writes: POST /admin/edit/<id> with ALL 12 fields (PATCH no-ops silently). el18 now v2026-06-10b (armored).
- Playwright MCP on Sam's machine = the render/QA path; sandbox cannot render.
- Footer architecture: WPCode Global Footer (ihaf_insert_footer) is the ACTIVE footer mechanism; snippet 40125 is drafted (stale F89C22 copy) - do not republish it.
Standing Sam authorizations not yet executed
Big wave 1 (10-15 pages off rebuild-queue.csv with gate), June-1 draft batch triage + republish (74 items, drafts-inventory.csv), truck 6905 8-item backlog (see 2026-06-09 Notion page), sitewide legacy CSS cleanup (needs reliance inventory first; armor pattern is the safe interim).