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 →
Node.js 22 / fixed command
.squash/acceptance.test.mjs

node --test .squash/acceptance.test.mjs

base: failing assertion
head: same contract passes
No custom shell command or package test script

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.