What problem does it solve? Event pool features mix two concerns that are easy to blur: pool-layer signals (registrations, capacity estimates) and formed-group outcomes (match scores, theme titles). This Skill keeps those layers separate so pool routes, admin match runs, and group outcome submissions stay correct without accidentally altering scoring logic. ## Core Features & Use Cases - Pool lifecycle and stats semantics: Create or update event pool routes and registration rules while keeping estimatedGroups conservative (floor-based, capped by configured group limits). - Admin match-run operations: Wire the admin surface that runs matching for a pool with execution guards preventing concurrent runs, persisted results before notifications, and proper auth and telemetry. - Group outcome validation: Enforce that outcome submissions come from authenticated group members and that connectionRadar targets only reference members of the same group, with explicit duplicate-submission behavior. - Use Case: When adding a new pool stats field, use this Skill to decide whether it is a pool-layer signal or a historical group outcome, then name and document it so the layers do not blur together. ## Quick Start Ask the assistant to review or modify the event pool routes in apps/server/src/routes/domains/eventPools.ts while keeping scoring logic untouched.