Skip to content

Commit 5d8bf11

Browse files
authored
Update ADR docs to reflect profile message system (#569)
ADR 005 rewritten to document the current architecture: profiles stored as ProfileUpdate/ProfileSnapshot XMTP messages instead of appData. Covers message-primary reads with appData gap-fill, snapshot triggers, typed metadata, JoinRequest content type, MemberKind enum, encrypted avatar references, and migration phases. Cross-references updated in ADRs 001-004, 007, 009 to reflect that profiles no longer share the 8KB appData space.
1 parent ce2af10 commit 5d8bf11

7 files changed

Lines changed: 205 additions & 253 deletions

‎docs/adr/001-invite-system-architecture.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ Key design decisions:
177177
### Negative
178178

179179
- **Complexity:** Cryptographic operations and multi-stage encoding add implementation complexity
180-
- **8KB Metadata Limit:** XMTP appData field constrains amount of metadata (tags, profiles, expiration)
180+
- **8KB Metadata Limit:** XMTP appData field constrains amount of metadata (tags, expiration). Profiles were moved to dedicated XMTP messages (see ADR 005), freeing significant appData space.
181181
- **No Centralized Analytics:** Can't track invite usage without backend
182182
- **Revocation Lag:** Updating invite tag only affects future joins, can't force-expire already-shared invites
183183

@@ -225,7 +225,7 @@ While the creator's inbox ID is visible in invites, this is not a privacy concer
225225
- ADR 002: Per-Conversation Identity Model (explains the per-conversation inbox architecture used for invite creators)
226226
- ADR 003: Inbox Lifecycle Management (explains how pre-created inboxes optimize the join flow)
227227
- ADR 004: Conversation Explode Feature (join error feedback follows the same custom content type codec pattern)
228-
- ADR 005: Profile Storage in Conversation Metadata (also uses XMTP custom metadata, shares the 8KB appData limit)
228+
- ADR 005: Member Profile System (profiles moved to XMTP messages; appData no longer shared with profiles)
229229

230230
## References
231231

‎docs/adr/002-per-conversation-identity-model.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ This ensures complete data removal when a conversation is deleted.
236236
**Related ADRs:**
237237
- ADR 003: Inbox Lifecycle Management (for pre-creation cache, LRU eviction, sleep/wake patterns)
238238
- ADR 004: Explode Feature (explains how destroying an inbox destroys the conversation's cryptographic identity)
239-
- ADR 005: Profile Storage in Conversation Metadata (explains how per-conversation identities enable per-conversation profiles)
239+
- ADR 005: Member Profile System (per-conversation identities enable per-conversation profiles via ProfileUpdate messages)
240240

241241
## References
242242

‎docs/adr/003-inbox-lifecycle-management.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ After eviction completes, we double-check state before proceeding since another
414414
**Related ADRs:**
415415
- ADR 002: Per-Conversation Identity Model (explains why lifecycle management is needed)
416416
- ADR 004: Explode Feature (uses inbox deletion process for conversation explosions)
417-
- ADR 005: Profile Storage in Conversation Metadata (per-conversation profiles rely on per-conversation identities)
417+
- ADR 005: Member Profile System (per-conversation profiles rely on per-conversation identities)
418418

419419
## References
420420

‎docs/adr/004-explode-feature.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ However, the per-conversation identity model provides cryptographic assurance: e
328328

329329
- ADR 002: Per-Conversation Identity Model (explains why destroying the inbox destroys the conversation's cryptographic identity)
330330
- ADR 003: Inbox Lifecycle Management (explains inbox deletion process)
331-
- ADR 005: Profile Storage in Conversation Metadata (also uses XMTP custom metadata for expiration timestamps)
331+
- ADR 005: Member Profile System (profiles use XMTP messages; expiration timestamps remain in appData)
332332

333333
## References
334334

0 commit comments

Comments
 (0)