···
**Status:** In Development
5
-
**Last Updated:** 2025-10-10
5
+
**Last Updated:** 2025-10-16
···
## ⚠️ Alpha Blockers (Must Complete Before Alpha Launch)
### Critical Missing Features
115
-
- [ ] **Subscription Visibility Level (1-5 Scale):** Implement feed slider from DOMAIN_KNOWLEDGE.md
116
-
- Lexicon: ✅ Ready ([subscription.json:28-34](internal/atproto/lexicon/social/coves/actor/subscription.json))
117
-
- Service: ❌ Not using `contentVisibility` field
118
-
- Handler: ❌ Subscribe endpoint doesn't accept/store visibility level
119
-
- **Impact:** Users can't control how much content they see from each community
- [ ] **Community Blocking:** Users can block communities from their feeds
- Lexicon: ❌ Need new record type (extend `social.coves.actor.block` or create new)
- Service: ❌ No implementation (`BlockCommunity()` / `UnblockCommunity()`)
···
- Repository: ❌ No methods
- **Impact:** Users have no way to hide unwanted communities
128
-
### Critical Infrastructure (BLOCKING)
129
-
- [ ] **⚠️ Subscription Indexing - NO PRODUCTION CONSUMER**
130
-
- **Status:** Subscriptions write to PDS but are NEVER indexed in AppView
131
-
- **Root Cause:** `CommunityEventConsumer` only runs in tests, not in production
122
+
### ✅ Critical Infrastructure - RESOLVED (2025-10-16)
123
+
- [x] **✅ Subscription Indexing & ContentVisibility - COMPLETE**
124
+
- **Status:** Subscriptions now fully indexed in AppView with feed slider support
125
+
- **Completed:** 2025-10-16
126
+
- **What Was Fixed:**
127
+
1. ✅ Fixed critical collection name bug (`social.coves.actor.subscription` → `social.coves.community.subscription`)
128
+
2. ✅ Implemented ContentVisibility (1-5 slider) across all layers (handler, service, consumer, repository)
129
+
3. ✅ Production Jetstream consumer now running ([cmd/server/main.go:220-243](cmd/server/main.go#L220-L243))
130
+
4. ✅ Migration 008 adds `content_visibility` column with defaults and constraints
131
+
5. ✅ Atomic subscriber count updates (SubscribeWithCount/UnsubscribeWithCount)
132
+
6. ✅ DELETE operations properly handled (unsubscribe indexing)
133
+
7. ✅ Idempotent operations (safe for Jetstream event replays)
134
+
8. ✅ atProto naming compliance: singular namespace + `subject` field
133
-
- ❌ Users CAN subscribe/unsubscribe (writes to their PDS repo) ✅
134
-
- ❌ AppView has NO KNOWLEDGE of subscriptions (not consuming from Jetstream)
135
-
- ❌ Cannot query user's subscriptions (data doesn't exist in AppView)
136
-
- ❌ Feed generation impossible (don't know who's subscribed to what)
137
-
- **Required Fixes:**
138
-
1. Start `CommunityEventConsumer` in production ([cmd/server/main.go](cmd/server/main.go))
139
-
2. Subscribe to local Jetstream: `ws://localhost:6008/subscribe?wantedCollections=social.coves.community.subscribe`
140
-
3. Fix unsubscribe handler - should handle `delete` operation on `social.coves.community.subscribe`, NOT a separate collection
141
-
4. Remove incorrect `social.coves.community.unsubscribe` case ([community_consumer.go:40](internal/atproto/jetstream/community_consumer.go#L40))
136
+
- ✅ Users CAN subscribe/unsubscribe (writes to their PDS repo)
137
+
- ✅ AppView INDEXES subscriptions from Jetstream in real-time
138
+
- ✅ Can query user's subscriptions (data persisted with contentVisibility)
139
+
- ✅ Feed generation ENABLED (know who's subscribed with visibility preferences)
140
+
- ✅ Subscriber counts accurate (atomic updates)
142
+
- ✅ 13 comprehensive integration tests (subscription_indexing_test.go) - ALL PASSING
143
+
- ✅ Enhanced E2E tests verify complete flow (HTTP → PDS → Jetstream → AppView)
144
+
- ✅ ContentVisibility clamping tested (0→1, 10→5, defaults to 3)
145
+
- ✅ Idempotency verified (duplicate events handled gracefully)
143
-
- Consumer: [internal/atproto/jetstream/community_consumer.go](internal/atproto/jetstream/community_consumer.go) (exists, needs fixes)
144
-
- Server: [cmd/server/main.go](cmd/server/main.go) (needs to instantiate consumer)
145
-
- **See:** Issue discovered 2025-10-16 during OAuth user token implementation
147
+
- Implementation Doc: [docs/IMPLEMENTATION_SUBSCRIPTION_INDEXING.md](docs/IMPLEMENTATION_SUBSCRIPTION_INDEXING.md)
148
+
- Lexicon: [internal/atproto/lexicon/social/coves/community/subscription.json](internal/atproto/lexicon/social/coves/community/subscription.json)
149
+
- Consumer: [internal/atproto/jetstream/community_consumer.go](internal/atproto/jetstream/community_consumer.go)
150
+
- Connector: [internal/atproto/jetstream/community_jetstream_connector.go](internal/atproto/jetstream/community_jetstream_connector.go)
151
+
- Migration: [internal/db/migrations/008_add_content_visibility_to_subscriptions.sql](internal/db/migrations/008_add_content_visibility_to_subscriptions.sql)
152
+
- Tests: [tests/integration/subscription_indexing_test.go](tests/integration/subscription_indexing_test.go)
### Critical Security (High Priority)
- [x] **OAuth Authentication:** ✅ COMPLETE - User access tokens flow end-to-end