Activity events cannot currently own replies, and the legacy feed runtime conflates conversations, tasks, announcements, and generated activity threads. Introduce a schema-first Conversation V2 API and repository, associate activity replies by ActivityEvent ID, preserve authorization and subscription behavior, and retire FeedRepository and /v1/feed without a compatibility alias. Keep roots and replies as bounded schema-first JSON records with normalized mention and domain projections, retain activity comments indefinitely unless an administrator configures Data Retention, and place MySQL/PostgreSQL migration work in 2.0.0. Migrate backend integration coverage, UI unit coverage, and Playwright use cases while keeping tasks and announcements on their dedicated APIs.
Activity events cannot currently own replies, and the legacy feed runtime conflates conversations, tasks, announcements, and generated activity threads. Introduce a schema-first Conversation V2 API and repository, associate activity replies by ActivityEvent ID, preserve authorization and subscription behavior, and retire FeedRepository and /v1/feed without a compatibility alias. Keep roots and replies as bounded schema-first JSON records with normalized mention and domain projections, retain activity comments indefinitely unless an administrator configures Data Retention, and place MySQL/PostgreSQL migration work in 2.0.0. Migrate backend integration coverage, UI unit coverage, and Playwright use cases while keeping tasks and announcements on their dedicated APIs.