Question
What is the auth stack, and how do Discord identity, roles, and bans reach the application?
Settled going in: better-auth with Discord OAuth. Membership of the MCC Discord guild is the gate for writing annotations. Discord roles and bans drive moderation. Reading is always public and never personalised — that is what keeps article pages cacheable. Whether to adopt better-convex (kitcn) is open.
Decide:
- Adopt
better-convex/kitcn, cherry-pick from it, or wire better-auth up directly? Informed by the research ticket. - How Convex verifies identity. Annotations are written client-side straight to Convex, so Convex must authenticate the caller itself. Pin down the mechanism and what
ctx.auth sees. - Guild membership check. At sign-in only, or re-checked? What happens when someone leaves or is banned after signing in — is their session invalidated, are their existing annotations hidden?
- Role sync. Which Discord roles map to which elevated capabilities (promoting a correction inline, resolving threads, deleting, forcing a refetch). Push from the bot, pull on demand, or snapshot at login? How stale can it be?
- Ban sync. Same question, but the freshness bar is higher — a Discord ban should take effect quickly.
- What the site stores about a user — Discord id, display name, avatar. Bear in mind annotations are public and permanent, and people change Discord usernames.
- Sessions and the cached-page constraint. Nothing user-specific may leak into a cached article render. Confirm the chosen stack cannot accidentally make a page dynamic.
Blocked on the better-auth research. Produces the requirements the commanderbot-py change has to satisfy.
Question
What is the auth stack, and how do Discord identity, roles, and bans reach the application?
Settled going in: better-auth with Discord OAuth. Membership of the MCC Discord guild is the gate for writing annotations. Discord roles and bans drive moderation. Reading is always public and never personalised — that is what keeps article pages cacheable. Whether to adopt
better-convex(kitcn) is open.Decide:
better-convex/kitcn, cherry-pick from it, or wire better-auth up directly? Informed by the research ticket.ctx.authsees.Blocked on the better-auth research. Produces the requirements the commanderbot-py change has to satisfy.