Skip to content

docs: research the social stats layer — RESEARCH.md has no §14, and the room work is blocked on it #994

Description

@janlauber

Part of #992.

docs/RESEARCH.md §13 did this job for training load: a model teardown, a UX-pattern pass across eight products, a ranked "what to show by athlete value", and a traps list. Everything built since has leaned on it, and #222 shipped without re-litigating a single question.

There is no equivalent for the social layer, which is the half WattRoom is actually differentiated on. §13.2 says so itself:

Zwift ships none of this layer — the social-indoor incumbent leaves it entirely to intervals.icu. A progression layer inside the social product is differentiation, not table stakes.

The room stats and the comparison surfaces in #992 are blocked on this, on purpose: they are the surfaces most likely to change how a crew treats each other, and picking their metrics by taste is how a friendly room turns into a ladder nobody enjoys.

What the pass has to answer

  1. What do social/multiplayer fitness products actually show about a group? Zwift (companion + events), Peloton (leaderboard, high fives, milestones), Strava clubs, Discord's own activity surfaces, Whoop teams, Garmin Connect groups. What recurs, what got removed, and why.
  2. What motivates a small standing crew — 3–10 people who ride together weekly — as opposed to a large anonymous population? Peloton's leaderboard research and Strava's club-vs-global findings are the obvious starting points, and §13.3's own headline (consistency and time-in-saddle beat performance metrics by 5–8× in rider surveys) needs testing against a group rather than an individual.
  3. When does a ladder help and when does it harm? The failure mode is documented in adjacent products: the strong rider stops being fun to ride with, the weakest stops showing up. Look for the mitigations that shipped — relative-to-self ranking, effort-normalised metrics, opt-out, decay, small-N suppression.
  4. What is a fair metric across mismatched riders? kJ favours the heavy and the long; w/kg favours the light; execution favours whoever picked an easy workout (§13.4 already warns execution must not double as a difficulty metric). Is there a defensible crew metric, or is the honest answer several boards and no single rank?
  5. Attendance and presence as a stat — the "showed up" strip in the mockups. Where does that read as belonging, and where does it read as surveillance? This overlaps feat(server,web): a session leaves a recap — who was here, when they came, how long they stayed #985's privacy argument and should be settled once.
  6. Vocabulary. §13.2 point 4: "invented jargon is a moat and an adoption ceiling — don't coin vocabulary beyond the SPEC glossary." Whatever comes out must be nameable in words already in docs/SPEC.md, or the glossary grows deliberately in the same PR.

Constraints the pass is bounded by

Not open questions — findings must live inside these:

  • Room-scoped only. WATTROOM.md: "Leaderboards, rankings, duels live inside a room — your crew's ladder, not the internet's. No public leaderboards."
  • Rides private by default, shared per-ride opt-in. Anything a board shows about a rider has to survive that rule or argue past it in an ADR.
  • Heart rate never reaches a shared artifact (ADR-0008).
  • Describe, never grade (ADR-0016). Garmin's "Unproductive" is the cautionary tale already on file.
  • No Strava-derived numbers in room-visible state — RESEARCH.md §13.5: Strava data and anything derived from it may be shown only to that athlete, and its AI clause bans ingestion into a context window entirely.

Output

A new ## 14. section in docs/RESEARCH.md matching §13's shape: numbered sub-sections, sources linked inline, claims marked by tier the way §13 does (verified vs extracted vs inline), and a ranked "what to show" list the room and comparison issues can be written against. Anything that turns into a decision rather than a finding becomes an ADR, not a paragraph.

Acceptance criteria

  • docs/RESEARCH.md gains a §14 covering all six questions above, in §13's format and confidence tiers.
  • A ranked list of candidate group/room metrics with the evidence for each.
  • A traps section — the ladder failure modes and the mitigations that shipped elsewhere.
  • A recommendation on the fairness question, including "several boards, no single rank" if that is where the evidence lands.
  • Every claim carries a source; nothing is asserted from taste.
  • Anything that needs deciding rather than knowing is named as an ADR to write, not decided inline.
  • The no-changelog label applies — riders cannot see this.

Related

#992 (epic), docs/RESEARCH.md §13 (the template and the audience profile), ADR-0016, #985 (the presence-privacy argument this overlaps).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

docsdocumentationno-changelogPR is invisible to riders — exempt from the CHANGELOG check

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions