attenlabs/hotato conversation QA

Gate CI on your voice agent's conversations: run hotato suites, tests, or contracts offline.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
suiteWorkspace-relative path to a committed hotato suite file. Exactly one of suite, test, contracts is required.no""
testWorkspace-relative path to a committed conversation-test file. Exactly one of suite, test, contracts is required.no""
contractsWorkspace-relative directory of hotato contract bundles to verify. Exactly one of suite, test, contracts is required.no""
agentAgent id under test (required for suite and test runs); a safe identifier recorded on the results.no""
releaseRelease id the runs are recorded under; defaults to the commit SHA of the triggering workflow.no""
outputWorkspace-relative results directory.no.hotato/results
parallelMax worker threads for a suite run (1 to 64); the default is hotato's own CPU-based cap. The worker count never changes the result bytes.no""
gate-advisorySet true on a test run to pass hotato's --gate-judge flag, opting the exit code into the model-judged rubric lane. Default false; the advisory lane then reports without gating.nofalse
transcriptWorkspace-relative transcript JSON used as evidence for a test run, or as embedded-assertion context for a contracts run.no""
traceWorkspace-relative voice-trace JSONL used as evidence for a test run.no""
stateWorkspace-relative state-adapter sandbox used as evidence for a test run.no""
hotato-versionWhat to install. "action" (default) installs the pinned Action revision itself with zero package-index egress (PYTHONPATH); "preinstalled" skips installation; an exact version such as "1.3.3" installs that pin from PyPI with --no-deps. Ranges and "latest" are refused.noaction
render-recordsRender one share-safe Failure Record per non-passing unit. Set false to disable local artifact generation.notrue
record-limitResource-safety cap on how many Failure Records a single run renders (the first N non-passing units in source order); an integer from 1 to 500. When a run exceeds it the index reports the total and marks the set truncated -- omission is never silent.no100
python-versionPython version for actions/setup-python.no3.12
comment-prOpt in to posting the share-safe contract-verify PR-comment block onto one sticky pull-request comment (applies to a contracts run). Default false: the Action then reads no token and posts nothing. When true, the comment step is fail-open and token-gated -- it updates one comment in place and can never change the gate exit code.nofalse
github-tokenToken used ONLY by the opt-in PR-comment step (comment-pr: true); the workflow must also grant pull-requests: write. Unused when comment-pr is false.no${{ github.token }}
namedescription
outputThe validated workspace-relative results directory.
suite-resultWorkspace-relative path of the machine result JSON (suite-run.json, test-run.json, or contract-verify.json).
summaryWorkspace-relative path of the rendered Markdown summary.
recordsWorkspace-relative Failure Record directory when produced, else empty.
records-indexWorkspace-relative path of the record-set index.json when records were produced, else empty.
records-countThe number of Failure Records rendered, as a string.
records-totalThe total number of non-passing units the source contained, as a string (a rendered count below this means the set was truncated by record-limit).
exit-codeThe hotato process exit code, as a string.
statuspass, fail, inconclusive, or error, read from the machine result (presentation only; the exit code owns the gate).
hotato-versionThe executed hotato package version.
pr-commentWorkspace-relative path of the rendered share-safe PR-comment block on a contracts run (else empty). Presentation only; posting it is the opt-in comment step.