Skip to content

Repin integrity shims: vidimus==0.1.2 → receipt==0.2.0 (upstream rename)#116

Open
MaxGhenis wants to merge 1 commit into
codex/thesis-ledger-factsfrom
repin/receipt-0.2.0
Open

Repin integrity shims: vidimus==0.1.2 → receipt==0.2.0 (upstream rename)#116
MaxGhenis wants to merge 1 commit into
codex/thesis-ledger-factsfrom
repin/receipt-0.2.0

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Summary

  • Replace the pinned vidimus==0.1.2 dependency with receipt==0.2.0.
  • Point the three byte-transparent integrity shims at receipt and rename the
    consumer-owned pins module to scripts/receipt_pins.py.
  • Rename the transparency harness while keeping its 17 cases, authenticated
    hashes, and frozen tests/fixtures/vidimus_shim_originals/ oracles intact.
  • Update package references in the README, workflow comments, and the relevant
    adversarial-test comment.

This is a behavior-neutral package repin. It does not change trust pins,
integrity logic, custody data, release files, or any unrelated dependency
version.

Upstream provenance

The upstream rename landed in
TheAxiomFoundation/receipt#10,
with the related provenance recorded in
TheAxiomFoundation/receipt#9.
The receipt 0.2.0 distribution retains the modules consumed here and adds the
standalone receipt.sign module.

vidimus==0.1.2 remains parked on PyPI and will not be deleted, so historical
ledger checkouts continue to resolve their original hash-pinned dependency.

Dependency provenance

The lock was generated by uv, not edited by hand:

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv remove --offline --no-sync vidimus
Resolved 138 packages in 63ms

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv add --offline --no-sync receipt==0.2.0
Resolved 139 packages in 224ms

Both operations also repeated the existing warning that numpy==2.4.0 is
yanked; the lock diff does not change numpy or any package other than the
requested vidimus/receipt substitution.

The resulting lock records the PyPI artifacts and their real hashes:

receipt-0.2.0-py3-none-any.whl
sha256:365b680ebec7e27de108cf990c807f8f45a8e9ccb40801a570c451afdd4aaf7a
size: 32646

receipt-0.2.0.tar.gz
sha256:41ef973355cf0cc18fdb1f5f78e116a3b95b5b7b27f67f48cb4fcbdd1561448d
size: 65898

Shell DNS was unavailable during this run. Uv resolved from its official PyPI
simple-index cache, which included the artifact URLs, hashes, sizes, and upload
times. The cache had discarded the raw 0.2.0 wheel, so I rebuilt the upstream
v0.2.0 tag with its own uv build --offline --wheel workflow. The resulting
32,646-byte wheel matched the official PyPI wheel hash exactly:

shasum -a 256 /private/tmp/receipt-v020-build.WBGVoy/dist/receipt-0.2.0-py3-none-any.whl
365b680ebec7e27de108cf990c807f8f45a8e9ccb40801a570c451afdd4aaf7a  /private/tmp/receipt-v020-build.WBGVoy/dist/receipt-0.2.0-py3-none-any.whl

I installed that exact artifact locally before the locked sync. I did not
hand-edit uv.lock, artifact hashes, or uv cache metadata.

Verification

Required pre-bump proof

I ran the original vidimus differential from a clean detached worktree at
02b1747, before changing the dependency lock:

UV_CACHE_DIR=/private/tmp/ledger-proof-cache.PQ7EZq uv run --locked --no-sync pytest tests/test_vidimus_shim_transparency.py -q
.................                                                        [100%]
17 passed in 14.06s

Locked environment

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv sync --locked
Resolved 139 packages in 29ms
Checked 79 packages in 66ms

Receipt transparency differential

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv run --locked pytest tests/test_receipt_shim_transparency.py -q
.................                                                        [100%]
17 passed in 11.22s

Pytest emitted only stale temporary-directory cleanup warnings after this
successful result.

Full repository suite

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv run --locked pytest -q
783 passed, 16 skipped, 5 xfailed, 16 warnings in 819.95s (0:13:39)

The 16 reported warnings were dependency deprecations and an expected offline
CPS synthetic fallback. Pytest also emitted stale temporary-directory cleanup
warnings after the successful terminal summary.

Lint

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv run --locked --extra dev ruff check
All checks passed!

Live release chain and append gate

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv run --locked --no-dev python scripts/verify_release_chain.py --full
release chain OK: 3 releases, HEAD=0002-a69272175b73c83b.json, digicert=2026-07-18T16:39:11Z, freetsa=2026-07-18T16:39:11Z

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv run --locked --no-dev python scripts/check_thesis_facts_append.py
thesis-facts append check OK: 147 rows, immutable prefix 128, release 2

env -u UV_FROZEN UV_CACHE_DIR=/private/tmp/ledger-repin-cache.ZffGzV /opt/homebrew/bin/uv run --locked --no-dev python scripts/check_thesis_facts_append.py --base-ref HEAD
thesis-facts append check OK: 147 rows, immutable prefix 128, +0 appended vs base, release 2

I then added a deliberate line to releases/README.md, reran the final command,
and got the ledger#111 refusal with exit status 1:

thesis-facts append check failed: existing release file bytes changed relative to ee179cdf287eab900d9292e1468c357d6669be27: releases/README.md

I reversed the deliberate tamper and reran the clean base-relative command with
the successful output shown above. The trusted-base pull_request_target
checkout wrapper itself requires GitHub Actions context and was not reproduced
locally; the underlying receipt-backed gate and refusal path require no CI-only
context and both ran locally.

Known pre-existing issue

APPEND_GATE_SPEC.gate_surface still omits the consumer pins module,
pyproject.toml, and uv.lock. The same omission existed in
scripts/vidimus_pins.py: a future proposal could combine ledger data with a
pin or dependency change without the mixed-surface classifier recognizing that
part of the change. The base-owned gate model protects this repin from judging
itself, but the classification gap merits a separate follow-up. I did not fix it
here because this PR is intentionally behavior-neutral.

Environment notes

A fresh fetch and live package download could not run because shell DNS could
not resolve GitHub or PyPI. The local origin/codex/thesis-ledger-facts ref and
the worktree both pointed to the requested base 02b1747 before this commit.
No in-repository protocol conflicted with the requested upgrade procedure.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant