Home/Maintainer-recorded live probe calls

Twelve maintainer-recorded live probe calls, scored against one default configuration

Twelve calls on one stock assistant, factory settings, recorded 2026-07-06 and scored offline with Hotato.

Scored with Hotato 1.0.0 · artifact captured 2026-07-09 · scripted against corpus revision 33985d1, tagged v0.8.0 · reproduce: score the corpus/probe-defaults clips with hotato

Provenance

Maintainer-recorded scripted calls: one human caller worked from a written script against a synthetic voice assistant, not customer production failures. The labels (what the script called for) come from that script, not a model. Hotato measures timing from the two audio channels only. A field note, named throughout this page, is the operator’s own per-moment observation of what happened on the call, logged separately from that timing measurement; where the two disagree, this page says so, and the measurement is what gets scored. Clips below are MIT licensed, in the repository.

Summary: sixteen scored moments, one page

MomentWhat happenedScored resultJump to
Backchannel (“mhm”, “yeah”), 4 momentsThree of four soft acknowledgements stop the agent as fast as a real interruption, 0.32-0.37s; the fourth, a quieter mhm, is correctly held.Fail · 3 of 4 false yieldsSummary chart →
“Stop.” commandAgent talks 1.26s past the command to its own sentence-end pause; the yield is scored at 1.46s, 0.46s past the 1.0s bound.Fail · 1.46s vs 1.0s boundFull timeline →
Quiet interrupt (half-volume), moment 10aNever crosses the default energy threshold; agent keeps talking through the whole attempt.Fail · missed entirelyDetail →
Quiet interrupt, louder retry, moment 10bSame caller, same call, retried louder: crosses the threshold and yields.Pass · 0.59s talk-overSummary chart →
Thinking pause (4s)Caller falls silent mid-sentence intending to keep the floor; agent reads the silence as turn-end and starts 3.44s in.Not scored pass/fail · latency-onlyDetail →
Correction retryFirst correction attempt not picked up, dead air until the caller re-prompts; the retry lands and yields in 1.16s.Fail · needed a retryDetail →
Hard interrupts, double-talk, greeting overlap (7 moments)Clean floor holds or a genuine interruption is caught, 0.00-0.40s.Pass · 7 of 7Summary chart →
Call 11, clean floor82.5 seconds, no caller-during-agent onset anywhere: the baseline every measurement above departs from.Not scorable · nothing to scoreFunnel verdict →

Every number above is a timing measurement, not an accuracy percentage. Full derivation per moment: manifest.json in the corpus directory linked above.

The measured results, one moment at a time

Bounds, applied uniformly to every should-yield moment: 1.0 second to yield, 1.0 second of talk-over. Sixteen scored moments: nine pass, six fail, one latency-only reading. Call 11, 82.5 seconds with no caller-during-agent onset anywhere, is the clean-floor baseline every measurement below departs from: nothing to score, not counted in the sixteen.

Twelve of the sixteen scored moments

Nine correct handles, three false yields. The default is not broken all the time: most interruptions land in about a third of a second, but three soft backchannels hit that same reflex speed, and no threshold tells them apart from a real interruption.

SUMMARYtalk-over per moment, twelve of sixteen scored moments (a curated subset, not one moment per call)
01 hard interrupt
0.35s
03 soft mhm
held
05b wait, hold on
0.33s
06 double talk
0.40s
08 rapid 1 of 3
0.34s
08 rapid 2 of 3
0.33s
08 rapid 3 of 3
0.00s
10b louder retry
0.59s
12 greeting overlap
0.37s
04 backchannel (1st)
0.32s
04 backchannel (2nd)
0.32s
05a soft yeah
0.37s
Teal: correctly held or yielded. Crimson: a backchannel mistaken for a bid to speak. Moment 03 (soft mhm) scores as held though the operator’s own field note logged it as a yield, one of two places here where the measurement overrules the field note; the other is “Stop.” below. The remaining four moments, “Stop.”, the missed quiet interrupt, the thinking pause, and the correction retry, are detailed further down this page with full timelines.

Two of the twelve, in audio

