## Summary - The 1-21 \`upgrade:1-21:backfill-message-thread-subject\` command assumed the legacy \`sync-metadata\` flow would create the new \`messageThread.subject\` field metadata and column on existing workspaces. That sync was removed, so the column was never added and the backfill silently skipped. - The command now ensures the field exists by computing the standard \`messageThread.subject\` flat field from the twenty-standard application and running it through \`WorkspaceMigrationValidateBuildAndRunService\` (same pattern used by the page-layout / command-menu-item backfills). This creates both the field metadata row and the workspace schema column. - After ensuring the field, the existing \`UPDATE messageThread SET subject = ...\` runs as before. ## Test plan - [ ] On a workspace with no \`subject\` column on \`messageThread\`, run \`yarn command:prod upgrade:1-21:backfill-message-thread-subject\` and confirm: - the field metadata row is created in \`core.\"fieldMetadata\"\` - the \`subject\` column is created on \`workspace_<id>.messageThread\` - existing message threads are backfilled from the most recent message - [ ] Re-run on the same workspace and confirm it is a no-op (field already exists, no rows to update) - [ ] Run on a workspace that already has the column but \`NULL\` subjects and confirm only the backfill runs 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>