feat: arbiterGaming self-assign role bot - #3
Merged
Merged
Conversation
Windows checkouts were getting CRLF and failing 'prettier --check' while Linux CI (LF) passed. '* text=auto eol=lf' makes LF the source of truth on every platform; renormalizes the two affected files (no content change). Co-Authored-By: Claude <noreply@anthropic.com>
Second chartered bot (arbiterGaming self-serve roles), scaffolded via tools/new-bot: - Owns exactly 12 roles (7 colors + Helldivers + 3 placeholders + GameNight); ensures them on startup, never touches any other role (the only-12 boundary, guarded at the catalog, handler, and mutation layers). - Select-menu for single-select colors, toggle buttons for game pings; ephemeral confirmations; admin-gated /post-role-menu; menu re-binds after restart via a persisted message id. - Least-privilege intents [Guilds, GuildMembers]; token env-only; no PII. - Reuses @discord-bots/bot-core; adds a generic JsonValueStore. Security-reviewed (only-12 + custom-id forgery resistance + admin gate): 0 critical/high. discord.js v14. CHANGELOG: New arbiterGaming self-assign role bot: pick a color and toggle game-ping roles from a #roles menu. Ref: ADR-0001, ADR-0003 Co-Authored-By: Claude <noreply@anthropic.com>
Sprint 2 artifacts: spec (AC-01..12), executable plan (all ACCEPTED), and the append-only sprint log incl. security-review outcome and the new-bot launch-guard NEEDS-TRIAGE. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Second chartered bot (from discordArbiter's
arbiter-self-assign-botcharter), built via/ca:sprintand scaffolded withtools/new-bot(first real exercise of the per-bot convention). 52 bot tests; full suite 239 green; lint/format/types clean.Behavior
#rolesmenu: a select-menu for colors (single-select — picking one removes any other color) and toggle buttons for game pings + GameNight. Ephemeral confirmations; nothing posted publicly per interaction./post-role-menu; menu re-binds after restart via a persisted message id.Security (elevated surface: Manage Roles + GuildMembers privileged intent)
security-reviewer PASS — 0 critical/high. Make-or-break checks hold:
isManagedRoleguard added per review).selfassign:ping:Adminresolves toundefinedand is rejected.[Guilds, GuildMembers], no-PII, env-only token.Shared changes
@discord-bots/bot-core: new genericJsonValueStore<T>(menu-id persistence)..gitattributes(eol=lf) — fixes Windows-CRLF vs Linux-LFprettier --checkinconsistency.Follow-ups (tracked)
[NEEDS-TRIAGE: new-bot-convention]— the generator + dungeon-herald use a Windows-fragile launch guard (no-ops on Windows; fine on Linux/Docker). Fix in the upcoming Docker PR.[CONFIRM-03]— operator renames the 3 placeholder game-ping roles (Game Slot 2/3/4) before live deploy.[NEEDS-TRIAGE: operator-live-verify]— app setup, role-hierarchy (bot above the 12), Manage Roles invite, run. Seebots/arbiter-self-assign/README.md.🤖 Generated with Claude Code