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.
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/CHANGELOG.md +28 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/PKG-INFO +74 -20
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/README.md +70 -18
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/controls/agentic_ai_controls.json +2 -2
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/ADOPTER_KIT.md +3 -3
- matrixscroll-0.4.2/docs/CRYPTO_BACKEND.md +48 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/FIVE_MINUTES.md +2 -2
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/ROADMAP_2026-07.md +2 -2
- matrixscroll-0.4.2/docs/SECURITY_PROPERTIES.md +46 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/SOFTWARE_PRODUCTS.md +3 -3
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/WHITEPAPER.md +4 -4
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/commercial/PLATFORM_PIVOT.md +3 -3
- matrixscroll-0.4.2/docs/commercial/SCROLL_GATE_V2.md +82 -0
- matrixscroll-0.4.2/docs/commercial/SSX360_SCROLL.md +31 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/hardware-provider.md +1 -1
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-agent.md +1 -1
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-claude-code.md +1 -1
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-git.md +4 -4
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/quickstart-mcp.md +2 -2
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/ci/protected-branch.yml +3 -3
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/__init__.py +1 -1
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/cli.py +72 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/cloud/client.py +31 -4
- matrixscroll-0.4.2/matrixscroll/crypto_backend.py +99 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/gate.py +3 -2
- matrixscroll-0.4.2/matrixscroll/mcp.py +672 -0
- matrixscroll-0.4.2/matrixscroll/provenance/__init__.py +24 -0
- matrixscroll-0.4.2/matrixscroll/provenance/actions.py +110 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/emulated.py +15 -16
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/registry.py +3 -6
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/se050_transport.py +9 -10
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/tpm.py +13 -17
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/rekor_publish.py +2 -2
- matrixscroll-0.4.2/matrixscroll/scroll/README.md +37 -0
- matrixscroll-0.4.2/matrixscroll/scroll/__init__.py +94 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/pyproject.toml +4 -2
- matrixscroll-0.4.2/schemas/action-envelope.v1.json +152 -0
- matrixscroll-0.4.2/tests/test_crypto_backend.py +50 -0
- matrixscroll-0.4.2/tests/test_provenance.py +73 -0
- matrixscroll-0.4.2/tests/test_security_properties.py +57 -0
- matrixscroll-0.4.0/docs/commercial/SCROLL_GATE_V2.md +0 -47
- matrixscroll-0.4.0/matrixscroll/mcp.py +0 -417
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/.gitignore +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/CONTRIBUTING.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/LICENSE +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/SECURITY.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/SPEC.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/ADOPTION.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/AGENTIC_AI_SECURITY.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/CI_HARD_GATE.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/COMPARISON.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/HERO_DEMO.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/SE050_POC_SCOPE.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/SE050_USB_PROTOCOL.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/delegation-attestation-rfc.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/registries-guide.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/rekor-guac-bridge-design.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/yubikey-bridge.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/docs/yubikey-smoke.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/agentic_ai_evidence_manifest.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/commit-envelope.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/commit-envelope.signed.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/demo/agent-commit-demo.sh +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/demo/generate_signed_examples.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/demo/hero-self-attestation-demo.sh +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/release-manifest.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/release-manifest.signed.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/examples/trusted-keys-policy.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/_claim.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/_core.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/_payment.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/canonical.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/cloud/__init__.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/constants.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/errors.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/git.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/guac_export.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/hooks/post-commit +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/hooks/pre-push +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/manifest.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/mcp_core.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/policy.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/__init__.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/base.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/hardware.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/providers/yubikey.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/matrixscroll/py.typed +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/schemas/commit-envelope.v1.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/schemas/evidence-pack.v1.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/schemas/release-manifest.v1.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/__init__.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/fixtures/github-gpgsig-commit.txt +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_agentic_guidance.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_canonical.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_cli.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_core.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_gate.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_git_envelope.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_guac_rekor.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_mcp_core.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_mcp_server.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_policy.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_release_metadata.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_se050_transport.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_tpm_provider.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_vectors.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/tests/test_yubikey_provider.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/README.md +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/_fixture_key.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/_generate.py +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_algorithm.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_device_id.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_field.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_nested.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_public_key.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_schema.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/tampered_signature.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/unsigned_empty_block.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/unsigned_no_block.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/valid_commit_envelope.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/valid_nested.json +0 -0
- {matrixscroll-0.4.0 → matrixscroll-0.4.2}/vectors/valid_simple.json +0 -0
- {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.
|
|
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
|
+
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
|
+
[](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
|
|
57
60
|
[](https://github.com/SSX360/matrixscroll/actions/workflows/provenance-gate.yml)
|
|
61
|
+
[](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
|
|
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.
|
|
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.
|
|
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.
|
|
140
|
-
`matrixscroll
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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://
|
|
255
|
-
- Compare page: <https://
|
|
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.
|
|
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.
|
|
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)
|
|
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://
|
|
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
|
+
[](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
|
|
3
4
|
[](https://github.com/SSX360/matrixscroll/actions/workflows/provenance-gate.yml)
|
|
5
|
+
[](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
|
|
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.
|
|
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.
|
|
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.
|
|
86
|
-
`matrixscroll
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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://
|
|
201
|
-
- Compare page: <https://
|
|
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.
|
|
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.
|
|
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)
|
|
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://
|
|
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/
|
|
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/
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
-
|
|
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.
|
|
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.
|
|
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.
|
|
37
|
+
matrixscroll-version: "0.4.1"
|
|
38
38
|
summary-output: provenance-summary.json
|
|
39
39
|
```
|
|
40
40
|
|