matrixscroll 0.4.1__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/CHANGELOG.md +33 -0
  2. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/PKG-INFO +46 -31
  3. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/README.md +42 -29
  4. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/SPEC.md +55 -0
  5. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/ADOPTER_KIT.md +3 -3
  6. matrixscroll-0.5.0/docs/CRYPTO_BACKEND.md +53 -0
  7. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/FIVE_MINUTES.md +2 -2
  8. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/ROADMAP_2026-07.md +2 -2
  9. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/SECURITY_PROPERTIES.md +11 -1
  10. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/SOFTWARE_PRODUCTS.md +3 -3
  11. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/WHITEPAPER.md +4 -4
  12. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/commercial/PLATFORM_PIVOT.md +3 -3
  13. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/commercial/SSX360_SCROLL.md +1 -1
  14. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/hardware-provider.md +1 -1
  15. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/quickstart-agent.md +1 -1
  16. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/quickstart-claude-code.md +1 -1
  17. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/quickstart-git.md +4 -4
  18. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/quickstart-mcp.md +2 -2
  19. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/registries-guide.md +11 -4
  20. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/ci/protected-branch.yml +3 -3
  21. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/__init__.py +1 -1
  22. matrixscroll-0.5.0/matrixscroll/canonical.py +38 -0
  23. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/cli.py +71 -1
  24. matrixscroll-0.5.0/matrixscroll/constants.py +26 -0
  25. matrixscroll-0.5.0/matrixscroll/crypto_backend.py +176 -0
  26. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/gate.py +15 -2
  27. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/git.py +2 -2
  28. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/manifest.py +29 -0
  29. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/mcp.py +176 -38
  30. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/policy.py +55 -0
  31. matrixscroll-0.5.0/matrixscroll/pqc.py +208 -0
  32. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/emulated.py +15 -16
  33. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/registry.py +3 -6
  34. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/se050_transport.py +9 -10
  35. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/tpm.py +13 -17
  36. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/rekor_publish.py +2 -2
  37. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/pyproject.toml +11 -3
  38. matrixscroll-0.5.0/schemas/commit-envelope.v1.1.json +19 -0
  39. matrixscroll-0.5.0/schemas/pqc-signature.v1.json +37 -0
  40. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_canonical.py +9 -0
  41. matrixscroll-0.5.0/tests/test_canonical_pqc.py +16 -0
  42. matrixscroll-0.5.0/tests/test_crypto_backend.py +50 -0
  43. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_mcp_server.py +36 -1
  44. matrixscroll-0.5.0/tests/test_pqc.py +100 -0
  45. matrixscroll-0.4.1/matrixscroll/canonical.py +0 -18
  46. matrixscroll-0.4.1/matrixscroll/constants.py +0 -12
  47. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/.gitignore +0 -0
  48. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/CONTRIBUTING.md +0 -0
  49. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/LICENSE +0 -0
  50. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/SECURITY.md +0 -0
  51. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/controls/agentic_ai_controls.json +0 -0
  52. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/ADOPTION.md +0 -0
  53. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/AGENTIC_AI_SECURITY.md +0 -0
  54. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/CI_HARD_GATE.md +0 -0
  55. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +0 -0
  56. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/COMPARISON.md +0 -0
  57. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/HERO_DEMO.md +0 -0
  58. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/SE050_POC_SCOPE.md +0 -0
  59. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/SE050_USB_PROTOCOL.md +0 -0
  60. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/commercial/SCROLL_GATE_V2.md +0 -0
  61. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/delegation-attestation-rfc.md +0 -0
  62. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/rekor-guac-bridge-design.md +0 -0
  63. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
  64. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
  65. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
  66. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/yubikey-bridge.md +0 -0
  67. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/docs/yubikey-smoke.md +0 -0
  68. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/agentic_ai_evidence_manifest.json +0 -0
  69. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
  70. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/commit-envelope.json +0 -0
  71. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/commit-envelope.signed.json +0 -0
  72. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/demo/agent-commit-demo.sh +0 -0
  73. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/demo/generate_signed_examples.py +0 -0
  74. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/demo/hero-self-attestation-demo.sh +0 -0
  75. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/release-manifest.json +0 -0
  76. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/release-manifest.signed.json +0 -0
  77. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/examples/trusted-keys-policy.json +0 -0
  78. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/_claim.py +0 -0
  79. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/_core.py +0 -0
  80. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/_payment.py +0 -0
  81. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/cloud/__init__.py +0 -0
  82. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/cloud/client.py +0 -0
  83. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/errors.py +0 -0
  84. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/guac_export.py +0 -0
  85. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/hooks/post-commit +0 -0
  86. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/hooks/pre-push +0 -0
  87. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/mcp_core.py +0 -0
  88. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/provenance/__init__.py +0 -0
  89. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/provenance/actions.py +0 -0
  90. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/__init__.py +0 -0
  91. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/base.py +0 -0
  92. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/hardware.py +0 -0
  93. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/providers/yubikey.py +0 -0
  94. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/py.typed +0 -0
  95. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/scroll/README.md +0 -0
  96. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/matrixscroll/scroll/__init__.py +0 -0
  97. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/schemas/action-envelope.v1.json +0 -0
  98. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/schemas/commit-envelope.v1.json +0 -0
  99. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/schemas/evidence-pack.v1.json +0 -0
  100. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/schemas/release-manifest.v1.json +0 -0
  101. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/__init__.py +0 -0
  102. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/fixtures/github-gpgsig-commit.txt +0 -0
  103. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_agentic_guidance.py +0 -0
  104. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_cli.py +0 -0
  105. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_core.py +0 -0
  106. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_gate.py +0 -0
  107. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_git_envelope.py +0 -0
  108. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_guac_rekor.py +0 -0
  109. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_mcp_core.py +0 -0
  110. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_policy.py +0 -0
  111. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_provenance.py +0 -0
  112. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_release_metadata.py +0 -0
  113. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_se050_transport.py +0 -0
  114. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_security_properties.py +0 -0
  115. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_tpm_provider.py +0 -0
  116. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_vectors.py +0 -0
  117. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/tests/test_yubikey_provider.py +0 -0
  118. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/README.md +0 -0
  119. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/_fixture_key.json +0 -0
  120. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/_generate.py +0 -0
  121. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/tampered_algorithm.json +0 -0
  122. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/tampered_device_id.json +0 -0
  123. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/tampered_field.json +0 -0
  124. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/tampered_nested.json +0 -0
  125. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/tampered_public_key.json +0 -0
  126. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/tampered_schema.json +0 -0
  127. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/tampered_signature.json +0 -0
  128. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/unsigned_empty_block.json +0 -0
  129. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/unsigned_no_block.json +0 -0
  130. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/valid_commit_envelope.json +0 -0
  131. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/valid_nested.json +0 -0
  132. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/valid_simple.json +0 -0
  133. {matrixscroll-0.4.1 → matrixscroll-0.5.0}/vectors/valid_unicode.json +0 -0
