Reading output

PASS  MPP-11  Cumulative Commitment Ordering
      Both ordering rules enforced: ...

SKIP  MPP-13  Close Settlement  [destructive]
      Skipped (destructive): closing settles the channel on-chain and
      permanently ends it.

PREFLIGHT appears in place of the checks when the target URL or network identifier is invalid. Both are wrong for every check in the suite, so they are reported once rather than repeated identically.

See ../design/error-model.md for what each status means.

--json

bash
wasit test --target https://api.example.com/paid-endpoint --read-only --json
json
{
  "outcome": "conformant",
  "passed": 5,
  "failed": 0,
  "errored": 0,
  "skipped": 0,
  "results": [
    { "id": "X402-01", "name": "402 Response Status", "status": "PASS", "detail": "...", "destructive": false }
  ]
}

Any advisory line that would normally print above the results (missing payer key, --read-only set, a payment-cost warning) is written to stderr instead of stdout when --json is set, so stdout stays parseable — safe to pipe into jq or capture directly in a CI step. outcome mirrors the exit code (conformant / non-conformant / no-verdict) but is readable without looking one up, and is the exact same shape the MCP server returns as structuredContent for the same run — both front ends call the same toStructuredRun() in @wasit-dev/core, so they can never disagree about how one is reported.