Dev note · contract addition
Choosing this beat over the ordinary voice beat needs a first-scored-take flag, which nothing serves: LessonSummary is per-run and knows nothing about the learner's history. Add a server-owned isFirstScoredTake on the take/summary response (derived from the user's scored-attempt count, evaluated before this attempt is counted) — a client-side "have I shown it yet" bit reinstalls the app and fires twice. Same attemptId + durationMs playback handle as beat 2. The waveform needs an envelope: 12 amplitude buckets off the local PCM, computed on device — no new API.
Sound · the loudest moment in the app, and it is not a verdict
The neutral voice-received signature (to be designed), played at its fullest here — this is the beat it should be designed for. Never the green triad: the cast take is amber, and a CLEAR tone over it would be the false green §2.2 exists to prevent, sounded instead of drawn. Haptic: one soft tick as the waveform lands.