Tests and review tell you a change does what it says. An outcome contract says what should be true once it ships, and how anyone would know: which journeys pass, which error stops appearing, on which routes, after how much traffic and for how long.
Every new task has one. It belongs to the person who asked for the work, never to the agent that ships it, so the agent that does the work cannot redefine success.
Where you see it
Open the task in Factory. The Outcome contracts card shows each contract with its kind, version, state, success condition, the exposure it needs and how long it is watched.
How a contract starts
Coroid drafts the technical contract when the task is created, from what the request already says:
- From acceptance criteria. A task with acceptance criteria — from its specification or its plan — gets a draft whose success condition is that those journeys pass, checked by a browser test.
- From a signal. A request that came from monitoring, an automation or the
work intake API carries the signal behind it: the error, alert or issue. Its
contract says that signal goes silent — no new event with that fingerprint
from that source — once the change has served enough requests on the affected
routes, and stays silent for 24 hours. The request has to name the routes and
the request count; see the
signalfield of the work intake API. - From nothing measurable. Without acceptance criteria or a signal with routes and a count, the contract is created final and unmeasurable. It says so instead of pretending.
This applies to every task, including tasks Coroid creates itself as parts of a plan, from automations or as repairs. Tasks that existed before contracts were introduced do not have one.
Finalizing and changing a contract
A draft can be edited. Finalize fixes it. After that, New version saves a change as the next version and keeps the earlier one, so you can always see what was promised when the work started.
Only the person who requested the work can write its contracts, or, for work admitted under a mandate, the mandate's owner. Agents and service accounts cannot create, edit or finalize a contract.
Results
A contract ends with one of four results:
| Result | Meaning |
|---|---|
| Verified | The success condition held, after the required exposure and window. |
| Unmet | It did not. |
| Inconclusive | The change never reached enough exposure to tell. |
| Unmeasurable | Nothing could measure it. |
Contracts and merging
A contract never merges anything and never blocks a merge. Merging stays a person's decision, as described in Review and merge the result. The contract is the record of what that merge was supposed to achieve.