The policy
runnable
The code
Locally, and in the recipe’s directory, the check is one command:runnable file=run.sh
install defaults to
ctrlrun, unpinned, so the job takes whatever PyPI serves that day. Add
install: ctrlrun==0.6.1 to pin the tool too, and pin CTRLRun/ctrlrun by commit rather than
by tag where you want a ref nobody can move.
What the agent sees
The agent sees nothing; this is the operator’s check. The build sees:k8s.delete_namespace because verify takes
the first action that fits each scenario in alphabetical order; which one appears says nothing
about it. The policy line is the resolved absolute path, so yours will differ.
Four guarantees are not applicable: no authority: section (G8, G9), no second clock in a
scratch store (G13), no max_attempts to refuse past (G15). Each is listed with its reason and
excluded from the denominator. Green means nothing that could be checked was wrong.
The receipt
The report is the receipt:--json writes a ctrlrun.verify/v1 document and --junit a
JUnit file, and the action uploads both with the badge JSON as one artifact. Exit 0 means every
applicable guarantee passed; 1 a failure; 2 a refused or unusable configuration, including
mode: observe and a policy in which nothing can be exercised; 3 an internal error.
When an AMBIGUOUS appears
Verify’s G5 and G10 make an ambiguous effect on purpose, in the scratch store, and assert that a blind retry is refused. Your store is never opened, so nothing here can leave a real effect ambiguous. AnAMBIGUOUS in your own store is the agent’s, and the
resolve recipe is for it.
Run it
The policy and the code above are also a directory in the repository, extracted from this page and run in CI against a fake remote:Next
- Verify in CI: inputs, outputs and publishing the badge.
- Exit codes · Get started · Why.