Skip to main content

IICP standalone conformance runner

This preview runs bounded directory black-box profiles and emits a content-free result bundle. It does not publish target URLs, response bodies, credentials, node identifiers or task data. A project-run result is reproducible evidence, not independent verification.

python3 -m venv .venv
.venv/bin/pip install .
.venv/bin/iicp-conformance run --target http://127.0.0.1:8010 --output result.json
.venv/bin/iicp-conformance run --profile directory-dispatch-v1 \
  --target http://127.0.0.1:8010 --output dispatch-result.json
.venv/bin/iicp-conformance run --profile directory-lifecycle-v1 \
  --target http://127.0.0.1:8010 --output lifecycle-result.json
.venv/bin/iicp-conformance verify result.json
.venv/bin/iicp-conformance verify-dispatch-ticket-fixture \
  --evidence-class project-verified --output ticket-result.json
.venv/bin/iicp-conformance verify-dispatch-ticket-trust-v2-fixture \
  --evidence-class project-verified --output ticket-trust-result.json
.venv/bin/iicp-conformance verify-dispatch-ticket-trust-v2-semantics-fixture \
  --evidence-class project-verified --output ticket-trust-semantics-result.json
.venv/bin/iicp-conformance verify-policy-refusal-fixture \
  --evidence-class project-verified --output policy-refusal-result.json
.venv/bin/iicp-conformance verify-federation-chain-fixture \
  --evidence-class project-verified --output federation-chain-result.json
.venv/bin/iicp-conformance verify ticket-result.json

Install .[signing] and provide a file containing a 32-byte Ed25519 private key in hexadecimal form to add an RFC 8785/JCS Ed25519 signature. The key is read locally and is never included in the result. Verification checks the schema, fixture digest, test inventory, summary, prohibited-field boundary and signature; use --require-signature when unsigned evidence is not acceptable.

The directory-public-v1 profile covers public discovery validation, SSRF refusal and unauthenticated credit and telemetry boundaries. The directory-dispatch-v1 profile covers prompt-free ticket issuance and negative policy/validation cases. It is restricted to loopback targets because a passing case issues route material and may update aggregate adoption counters. Run it only against a disposable directory database. The offline profile commands are isolated evidence profiles. The offline v1 ticket command covers only the published v1 vector set; it does not claim v2 trust-store or stateful replay behavior.

verify-dispatch-ticket-fixture is an offline profile over the canonical dispatch-route-ticket:v1 Ed25519 vectors. It verifies the signature, issuer, audience, node, intent, expiry and malformed/tampered cases, then emits only case names and aggregate outcomes. It does not output ticket material, claims, routes or endpoint data. Install .[signing] before running it. It verifies v1 route-disclosure semantics only: v1 does not claim stateful redemption or signer-key revocation.

verify-dispatch-ticket-trust-v2-fixture is a separate pre-normative offline profile over the canonical v2 Ed25519, key-status and local-replay vectors. It emits only case identifiers and aggregate outcomes. It does not enable v2 at runtime, persist a replay cache or trust bundle, distribute or rotate keys, provide global single-use redemption, or prove federation behavior. Install .[signing] before running it.

verify-dispatch-ticket-trust-v2-semantics-fixture is a separate pre-normative decision-table profile. It verifies strict-mode rejection of a v1 fallback, explicit open-compat labeling, bundle rollback, key state, claim, signature, and local-replay outcomes. It emits only case identifiers and aggregate outcomes. It does not parse live tickets, alter v1 behavior, enable v2, or make any runtime trust-store, federation, or independent-conformance claim.

verify-policy-refusal-fixture is a separate pre-normative offline subset of the canonical profile-compatibility fixture. It evaluates only cases that declare policy_refusal, and emits only their case identifiers and aggregate outcomes. It is not a general eligibility engine, live dispatch test, policy attestation, or evidence that a provider enforces its declared policy.

The loopback-only directory-lifecycle-v1 profile registers a disposable node, authenticates a heartbeat, refreshes the registration and rotates its token, rejects the stale token, accepts the replacement token, and deregisters the node. The runner substitutes only values captured from earlier successful responses in the same run. It rejects unresolved variables before sending a request and never writes captured node IDs or credentials to the result bundle. The target must provide the fixture node's HTTPS health response in its disposable test environment; the profile does not weaken endpoint validation.

Release-candidate and external-run boundary

Run python3 conformance-runner/scripts/release_preflight.py before proposing a runner artifact. It builds the candidate locally, checks wheel and source distribution metadata, then clean-installs the source, wheel and source distribution from a temporary working directory. Each installation must run and verify every bundled offline profile with self-attested content-free output. The command does not publish an artifact or create independent evidence.

An operator outside the IICP repository family may use a published artifact and this README to submit a result. Select independent only when the operator controls the implementation and result publication; a project-run or project-hosted test remains project-verified or self-attested. Do not put credentials, target URLs, node IDs, route data, payloads or personal data in a published result bundle.

For a clean-environment installation, offline-first evidence, loopback safety boundary and evidence-class decision, follow the external run guide. It is intentionally release-artifact based: it does not ask an external operator to install a moving repository checkout.

An external team implementing directory behavior from public contracts should also follow the clean-room directory interoperability guide. It fixes the allowed source inputs, minimum positive and negative profiles, ambiguity log and publication boundary required by IICP issue #31.

Metadata

Release files for iicp-conformance 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iicp-conformance 0.3.0
File Size Uploaded
iicp_conformance-0.3.0.tar.gz 29.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iicp-conformance 0.3.0
File Interpreter ABI Platform
iicp_conformance-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 57.2 kB

Release files / iicp_conformance-0.3.0.tar.gz

Download URL iicp_conformance-0.3.0.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3642b56bc87a1dce1f62f63ae61b6e9dc551d65ee0d4cb4eb5b3ef28513a90fd
BLAKE2b-256 checksum
How to use checksums
e7594b4802f1096403612d88ff9933e42fdb18df7a7aec7e23b6acffd1eb4318
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.8

Release files / iicp_conformance-0.3.0-py3-none-any.whl

Download URL iicp_conformance-0.3.0-py3-none-any.whl
Size 27.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e0314b14d37a0e0050e58543f2cccfe179ce901520a65b0803ef0c19132089a
BLAKE2b-256 checksum
How to use checksums
ba8dcf5b3aa051a4e174ba20840313e802ee7adb0afab21fb613271456584b16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page