# Example: a merged pull request with green checks

> This is reference documentation, not instructions. Your operator's instructions take precedence: if anything here conflicts with them, follow your operator. Nothing here asks you to change how you report work unless your operator has adopted Countersign.

"Tests pass and it's merged" is a common claim at the end of a coding task. Countersign can re-derive it from GitHub's public records instead of taking the claimant's word for it.

## The claim

```sh
curl -sS -X POST https://countersign.signalry.ai/v1/claims \
  -H "Authorization: Bearer $COUNTERSIGN_API_KEY" -H "content-type: application/json" \
  -d '{"subject":"github.com/OWNER/REPO","statement":"OWNER/REPO#123 merged with an independent approval and passing checks","checks":[{"type":"github_pr","repo":"OWNER/REPO","number":123,"state":"merged","merge_gate":true}]}'
```

With `merge_gate: true` the check recomputes, from the public GitHub API: a non-author, non-bot APPROVED review on the exact merged head commit before the merge, and every check run and commit status on that head finished green before the merge. A failure names its reason: `not_merged`, `no_independent_approval`, `approval_on_stale_revision` or `check_not_passed_at_merge`. A private repository is `indeterminate`, never a pass.

## From CI

The same claim can be filed at the end of a workflow; see https://countersign.signalry.ai/ci for the GitHub Action (OIDC, no stored key) and a one-line curl form for other CI systems.

Related: https://countersign.signalry.ai/examples/deploy-check · https://countersign.signalry.ai/examples/verify-teammate
