The Ouro AX standard as data: a claim is one checkable rule about an interface an agent uses, with the reason, the evidence that admitted it, the check ax-xray runs and the fix. A claim is must only when an evaluation showed agents failing without it, or when it guards against a stated safety, compatibility or integrity hazard; every other claim is should.
npx shadcn@latest add ourostack/ouro-ui/ax-claims#v1.3.10It installs lib/ouro/ax/claims.ts. Its tests are ax-claims-tests. Every item runs on Node 22.18 or later as it is copied: the files import each other as ./<file>.ts. The Ouro AX guide shows how they fit together.
Exports
checkClaimSet
The problems with a claim set, one line each with the fix: a missing field, a repeated id, an unknown surface, tier or scope, and a must claim the admission rule does not allow (one that rests on a principle, an evaluation without its run, or a hazard not stated).
function checkClaimSet(value: unknown): string[]Claim
interface Claim {
id: string;
surface: ClaimSurface;
tier: ClaimTier;
applies: ClaimScope;
rule: string;
why: string;
evidence: ClaimEvidence;
check: string;
fix: string;
}CLAIM_SCOPES
Which surfaces a claim applies to. The X-ray decides it from what the interface says about itself (`help --json`, the
routes manifest, tools/list), not from a hand-written waiver:
- `interface`: once per interface.
- `command`, `read`, `others`, `text`, `wait`: CLI commands, the reads among them (effect private), those other people
see, those that take free text, and the wait command.
- `events`: the work-event read the adopter names.
- `route`, `read-route`, `ref-route`, `others-route`: HTTP routes that answer an error, GET routes, routes with an id
in the path, and the probes of writes other people see.
- `tool`, `tool-required`: MCP tools, and those with required arguments.
- `twin`, `action-twin`, `person-only`, `reserved`, `self`, `ui-read`, `listening`, `listening-push`: from the `ui`
inventory, the twins, the twins of agent actions, the person-only actions, the actions with a reserved id, the
actions an agent takes only on its own item (`scope: "self"`), the reads, the reads of what people say, and their
streams.const CLAIM_SCOPES: readonly ["interface", "command", "read", "others", "text", "wait", "events", "route", "read-route", "ref-route", "others-route", "tool", "tool-required", "twin", "action-twin", "person-only", "reserved", "self", "ui-read", "listening", "listening-push"]CLAIM_SET
The claims of this version of Ouro AX. Evidence paths are relative to the Ouro UI repository (https://github.com/ourostack/ouro-ui).
const CLAIM_SET: ClaimSetCLAIM_SET_VERSION
The Ouro AX standard as data: a claim is one checkable rule about an interface an agent uses, with the reason, the evidence that admitted it, the check ax-xray runs and the fix. A claim is must only when an evaluation showed agents failing without it, or when it guards against a stated safety, compatibility or integrity hazard; every other claim is should.
const CLAIM_SET_VERSION: "1.5.0"ClaimEvidence
Why a claim is in the standard. evaluation: an agent evaluation (source is the run's file); hazard: the harm it guards against, in finding; principle: a design principle, not yet shown by a run (should only).
interface ClaimEvidence {
basis: "evaluation" | "hazard" | "principle";
source: string;
finding: string;
}ClaimScope
type ClaimScope = (typeof CLAIM_SCOPES)[number];ClaimSet
interface ClaimSet {
version: string;
claims: readonly Claim[];
}claimSetText
The claim set as canonical JSON (keys sorted), the text its hash is taken over.
function claimSetText(set: ClaimSet): stringClaimSurface
type ClaimSurface = "cli" | "http" | "mcp" | "ui";ClaimTier
type ClaimTier = "must" | "should";loadClaimSet
A claim set read from JSON (an adopter's own copy, say), checked; throws with every problem when it is not one.
function loadClaimSet(value: unknown): ClaimSetThe claims
Must claims first. node lib/ouro/ax/xray.ts claims prints their rules and checks; the standard says how a claim is admitted.
cli.help-parses- Tier: must
- hazard
cli.help-effects- Tier: must
- hazard
cli.inventory- Tier: must
- hazard
cli.exit-codes- Tier: must
- hazard
cli.unknown-flag- Tier: must
- hazard
cli.ambiguous-verbs- Tier: must
- hazard
cli.others-need-why- Tier: must
- hazard
cli.wrong-ref-first- Tier: must
- hazard
cli.others-preview- Tier: must
- hazard
cli.reads-stay-reads- Tier: must
- hazard
cli.refusals-change-nothing- Tier: must
- hazard
cli.no-dev-commands- Tier: must
- hazard
copy.precise-failure- Tier: must
- hazard
http.inventory- Tier: must
- hazard
http.wrong-ref-first- Tier: must
- hazard
http.others-need-why- Tier: must
- hazard
http.reads-stay-reads- Tier: must
- hazard
http.refusals-change-nothing- Tier: must
- hazard
mcp.effect-annotated- Tier: must
- hazard
mcp.inventory- Tier: must
- hazard
ui.twin-exists- Tier: must
- hazard
ui.twin-effect-matches- Tier: must
- hazard
ui.person-only-refuses- Tier: must
- hazard
ui.reserved-person-only- Tier: must
- hazard
ui.self-scope-refuses- Tier: must
- hazard
ui.listening-needs-yes- Tier: must
- hazard
cli.listening-push-filtered- Tier: must
- hazard
cli.help-width- Tier: should
- principle
cli.overview-short- Tier: should
- principle
cli.read-json- Tier: should
- principle
cli.unknown-command- Tier: should
- principle
cli.missing-arg- Tier: should
- principle
cli.no-stack-trace- Tier: should
- principle
cli.plain-pipe- Tier: should
- hazard
cli.check-verdict- Tier: should
- principle
cli.voice-off-in-json- Tier: should
- principle
cli.voice-off-when-piped- Tier: should
- principle
cli.fact-before-voice- Tier: should
- principle
cli.audience-named- Tier: should
- principle
cli.text-refs- Tier: should
- principle
cli.named-is-listed- Tier: should
- principle
cli.help-size- Tier: should
- principle
http.json- Tier: should
- principle
http.error-shape- Tier: should
- principle
http.error-teaches- Tier: should
- principle
http.index- Tier: should
- principle
http.unknown-route- Tier: should
- principle
mcp.bad-call-teaches- Tier: should
- principle
mcp.unknown-tool- Tier: should
- principle
ui.read-fields- Tier: should
- principle
cli.listening-cursor- Tier: should
- principle
