Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Every entry reports millisecond measurement error and a confusion matrix. See `d

## [Unreleased]

## [1.16.0] - 2026-07-24

### Added
- **`hotato vapi|retell|bland|synthflow|millis health` -- one command from
API key to the fleet health report.** Thin entries over ONE
Expand Down
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ type: software
authors:
- name: "Attention Labs, Inc."
license: MIT
version: 1.15.1
date-released: "2026-07-21"
version: 1.16.0
date-released: "2026-07-24"
repository-code: "https://github.com/attenlabs/hotato"
url: "https://hotato.dev"
keywords:
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: attenlabs/hotato@v1.15.1
- uses: attenlabs/hotato@v1.16.0
with:
contracts: contracts/
hotato-version: 1.15.1
hotato-version: 1.16.0
```

Copy-paste workflow with a commit-SHA pin: [`docs/CI.md`](docs/CI.md).
Expand Down
4 changes: 2 additions & 2 deletions README.pypi.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions atlas/records/addressed-backchannel-yielded.json
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@
"provenance": {
"hotato": {
"name": "hotato",
"version": "1.15.1"
"version": "1.16.0"
},
"inputs": [
{
Expand Down Expand Up @@ -196,7 +196,7 @@
],
"source_result_digest": "sha256:7a691d5993389b47f2b43b7afbe7316bbb0d662e703fa0f8a82e39b93b052c08"
},
"record_id": "sha256:70f0fc141627f293d1ca134f307a0560f41103f43d5ef967b7d27f40c060cb4f",
"record_id": "sha256:4787ed97922e611ce807281df1f69bfcdb55d76459338802c103d9248f8f1b1d",
"reproduction": {
"argv": [
"hotato",
Expand All @@ -222,7 +222,7 @@
"version": "1.0"
},
"reproduction_metadata": {
"hotato_version": "1.15.1",
"hotato_version": "1.16.0",
"reviewer_principal": "hotato-examples",
"working_directory": ".",
"bundle": {
Expand All @@ -240,7 +240,7 @@
"verify_output": "verify.json",
"selector": "fd-02-backchannel-yielded",
"record_out": "record",
"expected_record_id": "sha256:70f0fc141627f293d1ca134f307a0560f41103f43d5ef967b7d27f40c060cb4f"
"expected_record_id": "sha256:4787ed97922e611ce807281df1f69bfcdb55d76459338802c103d9248f8f1b1d"
},
"supersedes": {
"record_id": "sha256:6c5e0e6de73004d8683c0987812d849c46fa9f9f8f204eb4da71e600b636e3a0",
Expand Down Expand Up @@ -268,8 +268,8 @@
},
{
"command": "hotato record render verify.json#fd-02-backchannel-yielded --out record",
"output": "wrote failure record (FAIL, fd-02-backchannel-yielded) to record/: failure-record.html, failure-record.json, failure-record.md, failure-record.svg\nrecord_id: sha256:70f0fc141627f293d1ca134f307a0560f41103f43d5ef967b7d27f40c060cb4f\n"
"output": "wrote failure record (FAIL, fd-02-backchannel-yielded) to record/: failure-record.html, failure-record.json, failure-record.md, failure-record.svg\nrecord_id: sha256:4787ed97922e611ce807281df1f69bfcdb55d76459338802c103d9248f8f1b1d\n"
}
],
"content_digest": "sha256:6efe74abf4d49ceb0d51f8673e174510eff437a89958cbdf90901049e3b36980"
"content_digest": "sha256:fb83dafb6481c1ba84c7c856afd4cb1f547db272a8a2291e43b6cc1813fc0725"
}
12 changes: 6 additions & 6 deletions atlas/records/addressed-interruption-missed.json
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@
"provenance": {
"hotato": {
"name": "hotato",
"version": "1.15.1"
"version": "1.16.0"
},
"inputs": [
{
Expand Down Expand Up @@ -196,7 +196,7 @@
],
"source_result_digest": "sha256:d3ec5aa5bbbdac05ef1ee7ad6d2612afd3916504e313e16df56ea3c334cb1346"
},
"record_id": "sha256:25f01ea209620cbd36b6ec662dfce124eb989f53f303be808c65f2f6d90ed674",
"record_id": "sha256:9dd904467fc84fa46d32def69d073da9110528a055ea094397d60be34120309a",
"reproduction": {
"argv": [
"hotato",
Expand All @@ -222,7 +222,7 @@
"version": "1.0"
},
"reproduction_metadata": {
"hotato_version": "1.15.1",
"hotato_version": "1.16.0",
"reviewer_principal": "hotato-examples",
"working_directory": ".",
"bundle": {
Expand All @@ -242,7 +242,7 @@
"verify_output": "verify.json",
"selector": "fd-01-missed-interruption",
"record_out": "record",
"expected_record_id": "sha256:25f01ea209620cbd36b6ec662dfce124eb989f53f303be808c65f2f6d90ed674"
"expected_record_id": "sha256:9dd904467fc84fa46d32def69d073da9110528a055ea094397d60be34120309a"
},
"supersedes": {
"record_id": "sha256:772fbb2a13addeb5cfbfb82d3c1652b15cb547d004e2db3db4341779c99c4336",
Expand Down Expand Up @@ -270,8 +270,8 @@
},
{
"command": "hotato record render verify.json#fd-01-missed-interruption --out record",
"output": "wrote failure record (FAIL, fd-01-missed-interruption) to record/: failure-record.html, failure-record.json, failure-record.md, failure-record.svg\nrecord_id: sha256:25f01ea209620cbd36b6ec662dfce124eb989f53f303be808c65f2f6d90ed674\n"
"output": "wrote failure record (FAIL, fd-01-missed-interruption) to record/: failure-record.html, failure-record.json, failure-record.md, failure-record.svg\nrecord_id: sha256:9dd904467fc84fa46d32def69d073da9110528a055ea094397d60be34120309a\n"
}
],
"content_digest": "sha256:d38d9900d7e3265b62b96fb05bdcb8189717b239ce5796d35a1cd06bee246967"
"content_digest": "sha256:8e573dac31160650b48580acc78608a61c911dbefb9068f0f9080b5277badfd9"
}
10 changes: 5 additions & 5 deletions docs/CI.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Conversation failed: Agent did not yield; measured talk-over was 2.66 s.

Share in a PR: hotato-failure-record/failure-record.md
Share as an image: hotato-failure-record/failure-record.svg
Verify the record: uvx --from hotato==1.15.1 hotato record verify hotato-failure-record/failure-record.json
Verify the record: uvx --from hotato==1.16.0 hotato record verify hotato-failure-record/failure-record.json
```

Preview it locally, then scaffold the durable gate into your own repository
Expand All @@ -43,11 +43,11 @@ offline -- it runs the pinned Action revision itself off PYTHONPATH (no
pip, no package index), installs no model, no ASR, no Node tool, calls no
external judge, and reads no secret.

Composite Action since v1.4.0. Adopt the current release (v1.15.1), pinned
Composite Action since v1.4.0. Adopt the current release (v1.16.0), pinned
by its full commit SHA; resolve the tag to its SHA first:

```bash
git ls-remote https://github.com/attenlabs/hotato refs/tags/v1.15.1
git ls-remote https://github.com/attenlabs/hotato refs/tags/v1.16.0
```

Then commit this workflow (replace the `attenlabs/hotato` pin with the SHA
Expand All @@ -69,7 +69,7 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- id: hotato
# Pin by full commit SHA (immutable); the comment names the release.
uses: attenlabs/hotato@<full-commit-sha> # v1.15.1
uses: attenlabs/hotato@<full-commit-sha> # v1.16.0
with:
suite: tests/voice/qa.suite.json
agent: support-agent
Expand Down Expand Up @@ -107,7 +107,7 @@ Everything else is optional:
| Value | Effect |
|---|---|
| `action` (default) | Installs the pinned Action revision itself, `--no-deps`, no package-index egress -- exactly the revision your workflow pinned |
| an exact version, e.g. `1.15.1` | `pip install --no-deps hotato==1.15.1` |
| an exact version, e.g. `1.16.0` | `pip install --no-deps hotato==1.16.0` |
| `preinstalled` | Skips installation (hotato is already on the runner) |

A range or `latest` is refused, so the pin always names one exact
Expand Down
2 changes: 1 addition & 1 deletion docs/TRUST-GALLERY.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Trust gallery: eight recordings, eight verdicts

Eight named input conditions, each with the `hotato` output it produces.
Every block below is verbatim CLI output from hotato 1.15.1, offline. The rows
Every block below is verbatim CLI output from hotato 1.16.0, offline. The rows
correspond to the [trust matrix](TRUST-MATRIX.md).

The clean and echo cases use the bundled examples
Expand Down
16 changes: 8 additions & 8 deletions llms-full.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
> --format json` regenerates the same command data straight from the CLI's
> argparse, so it never drifts from the real flags.
>
> Version 1.15.1
> Version 1.16.0

## Start here

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "hotato"
version = "1.15.1"
version = "1.16.0"
description = "Find what broke in your agent calls. Pin it so it never ships again. Local call forensics and regression guards for AI agents: deterministic, byte-reproducible, free, MIT, CI-native. Nothing leaves your machine."
readme = "README.pypi.md"
# Support policy: requires-python is lower-bounded only. There is no upper cap
Expand Down
4 changes: 2 additions & 2 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.attenlabs/hotato",
"description": "Find what broke in your agent calls. Pin it so it never ships again. Local call forensics. MIT.",
"version": "1.15.1",
"version": "1.16.0",
"repository": {
"url": "https://github.com/attenlabs/hotato",
"source": "github",
Expand All @@ -14,7 +14,7 @@
"registryType": "pypi",
"registryBaseUrl": "https://pypi.org",
"identifier": "hotato",
"version": "1.15.1",
"version": "1.16.0",
"runtimeHint": "uvx",
"transport": {
"type": "stdio"
Expand Down
2 changes: 1 addition & 1 deletion src/hotato/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,6 @@
# absent or can describe a DIFFERENT installed copy than the code executing.
# tests/test_version_lockstep.py enforces the match; 0.4.0 shipped
# self-reporting 0.3.1 because nothing did.
__version__ = "1.15.1"
__version__ = "1.16.0"

__all__ = ["run_single", "run_suite", "LIMITS", "SUITE_ID", "__version__"]
Loading