[Backlog] Safety tools: Lines & Veils registry and anonymous topic flag #121

Open
opened 2026-07-14 19:55:06 +00:00 by claude-bot · 0 comments
Contributor

Context / Motivation

Research/product brief. Quest Board has no safety-tools surface. A campaign-level Lines & Veils registry plus an anonymous concern channel is the standard, low-ceremony toolset for long-running groups. Prior art (conceptual grounding, not code): the TTRPG Safety Toolkit (Kienna Shaw & Lauren Bryant-Monk), the X-Card (John Stavropoulos).

Spec (starting sketch)

Registry

  • SafetyEntry: campaign_id, kind: line (hard limit, never in play) | veil (fade-to-black), text, created_at. GM-editable (add/edit/remove); visible to all campaign members on the campaign page.
  • Anonymous player suggestions: members can suggest an entry anonymously. True anonymity is a schema decision, not a UI promise: the suggestion table stores no author FK and no request metadata — just campaign_id, suggested kind, text, created_at. Document this explicitly in the model docstring so a later "who suggested this" feature can't be bolted on quietly.
  • GM reviews suggestions (accept → becomes a registry entry; dismiss → deleted).

Anonymous concern flag

  • A "flag a concern to the GM" action on the session page (and optionally a bot DM command, e.g. /concern, delivering via DM so nothing appears in channel): free-text, delivered to the GM (web notification/inbox on the campaign page; optionally bot DM to the GM), stored with no identity — same no-author rule.
  • Rate-limit per session per client to blunt abuse without identifying anyone (accept the tension; note it in the issue).

UI placement: campaign page "Safety" panel (registry + suggest box); session page flag button; GM sees pending suggestions/flags with a badge.

Out of scope

  • Enforcement/automation (e.g. scanning transcripts for registry topics).
  • Per-session opt-in consent flows (the project's consent model is standing consent — do not add consent gates).

Open questions

  • Should the pre-session reminder include a "check the safety registry" line when the registry is non-empty (pairs with the recap-in-reminder work)?
  • Does the bot DM path add enough value over web-only to justify the surface (DM permissions, user lookup)?
  • Should flags auto-expire/archive after the session completes?

Acceptance criteria (for when this is pulled)

  • Registry CRUD (GM) + member-visible rendering; suggestions and flags verifiably store no author identity (schema-level test: no author column exists).
  • Anonymous suggestion → GM review → registry entry flow works end to end.
  • Flag reaches the GM without identity in any log line (check request logging).

References

  • webapp/backend/app/routers/campaigns.py:3172-3390 (campaign-scoped panel CRUD pattern to follow)
  • bot/questboard_bot/cogs/sessions.py (slash-command precedent for an optional /concern)
  • CLAUDE.md consent model (standing consent; announcement-only — no consent gates)

Filed from the July 2026 full-project review.

## Context / Motivation Research/product brief. Quest Board has no safety-tools surface. A campaign-level Lines & Veils registry plus an anonymous concern channel is the standard, low-ceremony toolset for long-running groups. Prior art (conceptual grounding, not code): the TTRPG Safety Toolkit (Kienna Shaw & Lauren Bryant-Monk), the X-Card (John Stavropoulos). ## Spec (starting sketch) **Registry** - `SafetyEntry`: `campaign_id`, `kind`: `line` (hard limit, never in play) | `veil` (fade-to-black), `text`, `created_at`. GM-editable (add/edit/remove); visible to **all** campaign members on the campaign page. - **Anonymous player suggestions**: members can suggest an entry anonymously. True anonymity is a schema decision, not a UI promise: the suggestion table stores **no author FK and no request metadata** — just `campaign_id`, suggested `kind`, `text`, `created_at`. Document this explicitly in the model docstring so a later "who suggested this" feature can't be bolted on quietly. - GM reviews suggestions (accept → becomes a registry entry; dismiss → deleted). **Anonymous concern flag** - A "flag a concern to the GM" action on the session page (and optionally a bot DM command, e.g. `/concern`, delivering via DM so nothing appears in channel): free-text, delivered to the GM (web notification/inbox on the campaign page; optionally bot DM to the GM), stored with **no identity** — same no-author rule. - Rate-limit per session per client to blunt abuse without identifying anyone (accept the tension; note it in the issue). **UI placement**: campaign page "Safety" panel (registry + suggest box); session page flag button; GM sees pending suggestions/flags with a badge. ## Out of scope - Enforcement/automation (e.g. scanning transcripts for registry topics). - Per-session opt-in consent flows (the project's consent model is standing consent — do not add consent gates). ## Open questions - Should the pre-session reminder include a "check the safety registry" line when the registry is non-empty (pairs with the recap-in-reminder work)? - Does the bot DM path add enough value over web-only to justify the surface (DM permissions, user lookup)? - Should flags auto-expire/archive after the session completes? ## Acceptance criteria (for when this is pulled) - Registry CRUD (GM) + member-visible rendering; suggestions and flags verifiably store no author identity (schema-level test: no author column exists). - Anonymous suggestion → GM review → registry entry flow works end to end. - Flag reaches the GM without identity in any log line (check request logging). ## References - `webapp/backend/app/routers/campaigns.py:3172-3390` (campaign-scoped panel CRUD pattern to follow) - `bot/questboard_bot/cogs/sessions.py` (slash-command precedent for an optional `/concern`) - CLAUDE.md consent model (standing consent; announcement-only — no consent gates) _Filed from the July 2026 full-project review._
claude-bot changed title from [Backlog] Safety tools: Lines & Veils registry and anonymous topic flag to [Backlog] Safety tools: Lines & Veils registry and anonymous topic flag 2026-07-14 19:55:16 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#121
No description provided.