Skip to content

Add Swift team invitations with atomic membership acceptance - #456

Draft
sdairs wants to merge 3 commits into
mainfrom
codex/team-invitations
Draft

sdairs wants to merge 3 commits into
mainfrom
codex/team-invitations

Conversation

@sdairs

@sdairs sdairs commented Oct 2, 2026

Copy link
Copy Markdown
Collaborator

Adds a small authenticated Swift/Vapor 4/Fluent API where seeded team administrators issue recipient-bound invitation secrets, recipients accept once, and administrators revoke pending invitations. Acceptance and membership creation commit together; matching consumed retries return the original membership even after expiry. Row locks arbitrate accept/revoke, while a unique membership constraint and deferred composite FK enforce consistency.

Includes pinned stable packages, native Linux ARM64 build/unit CI, separate owner/migrator/runtime roles, strict bounded DTOs, scoped keyset lists and a setup helper that selects exactly one verified trust anchor from the authenticated Cloud CA bundle. The runtime retains full CA/name verification and SNI; no email delivery, signup or published article is included.

Validated on ClickHouse Managed Postgres 18.6: clean migrations/reversal/reseed; 8 competing accepts one membership; distinct invitation 201/409 race with pending loser; accept/revoke 201/409; forced failure after state update rolls back both writes; pre-expiry request waits across a 3s lock and receives 410; independent unique/composite FK/role controls; actual wrong-root and wrong-hostname driver failures; real runtime-only process restart with original membership replay. Fresh native source resolves/builds and passes 4 unit tests without database credentials. Test Cloud service has been deleted and confirmed absent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant