···
## 🚧 In Progress / Needs Testing
92
-
**Status:** Handlers exist, need comprehensive E2E testing
92
+
**Status:** All core endpoints E2E tested! ✅
94
+
**✅ E2E Tested (via community_e2e_test.go):**
95
+
- [x] `social.coves.community.create` - Full E2E test with real PDS
96
+
- [x] `social.coves.community.get` - E2E test validates HTTP endpoint
97
+
- [x] `social.coves.community.list` - E2E test with pagination/filtering
98
+
- [x] `social.coves.community.update` - E2E test verifies write-forward + PDS update
99
+
- [x] `social.coves.community.subscribe` - E2E test verifies subscription in user's repo
100
+
- [x] `social.coves.community.unsubscribe` - E2E test verifies PDS deletion
103
+
- [ ] `social.coves.community.search` - Handler exists, defer E2E testing to post-alpha
105
+
**⚠️ Remaining Alpha Blocker:**
106
+
- Replace placeholder auth (X-User-DID header) with OAuth context extraction across all endpoints
94
-
- [ ] `social.coves.community.create` - **Handler exists**, needs E2E test with real PDS
95
-
- [ ] `social.coves.community.get` - **Handler exists**, needs E2E test
96
-
- [ ] `social.coves.community.update` - **Handler exists**, needs E2E test with community credentials
97
-
- [ ] `social.coves.community.list` - **Handler exists**, needs E2E test with pagination
98
-
- [ ] `social.coves.community.search` - **Handler exists**, needs E2E test with queries
99
-
- [ ] `social.coves.community.subscribe` - **Handler exists**, needs E2E test
100
-
- [ ] `social.coves.community.unsubscribe` - **Handler exists**, needs E2E test
103
-
- E2E tests that verify complete flow: HTTP → Service → PDS → Firehose → Consumer → DB → HTTP response
104
-
- Test with real PDS instance (not mocked)
105
-
- Verify Jetstream consumer picks up events in real-time
110
+
## ⚠️ Alpha Blockers (Must Complete Before Alpha Launch)
112
+
### Critical Missing Features
113
+
- [ ] **Subscription Visibility Level (1-5 Scale):** Implement feed slider from DOMAIN_KNOWLEDGE.md
114
+
- Lexicon: ✅ Ready ([subscription.json:28-34](internal/atproto/lexicon/social/coves/actor/subscription.json))
115
+
- Service: ❌ Not using `contentVisibility` field
116
+
- Handler: ❌ Subscribe endpoint doesn't accept/store visibility level
117
+
- **Impact:** Users can't control how much content they see from each community
119
+
- [ ] **Community Blocking:** Users can block communities from their feeds
120
+
- Lexicon: ❌ Need new record type (extend `social.coves.actor.block` or create new)
121
+
- Service: ❌ No implementation (`BlockCommunity()` / `UnblockCommunity()`)
122
+
- Handler: ❌ No endpoints
123
+
- Repository: ❌ No methods
124
+
- **Impact:** Users have no way to hide unwanted communities
126
+
### Critical Security (High Priority)
127
+
- [ ] **OAuth Authentication:** Replace placeholder `X-User-DID` header with OAuth context
128
+
- **Currently affected endpoints:** create, update, subscribe, unsubscribe
129
+
- **See:** [PRD_BACKLOG.md P1 Priority](docs/PRD_BACKLOG.md#L42-L50)
131
+
- [ ] **Token Refresh Logic:** Auto-refresh expired PDS access tokens
132
+
- **Impact:** Communities break after ~2 hours when tokens expire
133
+
- **See:** [PRD_BACKLOG.md P1 Priority](docs/PRD_BACKLOG.md#L31-L38)
137
+
## 📍 Beta Features (High Priority - Post Alpha)
**Status:** Lexicon designed, implementation TODO
141
+
**Priority:** HIGHEST for Beta 1
110
-
- [ ] Extend `social.coves.post` lexicon with `community` field
111
-
- [ ] Create post endpoint (with community membership validation?)
143
+
- [ ] `social.coves.post` already has `community` field ✅
144
+
- [ ] Create post endpoint (decide: membership validation?)
- [ ] Feed generation for community posts
- [ ] Post consumer (index community posts from firehose)
- [ ] Community post count tracking
148
+
- [ ] Decide membership requirements for posting
117
-
- Decide membership requirements for posting
118
-
- Design feed generation algorithm
119
-
- Implement post indexing in consumer
120
-
- Add tests for post creation/listing
150
+
**Without posts, communities exist but can't be used!**
124
-
## ⏳ TODO Before V1 Production Launch
154
+
## 📍 Beta Features (Lower Priority)
126
-
### Critical Security & Authorization
127
-
- [ ] **OAuth Middleware:** Protect create/update/delete endpoints
128
-
- [ ] **Authorization Checks:** Verify user is community creator/moderator
129
-
- [ ] **Rate Limiting:** Prevent community creation spam (e.g., 5 per user per hour)
130
-
- [ ] **Handle Collision Detection:** Prevent duplicate community handles
131
-
- [ ] **DID Validation:** Verify DIDs before accepting create requests
132
-
- [ ] **Token Refresh Logic:** Handle expired PDS access tokens
156
+
### Membership System
157
+
**Status:** Lexicon exists, design decisions needed
158
+
**Deferred:** Answer design questions before implementing
160
+
- [ ] Decide: Auto-join on first post vs explicit join?
161
+
- [ ] Decide: Reputation tracking in lexicon vs AppView only?
162
+
- [ ] Implement membership record creation (if explicit join)
163
+
- [ ] Member lists endpoint
164
+
- [ ] Reputation tracking (if in lexicon)
134
-
### Community Discovery & Visibility
135
-
- [ ] **Visibility Enforcement:** Respect public/unlisted/private settings in listings
136
-
- [ ] **Federation Config:** Honor `allowExternalDiscovery` flag
137
-
- [ ] **Search Relevance:** Implement ranking algorithm (members, activity, etc.)
138
-
- [ ] **Directory Endpoint:** Public community directory with filters
166
+
### Community Management
167
+
- [ ] **Community Deletion:** Soft delete / permanent delete
168
+
- [ ] **Wiki System:** Lexicon exists, no implementation
169
+
- [ ] **Advanced Rules:** Separate rules records, moderation config
170
+
- [ ] **Moderator Management:** Assign/remove moderators (governance work)
171
+
- [ ] **Categories:** REMOVE from lexicon and code (not needed)
140
-
### Membership & Participation
141
-
- [ ] **Membership Tracking:** Auto-create membership on first post
142
-
- [ ] **Reputation System:** Track user participation per community
143
-
- [ ] **Subscription → Membership Flow:** Define conversion logic
144
-
- [ ] **Member Lists:** Endpoint to list community members
145
-
- [ ] **Moderator Assignment:** Allow creators to add moderators
174
+
- [ ] **Saved Items:** Save posts/comments for later
175
+
- [ ] **User Flairs:** Per-community user flair (design TBD)
147
-
### Moderation (Basic)
177
+
### Instance Moderation
- [ ] **Delist Community:** Remove from search/directory
- [ ] **Quarantine Community:** Show warning label
- [ ] **Remove Community:** Hide from instance AppView
- [ ] **Moderation Audit Log:** Track all moderation actions
152
-
- [ ] **Admin Endpoints:** Instance operator tools
185
+
## ⏳ TODO Before V1 Production Launch
187
+
### Community Discovery & Visibility
188
+
- [ ] **Visibility Enforcement:** Respect public/unlisted/private settings in listings
189
+
- [ ] **Federation Config:** Honor `allowExternalDiscovery` flag
190
+
- [ ] **Search Relevance:** Implement ranking algorithm (members, activity, etc.)
191
+
- [ ] **Directory Endpoint:** Public community directory with filters
192
+
- [ ] **Rate Limiting:** Prevent community creation spam (e.g., 5 per user per hour)
193
+
- [ ] **Handle Collision Detection:** Prevent duplicate community handles
194
+
- [ ] **DID Validation:** Verify DIDs before accepting create requests
### Token Refresh & Resilience
155
-
- [ ] **Refresh Token Logic:** Auto-refresh expired PDS access tokens
- [ ] **Retry Mechanism:** Retry failed PDS calls with backoff
- [ ] **Credential Rotation:** Periodic password rotation for security
- [ ] **Error Recovery:** Graceful degradation if PDS is unavailable