RELEASE 0.6.0 + UPDATES 0.6.1 AND 0.6.2 / SEPTEMBER 2026
A passing check proved too little.
I gave showwork a made-up test result. It passed. GolfFly exposed a gap between what my checks observed and what I claimed.

What failed
The original GolfFly brain activity and golf controllers were simulations. The credits said so. Its graphics and publication checks did not prove that a biological connectome controlled golf decisions. I claimed more than the evidence supported.
During the later model integration, a club handoff overwrote the model’s shot. Tests of the model alone missed that controller step. A browser test through the real controller failed before the repair and passed afterward.
| The claim | What the check observed |
|---|---|
| Decisions use a measured graph | m.weights appeared in a file |
| Tests passed and HDR was verified | 2360 appeared in a handwritten JSON file |
Both checks passed against fake files. Neither ran a model, a test suite or a video check. Three claim files also remained uncommitted, and the site had no showwork gate in CI. A stale local installation added confusion, but the string-check failure also reproduced on version 0.5.0.
What changed
- Declare acceptance checks before recording completion claims. A behavior requirement must execute a test. File checks can establish artifact facts only.
- The default close refuses missing or failing acceptance checks. An explicit checks-only close cannot pass the release gate.
- The release gate reruns checks and compares the receipt with committed files. Missing claim definitions, reopened sessions and broken chains fail.
- Reports distinguish individual checks from declared acceptance results. Unlisted requirements remain unknown.
- Command receipts record the exit code, output hashes, script hash, source fingerprint and verifier version.
The 0.6.1 follow-up
Adopting the gate found invalid older receipts. One used a Git commit ID where a ledger hash belonged; other rows had missing or invalid hashes. Those records remain unchanged and their historical audit stays RED.
An optional migration setting pins a reviewed ancestor commit. Every shared legacy file at that commit must remain present and unchanged. The gate can then verify the current session while listing the acknowledged historical failures. New broken receipts, edits to that history and corruption in per-session files still fail. The setting is a policy choice, not repaired historical proof.
This update also moves the final integrity audit after acceptance commands. A test that corrupts a receipt cannot run after the gate’s last audit and still pass.
Read the migration contractTest the failure yourself
The reproducible demo has three stages: matching strings with no accepted outcome, a failing controller test, then the repaired controller passing its test.
git clone https://github.com/bmdhodl/showwork.git
cd showwork
git checkout v0.6.0
python -m pip install -e .
python examples/evidence_scope_demo.pyRelease checks cover forged requirement fields, missing and moved receipts, disabled execution, command provenance, and Windows-to-Linux checkout differences. Browser tests check receipt states and layout at 375, 768 and 1440 pixels. Installed-package smoke tests cover Python 3.10 and 3.13.
Inspect the code and testsThe 0.6.2 runner update
The full website suite passed on fluarmn in 165 seconds, longer than the verifier’s two-minute limit. Version 0.6.2 lets a runner set SHOWWORK_COMMAND_TIMEOUT_SECONDS=300. The receipt records that limit. Invalid settings and timeouts still fail verification. Every declared test still runs.
Upgrade an existing workflow
python -m pip install --upgrade showwork==0.6.2Run showwork doctor to confirm that the imported code and installed package versions agree. Version 0.6.0 changes the default close: old workflows need explicit acceptance requirements.
Declare those requirements with showwork require before adding claims. Finish the session, commit its receipt, then run showwork gate --session YOUR_SESSION --require-tracked. Make that gate a required CI check.
Existing ledgers remain readable. Their old GREEN marks do not become proof of behavior. finish --checks-only records a limited result when that is all the work establishes.
What remains unproved
An author can still omit a requirement or write a useless test. showwork cannot prove that a test matches the user’s request. Review the requirements and test a broken case before trusting a passing one.
Hash chains preserve recorded evidence; they do not make the tests good. Command checks run trusted project code and are not sandboxed. The source fingerprint excludes generated directories, Git pointers, local environment files, logs, symlinks, files over 32 MiB and files beyond its 50,000-file limit.
The release fixes specific gaps. It does not establish that every agent claim is true.