Skip to content

Conformance

Audit Reports ​

check answers a question. audit produces the document, the artefact you hand a customer, an auditor, or your own engineering team six months from now.

Like check, it needs no model endpoint, no network and nobody's inference budget. The report is the deliverable, so producing it must not depend on any of those.

Running an audit ​

bash
# Every module this build has
oasis-agent audit

# One module
oasis-agent audit --profile preempt-rt

# What profiles this build actually has
oasis-agent audit --list-profiles

Profiles ​

A profile is all, or the name of one module. Membership is resolved from the catalogue at run time rather than from a maintained list, so a descriptor added to a module joins that module's profile automatically.

ProfileRuns
all (default)Every check applicable to the subject
preempt-rtThe 33 real-time readiness checks
opc-uaThe 5 OPC UA checks
ethercatThe 4 EtherCAT checks
modbusThe 2 Modbus checks
iec-61131The 1 toolchain check

Module profiles appear only when the corresponding pack is compiled into your build. --list-profiles answers for the binary in front of you.

Subjects and targets ​

Identical to check.

FlagDefaultMeaning
--subjectdeviceOne of repo, artefact, device, endpoint
--targetThis machine for device; the working directory for repoA hostname, a path, an address
--catalogue—A directory of descriptor TOML layered over the built-in catalogue
bash
oasis-agent audit --profile opc-ua --subject endpoint --target opc.tcp://10.0.0.5:4840

What the report contains ​

The report is written for a reader who was not in the room, months later, holding the report and not the box, and quite possibly arguing with it. Four properties follow from that.

It states its own limits ​

The report carries the tool version and a fingerprint of the catalogue that produced it, so a later reader can tell whether they are looking at the same questions. It says on its face that it is evidence, not a conformity assessment.

Unevidenced is nowhere near passed ​

Checks that returned not_applicable or error get their own section, under a heading that says in words that they are not passes. They are never added into a total a reader could mistake for a score.

Confidence is surfaced where the reader stops ​

If any finding short of proven contributed to the assessment, the report says so in the summary block, in capitals, not in a footnote nobody reaches.

It is diffable ​

Two runs over unchanged input produce byte-identical text apart from a single generated: timestamp line. That is tested, not asserted.

This is what makes drift detection across a fleet possible. A report you cannot diff is a report you cannot compare, and every re-run would look like a change.

It is laid out for the reader it is sent to ​

The report is written to be redirected into a file and passed on, so it carries no terminal escape codes unless something can render them. The tally opens and closes the document, and is the same text at both ends, because a reader who has come down through nine failures and eleven declines has the detail and has lost the shape. Framework mappings print one per line rather than running past the width of the page.

Exit codes ​

Same contract as check.

CodeMeaning
0Nothing failed, including checks that could not be measured
2Something failed

A pipeline that turned red because a tool was missing would teach its owners that a red audit means nothing, which is the one lesson this must never teach.

In CI ​

bash
#!/bin/sh
set -e

# Fails the job on a real failure; stays green when a probe could not run
oasis-agent audit --profile preempt-rt > rt-evidence-$(date +%F).txt

Commit the output, or archive it as a build artefact. Because reports are byte-stable, the diff between two runs is exactly the set of things that changed on the machine.

From a conversation ​

The Audit tool exposes the same profiles to the agent, so a conversation can produce the report and then discuss it. Audit is a safe-tier tool and never prompts.

Pair it with the check-triage skill, which covers what each verdict and confidence class licenses you to claim before you report results to anyone.

Over the control protocol ​

audit.run and checks.run are available over OCP, but they are host-mutating methods and are off by default. Start the server with --allow-host-mutations to enable them. See OCP Method Reference.

software-defined automation