You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Repositioned as the local-first AI engineering platform. hotato is now
described as one platform to trace, evaluate, test, and gate any AI agent on
your machine, over four planes (Observe / Evaluate / Test / Gate), all shipped
in 1.13.0. The turn-taking wedge stays the on-ramp and leads the demo. The
README, PyPI long-description, llms surfaces, CLI description, first-run
screen, AGENTS.md, and package metadata carry the platform identity; the
copy leads with the upside (free at any scale, byte-reproducible, local) and a
direct head-to-head with hosted platforms.
The bundled missed-interruption demo is an audible barge-in. The fd-01
demo clip is a deterministically-synthesized two-channel barge-in in which the
caller takes the floor at 2.0s and the agent talks over them for a measured
2.65s (2.66s at the CLI display). It is labeled as a synthesized fixture, and
the demo report, SDK fixtures, and docs report the same measured numbers.
Added
Six corpus fixtures and conformance checks (community-requested, each
deterministic and built on the existing corpus and say-do infrastructure):
leading-edge-onset: a dropped-leading-audio class where the caller onset
is a short leading burst at the interruption boundary.
structured-utterance: digit-string and email cadences where an intra-item
pause must not be read as the end of the turn.
browser-telephony-parity: one scenario, two renders (a clean browser leg
and a silence-gapped telephony leg) for a parity assertion.
interrupted-tool-call: a say-do fixture bundle (clean-cancel, double-fire,
zombie) for the duplicate-or-discarded side-effect class.
hotato.dtmf_conformance: a pure-stdlib Goertzel check that a claimed DTMF
"sent" is audibly present in the delivered audio at the claimed time.
docs/RFC-ROLEPLAY-FIXTURES.md: the share-safe role-play fixture recipe.
Fixed
run --stereo no longer fabricates a FAIL on byte-identical channels. A
recording whose two channels carry the same signal now routes through the same NOT SCORABLE refusal (exit 2) that trust and investigate use, before
any timing number is emitted. Eligible recordings stay byte-identical.
The transcript scorer refuses adversarial timestamps up front. A negative
timestamp (which indexed before frame 0 and crashed the scorer) and a mistyped
huge end (e.g. 50000s, which built an unbounded per-hop timeline) now each
return a clean usage error (exit 2) instead of a traceback or a runaway
allocation.
investigate label --expect yield on a talk-over catch gates red, as the
docs promise. A caught talk-over above the 1.0s prompt-yield ceiling
auto-pins max_talk_over_sec, so the contract fails the build (exit 1) on the
captured magnitude; prompt-scale yields stay green, and an explicit --max-talk-over still wins.
init --auto prints a verify command that works on its own scaffold. The
suggested next command is now the same shell-guarded no-op the generated CI job
runs, so it succeeds on a freshly scaffolded, empty contracts directory.