Skip to main content
InternalMarkdown

Architecture Decision Records

One decision per file. Template: ../adr-template.md. Do not rewrite a decided ADR in place; mark it superseded and add a new number.

ADRTitleStatus
0001Generic party modelAccepted
0002Random pairwise external IDsAccepted (prefix → 0013)
0003Session JWT at boundarySuperseded by 0015, 0016
0004Async-first ingestionAccepted
0005Phased event logAccepted
0006Large batches via object storageAccepted
0007Versioned campaign configurationAccepted
0008At-least-once + idempotencyAccepted
0009Mandatory one-time linkAccepted
0010Linking unifies relationshipsAccepted
0011IAM authenticates; PlayerPal owns identityAccepted
0012Never receive player email/name/phoneAccepted
0013Typed pairwise aliasesAccepted
0014Provider-operator alias scopeAccepted
0015Async loyalty sidecarAccepted
0016BFF cookies and machine OAuthAccepted
0017Assertion + popup linkingAccepted
0018URL-isolated portalsAccepted
0019Scoped proofs and controlled mergeAccepted
0020Assurance A0-A3Accepted
0021NestJS control plane + ZITADEL local POCAccepted
0022Official Login app fork for portal sign-inAccepted (player password/passkey path → 0024)
0023TypeORM data layer + DDL ownershipAccepted
0024Nest-owned portal password/passkey + social IdPAccepted
0025Provider launch sessions + PlayerPal widget distributionAccepted
0026Random analytics subject + provider-global cohort (not alias)Accepted
0027Mint aliases at link complete for listed integrationsAccepted
0028v1 recovery without operator assistAccepted
0029Application-native authorization for v1Accepted
0030Unlink and Delete Account on PlayerPal AccountAccepted
0031Group Connected partners; confirm names the cascadeAccepted
0032Demo Bucks unlink notice and alias reconcileAccepted
0033Partner KPI platform: visibility tiers, anonymous comparison, Cube behind NestAccepted
0034Documentation site: Docusaurus + OpenAPI + Scalar, internal firstAccepted