What this project ships
- Schema for
commentsparallel toreactions, keyed by(entry_kind, entry_slug)with the newroadmapenum value. - Three visibility states per comment:
private(anonymous → only admins see content),author_public(registered → name + content public), andmutual(both parties consented to reveal each others' names). - Threading by
parent_idwith depth cap (2 levels at most for the MVP). - Moderation primitives: hide, redact, ban-by-token / ban-by-user.
- Optimistic UI on submit; SSR render of the existing thread.
Why
G-035 leaves the comment model open. The capture phase has built the scaffolding (reactions, roadmap surface) without the participation layer that would let registered users actually engage with the governance content beyond reactions. Comments are the smallest addition that turns lurking into participation.
Open sub-questions
- Notification model — do commenters get pinged when their thread is replied to? Email opt-in only?
- Whether comments themselves carry credit weight (G-037).
- Anti-abuse posture for anonymous comments — rate limits, captcha, hCaptcha on submission.
Acceptance criteria (placeholder, pending G-038 calibration)
- Schema migration applied with RLS policies for the three visibility states.
- Server actions: post, edit (registered only, time-windowed), delete (registered only, soft-delete).
- Reading view renders threads with stable timestamps and visibility badges.
- Admin moderation actions wired to the existing requireRole gate.