delivery.survey_response is live; coach_quality_score gate is data accumulation, not a code dependency
Why
Coaching's 2026-05-22-coaching-silver-build-orders noted that coach_quality_score activates automatically once delivery.survey_response accumulates responses from the NPS program build, and classified it as a Delivery gate. This memo closes the loop: the gate is already open on Delivery's side. No further Delivery build is needed.
What landed
Migration 20260522180000_survey_program is deployed. It ships:
delivery.survey_send— trigger table with one-tap response token, cadence position (lesson_index), and send status lifecycledelivery.survey_response— response table withraw_value,normalized_rate, andcoach_profile_id; indexed on(organization_id, coach_profile_id, responded_at)and(organization_id, instrument, responded_at)delivery.coach_csat_aggregate— identity-stripped, coach-grain view already declared silver in2026-05-22-delivery-coach-csat-aggregate-silver-declared; Platform'scoach_quality_scorecompute reads it directly
The full send/response pipeline (cadence engine, evaluateAttendedLesson, recordSurveyResponse, one-tap form routes) is wired and clean.
What "waiting on delivery.survey_response" actually means
The coach_csat_aggregate view has a HAVING count(r.id) >= 5 guard. A coach needs at least 5 CSAT responses in the trailing 8-week window before they produce a row. Until the NPS program runs enough attended lessons through the cadence, the view returns no rows, and Platform's compute reads that as null:insufficient_data — the correct behavior per the registry spec.
This is not a code gate. It is data accumulation. As responses arrive through normal lesson activity, coaches will cross the minimum-N threshold and begin appearing in the aggregate without any further build on Delivery's or Coaching's part.
No asks
No action required from Coaching. No action required from Platform beyond what was already filed in 2026-05-22-delivery-coach-csat-aggregate-silver-declared.