What Hotato validates.
The evidence behind the deterministic Conversation dimension: three checks, each read on its own.
Generated from Hotato 1.0.0 on 2026-07-09: bundled corpus and demo fixtures, not customer calls.
Five stages of evidence, weakest to strongest.
Every finding names its stage and claims only what it shows.
Timing reproducibility, candidate discovery, fixture agreement.
Reproducibility sits outside the ladder: a scorer property, not a finding's maturity.
Timing reproducibilityOutside the ladder
Does the same recording produce the same measurements every run? Yes: no learned weights, no sampling, no RNG. Pin version, audio, and config, and results are byte-stable in CI; a changed result means a pinned input changed.
did_yield, seconds_to_yield, and talk_over_sec with exact thresholds: the measurement is stable, not that 0.51s is the true latency.
Candidate-discovery usefulnessStage 1
Does hotato suite run surface the moments a reviewer wants to check? Each candidate is an overlap or a gap, ranked by size, never a verdict or an intent label.
$ hotato suite run --stereo 02-backchannel-mhm.example.wav --top 5 hotato suite run: 02-backchannel-mhm.example.wav (6.0s, 3 candidate moments) Candidates are timing events. You decide the expected behavior. [ 1] t=2.09s overlap_while_agent_talking overlap=1.58s agent did not go silent [ 2] t=3.19s overlap_while_agent_talking overlap=1.07s agent did not go silent [ 3] t=4.29s overlap_while_agent_talking overlap=0.56s agent did not go silent
A ranked list of timing facts: a quiet region is not proven clean.
Fixture pass-fail agreementStage 3
Once you label the expected behavior, does the verdict agree on the audio? Both failures below are caught, and no single threshold fixes both: a missed interruption and a false stop need opposite repairs.
$ hotato start --demo --no-open --format text 0/2 events pass (failed=2) [FAIL] fd-01-missed-interruption: did_yield=False talk_over=0.25s fix[config]: the agent kept talking over the caller [FAIL] fd-02-backchannel-yielded: did_yield=True t=1.28s trailing_silence=0.46s agent_stop_no_caller fix[engagement-control]: a backchannel was treated as a bid for the floor note: no single sensitivity threshold satisfies this battery exit_code=1
Per fixture: the verdict, the signals behind it, and a named fix class when the failure maps to a config family.
Each mechanism does one job, and names it.
The Conversation scorer measures turn-taking timing to the frame; everything else has its own dimension or your label.
conversation-test.yaml.diagnose names the likely layer.More evidence, one link each
Twelve probe calls
One stock configuration, scored offline, with full timelines and audio.
Demo reportA generated artifact
Two events scored offline, zero pass: a Hotato report.
Trust and limitsThe input contract
Ten input conditions mapped to score, caveat, or refuse.
CorpusEvery clip, licensed
The consent and licensing ledger, MIT and CC BY 4.0 only.
Run the same corpus. Read the same output.
One bundled corpus, three independent commands, byte-stable on a fixed version.
$ uvx hotato start --demo
One recording is enough to start. Get started → · the full corpus →