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.3.0.tar.gz (34.6 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.3.0-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: scrollcase_consumer-0.3.0.tar.gz
  • Upload date:
  • Size: 34.6 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.3.0.tar.gz
Algorithm Hash digest
SHA256 5079cf862899642741e497639ca4a96c42367f8f807501165750dd81b07f247e
MD5 36e3b75bad97bdda7384113bb27e2ec7
BLAKE2b-256 df31f7340798eb7a51d19b3aaa6734115e3c8f76ab134badbf2a3223ed1d0b11

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrollcase_consumer-0.3.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.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for scrollcase_consumer-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 081b15abf0348a5ee06195e771ec072b95c1aecc20189059fec057f4171174ce
MD5 6872ae62022eded0374e5b3de77bb86b
BLAKE2b-256 ea80a17379fe47b05f73ae8aa1140e372351f08b58a9721d30ceae5a51484f0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrollcase_consumer-0.3.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

0.4.0

2 files

This release

0.3.0 This release

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