Adds a demo test suite on top of the data-value pins:
- tests/gui/test_app_demo.py (new, AppTest): every accounting persona
renders with its dataset, the default/unknown-persona fallback resolves
to bookkeeper, clicking Run produces the AFTER value (rows reduced to the
validated count) with the watermarked download + Gumroad CTA, and
switching persona via the quick-switch dropdown clears the stale result.
- tests/test_demo_pipelines.py (extended): cross-surface coherence —
each persona key served by app_demo has a matching landing page whose
iframe (?p=) and CTA (from=) point at it and that the hub links to;
no retired Shopify/RevOps language remains in landing HTML; and the
demo download still appends exactly one watermark row.
Full suite: 2584 passed, 91 skipped.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>