Skip to content

feat!: upgrade CPEX to PPE 0.6.0 with RustCrypto - #197

Draft
araujof wants to merge 4 commits into
mainfrom
feat/ppe_0.6.0
Draft

araujof wants to merge 4 commits into
mainfrom
feat/ppe_0.6.0

Conversation

@araujof

@araujof araujof commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Upgrade CPEX to PPE 0.6.0 with an explicit RustCrypto backend and prepare CPEX 0.4.0 / FFI ABI 4. Preserve credential headers and request context across the bindings as PPE changes its serialized inputs and credential types.

Changes

  • Restore private identity headers on binding input while retaining resolver-output guards and result redaction.
  • Thread request context through fused identity/policy calls, the tutorial and parity harness; verify DPoP reuse within a request and rejection across requests.
  • Add Go key bindings, live HTTP query/client-address fields and typed CMF history. Preserve canonical HTTP fields across Python worker merges.
  • Reject unsupported LLM-request, acquired-metadata and rate-limit inputs at binding/worker boundaries.
  • Migrate maintained JWT locations and explicit CIBA stores, update parity's hook inventory, and document the two expected malformed-credential error-code differences.
  • Refresh migration/audit docs and release checks, apply three compatible security updates, and make parity failures propagate under macOS Make.

Checks

  • make lint
  • Rust workspace tests: 420 passed, 17 ignored; optional Python-host facade: 19 passed, 1 ignored documentation example
  • Python bindings: 77 passed; required legacy-worker e2e: 14 passed with no skips
  • Go static-library race tests, including DPoP context, query authentication/redaction and typed history
  • All 68 parity requests with Valkey read-back and determinism
  • Local and IdP-backed tutorial checks, example builds, Rustdoc, Hugo and internal link checks
  • Release checks, four independently verified crate packages, Python wheel smoke test and darwin-arm64 packaged FFI verification
  • CHANGELOG updated
  • make audit: existing Biscuit dependency still resolves vulnerable crypto-bigint 0.5.5 (RUSTSEC-2026-0387)

Notes

Release blocker: retain crates.io-only Biscuit dependencies until upstream publishes the fix tracked in eclipse-biscuit/biscuit-rust#351. No new advisory waiver, Git dependency or vendored crypto patch is added.

RustCrypto is the selected backend; CPEX adds no FIPS support or experimental limiter. The separate SPIRE overlay and cross-target release CI were not run locally. Full evidence and support boundaries are recorded in the upgrade plan.

Signed-off-by: Frederico Araujo <frederico.araujo@ibm.com>
Preserve binding credentials and request context, adopt typed credential sources and CMF history, and migrate maintained configs. Reject Rust-only inputs at unsupported host boundaries.

BREAKING CHANGE: CIBA requires an explicit store and conversation history uses CMF messages. Go and native artifacts must use FFI ABI 4.

Signed-off-by: Frederico Araujo <frederico.araujo@ibm.com>
Describe RustCrypto, ABI 4, live request state and worker support boundaries. Refresh current examples and audit-sink guidance, record validation results, and retain the Biscuit advisory as a release blocker.

Signed-off-by: Frederico Araujo <frederico.araujo@ibm.com>
Keep crates.io-only dependencies until the upstream fix is published. Record the release follow-up and confirm that CPEX has no FIPS implementation or runtime dependencies.

Signed-off-by: Frederico Araujo <frederico.araujo@ibm.com>

This branch has not been deployed

No deployments
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