b2826d595f18fc48ad30d73df24486fe8e366056
Wire notifyAdmins() into finalist lifecycle events so admins receive in-app (+ email when enabled) notifications on each key transition: - finalist.confirm → FINALIST_CONFIRMED - finalist.decline / adminDecline → FINALIST_DECLINED - expirePendingPastDeadline (per row) → FINALIST_EXPIRED - promoteNextWaitlistEntry + manualPromote → FINALIST_WAITLIST_PROMOTED All calls are wrapped in try/catch — comms never throw inside a mutation or cron (CLAUDE.md: "round notifications never throw"). Added project title to the project select where it was missing. Tests: tests/unit/finalist-comms.test.ts — 3 tests passing (TDD). Regression: finalist-confirmation, finalist-admin-confirm, finalist-enrollment — 30 tests all passing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
TypeScript
99.5%
JavaScript
0.2%
Shell
0.2%
CSS
0.1%