Using Claude Code, Cursor, or another coding agent? Paste this into your prompt to run cross-browser and real-device tests, debug sessions, and wire up CI on the TestMu AI cloud:
.evidence file is a standard zip. unzip -l <pack> lists it, and unzip -p <pack> <entry> prints one file without extracting the whole pack.
The layout
testrun pack has one tests/<test-id>/ directory per member, all under the same root.
The load-bearing files
Three files are load-bearing at L0, the minimal profile.
At L1, the profile a kane-cli pack validates against, four more artifacts are required once the run is finalized: each test’s
logs/ (with its meta.yaml), each test’s steps/ directory, a global coverage/ directory, and the pack-root failure.yaml.
Reading a pack without unzipping it
The sealed zip is flat: its entries are exactly the contents of the pack directory, withrun.yaml at the archive root and no wrapping folder. Because nothing is solid-compressed, a consumer can read the zip’s central directory and then fetch only the entries it needs.
That is why the hosted viewer opens a very large pack after fetching only a few kilobytes.
Run status and test verdicts
The format keeps two axes separate. Run lifecycle, inrun.yaml.status:
Test verdicts, used at both test level and step level:
The
failed versus broken split is the heart of the model: it separates “the product is wrong” from “we could not tell”. A run can be finalized and still contain failed tests. The lifecycle is not a verdict.
Next steps
- Viewing evidence — open a pack in the viewer.
- Validating packs — check a pack’s integrity.
- The .evidence format — the profiles and the open contract.