A community based topic aggregation platform built on atproto

feat(lexicon): make moderationType extensible in community.profile

- Change moderationType from closed enum to knownValues
- Add to required fields (critical before alpha - can't add required later)
- Add default value "moderator" for alpha simplicity
- Add maxLength constraint per atProto style guide

This enables future moderation types without schema migration:
- "sortition" - Community tribunal (Beta Phase 1)
- "instance-labeler" - Instance moderation service
- "third-party-labeler" - External moderation DID

Per atProto style guide: enum sets cannot be extended without breaking
schema evolution. knownValues provides flexible alternative.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

Changed files
+7 -4
internal
atproto
lexicon
social
coves
community
+7 -4
internal/atproto/lexicon/social/coves/community/profile.json
···
"key": "literal:self",
"record": {
"type": "object",
-
"required": ["handle", "name", "createdAt", "createdBy", "hostedBy", "visibility"],
+
"required": ["handle", "name", "createdAt", "createdBy", "hostedBy", "visibility", "moderationType"],
"properties": {
"handle": {
"type": "string",
···
},
"visibility": {
"type": "string",
-
"enum": ["public", "unlisted", "private"],
+
"knownValues": ["public", "unlisted", "private"],
"default": "public",
+
"maxLength": 64,
"description": "Community visibility level"
},
"federation": {
···
},
"moderationType": {
"type": "string",
-
"enum": ["moderator", "sortition"],
-
"description": "Type of moderation system"
+
"knownValues": ["moderator", "sortition"],
+
"default": "moderator",
+
"maxLength": 64,
+
"description": "Type of moderation system (moderator=traditional moderator team, sortition=community tribunal)"
},
"contentWarnings": {
"type": "array",