Context. surface customer · domain onboarding-public · route /legal/lilith/privacy · auth anon · source apps/oshun/web/src/app/legal/lilith/privacy/page.tsx
Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; manual screen-reader and real telemetry-delivery checks pending. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; 2026-06-28 public-legal-pages Playwright pass covered anonymous routing, editorial heading/version/body contract, non-clickable footer markers, 390 px no-overflow, offline-after-load stability, no telemetry hooks, and axe. Manual AT pass and real telemetry delivery remain pending.
Purpose#
Editorial-register privacy policy rendered through the same LegalPage
component as /legal/lilith, but with kind="privacy". The composition swaps
the page title from Terms of use. to Privacy policy. while keeping the body
copy structure identical (five roman-numeralled briefs).
Entry points#
- Footer link on
/landing - Direct URL / bookmark — yes (anon)
Layout regions#
page.tsx is <LegalPage kind="privacy" />. The shared LegalPage composition
(in apps/oshun/web/src/components/lilith/system-pages.tsx) does NOT branch on
kind for body copy — only the heading text changes
(kind === 'terms' ? 'Terms of use.' : 'Privacy policy.'). The five briefs
below the title are the same Lilith terms body content as /legal/lilith.
- Header (shell):
LWebShellchrome - Page eyebrow: "Lilith · legal"
- Title:
Privacy policy.in 48px serif - Version code: "Effective · 1 May 2026 · v.0142"
- Double rule
- Body (max-width 62ch): same five briefs as
/legal/lilith(I · what this is,II · your account,III · what we keep, briefly,IV · AI · disclosed,V · ending the agreement), including the✻disclosure glyph,Settings · AIreference, and "We do not sell anything." - Footer rule + link row: same five non-clickable italic spans (Terms, Privacy, DPA, Sub-processors, DMCA)
States#
- Loading — N/A; static
- Default — title shows "Privacy policy." instead of "Terms of use.";
body copy is unchanged from
/legal/lilith - Narrow viewport — body reflows at 390 px without horizontal overflow
- Print — no print-specific stylesheet
- Offline after load — once loaded, the URL, heading, and body contract remain stable when the browser context goes offline
Interactions#
Footer link row#
- "Terms" / "Privacy" / "DPA" / "Sub-processors" / "DMCA" — same
non-clickable
<span>markers as/legal/lilith
Body content#
Inherits the same ✻ disclosure-glyph explanation, "Settings · AI" opt-out
reference, and "We do not sell anything." statement.
Data & contracts#
- Reads: none — static text
- Writes: none
- Caching: SSR static; loaded-route offline stability is asserted. Cold
offline navigation / per-legal SW path caching is not asserted, and current
sw.jsdoes not path-cache/legal/*. - Auth: anon (in middleware
PUBLIC_PREFIXES) - Metadata:
title: 'Lilith · privacy policy',description: 'What we keep, what we do not. AI is disclosed; nothing is sold.'
Cross-references#
- Sibling Lilith terms:
legal-lilith.md - Standard legal pages:
legal-privacy.md,legal-terms.md - Component sources:
apps/oshun/web/src/components/lilith/system-pages.tsx(LegalPage, parameterised bykind)
E2E coverage#
- Backed by
apps/oshun/web/e2e/public-legal-pages.spec.ts— covers anonymous access, editorial heading/version/body contract,✻,Settings · AI, "We do not sell anything.", intentionally non-clickable footer markers, 390 px no-overflow, offline-after-load stability, no telemetry hooks, and axe.
Open questions / known gaps#
- Cold offline navigation / per-legal SW cache is not asserted and current
sw.jsdoes not path-cache/legal/*; PWA shell cache coverage remains in the offline-first / PWA walkthroughs. - Body copy is identical to
/legal/lilith— only the title changes via thekindprop. Confirm whether the privacy variant should have privacy-specific body content rather than reusing the terms briefs - Footer link row is decorative spans, not anchors
- Description meta says "nothing is sold" and the body now explicitly includes "We do not sell anything."
- No print stylesheet specific to this editorial variant