# WP BaseStation — launch UX review

**Reviewed:** 2026-08-25, live on Unlock Button staging (v0.77.2 → fixes shipped as v0.77.3). Method: walked every wp-admin screen as a new customer would, ran the self-test and audits live, cross-checked every suspicious finding against the actual stored content and rendered pages, and read the MCP tool surface. Findings ranked by launch impact.

## Fixed during this review (shipped in 0.77.3)

**1. Contrast audit false-failed 156 of 159 accessibility failures.** White headings over hero photos with gradient overlays were rated "1.00:1 FAIL" against the *assumed white* page background — 98% of the site's a11y failures were false. A background image or enabled gradient now makes that subtree's background UNKNOWN: those pairs report as one info line ("cannot be decided from stored content — check by eye; a solid overlay makes it verifiable") instead of failures. A descendant's own solid colour makes rating resume. Pinned in QA both ways: image → unresolved; solid colour under the image → rated again. *This was the single biggest launch risk: an accessibility audit that fails nearly every well-built hero section teaches customers to ignore it in week one.*

**2. Site QA false-failed every dynamic-content button (40 pages).** `$variable({"type":"content","value":{"name":"post_link_url_page"}})$` — Divi's own dynamic-link mechanism — was looked up as a design-token id and flagged "does not exist on this site." Subtlety: Divi's *variables store* also uses `type:"content"`, so the fix exempts only names that read as built-in WordPress dynamic fields (post_*, site_*, home_url, …); an invented variable id still warns, and known ids still get type-checked. Pinned three ways in QA.

**3. "Thank you for creating with WordPress" footer survived its own removal.** 0.77.0 hid wp-admin's footer — but the plugin's own `legal()` was printing a *copy* of the same text and version. The copy is gone; the legally required Elegant Themes trademark attribution stays.

## Launch blockers (decisions, not bugs)

**4. Tier enforcement is OFF ("dark").** Licensing shows Tier PRO, enforcement OFF, with the note "shipping default until licensing is verified end to end." Right now every customer gets all 79 tools regardless of tier. Before launch: run the Freemius sandbox checkout matrix, flip enforcement on, and self-test — the Licensing & tiers group (45 checks) plus harness-tier-gate already pin the gating behaviour. This is the one thing on this list that decides whether the product has a business model on day one.

**5. CI must be green before the launch tag.** Fixed in 0.77.2 (three causes), but run #56 was still queued on GitHub's runners at review time — confirm it lands green, and check org Actions billing if it stays queued.

## High — fix before launch

**6. Self-test results evaporate after 10 minutes.** Results live in a 600-second transient. A customer runs the ~3-minute suite, comes back after coffee, and Diagnostics says "Not run yet" — this morning's "1 of 1136 failing" was unrecoverable for exactly this reason. Paused runs already persist; finished results should too (option storage, kept until the next run, timestamped "as of").

**7. The connector URL card doesn't say HOW.** "Add the connector URL in claude.ai and start building" is the product's most important instruction and its least specific. New customers won't know: claude.ai → Settings → Connectors → Add custom connector → paste. The Diagnostics tab has this knowledge ("Settings → Connectors → toggle off, then on") — the Overview flight-status card needs a two-line "how" or a details-expander. First-run activation lives or dies here.

**8. Already-optimized images that stay heavy re-offer the same Fix.** Performance flags `22-optimized.webp (356 KB)` — an output of our own fixer still over the 300 KB line — and offers FIX ALL (16 PAGES) again. Clicking it re-runs a compression that already converged; honest-zero reporting will say "0 fixed," but the loop reads as the button not working. When the flagged file is already the fixer's output (or a re-fix yields no gain), the finding should say "already compressed — needs a smaller source export or a smaller display size" and drop the Fix button.

## Medium — strong candidates for launch week

**9. Runtime-context rows read as contradictions.** "PASS · MISSING: divi/section, divi/row…" — those rows *record* context rather than assert it, but PASS next to MISSING erodes trust in the suite's own vocabulary. Give ok()-recorded rows an INFO pill. (Already backlogged; bumping it.)

**10. "not checked" Rescue tile phrasing.** On a fresh install the Rescue tile reads "not checked" — ambiguous between "we didn't check" and "you should check." "Not scanned yet — run from the Rescue tab" says it.

**11. `?tab=connection` falls back to Overview.** The slug is `connect`; the visible label is "Connection." Anyone sharing/bookmarking the guessed URL lands on Overview silently. One line in TAB_ALIASES.

**12. SEO warnings now name missing words — verify the count drops.** Post-0.77.1, keyword-title warnings on Aurora-style pages collapse and real ones say "missing: denver." The audit ran 20 minutes before review showing SEO !60 (down from 90). Re-run after 0.77.3 and spot-check the survivors are all genuine.

## What's genuinely launch-ready

The failures-first audit layout (cause → occurrences, Fix/Fix-all/Undo inline, severity accordions) is the strongest screen in the product — a failure is the first thing on screen with its fix named. One-click self-test drove all ~53 groups hands-free with live progress ("24/53 groups") and finished **1154/1154 green** — the previously unidentified failing check is resolved on 0.77.2. Safety switches are enforced in the write path and read as such. The accessibility waiver policy ("waived, on record, never silently clean") is a genuinely differentiated design. Every audit states what it *cannot* see in plain language — keep that; it's the credibility engine. Preflight, licensing visibility, copy-diagnostics, and the trademark-compliant footer are all launch-clean.

## Suggested order

0.77.3 install → re-run all audits (expect Site QA ~0–2 real fails, a11y failures collapse to the module-link + slider findings, verify by eye) → items 6–8 as 0.78.0 → enforcement flip + sandbox checkout verification (item 4) → CI green → tag v1.0.0-rc.
