Why the rebuild kept stalling (confirmed)
- Blind visual QA: Cowork sandbox cannot render. FIX FOUND: the Playwright MCP renders on Sam's Mac. Every deploy this session was verified with computed styles. Use it always.
- CSS specificity war: page resets (.sa-truck-page p, html body .sa-card 360px cap, sitewide page-id sidebar rules) repaint registry elements. Elements must ship hardened selectors.
- No durable queue: sessions ended "pending approval" and died. Queue now lives at Repos/sail-marketing/bulk-rebuild/rebuild-queue.csv (regenerate with audit_site.py).
- Registry ignored at build time -> invented elements -> rejected rework.
- SMOKING GUN: ~74 items mass-drafted 2026-06-01 10:15-16 and never republished (live URLs 404ing since). truck-accident-injury-cases 404ed 5 days until restored today. Full list: drafts-inventory.csv.
Shipped live today (all render-verified, backups in session outputs + WP revisions)
- /practice-areas/truck-accident/ (6905): hero subtext was navy-on-navy (page reset outranked hero class), fixed + 4x deprecated #F89C22 -> #D97706, gray body kill.
- /practice-areas/delivery-vehicle-accidents/fedex-delivery-accidents/ (61365): 4 callout cards capped at 360px by sitewide html-body .sa-card rule -> converted to sa-callout-light/dark full width; lazy hero UVP replaced with approved tagline; 2 The-headers + compound header fixed; hero phone 5024558772 (untracked by CallRail = lost attribution) -> canonical 5028888888; de-bolded label paragraphs; Sidebar Option B (el #18) installed sticky+hardened.
- /practice-areas/delivery-vehicle-accidents/delivery-driver-pressure-fatigue/ (61371): sidebar existed but short+non-sticky (read as missing) with wrong frozen headline -> el #18 hardened sticky; bloated hero H1 + stat-sentence UVP -> INJURED BY A FATIGUED DELIVERY DRIVER? + approved tagline.
- /understand-fault-for-a-car-accident/ (post 11094): retired old hero -> split blog hero (el #76, Adjuster-and-Victim image), byline (el #74), Option B sidebar, sa-card -> callout, eyebrows removed, template-comment leak removed, featured image was the FAVICON -> real image, focus keyword set.
- /truck-accident-injury-cases/ (post 10749): RESTORED from draft/404 + full recipe: split hero (jackknife night image), TOC built (9 anchored h2 ids), byline, Option B sidebar, 2 deprecated review strips -> approved sa-review-break (verified Ivory G.), unapproved bottom banner -> el #20 image variant, The/Why/compound headers fixed, F89C22 swept, featured + focus keyword set. Slug still mismatches topic (discovery); rename needs Sam.
Critical operational lessons (encoded in README-PIPELINE.md)
- Phone QA on STORED content only: CallRail swaps numbers at runtime, so rendered-DOM checks false-alarm. A hardcoded number CallRail does NOT recognize = zero attribution; that is the real bug. 178 pages carry non-canonical numbers.
- el #18 gap: sitewide legacy rule forces .sa-sidebar-cta text white; element guards .cta-l2 but NOT h3/p/a. Add !important guards when deploying (registry update proposed to Sam).
- Registry trust heading "Why Kentucky Chooses Sam Aguiar" is APPROVED; do not "fix" it as a Why-header violation (deviated once, reverted against registry + Sam-approved truck page).
- Balanced-tag cutting for aside/div swaps; strip wp:html wrappers when splicing inside existing blocks; per-step prints in multi-page deploy scripts.
- Cowork git lock + 45s bash cap: use Desktop Commander for git push and long audits (documented fallback).
Queue topline (545 published items)
203 OLD heroes, 89 no hero, 516 legacy sidebars, 542 missing bylines, 355 The/Why headers, 266 compound headers, 178 non-canonical phones, 106 missing snippets, 85 with em dashes, 24 with F89C22 in content.