Context. surface customer · domain system · route /system/edge-states · auth anon · source apps/oshun/web/src/app/system/edge-states/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; primitive labels/content, placeholder button semantics, public access, reduced-motion static state, and telemetry absence refreshed 2026-06-27 in apps/oshun/web/e2e/system-edge-states-gallery.spec.ts
Purpose#
Showcase of the Lilith edge-state primitives — what each room shows "when the
page is not what you expected." Renders the EdgeStateGallery composition
exported from apps/oshun/web/src/components/lilith/system-pages.tsx.
Entry points#
- Engineering / design bookmarks
- Sibling:
/system,/system/emails,/system/og,/system/verify - Direct URL / bookmark — yes (anonymous;
/system/edge-statesis public)
Layout regions#
page.tsx is <EdgeStateGallery />. From the gallery composition in
system-pages.tsx, the layout is a single LWebShell with an
LCustomerNav active="today" header and a 2-column gallery grid under
LSectionHead:
- Header (shell):
LWebShellwithLCustomerNav active="today" - Section head: kicker "System · XI · edge states", title "When the page is not what you expected."
- 2-column grid of static edge-state showcases. Each cell pairs an
LEyebrowlabel with a paper card or primitive:- Skeleton · dotted rule —
<LSkeleton lines={4} />; four dotted rule lines, no shimmer - Empty · editorial —
Library · empty,No marks yet., bodyRead a story, mark a passage. Your marginalia will live here., and a placeholderLBtnlabelOpen today’s edition - Error · stamped notice —
Notice · E.04,logged · 14:22,We couldn't reach the archive., locally saved/sync body copy, and a placeholderLBtnlabelRetry now - Offline · banner —
Offline, bodyReading what you already have. Saved since 14:08., and an offlineLSyncDot - PWA update · ribbon —
A new edition., versionv2.4.1, and a styledReloadspan - Partial failure —
Partial · 3 of 4 loaded, bodyShowing what loaded. Missing: Veritas · today's claim., and a styledRetryspan - Sync dots —
live,queued · 3, andoffline - Validation pills —
Saved · 14:22,Needs a source,Citation does not resolve, andAuto-saved as you type
- Skeleton · dotted rule —
States#
- Default — all eight primitive families render with the exact labels and fixture copy listed above
- Reduced motion — no CSS keyframe animation is present inside the
edge-state gallery under
prefers-reduced-motion: reduce - Standalone PWA — should render cleanly
Interactions#
Showcase surface. The page renders action-looking controls for visual review, but no gallery action is wired to navigation, retry, reload, persistence, or a network call.
-
LEmptyaction button (Open today’s edition) — placeholderLBtn; rendered as a<button>witharia-disabled="true",data-placeholder="true", and tooltipNo handler wired — placeholder -
LErroraction button (Retry now) — placeholderLBtnwith the same disabled-placeholder semantics -
LOfflineretry button — absent; the offline primitive renders only copy plus anofflinesync dot - PWA
Reloadaffordance — styled<span>, not a button or anchor - Partial-failure
Retryaffordance — styled<span>, not a button or anchor
Data & contracts#
- Reads: none from services; composed from hardcoded fixture props inside
EdgeStateGalleryplus Lilith edge-state primitives - Writes: none
- Realtime: none
- Caching: SSR static; SW cache
- Auth/role check: anon —
/system/edge-statesis inapps/oshun/web/src/proxy.tsPUBLIC_PATHS(~line 36), so it is reachable without signing in - Metadata:
title: 'System · edge states',description: 'When the page is not what you expected — skeleton, empty, error, offline, partial.',alternates.canonical: '/system/edge-states'
Cross-references#
- Sibling specimens:
- Live consumers of these primitives:
- Component sources:
apps/oshun/web/src/components/lilith/system-pages.tsx(EdgeStateGallery)- Primitives:
LSkeleton,LEmpty,LError,LOffline,LPwaUpdate,LPartialFailure,LSyncDot,LValidationPill
Automated coverage#
apps/oshun/web/e2e/lilith-public-routes.spec.ts- Public
/system/edge-statesrender smoke with no auth redirect
- Public
apps/oshun/web/e2e/system-edge-states-gallery.spec.ts- Anonymous direct render of
/system/edge-states - Header, two-column grid, all eight primitive labels, and expected fixture copy
- Four skeleton dotted-rule lines
- Placeholder semantics for the two rendered
LBtncontrols - Absence of real links and non-placeholder buttons inside the gallery
Reloadand partialRetryrendered as spans, not controls- Sync dot labels and validation pill labels
- No telemetry attributes in the gallery content
- Reduced-motion static state: no keyframe animation inside the gallery
- Anonymous direct render of
Open questions / known gaps#
- Read full
EdgeStateGallerybody insystem-pages.tsx; the current variants are skeleton, empty, error, offline, PWA update, partial failure, sync dots, and validation pills. - Resolved: gating is public —
/system/edge-statesis insrc/proxy.tsPUBLIC_PATHS(~line 36) - Document the complete primitive list and per-domain accent usage: this gallery uses Lilith's default system palette only, with no per-domain accent variants.
- Drift risk: when shipping pages change their edge-state usage, this gallery must be regenerated
- Confirm action buttons inside primitives are no-op vs functional: both
LBtninstances are placeholder buttons with nohref/handler;Reloadand partialRetryare spans.