Result adapters

All adapters produce the same Result Protocol and reporting path.

Exit code

Omit results to map a successful command to passed and any other outcome to a distinct command failure. No report file is required.

An exit-code adapter may optionally read captured UTF-8 command output:

run: |
  mkdir -p reports
  set -o pipefail
  make check 2>&1 | tee reports/check.log
results:
  exit-code: reports/check.log
policy:
  approvals:
    node: true

The captured output becomes the result summary and diagnostic detail. Enabling node approval adds the corresponding /qg ignore <node> and /qg remove-ignore <node> controls to the Job Summary and managed dashboard.

Native JSON

results:
  native: reports/result.json

Identity and provenance must match the declared node and current workflow attempt.

Native producers own domain data: custom summary Markdown, metrics, findings, annotations, diagnostics, and notes. They must not construct the complete Job Summary, stable finding labels, or /qg commands. Quality Graph replaces report-supplied controls with semantic controls derived from the findings and compiled node approval policy, then composes the provider presentation.

SARIF

results:
  sarif: reports/lint.sarif

SARIF levels map to notice, warning, and error. The adapter reads rule IDs, text or Markdown messages, partial fingerprints, and the first physical source location.

JUnit XML

results:
  junit: reports/tests.xml

Both testsuite and testsuites roots are accepted. Failures and errors become stable findings; skipped and total counts become metrics. XML is parsed through defusedxml.

Reports must exist inside the repository workspace and remain below 10 MiB. Missing, malformed, oversized, and traversal reports create adapter failures rather than rewriting the underlying command outcome.

v0.1.8