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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iicp_conformance-0.3.0.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iicp_conformance-0.3.0-py3-none-any.whl (27.3 kB view details)

Uploaded Python 3

File details

Details for the file iicp_conformance-0.3.0.tar.gz.

File metadata

  • Download URL: iicp_conformance-0.3.0.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for iicp_conformance-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3642b56bc87a1dce1f62f63ae61b6e9dc551d65ee0d4cb4eb5b3ef28513a90fd
MD5 2fff2019ca0c7ae3aff23af8e55584f0
BLAKE2b-256 e7594b4802f1096403612d88ff9933e42fdb18df7a7aec7e23b6acffd1eb4318

See more details on using hashes here.

File details

Details for the file iicp_conformance-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for iicp_conformance-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e0314b14d37a0e0050e58543f2cccfe179ce901520a65b0803ef0c19132089a
MD5 cbbafbbf4f69cc55a05986a09afcd9b2
BLAKE2b-256 ba8dcf5b3aa051a4e174ba20840313e802ee7adb0afab21fb613271456584b16

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page