# `mix gate.verify`
[🔗](https://github.com/riddler/statifier-ex/blob/v2.1.1/lib/mix/tasks/gate.verify.ex#L1)

Runs `mix quality` and attests that what it ran was the full gate.

A green run is not by itself evidence of a green gate: `--profile loop`,
`--test-scope changed`, `--quick` and `--skip` all produce one, and each of
them checks less. ADR-0011 makes reporting such a run as a full gate a
weakening of the gate; this task is how that claim gets checked rather than
remembered.

## Usage

    mix gate.verify

The run passes only when the report says `status: "ok"`, `scope: "all"`, no
profile, and no stage skipped for a reason that names this run rather than the
project. Exit status is 0 when it attests and 1 when it does not.

A stage skipped for a project-level reason (`:sobelow not installed`,
`disabled in .quality.exs`, a custom stage's own skip) is named in the output
but does not fail the attestation: that is a gap in what the project checks at
all, which a fuller run cannot close.

# `execute`

```elixir
@spec execute(argv :: [String.t()], opts :: keyword()) ::
  {:ok, String.t()} | {:error, String.t()}
```

Runs the gate and reports the attestation instead of halting.

`opts[:runner]` replaces the `mix quality` shell-out with a function of an
argument list returning `{output, status}`, mirroring
`Mix.Tasks.Test.Regression`, so tests drive this without a nested gate run.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