@@ -4,6 +4,38 @@ All notable changes to the Matrix Scroll Python SDK are documented here. The
4
4
  format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
5
5
  this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.5.0] - 2026-07-02
8
+
9
+ Post-quantum overlay (v1.1 additive extension).
10
+
11
+ ### Added
12
+ - **SPEC.md §11** — optional `pqc_signatures` array (ML-DSA FIPS 204, SLH-DSA FIPS 205).
13
+ - **`matrixscroll.pqc`** — software-only PQC overlay; Ed25519 `signature` block unchanged.
14
+ - **`matrixscroll pqc-keygen`** — generate/load PQC keys under `~/.matrixscroll/pqc/`.
15
+ - **`MATRIXSCROLL_PQC`** env — attach overlay on sign (e.g. `ml-dsa-65`); hardware mode exempt.
16
+ - **Policy `require_pqc`** — `false` (default), `emulated_only`, or `true` (hardware exempt).
17
+ - **Optional extra `[pqc]`** — `liboqs-python` backend for ML-DSA / SLH-DSA.
18
+
19
+ ### Unchanged
20
+ - USB/NFC/SE050 device signing remains **Ed25519-only** (no firmware change).
21
+ - All v1 vectors and Ed25519 verification behavior.
22
+
23
+ ## [0.4.2] - 2026-06-29
24
+
25
+ Crypto backend consolidation (middle path).
26
+
27
+ ### Changed
28
+ - **`matrixscroll.crypto_backend`** — all Ed25519 sign/verify/keygen and
29
+ security-relevant SHA-256 hashing route through the `cryptography` package
30
+ (native wheels; no user Rust toolchain).
31
+ - **Dependency** — `cryptography>=42.0` is now required (was `>=41.0`).
32
+ - **Docs** — `docs/CRYPTO_BACKEND.md`, README security note, SECURITY_PROPERTIES
33
+ backend section.
34
+
35
+ ### Removed
36
+ - Scattered direct `cryptography` / `hashlib` calls in providers and gate paths
37
+ in favor of the centralized backend module (Git SHA-1 wire hashing unchanged).
38
+
7
39
  ## [0.4.1] - 2026-06-29
8
40
 
9
41
  Universal provenance SDK expansion and SSX360 Scroll Phase 1 wrapper.
@@ -173,6 +205,7 @@ Initial public release. Extracted from the SSX360 reference implementation.
173
205
  - Device id format: `MS-XXXX-XXXX` (SHA-256 of the raw public key, first 8 hex
174
206
  chars, uppercase).
175
207
 
