feat: implement ATProto labeler for copyright violations (#385)
* feat: implement ATProto labeler for copyright violations
adds a full ATProto-compliant labeler service that emits signed
`copyright-violation` labels when tracks are flagged by copyright scans.
moderation service (rust):
- add Label struct with DAG-CBOR serialization and secp256k1 signing
- add Postgres database for label storage with sequence numbers
- implement com.atproto.label.queryLabels XRPC endpoint
- implement com.atproto.label.subscribeLabels WebSocket with backfill
- add /emit-label endpoint for backend integration
- add landing page at root URL
- fix: split migrations into separate statements (postgres requirement)
- fix: enable tls-rustls for Neon database connections
backend (python):
- add _emit_copyright_label() to POST labels when tracks flagged
- add labeler_url config setting
- emit label only when track has atproto_record_uri
includes regression tests for label emission behavior.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: update neon project names
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
authored by
zzstoatzz.io
Claude
and committed by
GitHub
04900332
c72fceba