Bare-id OAuth state for shared playgrounds + reconciliation tests

Merged
TP
21d ago
+326-1

Members log in from the bare-id join cookie, which the callback gate rejected outright (members could never finish login on a canonical-hosted playground). Accepting it naively would let the canonical flow treat a foreign object as the caller's pre-login device (export + clear), so bare-id states on non-shared objects are still refused before any adoption runs.

New tests/sharing-canonical.test.ts (8 tests) pins the sharing x canonical reconciliation: invite id shape, join routing, member-token git ops, member/non-member callback, migration skip, bare-id anonymity, bare-id callback rejection.


Summary by cubic

Members logging in from a shared playground's bare-id join cookie can now finish GitHub OAuth โ€” the callback previously rejected bare-id states outright. Bare-id states on non-shared objects are still refused before any adoption runs, so the canonical flow never treats a foreign object as the caller's pre-login device.

Tests

  • Adds tests/sharing-canonical.test.ts pinning sharing x canonical reconciliation: invite id shape, join routing, member-token git ops, member/non-member callbacks, migration skip, and bare-id anonymity and rejection.