···
- [ ] **Monitoring Guide:** Metrics and alerting setup
- [ ] **Security Checklist:** Pre-launch security audit
174
+
### Infrastructure & DNS
175
+
- [ ] **DNS Wildcard Setup:** Configure `*.communities.coves.social` for community handle resolution
176
+
- [ ] **Well-Known Endpoint:** Implement `.well-known/atproto-did` handler for `*.communities.coves.social` subdomains
## Out of Scope (Future Versions)
···
**Status:** ✅ Implemented and tested
224
-
- `handle` - Scoped handle (`!gaming@coves.social`)
225
-
- `atprotoHandle` - Real atProto handle (`gaming.communities.coves.social`)
226
-
- `name` - Community name
228
+
- `handle` - atProto handle (DNS-resolvable, e.g., `gaming.communities.coves.social`)
229
+
- `name` - Short community name for !mentions (e.g., `gaming`)
- `createdBy` - DID of user who created community
- `hostedBy` - DID of hosting instance
- `visibility` - `"public"`, `"unlisted"`, or `"private"`
- `federation.allowExternalDiscovery` - Boolean
235
+
**Note:** The `!gaming@coves.social` format is derived client-side from `name` + instance for UI display. The `handle` field contains only the DNS-resolvable atProto handle.
- `displayName` - Display name for UI
···
## Technical Decisions Log
285
+
### 2025-10-11: Single Handle Field (atProto-Compliant)
286
+
**Decision:** Use single `handle` field containing DNS-resolvable atProto handle; remove `atprotoHandle` field
289
+
- Matches Bluesky pattern: `app.bsky.actor.profile` has one `handle` field
290
+
- Reduces confusion about which handle is "real"
291
+
- Simplifies lexicon (one field vs two)
292
+
- `!gaming@coves.social` display format is client-side UX concern, not protocol concern
293
+
- Follows separation of concerns: protocol layer uses DNS handles, UI layer formats for display
295
+
**Implementation:**
296
+
- Lexicon: `handle` = `gaming.communities.coves.social` (DNS-resolvable)
297
+
- Client derives display: `!${name}@${instance}` from `name` + parsed instance
298
+
- Rich text facets can encode community mentions with `!` prefix for UX
300
+
**Trade-offs Accepted:**
301
+
- Clients must parse/format for display (but already do this for `@user` mentions)
302
+
- No explicit "display handle" in record (but `displayName` serves this purpose)
### 2025-10-10: V2 Architecture Completed
- Migrated from instance-owned to community-owned repositories