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 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/*

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scrollcase_consumer-0.4.0.tar.gz (35.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scrollcase_consumer-0.4.0-py3-none-any.whl (40.2 kB view details)

Uploaded Python 3

File details

Details for the file scrollcase_consumer-0.4.0.tar.gz.

File metadata

  • Download URL: scrollcase_consumer-0.4.0.tar.gz
  • Upload date:
  • Size: 35.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for scrollcase_consumer-0.4.0.tar.gz
Algorithm Hash digest
SHA256 1f484e7dd70f9974c4689bac06898ba5733ec3e196182e9c842b57e077f2fe41
MD5 404a2b5745e2d44146fffb25a25b66ad
BLAKE2b-256 98684396d2f570bb990771b32f41b6f35080cbc2d575e64233b463556cc289aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrollcase_consumer-0.4.0.tar.gz:

Publisher: publish-python.yml on suffro/scrollcase

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scrollcase_consumer-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for scrollcase_consumer-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 951decc48a33be7c521da29d3359d71340f0ac918a53828dd185da4aa684c8e4
MD5 18e5e43892be45670ad0bb8faed4f223
BLAKE2b-256 3209972f1d39e5a64ef1d3e271b3a26dde81e7bc1aa3bae429a5b2cca4a2efe9

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrollcase_consumer-0.4.0-py3-none-any.whl:

Publisher: publish-python.yml on suffro/scrollcase

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.0

2 files

0.4.1

2 files

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 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