The same reflex speed, one correct and one not: a genuine interruption caught in 0.35 seconds, a backchannel mistaken for one in 0.34.

PASSmoment 01, loud hard interruption mid-paragraph
0s1s2s3s4s5s6s7s8sCallerAgentonsetyield
yields in 0.35s · moment 01 on the chart above: a loud, unambiguous interruption mid-paragraph, caught as fast as any of the nine correct holds.
Dual channel, embedded here directly, no external file to fetch.
FAILmoment 04, soft backchannel halts the agent mid-word
0s1s2s3s4s5s6s7s8sCallerAgentonsetyield
yields in 0.34s, talk-over 0.32s · moment 04 on the chart above: the caller only signalled “I’m listening” (mhm / right / okay), but the agent stopped mid-thought. Raising a words-to-interrupt threshold to hold through this also raises it past “Stop.”: a discrimination problem, not a threshold problem.
Dual channel, embedded here directly, no external file to fetch.

The moments that expose the funnel

Four of sixteen, each a different shape of failure: a command ignored, a quiet interrupt that never trips the threshold, a thinking pause mistaken for a turn ending, and a correction that needed a retry through dead air.

Here is the whole “Stop.” timeline it is scored from, zeroed at the caller’s command:

DEEP DIVEmoment 02, the full “Stop.” timeline
0s1s bound2s3s4sCallerAgent…8.7s run“Stop.”own pausescored yield 1.46srestarts 3.64s
All four numbers describe this one moment, zeroed at the caller’s “Stop.”: the agent runs 1.26s past it to a pause of its own, scored as a yield at 1.46s, itself already 0.46s past the 1.0s bound (shaded). It speaks again, then restarts the whole paragraph at 3.64s. Field note: the violation lands at the command itself, time zero; the measurement anchors the yield to the agent pause 0.46s past the bound. One event, four timestamps, one fail.
Dual channel, embedded here directly, no external file to fetch.
FAILmoment 10a, quiet interrupt, missed entirely
0s1s2s3s4s5s6s7s8sCallerAgentonset
no yield registers · field note: the quiet interrupt did not trip the default threshold; the agent kept talking.
8 second clip, dual channel, embedded here directly, no external file to fetch.
LATENCYmoment 09, thinking pause (not a barge-in)
0s1s2s3s4s5s6s7s8sCallerAgentpauseagent jumps in
agent starts 3.44s into the caller’s pause · not scored pass or fail: the agent going first, not a barge-in. The caller falls silent mid-sentence to keep the floor; the agent reads the silence as turn-end and jumps in 3.44s later, so the caller talks over it reclaiming the floor. Field note: violated on all 3 takes; the agent treated the trailing “about” as end of turn.
FAILmoment 07, correction
0s1s2s3s4s5s6s7s8sCallerAgentonsetyield
yields in 1.16s, talk-over 1.16s · field note: first correction attempt not picked up; dead air until the operator said “Hello?”; the agent apologized and the correction landed on the retry.

The funnel verdict

The battery fails on both axes at once: it misses a genuine interruption (moment 10a) and false-yields on backchannels (moments 4 and 5) in the same run. Run against the battery, hotato plan reports exactly that, and refuses to propose a threshold change:

hotato plan battery-result.json --stack <platform>
hotato plan [stack] finding=threshold_funnel decision=do_not_tune_single_threshold
  config_only_safe=false  production_apply=false (approval: manual)
  hypothesis: The battery missed a genuine interruption and also stopped for a
  backchannel. One sensitivity threshold cannot satisfy both: raising it to hold
  through backchannels drops real interruptions, lowering it to catch
  interruptions yields to backchannels. The failure class is discrimination,
  not calibration.
  recommended fix class: engagement-control
  platform mutation: performed=false (hotato plan is read-only)

Output from the battery, trimmed to the decision and hypothesis. All sixteen scored moments are measured above; the full untrimmed JSON, with per-event evidence, and the manifest (every onset derivation, the two measurement/field-note disagreements named above) are in the repository: the corpus on GitHub →

Scope

One assistant, one configuration, one date, one scripted caller: enough to demonstrate the threshold funnel, not enough to rank platforms.