Your checkout
Unchangedsession.goreturn expiresAt >= nowTestValid
One existing test. Two cases.
Valid(99, 100)- false
Valid(101, 100)- true
Valid(100, 100)Missing
Agents work in separate copies. Your checkout stays untouched.
Give it a task in your terminal. One agent changes the code. Another tries to break it with a test. You review the patch.
tarigato "Reject expired sessions"Example simulation. No agents run here.
session.goreturn expiresAt >= nowTestValid
One existing test. Two cases.
Valid(99, 100)Valid(101, 100)Valid(100, 100)Missing
Agents work in separate copies. Your checkout stays untouched.
session.goexpiresAtnowtarigato_challenge_test.goOne proposed test. Not accepted yet.
If a repair is allowed, this test stays fixed.
Must pass before the challenger runs.
| Run | Original tests | Challenge test |
|---|
On the final source, with any accepted test.
The code accepts a session at its exact expiry time. The task is to reject it.
Interactive illustration. The expression runs in JavaScript; the agent sessions and Go checks are simulated.
The passing path follows the recorded example. Repair and unstable-test paths are illustrative.
The roles run in order, in separate sessions. Both use Codex by default.
go test -json -count=1 ./...
$ tarigato "Reject sessions when expiry is at or before now"
The original expression matches the requirement except at equality. At exact expiry, the session must be rejected.
ExpressionAccepts
RequirementRejects
100 >= 100
At exact expiry, the candidate accepts an expired session.
This expression is evaluated locally in JavaScript. It is separate from the agent simulation.
Run this example locallyRead the source patch, the test expectation, and the recorded checks. Replay the evidence before applying a change.
Illustrative file previews. The local CLI creates the actual run files.
candidate.patchSource presented to the challengerchanges.patchLatest source patch; final checks are shown separatelytests.patchThe admitted challenge testreport.mdRecorded outcomes and artifact locations~/.tarigato/runs/<id>/
Passing checks provide evidence about tested behavior. You decide whether the test expectation is right and the patch should ship.
Two roles, one controller, and at most one repair.
A stable failing challenge permits one repair. An invalid result stops the run.
The game-theory mechanism is the opposition between the two roles. Their objectives come from instructions; there are no numerical rewards or equilibrium calculations.
Passing checks are evidence about the tested behavior. They do not prove correctness.
Inspect the protocolSource and rules are available on GitHub under AGPL-3.0-only.
Build the CLI, choose your project, and give it a task.
Protected files, test admission, and the one-repair limit.
Trusted repositories, provider access, and what checks cannot prove.
Build from the Tarigato source checkout:
go build -o tarigato ./cmd/tarigato