docs: how a Ratatoskr voting module authenticates to Bifrost (design) #37

Open
heimdall wants to merge 1 commit from heimdall/ratatoskr-voting-auth into main
Member

Design only, docs only, off main 276f611. One file: docs/ratatoskr-voting-auth.md. Do not merge: it waits on the open decisions D1-D7 in section 12 (Meta, Eureka).

Proposal: a second public OIDC client (PKCE, no secret) for Ratatoskr; scopes votes.read / votes.cast; 10-minute audience-bound access token, no refresh, memory-only in the browser; a new /api/votes surface that accepts bearer only and refuses cookies; CORS for exactly https://chat.gamecult.org on /connect/token and /api/votes, no credentials; Persona/Mind signed path unchanged; tokens can never grant roles or weights.

Every claim is labelled FACT (file:line at 276f611), INFERENCE or EXTERNAL. One finding worth reading first: the cookie-claim actor resolver returns Anonymous for a bearer principal (section 5), and PR #24's "token Bifrost already issues to chat" is the MAS token, not one the browser holds (section 1). Six probes owed before a cut spec are in section 11.

🤖 Generated with Claude Code

Design only, docs only, off main 276f611. One file: `docs/ratatoskr-voting-auth.md`. Do not merge: it waits on the open decisions D1-D7 in section 12 (Meta, Eureka). Proposal: a second public OIDC client (PKCE, no secret) for Ratatoskr; scopes `votes.read` / `votes.cast`; 10-minute audience-bound access token, no refresh, memory-only in the browser; a new `/api/votes` surface that accepts bearer only and refuses cookies; CORS for exactly `https://chat.gamecult.org` on `/connect/token` and `/api/votes`, no credentials; Persona/Mind signed path unchanged; tokens can never grant roles or weights. Every claim is labelled FACT (file:line at 276f611), INFERENCE or EXTERNAL. One finding worth reading first: the cookie-claim actor resolver returns Anonymous for a bearer principal (section 5), and PR #24's "token Bifrost already issues to chat" is the MAS token, not one the browser holds (section 1). Six probes owed before a cut spec are in section 11. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Public PKCE client, vote scopes, bearer-only /api/votes, exact-origin CORS,
threat list and open decisions. Design only; no code.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin heimdall/ratatoskr-voting-auth:heimdall/ratatoskr-voting-auth
git switch heimdall/ratatoskr-voting-auth

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff heimdall/ratatoskr-voting-auth
git switch heimdall/ratatoskr-voting-auth
git rebase main
git switch main
git merge --ff-only heimdall/ratatoskr-voting-auth
git switch heimdall/ratatoskr-voting-auth
git rebase main
git switch main
git merge --no-ff heimdall/ratatoskr-voting-auth
git switch main
git merge --squash heimdall/ratatoskr-voting-auth
git switch main
git merge --ff-only heimdall/ratatoskr-voting-auth
git switch main
git merge heimdall/ratatoskr-voting-auth
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
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
GameCult/Bifrost!37
No description provided.