v0.7.0
[0.7.0] — 2026-06-11
Module rename for namespace hygiene + post-quantum claim softened. No wire / on-disk / behavior changes. Both fixes prompted by external review of v0.6.1.
Breaking changes
-
Python module renamed:
pact→pact_passport. The previous import path silently shadowedpact-python— the widely-used Pact Foundation contract-testing library, which also installs as thepactmodule. Any environment with both packages installed had unpredictable behavior depending onsys.pathorder. After v0.7.0, both packages coexist without conflict.Migration (every import path):
# Before (v0.6.x and earlier): from pact import PACTAgent from pact.capability import issue_capability, Caveat from pact.message import build_req, verify_message # After (v0.7.0+): from pact_passport import PACTAgent from pact_passport.capability import issue_capability, Caveat from pact_passport.message import build_req, verify_message
Unchanged:
- PyPI package name:
pact-passport(pip install pact-passportworks as before). - CLI binary:
pact(no conflict — pact-python shipspact-broker,pact-stub-service, etc., not a barepact). - Wire protocol, on-disk format, capability tokens, receipts, test vectors, spec — no changes. v0.6.1 receipts/caps remain valid; only the import path moves.
- PyPI package name:
Changed
- Post-quantum claim softened in README. Architecture box and Non-goals previously said
crypto.pywas "a single-file seam for the eventual migration" / "post-quantum swap = one file change". Both overclaimed — a real PQ migration changesagent_idderivation (PQ pubkeys are 1–4KB vs Ed25519's 32B), signature/token sizes, the spec, and test vectors. Updated to acknowledge the migration is non-trivial; the architectural point ("crypto isolated to one module") is preserved.
Tests
282 tests, all passing. No count change — every test file's imports moved from pact to pact_passport; no test behavior changes.