Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

TallyLock

TallyLock was named Prove until 2026-11-07. The command is tallylock and the package is tallylock. Protocol v1 wire identifiers keep their original prove. prefix (for example prove.manifest.v1), and receipts keep their .prove/ state directory, so existing receipt IDs and anchored timestamps stay valid.

TallyLock freezes evaluation plans and ordinary output files into standalone receipts. Its Python CLI verifies byte integrity offline and separates that evidence from reported scores, model identity and execution claims. Developed by TriplePass Labs. Created and maintained by Christopher Ayers.

Lab website · GitHub organization · Founder profile

It binds an evaluation plan, recorded artifacts and reported results to commitments with optional OpenTimestamps evidence. Verification distinguishes artifact integrity from claims about execution, model identity, timing and scientific validity.

Version 0.1.0a1 is an unreleased implementation candidate for Linux with Python 3.11 through 3.13. Use a supported interpreter and install the reviewed wheel in its own environment. The example below selects Python 3.12; substitute your supported interpreter when needed.

On Ubuntu or Debian, that interpreter needs its matching venv package before environment creation. Ubuntu 24.04 users selecting Python 3.12 need python3.12-venv. The offline quickstart gives the prerequisite and an optional fallback when uv is already installed. See the Ubuntu Python setup guide and package record.

python3.12 -m venv .venv-tallylock
. .venv-tallylock/bin/activate
python -m pip install /absolute/path/to/tallylock-0.1.0a1-py3-none-any.whl
tallylock --version

From a reviewed source checkout, python -m pip install . works in the same environment. Installation may fetch dependencies. No unpublished PyPI release is assumed.

Future install path (after the first PyPI release): pipx install tallylock. It does not work yet, so use the reviewed wheel above for now. Distribution acceptance and release status are recorded in the readiness audit.

The offline quickstart uses only the installed CLI, a fresh manifest and an ordinary output directory. It needs no model, provider account, research checkout or hosted service. python -m tallylock can replace tallylock in every command.

tallylock init --out manifest.json --name "My evaluation"
tallylock pre-register manifest.json --receipt receipt
mkdir outputs
printf 'ordinary external output\n' > outputs/result.txt
tallylock seal receipt --artifacts outputs
tallylock verify receipt

Edit the manifest before preregistration. Run your external evaluation program yourself and pass its output directory to seal. TallyLock never launches a model or executes a scorer named in metadata. See generic integration for explicit score/trace options, bounded reports and recovery.

Anchoring is explicit: tallylock anchor receipt, then tallylock upgrade receipt as calendars gain attestations. Submission and pending proofs are not completed anchoring. Plain tallylock verify receipt checks integrity and reports the timestamp as not checked, exiting 0 when integrity passes. With --chain-cache FILE it also runs the anchored check. --policy anchored is the strict form: it requires qualifying Bitcoin attestations and an explicitly selected local chain cache, and exits 3 without them. Verification never contacts a node or calendar. Independently assess the cache's provenance and freshness.

Output is one JSON object per stdout line when piped and a short plain-language summary on a terminal. Force either with --json or --human (not both). tallylock doctor [RECEIPT] checks the installation and a receipt's timestamp state without writing or using the network. Statuses are 0 for the requested action/check, 2 invalid input, 3 insufficient evidence, 4 unsupported evidence, 5 operational failure and 130 interruption. A returned timestamp action can still be pending or retry-wait. After optional anchoring fails, completed local state and IDs remain in the report. Resume with anchor/upgrade without the original outputs.

Static examples and canonical conformance assets ship under tallylock/data/examples/basic and tallylock/data/conformance, accessible through importlib.resources. Basic use requires no optional harness importer.

License

Licensed under Apache-2.0. Copyright 2026 Christopher Ayers.

Record every run

tallylock run --repeat 5 -- python eval.py --seed {seed}
tallylock score

Every attempt is recorded, including failures. score reports the best result, the real score with its range, and a claim line others can check with tallylock check. See the quickstart and the method.

What a receipt means

A valid completed timestamp establishes that a commitment existed by a Bitcoin block. Artifact hashes reveal changes to committed bytes. Neither establishes that an evaluator ran honestly, used the claimed model, disclosed all attempts, or produced a scientifically sound result.

TallyLock works alongside evaluation harnesses. A preregistration ID alone establishes no independently witnessed chronology. External research experiments remain separate from the protocol's cryptographic checks.

Metadata

Release files for tallylock 0.1.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tallylock 0.1.0a1
File Size Uploaded Provenance Actions
tallylock-0.1.0a1.tar.gz 378.2 kB With provenance Details for tallylock-0.1.0a1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tallylock 0.1.0a1
File Interpreter ABI Platform Actions
tallylock-0.1.0a1-py3-none-any.whl Python 3 none any Details for tallylock-0.1.0a1-py3-none-any.whl

Total release size: 668.1 kB

Release files / tallylock-0.1.0a1.tar.gz

Download URL tallylock-0.1.0a1.tar.gz
Size 378.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c5a007eaf92f557eb95966848d17968f03c26d9aded1492a47e6fdbbeb00aad1
BLAKE2b-256 checksum
How to use checksums
d74aed5b85ce35125cc5d229c308a68b632e9149a8e2dd9098451c741f1090b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 7, 2026.

Transparency log

Release files / tallylock-0.1.0a1-py3-none-any.whl

Download URL tallylock-0.1.0a1-py3-none-any.whl
Size 289.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4253309c49dd5308f3847e2f7bda29622528152dae215d6edf4baa3bfdbb42dc
BLAKE2b-256 checksum
How to use checksums
49ba0347a5b5a2ccba0228fef283dff3f8dc53c4ecb9ec67013c6346251e8b6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 7, 2026.

Transparency log

Security for tallylock 0.1.0a1

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tallylock-0.1.0a1.tar.gz

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 Nov 7, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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