Results

Every tool returns both prose and structuredContent:

json
{
  "outcome": "conformant",
  "passed": 5, "failed": 0, "errored": 0, "skipped": 1,
  "results": [
    { "id": "MPP-11", "name": "...", "status": "PASS",
      "detail": "...", "destructive": false }
  ]
}

outcome is a name, not an exit code — an integer means nothing to an agent, and no-verdict must never be read as conformant. When any check errored, the prose channel carries an explicit caveat that no statement was made about the target's conformance.

A result with "status": "FAIL" also carries fix, what to change for the cause the check found (or the check's general fix), and docs, the check's page on usewasit.dev. An agent can pass fix on to the developer as the next step. Nothing else carries them: a skip or a no-verdict is not a defect.

A result with "status": "ERROR" also carries errorKind, one of unreachable, configuration, setup or harness. setup means a precondition the check needed could not be established — for the channel checks, that one correctly advancing commitment was refused three times running, which a channel in concurrent use produces just as readily as a non-conformant target. An agent should report that as "no verdict", never as a defect, and suggest a re-run against a channel nothing else is paying through.