View on GitHub
examples/06_ci_verify/mareforma verify is the trust gate, and it is built to sit inside a real gate.
Its exit codes are stable, so a CI job can branch on them without parsing text.
The gate
Why exit 2 is its own code
Exit1 says a check ran and refused. Exit 2 says the check could not run at
all: no signature to verify, a key that is not enrolled, a bundle that could not be
read. Collapsing the two would let a missing signature pass as a passing build,
which is the failure the separate code exists to prevent. Treat 2 as a failure
unless you have a stated reason to warn instead, and say what that reason is.
The full workflow, including the loop over several claims, is in the example’s
README.