Catalogs the existing cookie surface (vwr, pw_, tok_) and extends the #34 HMAC unlock-cookie pattern rather than inventing a new scheme.
Preferences: single prefs JSON cookie (<256 B, server-validated allowlist), driven by #36's settings gear.
Access keys: opt-in extended pw_<id> with Max-Age capped by paste expiry (90-day ceiling, 24 h for burn pastes), ~30-paste eviction for the per-domain cookie budget, no delete authorization from access cookies.
Security accounting: HttpOnly does not stop fetch-based XSS exfiltration (stated honestly); CSP/XFO hardening debt from #34 should land with it; shared-machine and cookie-theft tradeoffs documented.
Recommendation: two separately reviewable pieces, prefs first.
Design note for #30 — no implementation.
- Catalogs the existing cookie surface (vwr, pw_<id>, tok_<id>) and extends the #34 HMAC unlock-cookie pattern rather than inventing a new scheme.
- Preferences: single `prefs` JSON cookie (<256 B, server-validated allowlist), driven by #36's settings gear.
- Access keys: opt-in extended `pw_<id>` with Max-Age capped by paste expiry (90-day ceiling, 24 h for burn pastes), ~30-paste eviction for the per-domain cookie budget, no delete authorization from access cookies.
- Security accounting: HttpOnly does not stop fetch-based XSS exfiltration (stated honestly); CSP/XFO hardening debt from #34 should land with it; shared-machine and cookie-theft tradeoffs documented.
- Recommendation: two separately reviewable pieces, prefs first.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Design note for #30 — no implementation.
prefsJSON cookie (<256 B, server-validated allowlist), driven by #36's settings gear.pw_<id>with Max-Age capped by paste expiry (90-day ceiling, 24 h for burn pastes), ~30-paste eviction for the per-domain cookie budget, no delete authorization from access cookies.Closes #30 (design portion; implementation tracked separately when scheduled).
07950e27acto5a2aa0f96d5a2aa0f96dto03bf327f6b