Kinemica Verify
Open-source verification infrastructure for physical-world work performed by people, agents, and machines.
Kinemica Verify turns a machine-readable Work Contract and collected evidence into a deterministic pass/fail result. It can also bind that result to the exact contract, manifest, and file-backed evidence with SHA-256 and authenticate the resulting record with an Ed25519 signature.
Quick start
Kinemica Verify requires Python 3.10 or newer.
git clone https://github.com/kinemica/kinemica-verify.git
cd kinemica-verify
python -m pip install .
kinemica verify examples/filter-replacement/work.yaml examples/filter-replacement/evidence
Expected result:
Kinemica Verify
Preconditions PASS
Required steps PASS
Safety constraints PASS
Evidence PASS
Final state PASS
VERIFIED
The CLI exits with 0 for a verified job, 1 for a failed verification, and 2 for invalid input or configuration. Add --json for machine-readable output.
What it checks
| Check | Purpose |
|---|---|
| Preconditions | Required state before work starts |
| Required steps | Whether every mandated step is present in the evidence |
| Safety constraints | Numeric limits such as force, torque, temperature, or other measured values |
| Evidence | Whether required evidence exists and file-backed evidence stays inside the evidence boundary |
| Final state | Whether the resulting state matches the contract |
The same verification model can describe work performed by a person, robot, software agent, or mixed team.
Work Contract
A Work Contract states what must be true before, during, and after a job.
version: 1
task:
id: replace-filter
actor: robot
preconditions:
machine_powered_down: true
required_steps:
- remove_old_filter
- install_new_filter
- secure_cover
constraints:
max_force_n:
op: lte
value: 40
evidence:
required:
- before_image
- replacement_serial
- installation_image
- torque_reading
- final_system_test
final_state:
system_test_passed: true
The evidence directory contains a manifest.yaml describing observed preconditions, completed steps, measurements, final state, and evidence artifacts.
Signed verification records
Generate an Ed25519 key pair:
kinemica keygen \
--private-key signer.private.pem \
--public-key signer.public.pem
Create a signed record while verifying a job:
kinemica verify \
examples/filter-replacement/work.yaml \
examples/filter-replacement/evidence \
--signing-key signer.private.pem \
--record verification.json
Authenticate the record and re-check its original inputs:
kinemica verify-record \
verification.json \
signer.public.pem \
--contract examples/filter-replacement/work.yaml \
--evidence examples/filter-replacement/evidence
Expected result:
Kinemica Verify
Signature PASS
Work contract integrity PASS
Evidence manifest integrity PASS
Artifact integrity PASS
Verification replay PASS
SIGNED RECORD VALID
A signed record binds:
- the exact Work Contract bytes
- the exact Evidence Manifest bytes
- every valid file-backed evidence artifact
- task identity
- the complete deterministic verification result
- the signer public-key fingerprint
Verification records contain no implicit timestamp or random nonce, so identical inputs signed with the same key produce the same record.
See docs/verification-records.md for the format and trust boundary.
How it fits
physical-world task
|
v
Work Contract
|
v
person / robot / agent
|
v
collected evidence
|
v
Kinemica Verify
|
+--> VERIFIED / NOT VERIFIED
|
+--> signed verification record
Adapters can later translate execution traces, telemetry, ROS 2 messages, inspection outputs, or enterprise-system events into the evidence format while leaving the core verification semantics unchanged.
Current scope
v0.2 verifies structured evidence deterministically. It does not infer completion from images, video, or raw sensor streams.
VERIFIED means the supplied evidence satisfies the configured Work Contract. SIGNED RECORD VALID means the record is authentic for the supplied public key and, when source paths are provided, the bound inputs still match. These results do not prove unobserved physical reality, replace independent safety engineering, or constitute regulatory certification.
Design principles
- Explicit contracts: completion criteria are machine-readable and reviewable before work starts.
- Deterministic verification: the same contract and evidence produce the same result.
- Evidence first: failures identify which requirement was not satisfied.
- Cryptographic provenance: signed records bind results to exact source files and artifacts.
- Actor agnostic: the same model works across people, robots, agents, and mixed teams.
- Composable: integrations can extend evidence collection without changing the verification core.
- Local by default: the open-source verifier does not require a hosted service.
Repository layout
src/kinemica_verify/ Reference verifier, record signing, and CLI
examples/ Complete example jobs and evidence
schemas/ Public interchange schemas
docs/ Format and trust-boundary documentation
tests/ Verification, integrity, signing, and CLI tests
Development
python -m pip install -e ".[dev]"
ruff check .
pytest
CI runs installation, lint, tests, the reference example, and a full signed-record round trip on Python 3.10, 3.12, and 3.14.
Roadmap
- Stabilize Work Contract v1, Evidence Manifest v1, and Verification Record v1 semantics.
- Add one production-shaped execution-trace or telemetry adapter.
- Add a reference ROS 2 integration.
- Build reproducible benchmarks for physical-work verification failures.
- Add pluggable evidence attestations without weakening deterministic local verification.
Compatibility and verification semantics take priority over feature count.
Contributing
See CONTRIBUTING.md. Security issues should follow SECURITY.md.
Maintainer
Created and maintained by Sylvester Kaczmarek.
License
Apache License 2.0. See LICENSE.
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 kinemica_verify-0.2.1.tar.gz.
File metadata
- Download URL: kinemica_verify-0.2.1.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18ba8c1cf5811b599b08f72724adf332124c6ec5444903c80c1f23beeb7bc9da
|
|
| MD5 |
175711204ed3720d053458c133068f3f
|
|
| BLAKE2b-256 |
d39ac119f786f61c1ccb88573040d474bb938d288b324375970cf82423bdad83
|
Provenance
The following attestation bundles were made for kinemica_verify-0.2.1.tar.gz:
Publisher:
publish-to-pypi.yml on kinemica/kinemica-verify
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kinemica_verify-0.2.1.tar.gz -
Subject digest:
18ba8c1cf5811b599b08f72724adf332124c6ec5444903c80c1f23beeb7bc9da - Sigstore transparency entry: 2464400043
- Sigstore integration time:
-
Permalink:
kinemica/kinemica-verify@fcbdc8295572944da3e8afb1b0054c9ccd7fd187 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kinemica
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@fcbdc8295572944da3e8afb1b0054c9ccd7fd187 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kinemica_verify-0.2.1-py3-none-any.whl.
File metadata
- Download URL: kinemica_verify-0.2.1-py3-none-any.whl
- Upload date:
- Size: 20.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 |
90f8a5c266aeeef92f58429bc5b643321d906bc5a9957854111ed987d84d6a44
|
|
| MD5 |
26d5ada277f065d4ade7b7f8cdf91921
|
|
| BLAKE2b-256 |
753dc1f42b42c7fbb3fd30fedac108c28e8c1a6a12f29ee89e7d23593ca30389
|
Provenance
The following attestation bundles were made for kinemica_verify-0.2.1-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on kinemica/kinemica-verify
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kinemica_verify-0.2.1-py3-none-any.whl -
Subject digest:
90f8a5c266aeeef92f58429bc5b643321d906bc5a9957854111ed987d84d6a44 - Sigstore transparency entry: 2464400968
- Sigstore integration time:
-
Permalink:
kinemica/kinemica-verify@fcbdc8295572944da3e8afb1b0054c9ccd7fd187 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kinemica
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@fcbdc8295572944da3e8afb1b0054c9ccd7fd187 -
Trigger Event:
push
-
Statement type: