matrixscroll 0.4.0__tar.gz → 0.4.2__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 (128) hide show
  1. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/CHANGELOG.md +28 -0
  2. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/PKG-INFO +74 -20
  3. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/README.md +70 -18
  4. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/controls/agentic_ai_controls.json +2 -2
  5. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/ADOPTER_KIT.md +3 -3
  6. matrixscroll-0.4.2/docs/CRYPTO_BACKEND.md +48 -0
  7. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/FIVE_MINUTES.md +2 -2
  8. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/ROADMAP_2026-07.md +2 -2
  9. matrixscroll-0.4.2/docs/SECURITY_PROPERTIES.md +46 -0
  10. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/SOFTWARE_PRODUCTS.md +3 -3
  11. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/WHITEPAPER.md +4 -4
  12. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/commercial/PLATFORM_PIVOT.md +3 -3
  13. matrixscroll-0.4.2/docs/commercial/SCROLL_GATE_V2.md +82 -0
  14. matrixscroll-0.4.2/docs/commercial/SSX360_SCROLL.md +31 -0
  15. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/hardware-provider.md +1 -1
  16. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-agent.md +1 -1
  17. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-claude-code.md +1 -1
  18. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-git.md +4 -4
  19. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-mcp.md +2 -2
  20. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/ci/protected-branch.yml +3 -3
  21. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/__init__.py +1 -1
  22. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/cli.py +72 -0
  23. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/cloud/client.py +31 -4
  24. matrixscroll-0.4.2/matrixscroll/crypto_backend.py +99 -0
  25. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/gate.py +3 -2
  26. matrixscroll-0.4.2/matrixscroll/mcp.py +672 -0
  27. matrixscroll-0.4.2/matrixscroll/provenance/__init__.py +24 -0
  28. matrixscroll-0.4.2/matrixscroll/provenance/actions.py +110 -0
  29. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/emulated.py +15 -16
  30. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/registry.py +3 -6
  31. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/se050_transport.py +9 -10
  32. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/tpm.py +13 -17
  33. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/rekor_publish.py +2 -2
  34. matrixscroll-0.4.2/matrixscroll/scroll/README.md +37 -0
  35. matrixscroll-0.4.2/matrixscroll/scroll/__init__.py +94 -0
  36. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/pyproject.toml +4 -2
  37. matrixscroll-0.4.2/schemas/action-envelope.v1.json +152 -0
  38. matrixscroll-0.4.2/tests/test_crypto_backend.py +50 -0
  39. matrixscroll-0.4.2/tests/test_provenance.py +73 -0
  40. matrixscroll-0.4.2/tests/test_security_properties.py +57 -0
  41. matrixscroll-0.4.0/docs/commercial/SCROLL_GATE_V2.md +0 -47
  42. matrixscroll-0.4.0/matrixscroll/mcp.py +0 -417
  43. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/.gitignore +0 -0
  44. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/CONTRIBUTING.md +0 -0
  45. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/LICENSE +0 -0
  46. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/SECURITY.md +0 -0
  47. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/SPEC.md +0 -0
  48. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/ADOPTION.md +0 -0
  49. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/AGENTIC_AI_SECURITY.md +0 -0
  50. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/CI_HARD_GATE.md +0 -0
  51. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +0 -0
  52. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/COMPARISON.md +0 -0
  53. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/HERO_DEMO.md +0 -0
  54. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/SE050_POC_SCOPE.md +0 -0
  55. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/SE050_USB_PROTOCOL.md +0 -0
  56. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/delegation-attestation-rfc.md +0 -0
  57. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/registries-guide.md +0 -0
  58. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/rekor-guac-bridge-design.md +0 -0
  59. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
  60. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
  61. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
  62. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/yubikey-bridge.md +0 -0
  63. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/yubikey-smoke.md +0 -0
  64. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/agentic_ai_evidence_manifest.json +0 -0
  65. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
  66. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/commit-envelope.json +0 -0
  67. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/commit-envelope.signed.json +0 -0
  68. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/demo/agent-commit-demo.sh +0 -0
  69. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/demo/generate_signed_examples.py +0 -0
  70. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/demo/hero-self-attestation-demo.sh +0 -0
  71. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/release-manifest.json +0 -0
  72. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/release-manifest.signed.json +0 -0
  73. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/trusted-keys-policy.json +0 -0
  74. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/_claim.py +0 -0
  75. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/_core.py +0 -0
  76. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/_payment.py +0 -0
  77. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/canonical.py +0 -0
  78. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/cloud/__init__.py +0 -0
  79. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/constants.py +0 -0
  80. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/errors.py +0 -0
  81. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/git.py +0 -0
  82. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/guac_export.py +0 -0
  83. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/hooks/post-commit +0 -0
  84. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/hooks/pre-push +0 -0
  85. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/manifest.py +0 -0
  86. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/mcp_core.py +0 -0
  87. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/policy.py +0 -0
  88. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/__init__.py +0 -0
  89. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/base.py +0 -0
  90. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/hardware.py +0 -0
  91. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/yubikey.py +0 -0
  92. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/py.typed +0 -0
  93. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/schemas/commit-envelope.v1.json +0 -0
  94. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/schemas/evidence-pack.v1.json +0 -0
  95. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/schemas/release-manifest.v1.json +0 -0
  96. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/__init__.py +0 -0
  97. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/fixtures/github-gpgsig-commit.txt +0 -0
  98. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_agentic_guidance.py +0 -0
  99. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_canonical.py +0 -0
  100. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_cli.py +0 -0
  101. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_core.py +0 -0
  102. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_gate.py +0 -0
  103. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_git_envelope.py +0 -0
  104. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_guac_rekor.py +0 -0
  105. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_mcp_core.py +0 -0
  106. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_mcp_server.py +0 -0
  107. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_policy.py +0 -0
  108. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_release_metadata.py +0 -0
  109. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_se050_transport.py +0 -0
  110. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_tpm_provider.py +0 -0
  111. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_vectors.py +0 -0
  112. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_yubikey_provider.py +0 -0
  113. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/README.md +0 -0
  114. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/_fixture_key.json +0 -0
  115. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/_generate.py +0 -0
  116. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_algorithm.json +0 -0
  117. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_device_id.json +0 -0
  118. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_field.json +0 -0
  119. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_nested.json +0 -0
  120. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_public_key.json +0 -0
  121. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_schema.json +0 -0
  122. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_signature.json +0 -0
  123. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/unsigned_empty_block.json +0 -0
  124. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/unsigned_no_block.json +0 -0
  125. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/valid_commit_envelope.json +0 -0
  126. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/valid_nested.json +0 -0
  127. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/valid_simple.json +0 -0
  128. {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/valid_unicode.json +0 -0
@@ -4,6 +4,34 @@ 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.4.2] - 2026-06-29
8
+
9
+ Crypto backend consolidation (middle path).
10
+
11
+ ### Changed
12
+ - **`matrixscroll.crypto_backend`** — all Ed25519 sign/verify/keygen and
13
+ security-relevant SHA-256 hashing route through the `cryptography` package
14
+ (native wheels; no user Rust toolchain).
15
+ - **Dependency** — `cryptography>=42.0` is now required (was `>=41.0`).
16
+ - **Docs** — `docs/CRYPTO_BACKEND.md`, README security note, SECURITY_PROPERTIES
17
+ backend section.
18
+
19
+ ### Removed
20
+ - Scattered direct `cryptography` / `hashlib` calls in providers and gate paths
21
+ in favor of the centralized backend module (Git SHA-1 wire hashing unchanged).
22
+
23
+ ## [0.4.1] - 2026-06-29
24
+
25
+ Universal provenance SDK expansion and SSX360 Scroll Phase 1 wrapper.
26
+
27
+ ### Added
28
+ - **`matrixscroll.provenance`** — action envelope builders for `ci_step`, `iac_change`,
29
+ `db_migration`, `api_call`, and `contract_deploy` (`schemas/action-envelope.v1.json`).
30
+ - **`matrixscroll sign-action`** CLI — sign typed action envelopes with Ed25519.
31
+ - **`matrixscroll scroll commit`** — thin Git wrapper (Phase 1; not a Git replacement).
32
+ - **MCP** — `sign_action` validates typed payloads; new `matrixscroll://schema/action-envelope.v1` resource.
33
+ - **Docs** — SSX360 Scroll brief, Scroll Gate v2 SLSA L1–2 honest mapping.
34
+
7
35
  ## [0.3.0] - 2026-06-28
