Guide
Public Score Sharing
How a user opts in to a public reliability page and what outsiders can see.
01 · Overview
Overview
/score/[userId] is a session-free page that shows headline CFS gauges for one person: Flow Score, Ghost Rate, Reciprocity, and a commitment count. It is opt-in (public_score_enabled). When sharing is off or the user is unknown, the route 404s — it does not explain that a score is private. No task text, counterparties, or per-row breakdown leaves the server.
02 · Actors
Actors
- Subject user — owns the score; enables sharing in Settings → Privacy and may copy the link.
- Viewer — anyone with the URL; may have no Shrubbery relationship. Copy is neutral (no Lead/Knight jargon).
- System — computes the same CFS engine used in-app, for the subject as Knight axis, 90-day window, including building state.
03 · Flow
Flow
- Subject turns on public score sharing in privacy settings (
updatePublicScoreEnabled). - Subject copies the share URL:
/score/{their user UUID}(no username slug today). - Viewer opens the link. Service-role fetch loads profile flag + shrubberies/events; if the flag is false or the user missing → not found.
- Page renders display name (or "A Shrubbery user"), four tiles, and a "Verified by Shrubbery" badge. Open Graph metadata uses the same score for link previews.
- Subject can disable sharing later; subsequent visits 404.
04 · Edge cases
Edge cases
- Building state — axes with too few decided rows show "Building" instead of a percentage (same CFS minimum-denominator rules).
- No email leakage — public page never shows the subject's email.
- Not the portable badge — a portable reliability badge artefact is still backlog; this page is the shipped share surface.
- UUID in the URL — losing the link means rediscovering the id; there is no public directory of scores.
- Dossier vs public score — Dossier is authenticated Lead-facing detail; public score is intentionally thinner.
05 · Related
Related concepts
Last updated: 24 July 2026