Context. surface customer · domain system · route /system/emails · auth anon · source apps/oshun/web/src/app/system/emails/page.tsx
Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; content re-verified 2026-06-03 against current source; four static email cards, subject/CTA/body fixtures, read-only CTA/footer labels, public access, print-media rendering, reduced-motion state, and telemetry absence refreshed 2026-06-27 in apps/oshun/web/e2e/system-email-gallery.spec.ts
Purpose#
Showcase of the four canonical Lilith email template specimens — welcome, weekly
digest, Veritas update, and incident — rendered in cream paper for design
review. The current route is static fixture content composed via EmailGallery
and LilithEmail from apps/oshun/web/src/components/lilith/system-pages.tsx;
it is not the live transactional-email infrastructure.
Entry points#
- Engineering / design bookmarks
- Sibling specimen pages:
/system,/system/edge-states,/system/og,/system/verify - Direct URL / bookmark — yes (anonymous;
/system/emailsis public)
Layout regions#
page.tsx is <EmailGallery />. The composition is exported by
system-pages.tsx. Per the file header:
EmailGallery — all four emails in cream-paper print
The current layout renders:
LWebShellchrome withLCustomerNav active="library"- Header: kicker
System · XII · emails; h1Four templates, in cream paper. - Gallery plate: fixed specimen background
#ddd1ad, 56px padding, 6px radius, and a two-column grid - Four 640px-wide
LilithEmailcards:- welcome: kicker
Lilith · welcome, subjectBegin a reading desk., CTA labelOpen today's page →, and onboarding copy that reserves a reading desk - digest: kicker
Lilith · weekly, subjectSunday, in five plates., CTA labelRead the broadsheet →, and six digest lines for Tara, Arete, Veritas, Nisaba, Nyx, and Metis - veritas: kicker
Lilith · veritas, subjectA claim you tracked changed., CTA labelSee the new sources →, and an updated-verdict inset for the coffee/dehydration claim - incident: kicker
Lilith · operator, subjectS2 · CDN edge slow., CTA labelOpen the incident →, and incident fixtureI.0142 · S2
- welcome: kicker
- Shared card fixture chrome: date
Tuesday, the 6th of May, cream background#f1ebdd, ink CTA styling, and a footer readingLilith · 142 Gracechurch St, London EC3V · Manage what we send · Unsubscribe.
States#
- Default — all four static email specimens render with the expected subjects, CTA labels, body copy, dates, and footers
- Reduced motion — no CSS keyframe animation is present inside the
email-gallery plate under
prefers-reduced-motion: reduce - Print — print media preserves all four 640px email cards and keeps them read-only
- Standalone PWA — should render cleanly
Interactions#
Showcase surface — emails are static mockups.
- Email body links — none are present; the CTA label is a styled
<div>, not an anchor or button - Footer manage/unsubscribe labels — styled underline
<span>elements, not anchors - Per-email label / caption — each card exposes the
Lilith · ...eyebrow label and subject text
Data & contracts#
- Reads: hardcoded fixture objects in
system-pages.tsx:EMAIL_SETS,DIGEST_LINES, and inline per-kind body content inLilithEmail - Writes: none
- Realtime: none
- Caching: SSR static; SW cache
- Auth/role check: anon —
/system/emailsis inapps/oshun/web/src/proxy.tsPUBLIC_PATHS(~line 37), so it is reachable without signing in - Metadata:
title: 'System · emails',description: 'Welcome, weekly digest, Veritas-update, and incident emails — in cream paper.',alternates.canonical: '/system/emails'
Cross-references#
- Sibling specimens:
- Live email templates (transactional infrastructure):
libs/shared/emails/*(verify; out of scope for this page)
- Component sources:
apps/oshun/web/src/components/lilith/system-pages.tsx(EmailGallery)apps/oshun/web/src/components/lilith/system-pages.tsx(LilithEmail)
Automated coverage#
apps/oshun/web/e2e/lilith-public-routes.spec.ts- Public
/system/emailsrender smoke with no auth redirect
- Public
apps/oshun/web/e2e/system-email-gallery.spec.ts- Anonymous direct render of
/system/emails - Header and static gallery plate evidence
- All four email cards, 640px card width, subject, kicker, CTA text, fixture date, footer, and per-kind body copy
- Read-only content contract: no anchors, buttons, form controls, summaries, tabbable rows, or clickable CTA/footer links inside the gallery plate
- No telemetry attributes in the gallery plate
- Reduced-motion static state: no keyframe animation inside the gallery plate
- Print-media render preserves all four card specimens
- Anonymous direct render of
Open questions / known gaps#
- Read the
EmailGalleryandLilithEmailexports to enumerate the four static cards, labels, fixture copy, and CTA/footer label semantics. - Drift risk: the gallery is a static mockup; when the actual transactional templates change, this page must be regenerated
- Resolved: gating is public —
/system/emailsis insrc/proxy.tsPUBLIC_PATHS(~line 37) - Confirm whether the gallery is designed for screen-only or print-optimised: source header says the gallery is "all four emails in cream-paper print," and the print-media Playwright pass confirms all four cards remain readable.
- No telemetry attributes are present in the gallery content.