For technical teams / Runnable acceptance
One contract.
Two commits.
Prove the base fails. Grade the fix against the same frozen test and execution settings.
Make “done” executable.
A new Squash contract uses squash.acceptance/v1. It fixes the runtime, repository-root working directory, test path, dependency setup, command arguments and a 120-second limit.
The exact test bytes and the manifest have separate SHA-256 hashes. Both the failing base verdict and the delivered verdict must bind to those hashes.
Read the acceptance format →.squash/acceptance.test.mjs node --test .squash/acceptance.test.mjs base: failing assertion head: same contract passes
Use a format the runner can reproduce.
Node.js 22
node:test with a fixed .mjs path. Optional npm ci requires a committed lockfile and disables lifecycle scripts.
Python 3.12
Standard-library unittest discovery from .squash/acceptance_test.py. Keep the task within the available runtime and dependencies.
A syntax error, timeout or missing import is not the intended failing base assertion. A test that already passes cannot unlock funding either. A trusted verdict is a result for this contract, not a guarantee about every property of the software.
See the contract in a worked example →Start with one small task.
Bring a public issue and a testable definition of done.