Re mart 100% deployment asks; Coaching accepts utilization P2/M with source schema doc; capability and employment-history rows declared null; survey row declared null:upstream_unavailable
Already shipped
lesson_rate and travel_comp typed columns are live per the 2026-05-19 migration. Cost trio compute is confirmed by Platform's ack memo. No further action on this line.
Coaching-section asks — disposition
P2/M — Utilization hours: coach_capacity_hours, coach_scheduled_hours, coach_idle_hours
Accepted. Source data is available in the current Coaching bronze schema. Platform can wire the silver face against these tables once the derivation logic is documented. The derivation note is below; Coaching's commitment is to land this in the silver schema spec within this sprint.
Source tables and derivation logic:
coach_capacity_hours — derived from coaching.availability_template. For each active template row (status = 'active', effective_start_date ≤ period_end, effective_end_date IS NULL OR effective_end_date ≥ period_start), compute the duration from local_start_time to local_end_time and multiply by the number of calendar days in the period that fall on the matching day_of_week. Subtract any coaching.availability_exception rows of type unavailable that overlap the period for the same coach. Add any coaching.availability_exception rows of type additional that fall within the period.
coach_scheduled_hours — derived from coaching.coach_lesson_booking. Sum lesson duration (lesson_end - lesson_start) for rows where state IN ('locked', 'consumed') and lesson_start falls within the period and coach_id matches. Released reservations (state = 'released') are excluded.
coach_idle_hours — coach_capacity_hours minus coach_scheduled_hours. Negative values are not expected in clean data; Platform should clamp to 0 or surface as a data-quality signal if they occur (would indicate a booking outside declared availability).
Timezone note: AvailabilityTemplate carries a per-row timezone field; CoachLessonBooking stores timestamps in UTC. Platform should normalize to UTC before computing period overlap. The canonical period boundary for aggregation is midnight UTC unless the mart spec names otherwise.
Missing column on CoachLessonBooking: the current coach_lesson_booking table carries lesson_start and lesson_end (see memos/2026/2026-05-17-coaching-silver-source-schema-reply.md). Coaching confirms these columns are present and UTC-typed. Platform can compute duration as lesson_end - lesson_start.
Coaching will file a supplemental silver schema note under contracts/warehouse-silver/coaching-utilization-columns.md as the committed deliverable.
P3/M — coach_idle_hours_by_capability
No capability tagging exists in the Coaching schema today. CoachCertification (coach × certification type) is the closest analog, but certification type is not the same as a capability tag. Until a formal capability taxonomy is introduced, emit null:not_applicable for this metric. Coaching will not object to Platform wiring this as a permanent null:not_applicable in the registry notes.
P3/M — coach_ramp_time_days, coach_tenure_distribution, coach_quality_score
coaching.coach_employment does not exist. These metrics require a coach employment history table (start date, first-active date, quality signal source). Coaching does not have this table and has no current-sprint plan to add it. Declare all three as null:upstream_unavailable in the registry. If a coach employment model is scoped in a future initiative, the activation path is automatic per Platform's notes on the activation pattern.
P3/L — coach_satisfaction_of_platform
No coach feedback or survey table exists. Declare as null:upstream_unavailable. When survey infrastructure lands, Coaching will file a follow-up memo naming the source table and row shape.
Sequence
P2/M utilization documentation first (gates 4 metrics). P3 items are all null:not_applicable or null:upstream_unavailable declarations requiring no silver work — Platform can set these in the registry now if it hasn't already.
Cross-domain dependencies
None from Coaching's side. The utilization hour columns read only from Coaching-owned bronze tables; no cross-domain join is needed at the silver layer.
References
coaching/prisma/schema.prismamodels:AvailabilityTemplate,AvailabilityException,CoachLessonBooking,CoachCertification2026-05-17-coaching-silver-source-schema-reply(confirms column names and grain on the booking projection table)2026-05-19-coaching-silver-rate-column-reply(cost trio commitment; now completed)2026-05-19-platform-coaching-silver-path-a-ack(cost trio went live this round)