8
36
 
9
37
  Digital Rain removal and provenance-only SDK surface.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrixscroll
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
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.
5
5
  Project-URL: Homepage, https://ssx360.com
6
6
  Project-URL: Documentation, https://ssx360.com/docs
@@ -38,9 +38,11 @@ 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>=42.0
42
42
  Provides-Extra: dev
43
43
  Requires-Dist: build>=1.0; extra == 'dev'
44
+ Requires-Dist: hypothesis>=6.100; extra == 'dev'
45
+ Requires-Dist: pytest-cov>=4.1; extra == 'dev'
44
46
  Requires-Dist: pytest>=7.4; extra == 'dev'
45
47
  Provides-Extra: git
46
48
  Provides-Extra: hardware
@@ -54,13 +56,22 @@ Description-Content-Type: text/markdown
54
56
 
55
57
  # Matrix Scroll
56
58
 
59
+ [![ci-unit](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml/badge.svg)](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
57
60
  [![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
+ [![codecov](https://codecov.io/gh/SSX360/matrixscroll/graph/badge.svg)](https://codecov.io/gh/SSX360/matrixscroll)
62
+
63
+ **123 tests** · Hypothesis-verified security properties · [Security properties](docs/SECURITY_PROPERTIES.md)
58
64
 
59
65
  **Signed proof of who — or what — wrote every commit.** Matrix Scroll is the
60
- open Ed25519 commit-provenance protocol for agent-assisted Git verified
66
+ **universal provenance SDK** — open Ed25519 envelopes for Git commits, CI steps,
67
+ IaC changes, DB migrations, API calls, and smart-contract deploys — verified
61
68
  offline in CLI, browser, and CI. Hardware (SE050) is an optional preview trust
62
69
  upgrade; emulated mode ships today.
63
70
 
71
+ **TAM wedge (honest):** Layer 2 universal provenance SDK ($50–200M) · Layer 3 SSX360 Scroll
72
+ governance on Git ($200M–1B) · Scroll Gate CI ($50–150M) · Python-first ML/agent
73
+ ecosystem via `pip install matrixscroll`.
74
+
64
75
  **Hosted control plane:** identity, billing, and device confirmation live at
65
76
  [ssx360.com](https://ssx360.com/). Teams evaluating protected-branch enforcement should
66
77
  [book a provenance pilot](https://ssx360.com/contact?intent=pilot);
@@ -93,17 +104,18 @@ Agents sign commits in-loop via the **provenance-only** MCP server:
93
104
  ```
94
105
 
95
106
  ```bash
96
- pip install "matrixscroll[mcp]==0.4.0"
107
+ pip install "matrixscroll[mcp]==0.4.2"
97
108
  matrixscroll-mcp # stdio — register in Cursor / Claude Desktop / VS Code
98
109
  ```
99
110
 
100
- **MCP tools (provenance verbs only):** `create_envelope`, `verify_envelope`,
101
- `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`.
111
+ **MCP tools (provenance verbs only):** `create_envelope`, `sign_action`, `verify_envelope`,
112
+ `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`, `list_envelopes`,
113
+ `connect_card` (SE050 preview).
102
114
 
103
115
  ## Also available — CLI & hooks
104
116
 
105
117
  ```bash
106
- pip install "matrixscroll==0.4.0"
118
+ pip install "matrixscroll==0.4.2"
107
119
  matrixscroll hook-install
108
120
  export MATRIXSCROLL_ACTOR_TYPE=agent
109
121
  export MATRIXSCROLL_TOOL=agent-runner
@@ -111,6 +123,29 @@ git commit -m "feat: agent-assisted change"
111
123
  matrixscroll envelope-verify "$(git rev-parse HEAD)"
112
124
  ```
113
125
 
126
+ ### Universal action envelopes (Layer 2)
127
+
128
+ Sign provenance for CI, IaC, migrations, API calls, and contract deploys:
129
+
130
+ ```bash
131
+ matrixscroll sign-action --type ci_step \
132
+ --payload ./payloads/ci-step.json \
133
+ --output ./ci-step.signed.json \
134
+ --actor-type ci
135
+ ```
136
+
137
+ Action schema: [`schemas/action-envelope.v1.json`](schemas/action-envelope.v1.json)
138
+
139
+ ### SSX360 Scroll — Git wrapper (Layer 3, Phase 1)
140
+
141
+ Git under the hood; governance on top. **Not a Git replacement.**
142
+
143
+ ```bash
144
+ matrixscroll scroll commit -m "feat: governed commit"
145
+ ```
146
+
147
+ See [`docs/commercial/SSX360_SCROLL.md`](docs/commercial/SSX360_SCROLL.md).
148
+
114
149
  See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
115
150
  [`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
116
151
 
@@ -134,10 +169,19 @@ The reference SDK ships pure Ed25519 over canonical manifest bytes today. The
134
169
  SSX360 / NXP SE050 path is the compatible next trust layer and remains a
135
170
  preview path until device acceptance is complete.
136
171
 
172
+ ## RFC 8032 (Ed25519) alignment
173
+
174
+ Matrix Scroll v1 binds exclusively to [RFC 8032](https://www.rfc-editor.org/rfc/rfc8032)
175
+ Ed25519: 32-byte seeds, 32-byte public keys, 64-byte detached signatures over
176
+ canonical UTF-8 JSON bytes (see [`SPEC.md`](SPEC.md) §4). Verifiers reject any
177
+ `signature.algorithm` other than `"ed25519"`. Conformance vectors live in
178
+ [`vectors/`](vectors/); property tests in [`docs/SECURITY_PROPERTIES.md`](docs/SECURITY_PROPERTIES.md).
179
+
137
180
  ## Honest limits
138
181
 
139
- - Shipping now: PyPI `matrixscroll==0.4.0`, Git post-commit hooks,
140
- `matrixscroll envelope-verify`, Scroll Gate PR verification, browser
182
+ - Shipping now: PyPI `matrixscroll==0.4.2`, Git post-commit hooks,
183
+ `matrixscroll sign-action`, `matrixscroll scroll commit` (thin wrapper),
184
+ `matrixscroll envelope-verify`, Scroll Gate PR verification (partial SLSA L1–2),
141
185
  verifier, the GitHub Action, and a USB CDC host transport preview for the
142
186
  SE050 rollout path. Emulated mode is the default evaluation path.
143
187
  - In progress: nRF52840 + SE050 firmware validation (AP2 Vault Card PoC), external Ed25519-capable
@@ -181,7 +225,7 @@ alongside your existing scanners, branch protection, and build attestations.
181
225
  ## Quickstart (CLI)
182
226
 
183
227
  ```bash
184
- pip install "matrixscroll==0.4.0"
228
+ pip install "matrixscroll==0.4.2"
185
229
  matrixscroll hook-install
186
230
  matrixscroll hook-status
187
231
 
@@ -208,7 +252,7 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
208
252
  head-ref: ${{ github.event.pull_request.head.sha }}
209
253
  base-ref: ${{ github.event.pull_request.base.sha }}
210
254
  source: notes
211
- matrixscroll-version: "0.4.0"
255
+ matrixscroll-version: "0.4.2"
212
256
  require-mode: emulated
213
257
  ```
214
258
 
@@ -228,7 +272,7 @@ git push origin refs/notes/matrixscroll
228
272
  head-ref: ${{ github.event.pull_request.head.sha }}
229
273
  base-ref: ${{ github.event.pull_request.base.sha }}
230
274
  source: notes
231
- matrixscroll-version: "0.4.0"
275
+ matrixscroll-version: "0.4.2"
232
276
  summary-output: provenance-summary.json
233
277
  ```
234
278
 
@@ -236,7 +280,15 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
236
280
  [`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
237
281
 
238
282
  The `--require-mode`, `--trusted-keys`, and actor or delegation policy checks
239
- are available in the `0.2.x` line; the examples in this README pin `0.3.0`.
283
+ ship in the current release line; examples in this README pin `0.4.2`.
284
+
285
+ ## Security: Ed25519 via cryptography
286
+
287
+ Ed25519 signing, verification, and key generation use the [`cryptography`](https://pypi.org/project/cryptography/)
288
+ package (required dependency, `>=42.0`). Official wheels ship native crypto
289
+ backends (OpenSSL + Rust components) — no Rust toolchain for users. All
290
+ primitives are centralized in `matrixscroll/crypto_backend.py`; see
291
+ [`docs/CRYPTO_BACKEND.md`](docs/CRYPTO_BACKEND.md).
240
292
 
241
293
  ## Why it is different from Sigstore
242
294
 
@@ -251,21 +303,22 @@ when they preserve the same pure Ed25519 byte contract.
251
303
 
252
304
  ## Public proof links
253
305
 
254
- - Browser verifier: <https://matrixscroll.com/verify/>
255
- - Compare page: <https://matrixscroll.com/compare/>
306
+ - Browser verifier: <https://ssx360.com/verify>
307
+ - Compare page: <https://ssx360.com/compare>
308
+ - Documentation: <https://ssx360.com/docs>
256
309
  - Specification: [`SPEC.md`](SPEC.md)
257
310
  - Commit envelope schema: [`schemas/commit-envelope.v1.json`](schemas/commit-envelope.v1.json)
258
311
  - Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
259
312
  - Conformance vectors: [`vectors/`](vectors/)
260
313
  - GitHub Action: <https://github.com/SSX360/matrixscroll-verify-action>
261
314
  - Agentic AI controls: [`docs/AGENTIC_AI_SECURITY.md`](docs/AGENTIC_AI_SECURITY.md)
262
- - Site: <https://matrixscroll.com>
315
+ - Site: <https://ssx360.com/docs> (matrixscroll.com redirects here)
263
316
  - Reference device path: [AP2 Vault Card hardware](https://ssx360.com/hardware)
264
317
 
265
318
  ## Python API
266
319
 
267
320
  ```bash
268
- pip install "matrixscroll==0.4.0"
321
+ pip install "matrixscroll==0.4.2"
269
322
  ```
270
323
 
271
324
  ```python
@@ -375,7 +428,7 @@ The MCP server exposes **provenance verbs only**: `create_envelope`, `verify_env
375
428
  Install and register in Cursor / Claude Desktop / VS Code:
376
429
 
377
430
  ```bash
378
- pip install "matrixscroll[mcp]==0.4.0"
431
+ pip install "matrixscroll[mcp]==0.4.2"
379
432
  matrixscroll-mcp # stdio
380
433
  ```
381
434
 
@@ -389,10 +442,11 @@ the recommended `mcp.json` snippet.
389
442
 
390
443
  ## Security
391
444
 
392
- See [`SECURITY.md`](SECURITY.md). Report vulnerabilities privately to
445
+ See [`SECURITY.md`](SECURITY.md) and [`docs/SECURITY_PROPERTIES.md`](docs/SECURITY_PROPERTIES.md).
446
+ Report vulnerabilities privately to
393
447
  **security@matrixscroll.com** or via a GitHub Security Advisory.
394
448
 
395
449
  ---
396
450
 
397
- **Protocol:** https://matrixscroll.com · **Verify:** https://matrixscroll.com/verify/
451
+ **Protocol:** https://ssx360.com/docs · **Verify:** https://ssx360.com/verify
398
452
  **Control plane:** https://ssx360.com · **Pilot:** mission@ssx360.com · **Sign in:** https://ssx360.com/signup
@@ -1,12 +1,21 @@
1
1
  # Matrix Scroll
2
2
 
3
+ [![ci-unit](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml/badge.svg)](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
3
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
+ [![codecov](https://codecov.io/gh/SSX360/matrixscroll/graph/badge.svg)](https://codecov.io/gh/SSX360/matrixscroll)
6
+
7
+ **123 tests** · Hypothesis-verified security properties · [Security properties](docs/SECURITY_PROPERTIES.md)
4
8
 
5
9
  **Signed proof of who — or what — wrote every commit.** Matrix Scroll is the
6
- open Ed25519 commit-provenance protocol for agent-assisted Git verified
10
+ **universal provenance SDK** — open Ed25519 envelopes for Git commits, CI steps,
11
+ IaC changes, DB migrations, API calls, and smart-contract deploys — verified
7
12
  offline in CLI, browser, and CI. Hardware (SE050) is an optional preview trust
8
13
  upgrade; emulated mode ships today.
9
14
 
15
+ **TAM wedge (honest):** Layer 2 universal provenance SDK ($50–200M) · Layer 3 SSX360 Scroll
16
+ governance on Git ($200M–1B) · Scroll Gate CI ($50–150M) · Python-first ML/agent
17
+ ecosystem via `pip install matrixscroll`.
18
+
10
19
  **Hosted control plane:** identity, billing, and device confirmation live at
11
20
  [ssx360.com](https://ssx360.com/). Teams evaluating protected-branch enforcement should
12
21
  [book a provenance pilot](https://ssx360.com/contact?intent=pilot);
@@ -39,17 +48,18 @@ Agents sign commits in-loop via the **provenance-only** MCP server:
39
48
  ```
40
49
 
41
50
  ```bash
42
- pip install "matrixscroll[mcp]==0.4.0"
51
+ pip install "matrixscroll[mcp]==0.4.2"
43
52
  matrixscroll-mcp # stdio — register in Cursor / Claude Desktop / VS Code
44
53
  ```
45
54
 
46
- **MCP tools (provenance verbs only):** `create_envelope`, `verify_envelope`,
47
- `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`.
55
+ **MCP tools (provenance verbs only):** `create_envelope`, `sign_action`, `verify_envelope`,
56
+ `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`, `list_envelopes`,
57
+ `connect_card` (SE050 preview).
48
58
 
49
59
  ## Also available — CLI & hooks
50
60
 
51
61
  ```bash
52
- pip install "matrixscroll==0.4.0"
62
+ pip install "matrixscroll==0.4.2"
53
63
  matrixscroll hook-install
54
64
  export MATRIXSCROLL_ACTOR_TYPE=agent
55
65
  export MATRIXSCROLL_TOOL=agent-runner
@@ -57,6 +67,29 @@ git commit -m "feat: agent-assisted change"
57
67
  matrixscroll envelope-verify "$(git rev-parse HEAD)"
58
68
  ```
59
69
 
70
+ ### Universal action envelopes (Layer 2)
71
+
72
+ Sign provenance for CI, IaC, migrations, API calls, and contract deploys:
73
+
74
+ ```bash
75
+ matrixscroll sign-action --type ci_step \
76
+ --payload ./payloads/ci-step.json \
77
+ --output ./ci-step.signed.json \
78
+ --actor-type ci
79
+ ```
80
+
81
+ Action schema: [`schemas/action-envelope.v1.json`](schemas/action-envelope.v1.json)
82
+
83
+ ### SSX360 Scroll — Git wrapper (Layer 3, Phase 1)
84
+
85
+ Git under the hood; governance on top. **Not a Git replacement.**
86
+
87
+ ```bash
88
+ matrixscroll scroll commit -m "feat: governed commit"
89
+ ```
90
+
91
+ See [`docs/commercial/SSX360_SCROLL.md`](docs/commercial/SSX360_SCROLL.md).
92
+
60
93
  See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
61
94
  [`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
62
95
 
@@ -80,10 +113,19 @@ The reference SDK ships pure Ed25519 over canonical manifest bytes today. The
80
113
  SSX360 / NXP SE050 path is the compatible next trust layer and remains a
81
114
  preview path until device acceptance is complete.
82
115
 
116
+ ## RFC 8032 (Ed25519) alignment
117
+
118
+ Matrix Scroll v1 binds exclusively to [RFC 8032](https://www.rfc-editor.org/rfc/rfc8032)
119
+ Ed25519: 32-byte seeds, 32-byte public keys, 64-byte detached signatures over
120
+ canonical UTF-8 JSON bytes (see [`SPEC.md`](SPEC.md) §4). Verifiers reject any
121
+ `signature.algorithm` other than `"ed25519"`. Conformance vectors live in
122
+ [`vectors/`](vectors/); property tests in [`docs/SECURITY_PROPERTIES.md`](docs/SECURITY_PROPERTIES.md).
123
+
83
124
  ## Honest limits
84
125
 
85
- - Shipping now: PyPI `matrixscroll==0.4.0`, Git post-commit hooks,
86
- `matrixscroll envelope-verify`, Scroll Gate PR verification, browser
126
+ - Shipping now: PyPI `matrixscroll==0.4.2`, Git post-commit hooks,
127
+ `matrixscroll sign-action`, `matrixscroll scroll commit` (thin wrapper),
128
+ `matrixscroll envelope-verify`, Scroll Gate PR verification (partial SLSA L1–2),
87
129
  verifier, the GitHub Action, and a USB CDC host transport preview for the
88
130
  SE050 rollout path. Emulated mode is the default evaluation path.
89
131
  - In progress: nRF52840 + SE050 firmware validation (AP2 Vault Card PoC), external Ed25519-capable
@@ -127,7 +169,7 @@ alongside your existing scanners, branch protection, and build attestations.
127
169
  ## Quickstart (CLI)
128
170
 
129
171
  ```bash
130
- pip install "matrixscroll==0.4.0"
172
+ pip install "matrixscroll==0.4.2"
131
173
  matrixscroll hook-install
132
174
  matrixscroll hook-status
133
175
 
@@ -154,7 +196,7 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
154
196
  head-ref: ${{ github.event.pull_request.head.sha }}
155
197
  base-ref: ${{ github.event.pull_request.base.sha }}
156
198
  source: notes
157
- matrixscroll-version: "0.4.0"
199
+ matrixscroll-version: "0.4.2"
158
200
  require-mode: emulated
159
201
  ```
160
202
 
@@ -174,7 +216,7 @@ git push origin refs/notes/matrixscroll
174
216
  head-ref: ${{ github.event.pull_request.head.sha }}
175
217
  base-ref: ${{ github.event.pull_request.base.sha }}
176
218
  source: notes
177
- matrixscroll-version: "0.4.0"
219
+ matrixscroll-version: "0.4.2"
178
220
  summary-output: provenance-summary.json
179
221
  ```
180
222
 
@@ -182,7 +224,15 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
182
224
  [`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
183
225
 
184
226
  The `--require-mode`, `--trusted-keys`, and actor or delegation policy checks
185
- are available in the `0.2.x` line; the examples in this README pin `0.3.0`.
227
+ ship in the current release line; examples in this README pin `0.4.2`.
228
+
229
+ ## Security: Ed25519 via cryptography
230
+
231
+ Ed25519 signing, verification, and key generation use the [`cryptography`](https://pypi.org/project/cryptography/)
232
+ package (required dependency, `>=42.0`). Official wheels ship native crypto
233
+ backends (OpenSSL + Rust components) — no Rust toolchain for users. All
234
+ primitives are centralized in `matrixscroll/crypto_backend.py`; see
235
+ [`docs/CRYPTO_BACKEND.md`](docs/CRYPTO_BACKEND.md).
186
236
 
187
237
  ## Why it is different from Sigstore
188
238
 
@@ -197,21 +247,22 @@ when they preserve the same pure Ed25519 byte contract.
197
247
 
198
248
  ## Public proof links
199
249
 
200
- - Browser verifier: <https://matrixscroll.com/verify/>
201
- - Compare page: <https://matrixscroll.com/compare/>
250
+ - Browser verifier: <https://ssx360.com/verify>
251
+ - Compare page: <https://ssx360.com/compare>
252
+ - Documentation: <https://ssx360.com/docs>
202
253
  - Specification: [`SPEC.md`](SPEC.md)
203
254
  - Commit envelope schema: [`schemas/commit-envelope.v1.json`](schemas/commit-envelope.v1.json)
204
255
  - Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
205
256
  - Conformance vectors: [`vectors/`](vectors/)
206
257
  - GitHub Action: <https://github.com/SSX360/matrixscroll-verify-action>
207
258
  - Agentic AI controls: [`docs/AGENTIC_AI_SECURITY.md`](docs/AGENTIC_AI_SECURITY.md)
208
- - Site: <https://matrixscroll.com>
259
+ - Site: <https://ssx360.com/docs> (matrixscroll.com redirects here)
209
260
  - Reference device path: [AP2 Vault Card hardware](https://ssx360.com/hardware)
210
261
 
211
262
  ## Python API
212
263
 
213
264
  ```bash
214
- pip install "matrixscroll==0.4.0"
265
+ pip install "matrixscroll==0.4.2"
215
266
  ```
216
267
 
217
268
  ```python
@@ -321,7 +372,7 @@ The MCP server exposes **provenance verbs only**: `create_envelope`, `verify_env
321
372
  Install and register in Cursor / Claude Desktop / VS Code:
322
373
 
323
374
  ```bash
324
- pip install "matrixscroll[mcp]==0.4.0"
375
+ pip install "matrixscroll[mcp]==0.4.2"
325
376
  matrixscroll-mcp # stdio
326
377
  ```
327
378
 
@@ -335,10 +386,11 @@ the recommended `mcp.json` snippet.
335
386
 
336
387
  ## Security
337
388
 
338
- See [`SECURITY.md`](SECURITY.md). Report vulnerabilities privately to
389
+ See [`SECURITY.md`](SECURITY.md) and [`docs/SECURITY_PROPERTIES.md`](docs/SECURITY_PROPERTIES.md).
390
+ Report vulnerabilities privately to
339
391
  **security@matrixscroll.com** or via a GitHub Security Advisory.
340
392
 
341
393
  ---
342
394
 
343
- **Protocol:** https://matrixscroll.com · **Verify:** https://matrixscroll.com/verify/
395
+ **Protocol:** https://ssx360.com/docs · **Verify:** https://ssx360.com/verify
344
396
  **Control plane:** https://ssx360.com · **Pilot:** mission@ssx360.com · **Sign in:** https://ssx360.com/signup
@@ -78,7 +78,7 @@
78
78
  "title": "Supply-chain and dependency management",
79
79
  "guidance": "Understand third-party components, models, tools, integrations, and update exposure.",
80
80
  "matrixscroll_control": "The repo uses minimal runtime dependencies, Dependabot, CI build verification, and a public spec/conformance suite.",
81
- "evidence_paths": ["pyproject.toml", ".github/dependabot.yml", ".github/workflows/test.yml", "vectors/README.md"],
81
+ "evidence_paths": ["pyproject.toml", ".github/dependabot.yml", ".github/workflows/ci-unit.yml", "vectors/README.md"],
82
82
  "goes_beyond": "Third-party implementations can self-test against public vectors before being trusted."
83
83
  },
84
84
  {
@@ -94,7 +94,7 @@
94
94
  "title": "Governance and change control",
95
95
  "guidance": "Integrate agentic AI risk with existing security governance and define ownership before deployment.",
96
96
  "matrixscroll_control": "Spec, core crypto, vectors, security policy, and CI are CODEOWNERS-protected and tested across OS/Python versions.",
97
- "evidence_paths": [".github/CODEOWNERS", ".github/workflows/test.yml", "CONTRIBUTING.md"],
97
+ "evidence_paths": [".github/CODEOWNERS", ".github/workflows/ci-unit.yml", ".github/workflows/ci-integration.yml", "CONTRIBUTING.md"],
98
98
  "goes_beyond": "Protocol-impacting changes require both human review and machine conformance checks."
99
99
  },
100
100
  {
@@ -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,48 @@
1
+ # Cryptographic backend (middle path)
2
+
3
+ Matrix Scroll v0.4.2+ routes all Ed25519 and security-relevant SHA-256
4
+ operations through a single Python module: `matrixscroll/crypto_backend.py`.
5
+
6
+ ## Design
7
+
8
+ | Approach | What users install | Crypto implementation |
9
+ | -------- | ------------------ | --------------------- |
10
+ | **Full Rust rewrite** | Python SDK + Rust extension build chain | Custom PyO3/maturin crate |
11
+ | **Middle path (this release)** | `pip install matrixscroll` only | `cryptography` wheels (OpenSSL + Rust components) |
12
+ | **Pure Python fallback** | No native deps | Not used — removed from the reference SDK |
13
+
14
+ The middle path keeps the public Python API, CLI, and MCP surface unchanged while
15
+ moving primitive work onto battle-tested native code shipped inside official
16
+ `cryptography` wheels. Users never run `cargo` or `maturin`.
17
+
18
+ ## Primitives
19
+
20
+ | Operation | Module API | Underlying primitive |
21
+ | --------- | ---------- | -------------------- |
22
+ | Ed25519 key generation | `generate_ed25519_private_key()` | `cryptography.hazmat.primitives.asymmetric.ed25519` |
23
+ | Ed25519 sign / verify | `ed25519_sign`, `ed25519_verify` | Same |
24
+ | SHA-256 (device IDs, gate digests, Rekor bridge) | `sha256`, `sha256_hex` | `cryptography.hazmat.primitives.hashes.SHA256` |
25
+
26
+ Git object hashing (`hashlib.sha1` in `matrixscroll/git.py`) stays on the
27
+ stdlib because it implements Git wire-format identifiers, not provenance
28
+ signatures.
29
+
30
+ ## Optional provider paths
31
+
32
+ - **Emulated / TPM mock / SE050 mock** — software Ed25519 via this backend.
33
+ - **SE050 hardware** — signing occurs on the secure element; the host verifies
34
+ responses with the same backend where needed.
35
+ - **YubiKey PIV preview** — experimental ECDSA path; not part of the v1 Ed25519
36
+ contract and not routed through Ed25519 helpers here.
37
+
38
+ ## Dependency pin
39
+
40
+ `pyproject.toml` requires `cryptography>=42.0` as a mandatory (non-optional)
41
+ dependency.
42
+
43
+ ## Diagnostics
44
+
45
+ ```python
46
+ from matrixscroll.crypto_backend import backend_info
47
+ print(backend_info())
48
+ ```
@@ -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.4.1`
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.4.1` (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
@@ -0,0 +1,46 @@
1
+ # Matrix Scroll security properties
2
+
3
+ Machine-checkable guarantees for the reference SDK (v0.4.2). Properties marked
4
+ **verified** have Hypothesis property tests in `tests/test_security_properties.py`.
5
+ Formal TLA+ models are on the public roadmap.
6
+
7
+ | ID | Property | Statement | Status |
8
+ | -- | -------- | ----------- | ------ |
9
+ | **P1** | Sign–verify roundtrip | For any canonical manifest bytes, `verify(pub, msg, sign(msg, key))` is true when `pub` derives from the same key material. | **Verified** (Hypothesis) |
10
+ | **P2** | Tamper detection | Changing any signed byte (manifest body or signature octet) causes verification to fail. | **Verified** (Hypothesis) |
11
+ | **P3** | Wrong-key rejection | A signature valid under key A MUST NOT verify under key B's public key. | **Verified** (Hypothesis) |
12
+ | **P4** | Canonical determinism | Identical logical manifests produce identical signing input bytes after canonical JSON encoding (sorted keys, ASCII escapes, no NaN). | **Verified** (unit + vectors) |
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
+ | **P6** | Algorithm binding | Only Ed25519 (RFC 8032) signatures with `algorithm: "ed25519"` are accepted; other algorithms are rejected. | **Verified** (unit + vectors) |
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
+
26
+ ## Standards alignment
27
+
28
+ - **Ed25519:** [RFC 8032](https://www.rfc-editor.org/rfc/rfc8032) — 32-byte seed, 32-byte public key, 64-byte signature.
29
+ - **Canonical JSON:** Deterministic UTF-8 encoding per [`SPEC.md`](../SPEC.md) §4.
30
+ - **Commit envelopes:** `matrixscroll.commit_envelope.v1` schema in [`schemas/commit-envelope.v1.json`](../schemas/commit-envelope.v1.json).
31
+
32
+ ## Trust modes (honest scope)
33
+
34
+ | Mode | Private key location | Shipping status |
35
+ | ---- | -------------------- | --------------- |
36
+ | **Emulated** | Owner-only file (`~/.matrixscroll/device.json`, mode 0600) | **Shipping today** |
37
+ | **Hardware (SE050)** | NXP secure element on AP2 Vault Card pilot | **Pilot / preview** — same verifier contract, key not exportable from chip |
38
+
39
+ ## Roadmap (not claimed today)
40
+
41
+ - TLA+ specification of Scroll Gate merge semantics
42
+ - Third-party cryptographic audit and public threat model
43
+ - npm `@ssx360/verify` browser/Node verifier package
44
+ - IETF informational draft for commit-envelope wire format
45
+
46
+ See [`SECURITY.md`](../SECURITY.md) for vulnerability reporting.
@@ -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