Conformance testing CLI for the ARP Standard (v1).
Project description
ARP Conformance Toolkit arp-conformance
arp-conformance is the official conformance checker for ARP Standard (v1) HTTP services in the node-centric stack:
- Run Gateway
- Run Coordinator
- Atomic Executor
- Composite Executor
- Node Registry
- Selection
- PDP (optional component)
It runs black-box HTTP checks against a base URL and validates:
- Required routes exist and are reachable
- Success + error responses match the ARP envelopes (including
ErrorEnvelope) - Response bodies validate against the normative JSON Schemas embedded in this package
What it does not validate:
- Planner/model quality
- Performance, scalability, or security posture
- Internal implementation details (wire-level only)
This package is SDK-independent: it does not depend on generated SDK packages like arp-standard-model, arp-standard-client, or arp-standard-server.
[!IMPORTANT] Version pinning
This toolkit embeds a spec snapshot. Pin
arp-conformance==X.Y.Zto validate services built against the same ARP spec / SDK versionX.Y.Z.View the embedded snapshot:
arp-conformance --versionpython -c "import arp_conformance; print(arp_conformance.SPEC_REF)"
Install
python3 -m pip install arp-conformance
Quick start
Smoke test
Safest level of testing (GET-only).
arp-conformance check run-gateway --url http://localhost:8080 --tier smoke
Surface conformance
Validates required endpoints and envelope schemas without creating resources.
arp-conformance check run-gateway --url http://localhost:8080 --tier surface
arp-conformance check run-coordinator --url http://localhost:8081 --tier surface
arp-conformance check node-registry --url http://localhost:8082 --tier surface
Run conformance on multiple services
arp-conformance check all \
--run-gateway-url http://localhost:8080 \
--run-coordinator-url http://localhost:8081 \
--node-registry-url http://localhost:8082 \
--tier surface
Tiers at a glance
| Tier | What it tests | Creates state? | Safe for prod? |
Typical use |
|---|---|---|---|---|
smoke |
Service is reachable + speaking ARP (/v1/health, /v1/version) |
No | Yes | Fast local sanity check; PR gating |
surface |
Required routes exist + success/error envelopes are schema-valid | No | Usually | Early implementation; contract regression |
core |
Placeholder for end-to-end success-paths (see note below) | No | Yes | Future staged validation |
deep |
Placeholder for optional endpoints + richer behaviors | No | Yes | Future pre-release validation |
[!NOTE] For node-centric v1,
coreanddeepare not yet defined. The toolkit reportsSKIPfor these tiers until the spec defines portable end-to-end flows. Usesmokeandsurfacefor now.
Output and reports
Example output (text)
service=run-gateway tier=surface spec=spec/v1@v0.3.5
counts={'PASS': 5, 'FAIL': 0, 'WARN': 0, 'SKIP': 0} ok=True
- PASS smoke.health: OK
- PASS smoke.version: OK
Export JSON / JUnit
arp-conformance check run-gateway --url http://localhost:8080 --tier surface --format json --out arp-conformance.json
arp-conformance check run-gateway --url http://localhost:8080 --tier surface --format junit --out arp-conformance.xml
CI gating
- By default, the CLI exits non-zero when there is at least one
FAIL. - Use
--strictto also fail onWARNandSKIP.
Compatibility / pinning
Rule of thumb: pin arp-conformance==X.Y.Z to validate services targeting the ARP spec / SDK release X.Y.Z.
pipx install "arp-conformance==0.3.5"
arp-conformance --version
python -c "import arp_conformance; print(arp_conformance.SPEC_REF)"
Authentication and headers
If your service requires auth, pass headers:
arp-conformance check run-gateway \
--url https://example.com \
--tier surface \
--headers "Authorization=Bearer ..."
For CI, prefer a headers file:
cat > headers.env <<'EOT'
Authorization=Bearer ...
EOT
arp-conformance check run-gateway --url https://example.com --tier surface --headers-file headers.env
CI recipes (GitHub Actions)
This repo provides a composite action that installs arp-conformance from PyPI and runs it:
AgentRuntimeProtocol/ARP_Standard/.github/actions/arp-conformance
By default, when you reference the action as .../arp-conformance@vX.Y.Z, it installs arp-conformance==X.Y.Z.
Surface gate on PR (no resource creation)
name: arp-conformance
on: [pull_request]
jobs:
surface:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Start your service under test (docker compose, process, etc) before running conformance.
- uses: AgentRuntimeProtocol/ARP_Standard/.github/actions/arp-conformance@v0.3.5
with:
service: run-gateway
url: http://localhost:8080
tier: surface
report_format: json
report_path: arp-conformance.json
Commands at a glance
arp-conformance check run-gateway --url <base-url> [flags]arp-conformance check run-coordinator --url <base-url> [flags]arp-conformance check atomic-executor --url <base-url> [flags]arp-conformance check composite-executor --url <base-url> [flags]arp-conformance check node-registry --url <base-url> [flags]arp-conformance check selection --url <base-url> [flags]arp-conformance check pdp --url <base-url> [flags]arp-conformance check all --run-gateway-url ... --run-coordinator-url ... [flags]
Flags (common)
--tier smoke|surface|core|deep--headers KEY=VALUE(repeatable)--headers-file path--timeout <seconds>--retries <n>--strict--format text|json|junit--out <path>--spec v1--spec-path <path>
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arp_conformance-0.3.5.tar.gz.
File metadata
- Download URL: arp_conformance-0.3.5.tar.gz
- Upload date:
- Size: 33.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
beaf144af1541d7db22bf8549852b59ebe1fc9b9a1fd0e993c35146230c88f94
|
|
| MD5 |
b824b7c833be9885f52215ef2165b1ee
|
|
| BLAKE2b-256 |
c1950589d8a355bc003c2f999ff88f4f285f115bb55996afe70f3c6ab4085621
|
Provenance
The following attestation bundles were made for arp_conformance-0.3.5.tar.gz:
Publisher:
release.yml on AgentRuntimeProtocol/ARP_Standard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_conformance-0.3.5.tar.gz -
Subject digest:
beaf144af1541d7db22bf8549852b59ebe1fc9b9a1fd0e993c35146230c88f94 - Sigstore transparency entry: 789500565
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/ARP_Standard@cb0a9b091f415e5bd02ba606c884345313680279 -
Branch / Tag:
refs/tags/v0.3.5 - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cb0a9b091f415e5bd02ba606c884345313680279 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arp_conformance-0.3.5-py3-none-any.whl.
File metadata
- Download URL: arp_conformance-0.3.5-py3-none-any.whl
- Upload date:
- Size: 81.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04c0799ee5914d7c07eeee9e01dc9172584f542dc05d279ba6c6ef7775d8b0d0
|
|
| MD5 |
4c5789489127b2d5025e2a80aecbadf0
|
|
| BLAKE2b-256 |
21ec397316963b437644a7eda3d2dfdcf9b43b029f6474f1c13c6ebeb715de42
|
Provenance
The following attestation bundles were made for arp_conformance-0.3.5-py3-none-any.whl:
Publisher:
release.yml on AgentRuntimeProtocol/ARP_Standard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_conformance-0.3.5-py3-none-any.whl -
Subject digest:
04c0799ee5914d7c07eeee9e01dc9172584f542dc05d279ba6c6ef7775d8b0d0 - Sigstore transparency entry: 789500570
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/ARP_Standard@cb0a9b091f415e5bd02ba606c884345313680279 -
Branch / Tag:
refs/tags/v0.3.5 - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cb0a9b091f415e5bd02ba606c884345313680279 -
Trigger Event:
push
-
Statement type: