Skip to content

python: the fuzz crate's Cargo.lock resolves vitaminc 0.8.1, not the 0.8.0 the SDK ships with #1639

Open

Description

@yujiyokoo

Background

The Python SDK, stackencrypt in languages/python, wraps the Rust engine stack-encrypt. Its Rust code is a Cargo workspace of its own, with its own Cargo.lock. That lock is seeded from the repository's root Cargo.lock, so that the crates that decide what a stored value is resolve to the versions the root tests. vitaminc, CipherStash's cryptography library, is one of those crates. scripts/__tests__/python-lock-parity.test.mjs fails when the two locks disagree on them.

The SDK's value conversion also has a fuzz crate, languages/python/crates/core/fuzz. Like every fuzz crate here, it is a separate Cargo workspace with a third Cargo.lock. CI runs it from fuzz.yml, through the root mise.toml's fuzz:python-values task.

Problem

The fuzz crate's lock is not kept in step with the SDK's lock.

  • languages/python/Cargo.lock has the vitaminc 0.8 crates at 0.8.0. The fuzz crate's Cargo.lock has them at 0.8.1. I checked this by listing every vitaminc* entry in both files.
  • python-lock-parity.test.mjs reads only the root lock and languages/python/Cargo.lock (lines 29 and 30). It never reads the fuzz crate's lock.
  • The fuzz:python-values task runs cargo +nightly fuzz run with no --locked (root mise.toml, line 375).
  • AGENTS.md's re-seed steps name only languages/python/Cargo.lock.

So the fuzzer tests the value conversion against a different vitaminc from the one the SDK builds with. Today the difference is one patch release. Nothing stops it growing, and nothing reports it.

Proposal

  1. Extend python-lock-parity.test.mjs to compare the same crates in languages/python/crates/core/fuzz/Cargo.lock, by version, source and checksum.
  2. Re-seed the fuzz crate's lock so that it passes. Run cargo update -p <crate>@0.8.1 --precise 0.8.0 there for each vitaminc crate, as AGENTS.md describes for the SDK's lock.
  3. Name the fuzz crate's lock in AGENTS.md's re-seed steps.

Relationship to other work

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    SDKneeds-triageMaintainer needs to evaluate the issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions