Schema-backed conformance runner for Astraform remote-domain.v1 services
Project description
astraform-remote-domain-conformance
This is the reusable Python conformance harness for remote-domain.v1.
Brutal truth: if every partner team needs a platform engineer on Zoom to prove their service is valid, you do not have a platform. You have consultancy with a protocol document attached.
This package exercises the real lifecycle:
manifestpreparestatusexecute-workinspectionshutdown
And it validates payloads against the versioned schema from the pinned
remote-domain.v1 release bundle, not just happy-path demo assertions.
It also includes a lightweight remote Policy Wind Tunnel provider conformance
path for /policy-wind-tunnel/... routes. That path checks pack metadata,
domain/report labels, outcomeSchema, CEL-compatible policyExpressions,
presets, run creation, status, lifecycle control, the generic
policy_wind_tunnel_bundle.v1 envelope, artifact, and evidence-pack
availability. A weak bundle that only returns schemaVersion and runId is
not conformant; it must expose the
domain, pack, preset, branches, metrics, segments, timeline, decision gates,
artifacts, and domain payload that the dashboard and outcome report can render
without custom frontend code.
Install
Current status: the published PyPI baseline is
astraform-remote-domain-conformance==0.1.3. The workspace release target is
0.1.5, which adds bounded decision-trigger support to signed DSSE/in-toto worker-profile conformance.
pip install astraform-remote-domain-conformance==0.1.5
For repo-local conformance changes beyond the published 0.1.3 baseline, use
a repo-local editable install or a private pre-release wheel.
Repo-local development:
pip install -e './remote-domain-conformance-python[test]'
Run Against A Live Service
remote-domain-conformance \
--base-url http://localhost:8092 \
--domain-id my-domain
Require Population Builder catalog conformance:
remote-domain-conformance \
--base-url http://localhost:8092 \
--domain-id my-domain \
--population-catalog
Validate a catalog file before the provider serves it:
remote-domain-conformance \
--domain-id my-domain \
--population-catalog-file ./population_catalog.json
Run Against A Local ASGI App
remote-domain-conformance \
--app my_remote_domain.main:app \
--domain-id my-domain
Baseline conformance performs the published v1 lifecycle once. To prove the stronger async worker transport/effect boundary, pass an explicit out-of-band profile:
remote-domain-conformance \
--app my_remote_domain.main:app \
--domain-id my-domain \
--opportunity-worker-profile conformance/opportunity-worker-profile.json \
--provider-artifact-digest "sha256:<64 lowercase hex characters>" \
> build/conformance-run-report.json
Extract the nested opportunityWorkerConformanceReport, then sign that file in
a separate protected job which runs no provider or repository code:
remote-domain-conformance \
--sign-conformance-report build/opportunity-worker-conformance-report.json \
--opportunity-worker-profile conformance/opportunity-worker-profile.json \
--attestation-private-key /secure/release-ed25519-private-key.pem \
--attestation-key-id partner-release \
--attestation-output build/opportunity-worker-attestation.dsse.json
The protected signer recomputes the supplied profile digest and requires
exactly one matching passing result for every classified tool. The signed
conformanceReportDigest covers the report's passing baseline
lifecycle, cross-attempt replay, and per-tool probe outcomes, plus its exact OCI
subject binding. The public report schema is shipped in the opportunity-worker
contract profile. Release automation must fail when the protected signer is
unavailable; an ephemeral-key fallback is not a release proof.
The profile schema version is
remote_domain_opportunity_worker_conformance_profile.v1; it contains exact
toolEffects, one safe probe per tool, and optional personaConfiguration.
It is not part of the remote-domain.v1 manifest schema.
Worker-profile responses are consumed from response.content, not decoded
response text. Before a passing report can exist, the runner requires one exact
JSON Content-Type, strict UTF-8, valid Unicode scalar text without U+0000,
unique object keys, one JSON value, and lossless I-JSON/RFC 8785 numbers. Signed
worker proof binds protocol responses to the manifest-advertised media type;
the historical application/json fallback remains baseline-v1 compatibility
only.
Run Policy Wind Tunnel Provider Conformance
remote-domain-conformance \
--wind-tunnel \
--base-url http://localhost:8092 \
--pack-id my-domain-policy-pack \
--preset-id conformance-proof
Python Usage
import asyncio
from astraform.remote_domain.conformance.runner import ConformanceScenario
from astraform.remote_domain.conformance.runner import OpportunityWorkerConformanceProfile
from astraform.remote_domain.conformance.runner import PolicyWindTunnelConformanceScenario
from astraform.remote_domain.conformance.runner import ToolProbe
from astraform.remote_domain.conformance.runner import run_conformance
from astraform.remote_domain.conformance.runner import run_opportunity_worker_conformance
from astraform.remote_domain.conformance.runner import run_policy_wind_tunnel_conformance
report = asyncio.run(
run_conformance(
base_url="http://localhost:8092",
scenario=ConformanceScenario(domain_id="my-domain"),
)
)
print(report.to_dict())
worker_report = asyncio.run(
run_opportunity_worker_conformance(
base_url="http://localhost:8092",
scenario=ConformanceScenario(domain_id="my-domain"),
profile=OpportunityWorkerConformanceProfile(
tool_effects={"lookup_case": "READ_ONLY"},
tool_probes=(ToolProbe("lookup_case", {"caseId": "case-1"}),),
),
provider_artifact_digest="sha256:<64 lowercase hex characters>",
)
)
wind_tunnel_report = asyncio.run(
run_policy_wind_tunnel_conformance(
base_url="http://localhost:8092",
scenario=PolicyWindTunnelConformanceScenario(
pack_id="my-domain-policy-pack",
preset_id="conformance-proof",
),
)
)
print(wind_tunnel_report.to_dict())
Publishing Status
Release validation starts with the standalone package tests:
pytest remote-domain-author-kit-python/tests remote-domain-conformance-python/tests
PyPI artifacts are immutable. Do not rerun a publish for an already published version; run smoke-only verification or bump the SDK version.
Public package note: PyPI distributions expose this SDK implementation. Keep host runtime internals and domain-private logic out of this package.
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 astraform_remote_domain_conformance-0.1.5.tar.gz.
File metadata
- Download URL: astraform_remote_domain_conformance-0.1.5.tar.gz
- Upload date:
- Size: 38.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
faa7041a5adf1038588684a393844712a39f6ee4c796b9144f4d76e6b4789359
|
|
| MD5 |
c1dd98ce63898f208ebee01aed9b7bb5
|
|
| BLAKE2b-256 |
ec31a8c0ffe7b439193203bb6de3e8de128ec3f036a8c666ca2ab0e15970a2bd
|
Provenance
The following attestation bundles were made for astraform_remote_domain_conformance-0.1.5.tar.gz:
Publisher:
release.yml on astraform/remote-domain-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
astraform_remote_domain_conformance-0.1.5.tar.gz -
Subject digest:
faa7041a5adf1038588684a393844712a39f6ee4c796b9144f4d76e6b4789359 - Sigstore transparency entry: 2172710193
- Sigstore integration time:
-
Permalink:
astraform/remote-domain-sdk-python@11ae59fa548df949e6ab04d48ef6d7dc39303544 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/astraform
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@11ae59fa548df949e6ab04d48ef6d7dc39303544 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file astraform_remote_domain_conformance-0.1.5-py3-none-any.whl.
File metadata
- Download URL: astraform_remote_domain_conformance-0.1.5-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9926207d1f8e80fc953b2e119079426c9dce208799d52a6ad7e39a5e8848323
|
|
| MD5 |
d8bb4ab0e6b9ff0c0b507acd741ee455
|
|
| BLAKE2b-256 |
2d1296eacb761458afdff6666db74436624422a445df3a4e01ae9482c8ba8f84
|
Provenance
The following attestation bundles were made for astraform_remote_domain_conformance-0.1.5-py3-none-any.whl:
Publisher:
release.yml on astraform/remote-domain-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
astraform_remote_domain_conformance-0.1.5-py3-none-any.whl -
Subject digest:
d9926207d1f8e80fc953b2e119079426c9dce208799d52a6ad7e39a5e8848323 - Sigstore transparency entry: 2172710201
- Sigstore integration time:
-
Permalink:
astraform/remote-domain-sdk-python@11ae59fa548df949e6ab04d48ef6d7dc39303544 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/astraform
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@11ae59fa548df949e6ab04d48ef6d7dc39303544 -
Trigger Event:
workflow_dispatch
-
Statement type: