ParentPerform.tsx contains zero IDP entry points. grep ParentIDPReport src/ → 0 hits.AthleteIDPReport.tsx:34-35 hardcodes playerId = user?.id (parent's own ID, not child's). SpotlightTab.tsx:163 + PerformanceHistoryViewer.tsx:128 gate entry behind currentRole !== 'parent' / isSelfView.TeamManagementTab.tsx with Team Settings edit, intensity controls, search, status badges, desktop table, inactive-athletes. Make Announcement is a toast.info() stub. AthleteDetailsBottomSheet missing every age-aware field.TeamManagementTab.tsx (48 KB unchanged), TeamManagementTab.tsx:791 stub, AthleteDetailsBottomSheet.tsx:206-260 (no age/guardian/message/attendance/trend).AdminTab.tsx:67-122 — 4 navigation cards. Each one history.push'es back to Team tab or toasts “coming soon”. Framework buttons trigger stubFrameworkChange. No ExplorePerform.tsx exists.AdminTab.tsx:80-86 literally reads “Currently lives in the Team tab; will move here in a follow-up” — despite bead eo7l.26 being marked CLOSED.src/constants/evalTypes.ts.EVAL_TYPE_LABELS = {pre:'Prepare', post:'Reflect', coach:'Feedback'}). grep EVAL_TYPE_LABELS src/ → zero external consumers.createEvent.tsx:651, EventDetails.tsx:578, QuickAddEventPage.tsx:442, CreateEventFormSection.tsx:462-489, EventCardSection.tsx:502, CoachEvaluationTab.tsx, CoachFeedbackViewTab.tsx:460, MemberEventDetails.tsx:1084,1110, PostEvalJourney.tsx:260,266, PerformanceChart.tsx:20-21, ShadowEventDetailCard.tsx:129, ShadowEventCard.tsx:903.grep -i "scorers|commentary|announcement" in StandardEventCard.tsx + CoachSpotlightTab.tsx = 0 hits.| Issue | Title | ✓ | ⚠ | ✕ |
|---|---|---|---|---|
| #2568 | Coach Perform: 5-tab bottom nav (Pulse-V2 pattern) | 4 | 1 | 0 |
| #2569 | Coach Spotlight redesign | 4 | 4 | 1 |
| #2570 | Coach Events: search + upcoming/past | 4 | 0 | 2 |
| #2571 | Coach History: match stats + framework gaps | 4 | 2 | 0 |
| #2572 | Coach Team: roster + IDP + age-aware contact | 3 | 3 | 3 |
| #2573 | Language audit: Pre/Post/Coach → Prepare/Reflect/Feedback | 2 | 1 | 4 |
| #2574 | Coach Admin: team settings + intensity + framework + clubs | 2 | 2 | 3 |
| #2575 | Athlete & Parent Perform: 4-tab bottom nav | 4 | 1 | 0 |
| #2576 | Athlete & Parent Spotlight declutter | 7 | 1 | 1 |
| #2577 | Athlete & Parent Events: search + split | 7 | 0 | 0 |
| #2578 | Athlete & Parent History: stats + framework grid | 6 | 0 | 1 |
| #2579 | Athlete IDP: real data into Development Report | 7 | 1 | 0 |
| #2580 | Athlete & Parent Team tab: teammates + coach info | 7 | 2 | 0 |
| #2581 | Parent IDP: view child's report (OPEN) | 0 | 0 | 6 |
shotclubhouse-ag-eo7l.26 — lift Player Intensity to AdminTab. Code state contradicts: AdminTab.tsx:80-86 still defers to Team tab.
· Coach Admin section, P2
shotclubhouse-ag-eo7l.11 — B6 Coach Team tab. Closed with 4+ TODOs explicitly surfaced in epic close-reason as “KNOWN FOLLOW-UPS”.
· Coach Team tab, P1 surface
shotclubhouse-ag-eo7l.20 — B7 Coach Admin. Closed as navigation hub, not admin surface; no ExplorePerform.tsx ever created.
· Coach Admin tab, P2
shotclubhouse-ag-eo7l.21 — B12 Athlete IDP. Athlete self-view works, but parent self-view path was explicitly punted (matches #2581 still being OPEN).
· Parent IDP, P0
When Stevie reports a flaw, run through this rubric in order. Each step gives you a concrete artifact to act on.
.agents/scratch/perform-feature-audit.md, jump to the issue's sub-table, find the closest feature description. Status column tells you ✓/⚠/✕ and code site.bd show shotclubhouse-ag-eo7l.<N>. If marked CLOSED falsely, reopen with bd update <id> --status=open --notes="reopened per audit — <reason>".file:line refs. Open in editor, write the fix.playwright/tests/perform/<area>.spec.ts (create if missing).