208
+ [0.5.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.5.0
176
209
  [0.2.2]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.2
177
210
  [0.2.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.1
178
211
  [0.2.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrixscroll
3
- Version: 0.4.1
4
- Summary: Signed provenance for agent-assisted Git commits with offline verification; emulated Ed25519 ships today and the SE050 hardware path remains an optional preview.
3
+ Version: 0.5.0
4
+ Summary: Signed provenance for agent-assisted Git commits with offline Ed25519 verification; optional ML-DSA/SLH-DSA software overlay (FIPS 204/205). USB/NFC/SE050 hardware remains Ed25519.
5
5
  Project-URL: Homepage, https://ssx360.com
6
6
  Project-URL: Documentation, https://ssx360.com/docs
7
7
  Project-URL: Repository, https://github.com/SSX360/matrixscroll
@@ -22,7 +22,7 @@ Project-URL: Public Roadmap, https://github.com/SSX360/matrixscroll/blob/main/do
22
22
  Author-email: SSX360 <security@matrixscroll.com>
23
23
  License-Expression: Apache-2.0
24
24
  License-File: LICENSE
25
- Keywords: ai,ed25519,matrixscroll,provenance,root-of-trust,secure-element,signing,ssx360,supply-chain
25
+ Keywords: ai,ed25519,fips-204,fips-205,matrixscroll,ml-dsa,post-quantum,provenance,root-of-trust,secure-element,signing,slh-dsa,ssx360,supply-chain
26
26
  Classifier: Development Status :: 4 - Beta
27
27
  Classifier: Intended Audience :: Developers
28
28
  Classifier: Intended Audience :: Information Technology
@@ -38,7 +38,7 @@ Classifier: Topic :: Security :: Cryptography
38
38
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
39
39
  Classifier: Typing :: Typed
40
40
  Requires-Python: >=3.10
41
- Requires-Dist: cryptography>=41.0
41
+ Requires-Dist: cryptography>=43.0
42
42
  Provides-Extra: dev
43
43
  Requires-Dist: build>=1.0; extra == 'dev'
44
44
  Requires-Dist: hypothesis>=6.100; extra == 'dev'
@@ -49,6 +49,8 @@ Provides-Extra: hardware
49
49
  Requires-Dist: pyserial>=3.5; extra == 'hardware'
50
50
  Provides-Extra: mcp
51
51
  Requires-Dist: mcp<2.0.0,>=1.0.0; extra == 'mcp'
52
+ Provides-Extra: pqc
53
+ Requires-Dist: liboqs-python>=0.12.0; extra == 'pqc'
52
54
  Provides-Extra: tpm
53
55
  Provides-Extra: yubikey
54
56
  Requires-Dist: python-pkcs11>=0.7; extra == 'yubikey'
@@ -60,17 +62,18 @@ Description-Content-Type: text/markdown
60
62
  [![Scroll Gate v2 (hosted)](https://github.com/SSX360/matrixscroll/actions/workflows/provenance-gate.yml/badge.svg)](https://github.com/SSX360/matrixscroll/actions/workflows/provenance-gate.yml)
61
63
  [![codecov](https://codecov.io/gh/SSX360/matrixscroll/graph/badge.svg)](https://codecov.io/gh/SSX360/matrixscroll)
62
64
 
63
- **112 tests** · Hypothesis-verified security properties · [Security properties](docs/SECURITY_PROPERTIES.md)
65
+ **123 tests** · Hypothesis-verified security properties · [Security properties](docs/SECURITY_PROPERTIES.md)
64
66
 
65
- **Signed proof of who — or what — wrote every commit.** Matrix Scroll is the
66
- **universal provenance SDK** — open Ed25519 envelopes for Git commits, CI steps,
67
- IaC changes, DB migrations, API calls, and smart-contract deploys — verified
68
- offline in CLI, browser, and CI. Hardware (SE050) is an optional preview trust
69
- upgrade; emulated mode ships today.
67
+ **Signed proof of who — or what — wrote every AI-assisted commit.** Matrix Scroll is an
68
+ **open protocol for cryptographically signed, AI-assisted code provenance** — Ed25519 commit
69
+ envelopes for Git (and universal action envelopes for CI, IaC, and migrations),
70
+ verified offline in CLI, browser, and CI. Software emulated keys ship today; NXP SE050
71
+ secure-element signing is on the roadmap with the same verifier contract.
70
72
 
71
- **Hosted control plane:** identity, billing, and device confirmation live at
72
- [ssx360.com](https://ssx360.com/). Teams evaluating protected-branch enforcement should
73
- [book a provenance pilot](https://ssx360.com/contact?intent=pilot);
73
+ **Hosted control plane:** identity, billing, audit ledger, and Scroll Gate live at
74
+ [ssx360.com](https://ssx360.com/). Enterprise teams evaluating protected-branch enforcement should
75
+ [book a provenance pilot](https://ssx360.com/contact?intent=pilot) or visit
76
+ [ssx360.com/enterprise](https://ssx360.com/enterprise).
74
77
  Provisioned pilot and team accounts sign in at [ssx360.com/signup](https://ssx360.com/signup).
75
78
 
76
79
  ## Compliance evidence mapping
@@ -100,18 +103,18 @@ Agents sign commits in-loop via the **provenance-only** MCP server:
100
103
  ```
101
104
 
102
105
  ```bash
103
- pip install "matrixscroll[mcp]==0.4.1"
106
+ pip install "matrixscroll[mcp]==0.5.0"
104
107
  matrixscroll-mcp # stdio — register in Cursor / Claude Desktop / VS Code
105
108
  ```
106
109
 
107
110
  **MCP tools (provenance verbs only):** `create_envelope`, `sign_action`, `verify_envelope`,
108
111
  `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`, `list_envelopes`,
109
- `connect_card` (SE050 preview).
112
+ `connect_card` (SE050 hardware preview, roadmap).
110
113
 
111
114
  ## Also available — CLI & hooks
112
115
 
113
116
  ```bash
114
- pip install "matrixscroll==0.4.1"
117
+ pip install "matrixscroll==0.5.0"
115
118
  matrixscroll hook-install
116
119
  export MATRIXSCROLL_ACTOR_TYPE=agent
117
120
  export MATRIXSCROLL_TOOL=agent-runner
@@ -175,12 +178,12 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](SPEC.md) §4). Verifiers reject any
175
178
 
176
179
  ## Honest limits
177
180
 
178
- - Shipping now: PyPI `matrixscroll==0.4.1`, Git post-commit hooks,
181
+ - Shipping now: PyPI `matrixscroll==0.5.0`, Git post-commit hooks,
179
182
  `matrixscroll sign-action`, `matrixscroll scroll commit` (thin wrapper),
180
183
  `matrixscroll envelope-verify`, Scroll Gate PR verification (partial SLSA L1–2),
181
184
  verifier, the GitHub Action, and a USB CDC host transport preview for the
182
185
  SE050 rollout path. Emulated mode is the default evaluation path.
183
- - In progress: nRF52840 + SE050 firmware validation (AP2 Vault Card PoC), external Ed25519-capable
186
+ - In progress: nRF52840 + SE050 firmware validation for hardware-backed signing, external Ed25519-capable
184
187
  hardware key backends, and transparency-log integrations.
185
188
  - Not: IAM, sandboxing, prompt filtering, or an agent runtime.
186
189
 
@@ -190,8 +193,10 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](SPEC.md) §4). Verifiers reject any
190
193
  records who or what signed the change before push.
191
194
  - Hardware keys and build attestations remain complementary roots and downstream
192
195
  proofs; Matrix Scroll covers commit-time provenance.
193
- - The public contract stays pure Ed25519 over canonical manifest bytes,
194
- whether the signer is emulated today or hardware-backed later.
196
+ - The public contract stays pure Ed25519 over canonical manifest bytes for the
197
+ required `signature` block — whether the signer is emulated today or
198
+ hardware-backed later. Software signers may optionally attach ML-DSA/SLH-DSA
199
+ overlays (FIPS 204/205) via `matrixscroll[pqc]` without changing hardware firmware.
195
200
 
196
201
  ## Common questions
197
202
 
@@ -221,7 +226,7 @@ alongside your existing scanners, branch protection, and build attestations.
221
226
  ## Quickstart (CLI)
222
227
 
223
228
  ```bash
224
- pip install "matrixscroll==0.4.1"
229
+ pip install "matrixscroll==0.5.0"
225
230
  matrixscroll hook-install
226
231
  matrixscroll hook-status
227
232
 
@@ -248,7 +253,7 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
248
253
  head-ref: ${{ github.event.pull_request.head.sha }}
249
254
  base-ref: ${{ github.event.pull_request.base.sha }}
250
255
  source: notes
251
- matrixscroll-version: "0.4.1"
256
+ matrixscroll-version: "0.5.0"
252
257
  require-mode: emulated
253
258
  ```
254
259
 
@@ -268,7 +273,7 @@ git push origin refs/notes/matrixscroll
268
273
  head-ref: ${{ github.event.pull_request.head.sha }}
269
274
  base-ref: ${{ github.event.pull_request.base.sha }}
270
275
  source: notes
271
- matrixscroll-version: "0.4.1"
276
+ matrixscroll-version: "0.5.0"
272
277
  summary-output: provenance-summary.json
273
278
  ```
274
279
 
@@ -276,7 +281,15 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
276
281
  [`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
277
282
 
278
283
  The `--require-mode`, `--trusted-keys`, and actor or delegation policy checks
279
- are available in the `0.2.x` line; the examples in this README pin `0.3.0`.
284
+ ship in the current release line; examples in this README pin `0.5.0`.
285
+
286
+ ## Security: Ed25519 via cryptography
287
+
288
+ Ed25519 signing, verification, and key generation use the [`cryptography`](https://pypi.org/project/cryptography/)
289
+ package (required dependency, `>=42.0`). Official wheels ship native crypto
290
+ backends (OpenSSL + Rust components) — no Rust toolchain for users. All
291
+ primitives are centralized in `matrixscroll/crypto_backend.py`; see
292
+ [`docs/CRYPTO_BACKEND.md`](docs/CRYPTO_BACKEND.md).
280
293
 
281
294
  ## Why it is different from Sigstore
282
295
 
@@ -291,21 +304,23 @@ when they preserve the same pure Ed25519 byte contract.
291
304
 
292
305
  ## Public proof links
293
306
 
294
- - Browser verifier: <https://matrixscroll.com/verify/>
295
- - Compare page: <https://matrixscroll.com/compare/>
307
+ - Browser verifier: <https://ssx360.com/verify>
308
+ - Compare page: <https://ssx360.com/compare>
309
+ - Documentation: <https://ssx360.com/docs>
296
310
  - Specification: [`SPEC.md`](SPEC.md)
297
311
  - Commit envelope schema: [`schemas/commit-envelope.v1.json`](schemas/commit-envelope.v1.json)
298
312
  - Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
299
313
  - Conformance vectors: [`vectors/`](vectors/)
300
314
  - GitHub Action: <https://github.com/SSX360/matrixscroll-verify-action>
301
315
  - Agentic AI controls: [`docs/AGENTIC_AI_SECURITY.md`](docs/AGENTIC_AI_SECURITY.md)
302
- - Site: <https://matrixscroll.com>
303
- - Reference device path: [AP2 Vault Card hardware](https://ssx360.com/hardware)
316
+ - Site: <https://matrixscroll.com> · Enterprise: <https://ssx360.com/enterprise>
317
+ - [AP2 Vault Card hardware](https://ssx360.com/hardware)
318
+ - SE050 hardware signing: <https://ssx360.com/enterprise#roadmap>
304
319
 
305
320
  ## Python API
306
321
 
307
322
  ```bash
308
- pip install "matrixscroll==0.4.1"
323
+ pip install "matrixscroll==0.5.0"
309
324
  ```
310
325
 
311
326
  ```python
@@ -415,7 +430,7 @@ The MCP server exposes **provenance verbs only**: `create_envelope`, `verify_env
415
430
  Install and register in Cursor / Claude Desktop / VS Code:
416
431
 
417
432
  ```bash
418
- pip install "matrixscroll[mcp]==0.4.1"
433
+ pip install "matrixscroll[mcp]==0.5.0"
419
434
  matrixscroll-mcp # stdio
420
435
  ```
421
436
 
@@ -435,5 +450,5 @@ Report vulnerabilities privately to
435
450
 
436
451
  ---
437
452
 
438
- **Protocol:** https://matrixscroll.com · **Verify:** https://matrixscroll.com/verify/
453
+ **Protocol:** https://ssx360.com/docs · **Verify:** https://ssx360.com/verify
439
454
  **Control plane:** https://ssx360.com · **Pilot:** mission@ssx360.com · **Sign in:** https://ssx360.com/signup
@@ -4,17 +4,18 @@
4
4
  [![Scroll Gate v2 (hosted)](https://github.com/SSX360/matrixscroll/actions/workflows/provenance-gate.yml/badge.svg)](https://github.com/SSX360/matrixscroll/actions/workflows/provenance-gate.yml)
5
5
  [![codecov](https://codecov.io/gh/SSX360/matrixscroll/graph/badge.svg)](https://codecov.io/gh/SSX360/matrixscroll)
6
6
 
7
- **112 tests** · Hypothesis-verified security properties · [Security properties](docs/SECURITY_PROPERTIES.md)
8
-
9
- **Signed proof of who — or what — wrote every commit.** Matrix Scroll is the
10
- **universal provenance SDK** — open Ed25519 envelopes for Git commits, CI steps,
11
- IaC changes, DB migrations, API calls, and smart-contract deploys — verified
12
- offline in CLI, browser, and CI. Hardware (SE050) is an optional preview trust
13
- upgrade; emulated mode ships today.
14
-
15
- **Hosted control plane:** identity, billing, and device confirmation live at
16
- [ssx360.com](https://ssx360.com/). Teams evaluating protected-branch enforcement should
17
- [book a provenance pilot](https://ssx360.com/contact?intent=pilot);
7
+ **123 tests** · Hypothesis-verified security properties · [Security properties](docs/SECURITY_PROPERTIES.md)
8
+
9
+ **Signed proof of who — or what — wrote every AI-assisted commit.** Matrix Scroll is an
10
+ **open protocol for cryptographically signed, AI-assisted code provenance** — Ed25519 commit
11
+ envelopes for Git (and universal action envelopes for CI, IaC, and migrations),
12
+ verified offline in CLI, browser, and CI. Software emulated keys ship today; NXP SE050
13
+ secure-element signing is on the roadmap with the same verifier contract.
14
+
15
+ **Hosted control plane:** identity, billing, audit ledger, and Scroll Gate live at
16
+ [ssx360.com](https://ssx360.com/). Enterprise teams evaluating protected-branch enforcement should
17
+ [book a provenance pilot](https://ssx360.com/contact?intent=pilot) or visit
18
+ [ssx360.com/enterprise](https://ssx360.com/enterprise).
18
19
  Provisioned pilot and team accounts sign in at [ssx360.com/signup](https://ssx360.com/signup).
19
20
 
20
21
  ## Compliance evidence mapping
@@ -44,18 +45,18 @@ Agents sign commits in-loop via the **provenance-only** MCP server:
44
45
  ```
45
46
 
46
47
  ```bash
47
- pip install "matrixscroll[mcp]==0.4.1"
48
+ pip install "matrixscroll[mcp]==0.5.0"
48
49
  matrixscroll-mcp # stdio — register in Cursor / Claude Desktop / VS Code
49
50
  ```
50
51
 
51
52
  **MCP tools (provenance verbs only):** `create_envelope`, `sign_action`, `verify_envelope`,
52
53
  `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`, `list_envelopes`,
53
- `connect_card` (SE050 preview).
54
+ `connect_card` (SE050 hardware preview, roadmap).
54
55
 
55
56
  ## Also available — CLI & hooks
56
57
 
57
58
  ```bash
58
- pip install "matrixscroll==0.4.1"
59
+ pip install "matrixscroll==0.5.0"
59
60
  matrixscroll hook-install
60
61
  export MATRIXSCROLL_ACTOR_TYPE=agent
61
62
  export MATRIXSCROLL_TOOL=agent-runner
@@ -119,12 +120,12 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](SPEC.md) §4). Verifiers reject any
119
120
 
120
121
  ## Honest limits
121
122
 
122
- - Shipping now: PyPI `matrixscroll==0.4.1`, Git post-commit hooks,
123
+ - Shipping now: PyPI `matrixscroll==0.5.0`, Git post-commit hooks,
123
124
  `matrixscroll sign-action`, `matrixscroll scroll commit` (thin wrapper),
124
125
  `matrixscroll envelope-verify`, Scroll Gate PR verification (partial SLSA L1–2),
125
126
  verifier, the GitHub Action, and a USB CDC host transport preview for the
126
127
  SE050 rollout path. Emulated mode is the default evaluation path.
127
- - In progress: nRF52840 + SE050 firmware validation (AP2 Vault Card PoC), external Ed25519-capable
128
+ - In progress: nRF52840 + SE050 firmware validation for hardware-backed signing, external Ed25519-capable
128
129
  hardware key backends, and transparency-log integrations.
129
130
  - Not: IAM, sandboxing, prompt filtering, or an agent runtime.
130
131
 
@@ -134,8 +135,10 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](SPEC.md) §4). Verifiers reject any
134
135
  records who or what signed the change before push.
135
136
  - Hardware keys and build attestations remain complementary roots and downstream
136
137
  proofs; Matrix Scroll covers commit-time provenance.
137
- - The public contract stays pure Ed25519 over canonical manifest bytes,
138
- whether the signer is emulated today or hardware-backed later.
138
+ - The public contract stays pure Ed25519 over canonical manifest bytes for the
139
+ required `signature` block — whether the signer is emulated today or
140
+ hardware-backed later. Software signers may optionally attach ML-DSA/SLH-DSA
141
+ overlays (FIPS 204/205) via `matrixscroll[pqc]` without changing hardware firmware.
139
142
 
140
143
  ## Common questions
141
144
 
@@ -165,7 +168,7 @@ alongside your existing scanners, branch protection, and build attestations.
165
168
  ## Quickstart (CLI)
166
169
 
167
170
  ```bash
168
- pip install "matrixscroll==0.4.1"
171
+ pip install "matrixscroll==0.5.0"
169
172
  matrixscroll hook-install
170
173
  matrixscroll hook-status
171
174
 
@@ -192,7 +195,7 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
192
195
  head-ref: ${{ github.event.pull_request.head.sha }}
193
196
  base-ref: ${{ github.event.pull_request.base.sha }}
194
197
  source: notes
195
- matrixscroll-version: "0.4.1"
198
+ matrixscroll-version: "0.5.0"
196
199
  require-mode: emulated
197
200
  ```
198
201
 
@@ -212,7 +215,7 @@ git push origin refs/notes/matrixscroll
212
215
  head-ref: ${{ github.event.pull_request.head.sha }}
213
216
  base-ref: ${{ github.event.pull_request.base.sha }}
214
217
  source: notes
215
- matrixscroll-version: "0.4.1"
218
+ matrixscroll-version: "0.5.0"
216
219
  summary-output: provenance-summary.json
217
220
  ```
218
221
 
@@ -220,7 +223,15 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
220
223
  [`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
221
224
 
222
225
  The `--require-mode`, `--trusted-keys`, and actor or delegation policy checks
223
- are available in the `0.2.x` line; the examples in this README pin `0.3.0`.
226
+ ship in the current release line; examples in this README pin `0.5.0`.
227
+
228
+ ## Security: Ed25519 via cryptography
229
+
230
+ Ed25519 signing, verification, and key generation use the [`cryptography`](https://pypi.org/project/cryptography/)
231
+ package (required dependency, `>=42.0`). Official wheels ship native crypto
232
+ backends (OpenSSL + Rust components) — no Rust toolchain for users. All
233
+ primitives are centralized in `matrixscroll/crypto_backend.py`; see
234
+ [`docs/CRYPTO_BACKEND.md`](docs/CRYPTO_BACKEND.md).
224
235
 
225
236
  ## Why it is different from Sigstore
226
237
 
@@ -235,21 +246,23 @@ when they preserve the same pure Ed25519 byte contract.
235
246
 
236
247
  ## Public proof links
237
248
 
238
- - Browser verifier: <https://matrixscroll.com/verify/>
239
- - Compare page: <https://matrixscroll.com/compare/>
249
+ - Browser verifier: <https://ssx360.com/verify>
250
+ - Compare page: <https://ssx360.com/compare>
251
+ - Documentation: <https://ssx360.com/docs>
240
252
  - Specification: [`SPEC.md`](SPEC.md)
241
253
  - Commit envelope schema: [`schemas/commit-envelope.v1.json`](schemas/commit-envelope.v1.json)
242
254
  - Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
243
255
  - Conformance vectors: [`vectors/`](vectors/)
244
256
  - GitHub Action: <https://github.com/SSX360/matrixscroll-verify-action>
245
257
  - Agentic AI controls: [`docs/AGENTIC_AI_SECURITY.md`](docs/AGENTIC_AI_SECURITY.md)
246
- - Site: <https://matrixscroll.com>
247
- - Reference device path: [AP2 Vault Card hardware](https://ssx360.com/hardware)
258
+ - Site: <https://matrixscroll.com> · Enterprise: <https://ssx360.com/enterprise>
259
+ - [AP2 Vault Card hardware](https://ssx360.com/hardware)
260
+ - SE050 hardware signing: <https://ssx360.com/enterprise#roadmap>
248
261
 
249
262
  ## Python API
250
263
 
251
264
  ```bash
252
- pip install "matrixscroll==0.4.1"
265
+ pip install "matrixscroll==0.5.0"
253
266
  ```
254
267
 
255
268
  ```python
@@ -359,7 +372,7 @@ The MCP server exposes **provenance verbs only**: `create_envelope`, `verify_env
359
372
  Install and register in Cursor / Claude Desktop / VS Code:
360
373
 
361
374
  ```bash
362
- pip install "matrixscroll[mcp]==0.4.1"
375
+ pip install "matrixscroll[mcp]==0.5.0"
363
376
  matrixscroll-mcp # stdio
364
377
  ```
365
378
 
@@ -379,5 +392,5 @@ Report vulnerabilities privately to
379
392
 
380
393
  ---
381
394
 
382
- **Protocol:** https://matrixscroll.com · **Verify:** https://matrixscroll.com/verify/
395
+ **Protocol:** https://ssx360.com/docs · **Verify:** https://ssx360.com/verify
383
396
  **Control plane:** https://ssx360.com · **Pilot:** mission@ssx360.com · **Sign in:** https://ssx360.com/signup
@@ -196,3 +196,58 @@ Signed release metadata (version, tag, artifact list). JSON Schema:
196
196
 
197
197
  Signed audit or agent-scope evidence. JSON Schema:
198
198
  [`schemas/evidence-pack.v1.json`](schemas/evidence-pack.v1.json).
199
+
200
+ ## 11. Post-quantum overlay (v1.1 extension)
201
+
202
+ Matrix Scroll v1 **requires** an Ed25519 `signature` block (§5). USB, NFC, and SE050
203
+ hardware signers produce **only** this block today and remain unchanged.
204
+
205
+ Software signers MAY attach an optional `pqc_signatures` array for FIPS 204 (ML-DSA)
206
+ and FIPS 205 (SLH-DSA) post-quantum overlays. This is an **additive** extension;
207
+ verifiers that do not implement PQC MUST still verify Ed25519 and MAY ignore
208
+ `pqc_signatures`.
209
+
210
+ ### 11.1 PQC signature block
211
+
212
+ Each element of `pqc_signatures`:
213
+
214
+ ```json
215
+ {
216
+ "schema": "matrixscroll.pqc_signature.v1",
217
+ "algorithm": "ml-dsa-65",
218
+ "public_key": "<base64(raw public key bytes)>",
219
+ "value": "<base64(detached signature)>",
220
+ "signed_at": "<RFC 3339 UTC, informational>"
221
+ }
222
+ ```
223
+
224
+ Allowed `algorithm` values: `ml-dsa-44`, `ml-dsa-65`, `ml-dsa-87`,
225
+ `slh-dsa-sha2-128s`, `slh-dsa-sha2-128f`.
226
+
227
+ Hardware envelopes (`signature.mode` = `"hardware"`) MUST NOT include
228
+ `pqc_signatures` until secure-element firmware supports PQC. Policy engines
229
+ MUST exempt hardware mode from `require_pqc` rules.
230
+
231
+ ### 11.2 Canonical input for PQC (§4.1)
232
+
233
+ PQC signing and verification remove **both** top-level keys `"signature"` and
234
+ `"pqc_signatures"` before applying §4 encoding rules. Because Ed25519 is applied
235
+ first, the PQC signing input is byte-identical to the Ed25519 signing input.
236
+
237
+ ### 11.3 Verification
238
+
239
+ 1. Verify Ed25519 per §6 (always required).
240
+ 2. If `pqc_signatures` is absent, stop (valid for v1-only policy).
241
+ 3. For each PQC block: validate `schema`, decode keys, verify against PQC canonical bytes.
242
+ 4. If policy requires PQC and verification fails or array is missing (non-hardware), reject.
243
+
244
+ ### 11.4 Policy knobs
245
+
246
+ | `require_pqc` | Behavior |
247
+ | ------------- | -------- |
248
+ | `false` (default) | PQC optional |
249
+ | `emulated_only` | Require valid PQC when `signature.mode` is `emulated` or `tpm` |
250
+ | `true` | Require valid PQC for all modes except `hardware` |
251
+
252
+ JSON Schema: [`schemas/pqc-signature.v1.json`](schemas/pqc-signature.v1.json),
253
+ [`schemas/commit-envelope.v1.1.json`](schemas/commit-envelope.v1.1.json).
@@ -11,7 +11,7 @@ who want to trial Matrix Scroll without changing their core workflow.
11
11
 
12
12
  ## 15-minute pilot
13
13
 
14
- 1. Install `matrixscroll==0.3.0` in one repo.
14
+ 1. Install `matrixscroll==0.4.1` in one repo.
15
15
  2. Run `matrixscroll hook-install`.
16
16
  3. Make one agent-assisted commit and verify it locally.
17
17
  4. Publish notes with `matrixscroll envelope-publish-notes`.
@@ -38,7 +38,7 @@ jobs:
38
38
  head-ref: ${{ github.event.pull_request.head.sha }}
39
39
  base-ref: ${{ github.event.pull_request.base.sha }}
40
40
  source: notes
41
- matrixscroll-version: "0.3.0"
41
+ matrixscroll-version: "0.4.1"
42
42
  require-mode: emulated
43
43
  ```
44
44
 
@@ -64,7 +64,7 @@ jobs:
64
64
  ## Clean-machine proof status
65
65
 
66
66
  Recorded on `2026-06-21` against the pinned public flow:
67
- `pip install "matrixscroll==0.3.0"` -> `matrixscroll hook-install` ->
67
+ `pip install "matrixscroll==0.4.1"` -> `matrixscroll hook-install` ->
68
68
  `matrixscroll hook-status` -> first agent-assisted commit ->
69
69
  `matrixscroll envelope-verify`.
70
70
 
@@ -0,0 +1,53 @@
1
+ # Cryptographic backend (middle path)
2
+
3
+ Matrix Scroll v0.5.0+ routes all Ed25519 and security-relevant SHA-256
4
+ operations through a single Python module: `matrixscroll/crypto_backend.py`.
5
+
6
+ Post-quantum overlays (ML-DSA FIPS 204, SLH-DSA FIPS 205) are optional and
7
+ implemented via `matrixscroll/pqc.py` when `matrixscroll[pqc]` (liboqs-python)
8
+ is installed. **USB/NFC/SE050 hardware signers remain Ed25519-only.**
9
+
10
+ ## Design
11
+
12
+ | Approach | What users install | Crypto implementation |
13
+ | -------- | ------------------ | --------------------- |
14
+ | **Full Rust rewrite** | Python SDK + Rust extension build chain | Custom PyO3/maturin crate |
15
+ | **Middle path (this release)** | `pip install matrixscroll` only | `cryptography` wheels (OpenSSL + Rust components) |
16
+ | **Pure Python fallback** | No native deps | Not used — removed from the reference SDK |
17
+
18
+ The middle path keeps the public Python API, CLI, and MCP surface unchanged while
19
+ moving primitive work onto battle-tested native code shipped inside official
20
+ `cryptography` wheels. Users never run `cargo` or `maturin`.
21
+
22
+ ## Primitives
23
+
24
+ | Operation | Module API | Underlying primitive |
25
+ | --------- | ---------- | -------------------- |
26
+ | Ed25519 key generation | `generate_ed25519_private_key()` | `cryptography.hazmat.primitives.asymmetric.ed25519` |
27
+ | Ed25519 sign / verify | `ed25519_sign`, `ed25519_verify` | Same |
28
+ | SHA-256 (device IDs, gate digests, Rekor bridge) | `sha256`, `sha256_hex` | `cryptography.hazmat.primitives.hashes.SHA256` |
29
+ | ML-DSA / SLH-DSA overlay (optional) | `pqc_sign`, `pqc_verify` | `liboqs-python` via `matrixscroll[pqc]` extra |
30
+
31
+ Git object hashing (`hashlib.sha1` in `matrixscroll/git.py`) stays on the
32
+ stdlib because it implements Git wire-format identifiers, not provenance
33
+ signatures.
34
+
35
+ ## Optional provider paths
36
+
37
+ - **Emulated / TPM mock / SE050 mock** — software Ed25519 via this backend.
38
+ - **SE050 hardware** — signing occurs on the secure element; the host verifies
39
+ responses with the same backend where needed.
40
+ - **YubiKey PIV preview** — experimental ECDSA path; not part of the v1 Ed25519
41
+ contract and not routed through Ed25519 helpers here.
42
+
43
+ ## Dependency pin
44
+
45
+ `pyproject.toml` requires `cryptography>=42.0` as a mandatory (non-optional)
46
+ dependency.
47
+
48
+ ## Diagnostics
49
+
50
+ ```python
51
+ from matrixscroll.crypto_backend import backend_info
52
+ print(backend_info())
53
+ ```
@@ -12,7 +12,7 @@ five-minute path from `pip install` to a verifiable commit envelope.
12
12
  ## 1. Install the SDK
13
13
 
14
14
  ```bash
15
- pip install "matrixscroll==0.3.0"
15
+ pip install "matrixscroll==0.4.1"
16
16
  matrixscroll hook-install
17
17
  matrixscroll hook-status
18
18
  ```
@@ -61,7 +61,7 @@ git push origin refs/notes/matrixscroll
61
61
  head-ref: ${{ github.event.pull_request.head.sha }}
62
62
  base-ref: ${{ github.event.pull_request.base.sha }}
63
63
  source: notes
64
- matrixscroll-version: "0.3.0"
64
+ matrixscroll-version: "0.4.1"
65
65
  require-mode: emulated
66
66
  ```
67
67
 
@@ -8,13 +8,13 @@ what ships now before widening the story.
8
8
  ## Baseline on June 21, 2026
9
9
 
10
10
  - GitHub: early public repo, product-first docs, and offline verification
11
- - Current public release target: `matrixscroll==0.3.0`
11
+ - Current public release: `matrixscroll==0.5.0`
12
12
  - Public trust contract: pure Ed25519 over canonical manifest bytes
13
13
  - Hardware path: SSX360 SE050 reference implementation in progress
14
14
 
15
15
  ## Next 7 days
16
16
 
17
- - cut and publish `0.3.0` without widening the manifest or verify surface
17
+ - Public release: `matrixscroll==0.5.0` (universal provenance + scroll commit)
18
18
  - make the GitHub Action a real public proof surface
19
19
  - align site, README, action docs, and PyPI around one install flow
20
20
  - remove broken links and stale release drift from public copy
@@ -1,6 +1,6 @@
1
1
  # Matrix Scroll security properties
2
2
 
3
- Machine-checkable guarantees for the reference SDK (v0.4.0). Properties marked
3
+ Machine-checkable guarantees for the reference SDK (v0.5.0). Properties marked
4
4
  **verified** have Hypothesis property tests in `tests/test_security_properties.py`.
5
5
  Formal TLA+ models are on the public roadmap.
6
6
 
@@ -13,6 +13,16 @@ Formal TLA+ models are on the public roadmap.
13
13
  | **P5** | Offline verification | Envelope verification requires no network, hosted API, or hardware ping once the envelope and trusted key set are local. | **Verified** (unit) |
14
14
  | **P6** | Algorithm binding | Only Ed25519 (RFC 8032) signatures with `algorithm: "ed25519"` are accepted; other algorithms are rejected. | **Verified** (unit + vectors) |
15
15
 
16
+ ## Cryptographic backend
17
+
18
+ All Ed25519 and security-relevant SHA-256 operations in the reference SDK route
19
+ through `matrixscroll/crypto_backend.py`, backed by the [`cryptography`](https://pypi.org/project/cryptography/)
20
+ package (official wheels bundle OpenSSL and Rust components; users install with
21
+ `pip install matrixscroll` only). There is no pure-Python Ed25519 fallback.
22
+
23
+ See [`CRYPTO_BACKEND.md`](CRYPTO_BACKEND.md) for the middle-path design vs a full
24
+ Rust rewrite.
25
+
16
26
  ## Standards alignment
17
27
 
18
28
  - **Ed25519:** [RFC 8032](https://www.rfc-editor.org/rfc/rfc8032) — 32-byte seed, 32-byte public key, 64-byte signature.
@@ -5,7 +5,7 @@ manifest bytes today.
5
5
 
6
6
  | Product | Status | Access | Notes |
7
7
  |---------|--------|--------|-------|
8
- | **Matrix Scroll SDK** | GA | PyPI `matrixscroll==0.3.0` | Hooks, envelopes, Scroll Gate, policy CLI |
8
+ | **Matrix Scroll SDK** | GA | PyPI `matrixscroll==0.4.1` | Hooks, envelopes, Scroll Gate, policy CLI |
9
9
  | **Scroll Gate CI** | GA | [`matrixscroll-verify-action@v1`](https://github.com/SSX360/matrixscroll-verify-action) | PR range + manifest verify |
10
10
  | **Browser verifier** | GA | [matrixscroll.com/verify](https://matrixscroll.com/verify/) | Offline paste-and-verify |
11
11
  | **Protocol docs** | GA | [matrixscroll.com/docs](https://matrixscroll.com/docs/) | SPEC mirror, whitepaper, quickstarts |
@@ -18,7 +18,7 @@ manifest bytes today.
18
18
  ## Developer install
19
19
 
20
20
  ```bash
21
- pip install "matrixscroll==0.3.0"
21
+ pip install "matrixscroll==0.4.1"
22
22
  matrixscroll hook-install
23
23
  export MATRIXSCROLL_ACTOR_TYPE=agent
24
24
  export MATRIXSCROLL_TOOL=agent-runner
@@ -34,7 +34,7 @@ matrixscroll envelope-verify "$(git rev-parse HEAD)"
34
34
  head-ref: ${{ github.event.pull_request.head.sha }}
35
35
  base-ref: ${{ github.event.pull_request.base.sha }}
36
36
  source: notes
37
- matrixscroll-version: "0.3.0"
37
+ matrixscroll-version: "0.4.1"
38
38
  summary-output: provenance-summary.json
39
39
  ```
40
40