ShrubberyDocs
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

  1. Subject turns on public score sharing in privacy settings (updatePublicScoreEnabled).
  2. Subject copies the share URL: /score/{their user UUID} (no username slug today).
  3. Viewer opens the link. Service-role fetch loads profile flag + shrubberies/events; if the flag is false or the user missing → not found.
  4. 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.
  5. 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

Last updated: 24 July 2026