Skip to main content

scrollcase-consumer

scrollcase-consumer is the typed Python API for verifying, preparing, and running a caller-supplied local Scrollcase box:

python -m pip install scrollcase-consumer
from scrollcase_consumer import run_box

result = run_box(
    "release.json",
    public_key_path="trusted-key.json",
    archive="box.zip",
    args=("--input", "sample.json"),
)

The public operations are verify_and_extract_box, attach_extracted_box, verify_extracted_payload, run_extracted_box, and run_box. Verification always precedes execution, and the child application runs with the box's own interpreter through an argument array, never a shell.

Every operation that verifies a signed release takes exactly one trust source: public_key_path, or trusted_keys for keys the caller already holds. parse_trusted_keys(source) turns either the single-key JSON shape or a {"keys": [...]} bundle from text or bytes into the latter, without requiring a temporary key file. Malformed trust JSON or entries raise Invalid trusted ed25519 key file.; an empty bundle or an unusable PEM cannot verify a signature and reaches the common no-valid-signature error.

Every verification, attachment, payload-check, and run result carries environment_report. Release-declared values override inherited host and caller values; no inherited variable is filtered. Host values are masked by default. Pass env_report=True to include every name and env_report_values=True only when revealing host values in logs is intentional. The report is a local diagnostic snapshot, not a signed guarantee of the box. Release and caller values are never masked, so do not log a report containing caller-supplied secrets.

A receipt is bound to the process that produced it, so an application that installs a box once and runs it across restarts calls attach_extracted_box on each later launch: it re-identifies the extracted directory against the signed release without the archive and without re-reading original payload file contents. It still enumerates paths, measures metadata, requires the native target, and verifies on-demand assets. The returned receipt says status == "attached"; a freshly extracted receipt says "prepared".

verify_extracted_payload is the separate, opt-in check that the installed bytes are still the ones the release describes. It verifies the signed payload-digest.v1 list before parsing it, then hashes only the files and links that list names. Extra application output and on-demand assets are ignored; embedded assets are listed and may make the check read tens of gigabytes. Modes and timestamps are not part of the commitment.

The result is point-in-time integrity, not protection against later changes or a live local attacker. The build collector excludes __pycache__ directories and *.pyc files, so the digest never makes an assertion about compiled Python caches. Protect an installation with operating-system permissions and the embedding application's ownership policy.

This package does not select channels, download boxes or on-demand assets, update installations, publish, promote, revoke, or manage application lifecycle. The caller supplies local release, archive, trust-key, destination, and asset paths.

The repository's src/contract/schema/ directory is the format authority. Run python scripts/sync_schemas.py after an intentional schema change and python scripts/sync_schemas.py --check in verification; the bundled files are generated copies, not a second Python contract.

Repository verification:

python -m unittest discover -s tests -t .
mypy src
python scripts/sync_schemas.py --check
python -m build
python scripts/check_distribution.py dist/*

Metadata

Release files for scrollcase-consumer 0.5.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 scrollcase-consumer 0.5.0
File Size Uploaded Provenance Actions
scrollcase_consumer-0.5.0.tar.gz 44.4 kB With provenance Details for scrollcase_consumer-0.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for scrollcase-consumer 0.5.0
File Interpreter ABI Platform Actions
scrollcase_consumer-0.5.0-py3-none-any.whl Python 3 none any Details for scrollcase_consumer-0.5.0-py3-none-any.whl

Total release size: 93.6 kB

Release files / scrollcase_consumer-0.5.0.tar.gz

Download URL scrollcase_consumer-0.5.0.tar.gz
Size 44.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1c1a3cc13c543bcadf3e75d7fc85a399d15787e9685b7b8a2252bd535f5cbcb4
BLAKE2b-256 checksum
How to use checksums
1bfde2602defa869986ef10629ff0959f920f7c9588e7e47f444a257f8e19301
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 2, 2026.

Transparency log

Release files / scrollcase_consumer-0.5.0-py3-none-any.whl

Download URL scrollcase_consumer-0.5.0-py3-none-any.whl
Size 49.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a7eeb4856b25d956b26041347659452913c2475e74e2c8a7edd0f4355cc34b9
BLAKE2b-256 checksum
How to use checksums
c90807747e741ce84dbce941d752a6a8f672fb4c32384423dc23ee1744fdbce4
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 2, 2026.

Transparency log

Security for scrollcase-consumer 0.5.0

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 scrollcase_consumer-0.5.0.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 Sep 2, 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