Skip to main content

LoopGrid Verify

Standalone offline verification for LoopGrid evidence bundles.

loopgrid-verify verifies exported LoopGrid evidence without connecting to a LoopGrid server. It is designed for design partners, reviewers, auditors, operators, and engineering teams that want to inspect a portable evidence bundle independently of the running LoopGrid service.

Current package: 0.1.0 design preview

Install

pip install loopgrid-verify

Python 3.10–3.13 is supported.

Verify a bundle

loopgrid-verify evidence.zip

For higher-assurance verification, pin signer identity using an out-of-band trusted public key:

loopgrid-verify evidence.zip \
  --trusted-public-key trusted-public-key.pem

Or pin the expected LoopGrid signer key ID:

loopgrid-verify evidence.zip \
  --expected-key-id ed25519:0123456789abcdef

For an RFC3161 timestamp token, the verifier validates the timestamp status, SHA-256 message imprint, and imprint match locally. To additionally validate the timestamp signer certificate chain, provide a trusted CA bundle and ensure openssl is available:

loopgrid-verify evidence.zip \
  --tsa-ca-file tsa-ca.pem

Verification result

A valid attested bundle prints:

LOOPGRID EVIDENCE VERIFICATION
[OK] VERIFIED

A modified or otherwise invalid bundle prints:

LOOPGRID EVIDENCE VERIFICATION
[FAIL] INVALID

and exits with status code 2.

Legacy Evidence Bundle v2 exports created before signed file attestation remain ledger-verifiable. They are explicitly labeled:

[OK] LEDGER VERIFIED
[WARN] Legacy/unattested bundle: exported file bytes are not covered by a signed bundle attestation.

What is verified

For current attested Evidence Bundle v2 exports, the verifier checks:

  • the signed bundle-attestation digest;
  • the attestation signature;
  • SHA-256 digests for attested exported files;
  • missing, duplicate, and unexpected archive entries;
  • the embedded signer key identity;
  • optional out-of-band public-key or key-ID pinning;
  • signed event content hashes and signatures;
  • workspace hash-chain continuity across events and proof-only witnesses;
  • disclosed payload commitments when disclosures are included;
  • policy digest consistency;
  • lifecycle and verification-document consistency;
  • checkpoint signatures and linkage when present;
  • RFC3161 timestamp imprint validity when present;
  • optional RFC3161 signer certificate-chain trust when --tsa-ca-file is supplied.

Trust model

The public key embedded in an evidence bundle proves that the bundle is internally consistent under that key. It does not, by itself, establish who controls that key.

When signer authenticity matters, pin trust out of band using:

--trusted-public-key

or:

--expected-key-id

This distinction is intentional: bundle integrity and signer authenticity are separate questions.

Python API

from loopgrid_verify import verify_bundle

result = verify_bundle(
    "evidence.zip",
    trusted_public_key="trusted-public-key.pem",
)

if result["valid"]:
    print("verified")
else:
    print(result["failures"])

The API is:

verify_bundle(
    path,
    tsa_ca_file=None,
    expected_key_id=None,
    trusted_public_key=None,
) -> dict

What this verifier does not determine

loopgrid-verify checks cryptographic and structural evidence properties. It does not determine whether an AI decision was correct, safe, fair, lawful, compliant, or otherwise appropriate. It is evidence-verification infrastructure, not a legal or regulatory compliance determination.

Server-independent by design

Verification does not require:

  • a LoopGrid server;
  • a database;
  • Docker;
  • an API key;
  • an MCP server;
  • a network connection.

The only optional external executable is openssl, and only when certificate-chain trust validation is requested for an RFC3161 timestamp using --tsa-ca-file.

Development

python -m venv .venv

Windows PowerShell:

.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e ".[dev]"
python -m pytest -q
python scripts/release_check.py

macOS/Linux:

source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e ".[dev]"
python -m pytest -q
python scripts/release_check.py

Build:

python -m build
python -m twine check dist/*

Fixture coverage

The test suite includes:

  • a current signed-file-attested Evidence Bundle v2;
  • the same bundle with report.html modified;
  • a legacy/unattested Evidence Bundle v2;
  • the correct trusted public key;
  • a deliberately incorrect trusted public key.

The tampered bundle must fail verification. The legacy bundle may pass signed-ledger verification only with the explicit legacy_unattested status/warning.

Release posture

0.1.0 is a design-preview verifier release. The package is intended for technical evaluation and design-partner workflows. It is not a legal-compliance certification tool.

  • LoopGrid core: https://github.com/cybertechsoft/loopgrid
  • LoopGrid MCP: https://github.com/loopgridio/loopgrid-mcp
  • Website: https://loopgrid.io

License

Apache-2.0. See LICENSE.

Release files for loopgrid-verify 0.1.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 loopgrid-verify 0.1.0
File Size Uploaded
loopgrid_verify-0.1.0.tar.gz 41.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for loopgrid-verify 0.1.0
File Interpreter ABI Platform
loopgrid_verify-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 57.1 kB

Release files / loopgrid_verify-0.1.0.tar.gz

Download URL loopgrid_verify-0.1.0.tar.gz
Size 41.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9b48c7eb2f4a80c8c3ef9539578f7f03f0d7a56baedea225938db1b92c3be4e2
BLAKE2b-256 checksum
How to use checksums
c517babd6867ad9b43c81b6060bd5a343313e11f70510722ade9db5f817b2100
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / loopgrid_verify-0.1.0-py3-none-any.whl

Download URL loopgrid_verify-0.1.0-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e3cb7a63897dc43f7fc853b6638ae333009e21075a7dd99bfc2feb2b6d92195
BLAKE2b-256 checksum
How to use checksums
ef453a70c06945dd9c9047f3edae151c4edf61ecaa4c53cb468d3842abecc522
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.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