sm-provision — delegated, field-scoped binding provisioning
A binding-provisioning profile of sm-dat. The
signed, bounded grant a resolution-namespace owner gives an agent store to write specific
fields of the owner's binding in a registry — create it, repoint it, suspend it, revoke it —
and nothing else. Runtime-agnostic, vendor-neutral.
sm-dat answers "was this agent allowed to act?". sm-provision answers the adjacent
question "was this store allowed to write this field of this binding?" — using the same
grant envelope, the same signing path, and the same three-valued verdict. It adds no new
crypto and requires no change to sm-dat: binding operations ride in the DAT's
action_categories, and the field-scope rides in scope.stateless under binding_* keys the
DAT core ignores and this profile enforces. The owner's signature covers both.
from sm_provision import (Identity, sign_grant, build_binding_grant,
build_write_request, verify_binding_write, OP_UPDATE_TARGET)
owner, store = Identity.generate(), Identity.generate()
grant = sign_grant(owner, build_binding_grant(
grantee_did=store.did,
subject="john@hotmail.com", # human-readable locator
subject_issuer="https://login.microsoftonline.com",
subject_provider_id="oid:…", # durable anchor (recorded, not verified here)
registry="did:web:index.example",
allowed_ops=[OP_UPDATE_TARGET],
allowed_fields=["agent_card_url"], # store-managed fields only
allowed_target_hosts=["cards.acme-store.example"],
allowed_agent_roles=["personal-assistant"],
not_after="2027-07-01T00:00:00Z",
human_summary="Acme may maintain John's personal-assistant binding.",
))
req = build_write_request(op=OP_UPDATE_TARGET, subject="john@hotmail.com",
fields=["agent_card_url"], target_host="cards.acme-store.example",
agent_role="personal-assistant")
v = verify_binding_write(grant, req, "2026-07-28T12:00:00Z", store_did=store.did)
print(v.status, v.reason) # SATISFIED ok — or a VIOLATED/INDETERMINATE reason
The invariant that defines this library
A store can only ever be granted store-managed fields. Owner-controlled fields (subject,
recovery_delegates, transfer, …) and registry-controlled fields (validation_status,
dispute_state, …) are never delegable — build_binding_grant rejects them at construction,
and the verifier rejects them again at write time (defence in depth). Most capability/skill/runtime
change belongs inside the Agent Card; the binding changes only when the discovery target,
authority, lifecycle, or provider relationship changes.
Two-layer, fail-closed verification
- Authority —
sm_dat.verify_grant, verbatim: signature by the owner, grantee == store, temporal window, revocation, op-in-scope. ItsVIOLATED/INDETERMINATEverdicts propagate unchanged — this profile never launders one into a pass. - Field-scope — right subject; only store-managed fields; only granted fields; only permitted target-hosts and agent-roles.
What it deliberately does not own
Establishing that the grantor really is the owner (DAT SPEC §5.4 O1) is out of band — a
separate authority-evidence mechanism binds grantor_did/subject to the real owner; this
profile only records the claimed anchor. Applying the write, logging it, and resolving conflicts
between writers belong to the registry. See SPEC.md §1.1.
Status
- SPEC.md — the normative draft (
provision/0.1-draft). vectors/provision/0.1/— the deterministic conformance corpus; regenerate withpython vectors/_generate.py, replay withpytest.- Depends on
sm-dat(grant envelope, signing, verification) →sm-arp(identity, crypto). No transport, no framework.
License
MIT © 2026 StellarMinds. See LICENSE.
Part of the NANDA ecosystem · built by StellarMinds.
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 sm_provision-0.1.0.tar.gz.
File metadata
- Download URL: sm_provision-0.1.0.tar.gz
- Upload date:
- Size: 27.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9faf72eb07dbf8ae98ce66744911ac4520a9ff76828355459d6374eb34a573cc
|
|
| MD5 |
a26a1c559d40a450a400c99dda4661fa
|
|
| BLAKE2b-256 |
2b22f6377c630aec51552e7023f58ff167ff38eaf561ef085e77baa8c9e065c2
|
Provenance
The following attestation bundles were made for sm_provision-0.1.0.tar.gz:
Publisher:
release.yml on Sharathvc23/sm-provision
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sm_provision-0.1.0.tar.gz -
Subject digest:
9faf72eb07dbf8ae98ce66744911ac4520a9ff76828355459d6374eb34a573cc - Sigstore transparency entry: 2285560647
- Sigstore integration time:
-
Permalink:
Sharathvc23/sm-provision@6d36af7c66f57eb43083502b2bda81c2f0d5c38c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Sharathvc23
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6d36af7c66f57eb43083502b2bda81c2f0d5c38c -
Trigger Event:
push
-
Statement type:
File details
Details for the file sm_provision-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sm_provision-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
089881b40cea35a10ee25b37db795ed9c7ea801df130556354bafe906be3154c
|
|
| MD5 |
feed9e529760b047c4c626a49cdd38b4
|
|
| BLAKE2b-256 |
59b624a897cc089e5bd414e90248d5b9e20916aaeba69316167bddcaf229ff72
|
Provenance
The following attestation bundles were made for sm_provision-0.1.0-py3-none-any.whl:
Publisher:
release.yml on Sharathvc23/sm-provision
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sm_provision-0.1.0-py3-none-any.whl -
Subject digest:
089881b40cea35a10ee25b37db795ed9c7ea801df130556354bafe906be3154c - Sigstore transparency entry: 2285560721
- Sigstore integration time:
-
Permalink:
Sharathvc23/sm-provision@6d36af7c66f57eb43083502b2bda81c2f0d5c38c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Sharathvc23
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6d36af7c66f57eb43083502b2bda81c2f0d5c38c -
Trigger Event:
push
-
Statement type: