matrixscroll 0.6.0__tar.gz → 0.6.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.6.0 → matrixscroll-0.6.2}/.gitignore +27 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/CHANGELOG.md +35 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/CONTRIBUTING.md +16 -2
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/PKG-INFO +151 -81
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/README.md +143 -72
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/ADOPTER_KIT.md +3 -3
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +1 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/COMPARISON.md +0 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/CRYPTO_ROADMAP.md +1 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/DOCTRINE.md +60 -60
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/FIVE_MINUTES.md +2 -2
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/HERO_DEMO.md +2 -2
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/POC2_AUDIT.md +2 -2
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/ROADMAP_2026-07.md +15 -10
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SECURITY_PROPERTIES.md +1 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SOFTWARE_PRODUCTS.md +5 -4
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/WHITEPAPER.md +5 -5
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/PLATFORM_PIVOT.md +2 -2
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/SSX360_SCROLL.md +1 -1
- matrixscroll-0.6.2/docs/explanation/actor-attribution.md +77 -0
- matrixscroll-0.6.2/docs/explanation/ap2.md +74 -0
- matrixscroll-0.6.2/docs/explanation/commit-time-vs-artifact-time.md +78 -0
- matrixscroll-0.6.2/docs/explanation/style-supplement.md +123 -0
- matrixscroll-0.6.2/docs/explanation/trust-boundaries.md +85 -0
- matrixscroll-0.6.2/docs/explanation/writing-workflow.md +100 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/hardware-provider.md +25 -8
- matrixscroll-0.6.2/docs/how-to/gate-protected-branch.md +109 -0
- matrixscroll-0.6.2/docs/how-to/publish-git-notes.md +53 -0
- matrixscroll-0.6.2/docs/how-to/scan-mcp-server.md +57 -0
- matrixscroll-0.6.2/docs/index.md +70 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-agent.md +1 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-claude-code.md +1 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-git.md +6 -6
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-mcp.md +2 -2
- matrixscroll-0.6.2/docs/reference/cli.md +82 -0
- matrixscroll-0.6.2/docs/reference/commit-envelope.md +45 -0
- matrixscroll-0.6.2/docs/reference/exit-codes.md +38 -0
- matrixscroll-0.6.2/docs/reference/python-api.md +56 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/registries-guide.md +15 -14
- matrixscroll-0.6.2/docs/requirements.txt +9 -0
- matrixscroll-0.6.2/docs/tutorial/first-commit.md +133 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/yubikey-bridge.md +5 -5
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/yubikey-smoke.md +1 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/ci/protected-branch.yml +3 -3
- matrixscroll-0.6.2/examples/demo/mcp-rugpull-demo.cast +207 -0
- matrixscroll-0.6.2/examples/demo/mcp-rugpull-demo.gif +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/mcp-rugpull-demo.sh +38 -6
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/__init__.py +1 -1
- matrixscroll-0.6.2/matrixscroll/agent_trace.py +90 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/cli.py +34 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/formal.py +11 -4
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/git.py +51 -2
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/mcp.py +63 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/se050_transport.py +1 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/pyproject.toml +12 -9
- matrixscroll-0.6.2/tests/test_agent_trace.py +55 -0
- matrixscroll-0.6.2/tests/test_formal_specs.py +84 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_git_envelope.py +62 -1
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_release_metadata.py +21 -3
- matrixscroll-0.6.0/docs/ADOPTION.md +0 -13
- matrixscroll-0.6.0/docs/SHOW-HN-MCP-TRUST-LAUNCH.md +0 -169
- matrixscroll-0.6.0/tests/test_formal_specs.py +0 -40
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/LICENSE +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/SECURITY.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/SPEC.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/controls/agentic_ai_controls.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/AGENTIC_AI_SECURITY.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/AIMS_INTEROP.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/CI_HARD_GATE.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/CRYPTO_BACKEND.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/GITTUF_INTEROP.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/GIT_AI_NOTES_INTEROP.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/OPENSSF_SANDBOX_DECISION.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SE050_POC_SCOPE.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SE050_USB_PROTOCOL.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SLSA_SOURCE_TRACK_MAPPING.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/README.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/SCROLL_GATE_V2.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/delegation-attestation-rfc.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/rekor-guac-bridge-design.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/agentic_ai_evidence_manifest.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/commit-envelope.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/commit-envelope.signed.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/agent-commit-demo.sh +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/generate_signed_examples.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/hero-self-attestation-demo.sh +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/mcp/matrixscroll-mcp.manifest.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/mcp/matrixscroll-mcp.signed.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/release-manifest.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/release-manifest.signed.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/trusted-keys-policy.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/_claim.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/_core.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/_payment.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/canonical.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/cloud/__init__.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/cloud/client.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/constants.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/crypto_backend.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/errors.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/gate.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/guac_export.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/hooks/post-commit +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/hooks/pre-push +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/manifest.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/mcp_core.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/mcp_trust.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/policy.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/pqc.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/provenance/__init__.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/provenance/actions.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/__init__.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/base.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/emulated.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/hardware.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/registry.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/tpm.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/yubikey.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/py.typed +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/rekor_publish.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/scroll/README.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/scroll/__init__.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/ssx360_cli.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/action-envelope.v1.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/commit-envelope.v1.1.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/commit-envelope.v1.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/evidence-pack.v1.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/pqc-signature.v1.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/release-manifest.v1.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/ssx360.mcp-manifest.v1.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/__init__.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/fixtures/github-gpgsig-commit.txt +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/fixtures/mcp-tools-sample.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_agentic_guidance.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_canonical.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_canonical_pqc.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_cli.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_core.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_crypto_backend.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_gate.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_guac_rekor.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_mcp_core.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_mcp_server.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_mcp_trust.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_policy.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_pqc.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_provenance.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_se050_transport.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_security_properties.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_ssx360_cli.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_tpm_provider.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_vectors.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_yubikey_provider.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/README.md +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/_fixture_key.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/_generate.py +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_algorithm.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_device_id.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_field.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_nested.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_public_key.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_schema.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_signature.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/unsigned_empty_block.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/unsigned_no_block.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/valid_commit_envelope.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/valid_nested.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/valid_simple.json +0 -0
- {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/valid_unicode.json +0 -0
|
@@ -32,9 +32,36 @@ env/
|
|
|
32
32
|
*.swp
|
|
33
33
|
.DS_Store
|
|
34
34
|
|
|
35
|
+
# Secrets and credentials (never commit)
|
|
36
|
+
.env
|
|
37
|
+
.env.*
|
|
38
|
+
!.env.example
|
|
39
|
+
*.pem
|
|
40
|
+
*.key
|
|
41
|
+
credentials.json
|
|
42
|
+
credentials/
|
|
43
|
+
|
|
44
|
+
# Editor / agent local state
|
|
45
|
+
.cursor/
|
|
46
|
+
.playwright-cli/
|
|
47
|
+
|
|
35
48
|
# Matrix Scroll local store (never commit a private key)
|
|
36
49
|
.matrixscroll/
|
|
37
50
|
device.json
|
|
38
51
|
|
|
39
52
|
# TLA+ tools (download locally or in CI)
|
|
40
53
|
tla2tools.jar
|
|
54
|
+
|
|
55
|
+
# TLC run artifacts
|
|
56
|
+
formal/tla/states/
|
|
57
|
+
formal/tla/*_TTrace_*.tla
|
|
58
|
+
formal/tla/*_TTrace_*.bin
|
|
59
|
+
|
|
60
|
+
# MkDocs build output
|
|
61
|
+
site/
|
|
62
|
+
|
|
63
|
+
# Vale packages fetched by `vale sync`; do not commit
|
|
64
|
+
.vale/styles/Google/
|
|
65
|
+
.vale/styles/write-good/
|
|
66
|
+
.vale/styles/ai-tells/
|
|
67
|
+
.vale/styles/ai-tells-commits/
|
|
@@ -4,6 +4,40 @@ 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.6.2] - 2026-08-03
|
|
8
|
+
|
|
9
|
+
Documentation and packaging metadata only. No code, CLI or wire-format changes,
|
|
10
|
+
and no new dependencies.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Packaging URLs pointed at pages that had moved or gone.** `Documentation` and
|
|
14
|
+
`Verifier` routed through `ssx360.com` redirects that land on
|
|
15
|
+
`matrixscroll.com`, `Reference Device` pointed at a culled `/hardware` page,
|
|
16
|
+
and `Compare` duplicated `Documentation`. Every link now resolves directly, and
|
|
17
|
+
`Homepage` is the protocol site rather than the maintainer's.
|
|
18
|
+
- **The README described a hosted control plane with billing.** SSX360 is an
|
|
19
|
+
independent audit practice that sells assessments, not a platform, so the
|
|
20
|
+
README now says who maintains the protocol and why that separation exists. The
|
|
21
|
+
links to the retired `/enterprise`, `/signup` and `/compare` pages are gone.
|
|
22
|
+
|
|
23
|
+
### Documentation
|
|
24
|
+
- **State the post-quantum limit where people actually read it.** The summary and
|
|
25
|
+
keywords claim FIPS 204 and FIPS 205, but nothing on the PyPI page said the
|
|
26
|
+
overlay is an algorithm implementation through liboqs rather than a
|
|
27
|
+
CMVP-validated module, or repeated liboqs's own warning against production use.
|
|
28
|
+
Honest limits now carries both.
|
|
29
|
+
- Summary rewritten to lead with what the protocol does rather than the hardware
|
|
30
|
+
signing path, which is a bench prototype and not a product.
|
|
31
|
+
- Install pin `matrixscroll==0.6.2`.
|
|
32
|
+
|
|
33
|
+
## [0.6.1] - 2026-07-22
|
|
34
|
+
|
|
35
|
+
### Documentation
|
|
36
|
+
- **L2 Hardware prototype (2026-07-21)** — Pico 2 W / RP2350 + GMT130 ST7789
|
|
37
|
+
LCD/LED bring-up locked; SE050 M1 PoC remains bench-validated (not GA).
|
|
38
|
+
README compliance table, `docs/hardware-provider.md`, and roadmap updated.
|
|
39
|
+
Docs-only release; install pin `matrixscroll==0.6.1`.
|
|
40
|
+
|
|
7
41
|
## [0.6.0] - 2026-07-03
|
|
8
42
|
|
|
9
43
|
MCP Trust Scanner — sign any MCP server's tool surface and detect rug-pulls offline.
|
|
@@ -237,6 +271,7 @@ Initial public release. Extracted from the SSX360 reference implementation.
|
|
|
237
271
|
- Device id format: `MS-XXXX-XXXX` (SHA-256 of the raw public key, first 8 hex
|
|
238
272
|
chars, uppercase).
|
|
239
273
|
|
|
274
|
+
[0.6.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.1
|
|
240
275
|
[0.6.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.0
|
|
241
276
|
[0.5.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.5.1
|
|
242
277
|
[0.5.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.5.0
|
|
@@ -35,13 +35,27 @@ For PRs that include agent-assisted commits, publish signed commit envelopes to
|
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
matrixscroll hook-install
|
|
38
|
-
export MATRIXSCROLL_ACTOR_TYPE=agent # or human / ci as appropriate
|
|
39
|
-
export MATRIXSCROLL_TOOL=agent-runner # or your editor / agent tool name
|
|
40
38
|
git commit -m "feat: your change"
|
|
41
39
|
matrixscroll envelope-publish-notes --base origin/main --head HEAD
|
|
42
40
|
git push origin refs/notes/matrixscroll
|
|
43
41
|
```
|
|
44
42
|
|
|
43
|
+
`actor_type` and `tool` are detected from the environment. A commit made in a
|
|
44
|
+
Cursor, Claude Code, Aider, Codex, or Devin session is recorded as `agent` with
|
|
45
|
+
that tool; a commit made by a CI runner is recorded as `ci`. Everything else is
|
|
46
|
+
`human` and `git-cli`.
|
|
47
|
+
|
|
48
|
+
Set `MATRIXSCROLL_ACTOR_TYPE` and `MATRIXSCROLL_TOOL` only when the detection
|
|
49
|
+
list does not cover your agent runner, and only to describe what actually made
|
|
50
|
+
the commit. Never set `MATRIXSCROLL_ACTOR_TYPE=human` inside an agent session.
|
|
51
|
+
The envelope exists to record who wrote a change. A signed envelope carrying the
|
|
52
|
+
wrong actor is the exact falsification this project detects.
|
|
53
|
+
|
|
54
|
+
Detection and its limits are covered in
|
|
55
|
+
[`docs/explanation/actor-attribution.md`](docs/explanation/actor-attribution.md),
|
|
56
|
+
which also explains why envelopes already published with the wrong actor are
|
|
57
|
+
left in place.
|
|
58
|
+
|
|
45
59
|
CI verifies the PR range with `matrixscroll envelope-verify-range --source notes`.
|
|
46
60
|
Until repository variable `ENFORCE_PROVENANCE=true` is set, missing notes produce a **warning**
|
|
47
61
|
in the GitHub Step Summary rather than a hard failure.
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: matrixscroll
|
|
3
|
-
Version: 0.6.
|
|
4
|
-
Summary:
|
|
5
|
-
Project-URL: Homepage, https://
|
|
6
|
-
Project-URL: Documentation, https://
|
|
3
|
+
Version: 0.6.2
|
|
4
|
+
Summary: Sign who authorized an AI agent's actions and verify it offline. Ed25519 envelopes for Git commits and MCP tool surfaces, with an optional ML-DSA/SLH-DSA overlay (FIPS 204/205).
|
|
5
|
+
Project-URL: Homepage, https://matrixscroll.com
|
|
6
|
+
Project-URL: Documentation, https://matrixscroll.com/docs/
|
|
7
|
+
Project-URL: Specification, https://matrixscroll.com/spec/
|
|
8
|
+
Project-URL: Verifier, https://matrixscroll.com/verify/
|
|
7
9
|
Project-URL: Repository, https://github.com/SSX360/matrixscroll
|
|
8
10
|
Project-URL: Source, https://github.com/SSX360/matrixscroll
|
|
9
11
|
Project-URL: Issues, https://github.com/SSX360/matrixscroll/issues
|
|
10
|
-
Project-URL: Specification, https://github.com/SSX360/matrixscroll/blob/main/SPEC.md
|
|
11
12
|
Project-URL: Whitepaper, https://github.com/SSX360/matrixscroll/blob/main/docs/WHITEPAPER.md
|
|
12
|
-
Project-URL: Verifier, https://ssx360.com/verify
|
|
13
|
-
Project-URL: Compare, https://ssx360.com/docs
|
|
14
13
|
Project-URL: Changelog, https://github.com/SSX360/matrixscroll/blob/main/CHANGELOG.md
|
|
15
14
|
Project-URL: Discussions, https://github.com/SSX360/matrixscroll/discussions
|
|
16
15
|
Project-URL: Security, https://github.com/SSX360/matrixscroll/blob/main/SECURITY.md
|
|
17
16
|
Project-URL: GitHub Action, https://github.com/SSX360/matrixscroll-verify-action
|
|
18
|
-
Project-URL: PyPI Provenance, https://pypi.org/project/matrixscroll/0.6.0/
|
|
19
|
-
Project-URL: Reference Device, https://ssx360.com/hardware
|
|
20
17
|
Project-URL: Tests, https://github.com/SSX360/matrixscroll/tree/main/tests
|
|
21
18
|
Project-URL: Public Roadmap, https://github.com/SSX360/matrixscroll/blob/main/docs/ROADMAP_2026-07.md
|
|
19
|
+
Project-URL: Hardware Status, https://github.com/SSX360/matrixscroll/blob/main/docs/hardware-provider.md
|
|
20
|
+
Project-URL: Maintainer, https://ssx360.com/about
|
|
22
21
|
Author-email: SSX360 <security@matrixscroll.com>
|
|
23
22
|
License-Expression: Apache-2.0
|
|
24
23
|
License-File: LICENSE
|
|
@@ -58,42 +57,50 @@ Description-Content-Type: text/markdown
|
|
|
58
57
|
|
|
59
58
|
# Matrix Scroll
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
**Codebase direction:** [`docs/DOCTRINE.md`](docs/DOCTRINE.md)
|
|
60
|
+
Signed provenance for agent-assisted Git commits, with offline Ed25519 verification.
|
|
64
61
|
|
|
65
62
|
[](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
|
|
66
|
-
[](https://pypi.org/project/matrixscroll/)
|
|
64
|
+
[](https://pypi.org/project/matrixscroll/)
|
|
65
|
+
[](LICENSE)
|
|
66
|
+
|
|
67
|
+
Matrix Scroll is an open protocol for cryptographically signed agent
|
|
68
|
+
authorization: Ed25519 records for Git commits (L1), MCP tool surfaces (L2), and
|
|
69
|
+
agent runs and non-human-identity actions (L3), verified offline in the CLI, the
|
|
70
|
+
browser, and CI. It is free, permanently, and is not monetized.
|
|
71
|
+
|
|
72
|
+
Software emulated keys ship today. NXP SE050 secure-element signing is a
|
|
73
|
+
bench-validated proof of concept (Jul 2026) sharing the same verifier contract,
|
|
74
|
+
and the Pico 2 W / GMT130 display bring-up is a locked L2 Hardware prototype
|
|
75
|
+
(Jul 2026). Neither is generally available.
|
|
68
76
|
|
|
69
|
-
**
|
|
77
|
+
**Try it:** [matrixscroll.com/try](https://matrixscroll.com/try/) runs an offline
|
|
78
|
+
tamper demo in the browser. **Codebase direction:** [`docs/DOCTRINE.md`](docs/DOCTRINE.md).
|
|
79
|
+
**146 tests**, Hypothesis-verified [security properties](https://github.com/SSX360/matrixscroll/blob/main/docs/SECURITY_PROPERTIES.md),
|
|
80
|
+
and [TLA+ formal models](formal/README.md).
|
|
70
81
|
|
|
71
|
-
**
|
|
72
|
-
**open protocol for cryptographically signed, AI-assisted code provenance** — Ed25519 commit
|
|
73
|
-
envelopes for Git (and universal action envelopes for CI, IaC, and migrations),
|
|
74
|
-
verified offline in CLI, browser, and CI. Software emulated keys ship today; NXP SE050
|
|
75
|
-
secure-element signing is in firmware validation with the same verifier contract.
|
|
82
|
+
**Authorization ladder:** L1 Code (commits), L2 Tools (MCP manifests), L3 Actions (agent runs), L4 Money (AP2, demo), L5 Silicon (2029+)
|
|
76
83
|
|
|
77
|
-
**
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
**Who maintains it:** [SSX360](https://ssx360.com/about), an independent audit
|
|
85
|
+
practice for agent authorization. It sells assessments and never sells this
|
|
86
|
+
protocol, because gating the protocol would remove the reason anyone trusts the
|
|
87
|
+
audit built beside it. Teams that want an independent assessment of their own
|
|
88
|
+
mandate chain can [request a call](https://ssx360.com/contact).
|
|
82
89
|
|
|
83
90
|
## Compliance evidence mapping
|
|
84
91
|
|
|
85
92
|
Matrix Scroll **maps to** and **produces evidence for** (never “required by”; not a certification claim):
|
|
86
93
|
|
|
87
|
-
- **DORA (Jan 2025)
|
|
88
|
-
- **PCI DSS 4.0 Req 6.5 (Mar 2025)
|
|
89
|
-
- **US Treasury FS-AI RMF (Feb 2026)
|
|
90
|
-
- **NIST SSDF
|
|
91
|
-
- **EU AI Act Article 12
|
|
92
|
-
- **Five Eyes Agentic AI guidance (Apr 2026)
|
|
94
|
+
- **DORA (Jan 2025)**: ICT change-management evidence for software changes.
|
|
95
|
+
- **PCI DSS 4.0 Req 6.5 (Mar 2025)**: change-control evidence for custom software.
|
|
96
|
+
- **US Treasury FS-AI RMF (Feb 2026)**: traceability for agent actions in financial software.
|
|
97
|
+
- **NIST SSDF**: provenance, change authorization, and release gate review.
|
|
98
|
+
- **EU AI Act Article 12**: record-keeping readiness (high-risk obligations Dec 2027), not a live mandate claim.
|
|
99
|
+
- **Five Eyes Agentic AI guidance (Apr 2026)**: linked crosswalk only: [`controls/agentic_ai_controls.json`](controls/agentic_ai_controls.json)
|
|
93
100
|
|
|
94
101
|
POC 2 audit readiness: [`docs/POC2_AUDIT.md`](docs/POC2_AUDIT.md)
|
|
95
102
|
|
|
96
|
-
## Install
|
|
103
|
+
## Install the MCP server (headline path)
|
|
97
104
|
|
|
98
105
|
Agents sign commits in-loop via the **provenance-only** MCP server:
|
|
99
106
|
|
|
@@ -109,25 +116,29 @@ Agents sign commits in-loop via the **provenance-only** MCP server:
|
|
|
109
116
|
```
|
|
110
117
|
|
|
111
118
|
```bash
|
|
112
|
-
pip install "matrixscroll[mcp]==0.6.
|
|
113
|
-
matrixscroll-mcp # stdio
|
|
119
|
+
pip install "matrixscroll[mcp]==0.6.2"
|
|
120
|
+
matrixscroll-mcp # stdio. Register in Cursor / Claude Desktop / VS Code
|
|
114
121
|
```
|
|
115
122
|
|
|
116
123
|
**MCP tools (provenance verbs only):** `create_envelope`, `sign_action`, `verify_envelope`,
|
|
117
124
|
`verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`, `list_envelopes`,
|
|
118
|
-
`connect_card` (SE050 hardware
|
|
125
|
+
`connect_card` (SE050 hardware prototype, pilot evaluation, not GA).
|
|
119
126
|
|
|
120
127
|
**MCP trust tools (manifest surface):** `scan_mcp_server`, `sign_mcp_manifest`, `verify_mcp_manifest`.
|
|
121
128
|
|
|
122
|
-
### MCP Trust Scanner
|
|
129
|
+
### MCP Trust Scanner: catch a rug-pull in 60 seconds
|
|
123
130
|
|
|
124
|
-
|
|
125
|
-
|
|
131
|
+

|
|
132
|
+
|
|
133
|
+
[Watch on asciinema](https://asciinema.org/a/rbCRkIcZnjNWmqZF) · cast file: [`examples/demo/mcp-rugpull-demo.cast`](examples/demo/mcp-rugpull-demo.cast)
|
|
134
|
+
|
|
135
|
+
Sign the tool surface. Verify at install. Offline Ed25519 manifests for MCP rug-pull detection.
|
|
136
|
+
Zero cloud, zero signup, exit code 2 fails your CI.
|
|
126
137
|
|
|
127
138
|
```bash
|
|
128
|
-
pip install matrixscroll
|
|
139
|
+
pip install "matrixscroll==0.6.2"
|
|
129
140
|
|
|
130
|
-
# 1. Scan a live MCP server (stdio)
|
|
141
|
+
# 1. Scan a live MCP server (stdio). Fingerprints every tool: name, description, input schema
|
|
131
142
|
matrixscroll mcp scan --connect stdio --server-command "npx -y some-mcp-server" \
|
|
132
143
|
-o manifest.json --pretty
|
|
133
144
|
|
|
@@ -151,19 +162,30 @@ A mutated tool description or input schema fails loudly:
|
|
|
151
162
|
FAIL surface_drift — do not trust this server until you review the diff
|
|
152
163
|
```
|
|
153
164
|
|
|
154
|
-
Offline mode works too
|
|
165
|
+
Offline mode works too, no server needed: `matrixscroll mcp scan --tools ./tools.json`
|
|
155
166
|
accepts a plain JSON tool array or `{"tools": [...]}` (paste from any `tools/list` response).
|
|
156
167
|
|
|
168
|
+
Gate it in CI. Fail the build on unsigned or drifted manifests with the reusable workflow:
|
|
169
|
+
|
|
170
|
+
```yaml
|
|
171
|
+
jobs:
|
|
172
|
+
mcp-gate:
|
|
173
|
+
uses: SSX360/matrixscroll-verify-action/.github/workflows/mcp-manifest-gate.yml@main
|
|
174
|
+
with:
|
|
175
|
+
manifest: mcp/my-server.signed.json
|
|
176
|
+
baseline: mcp/my-server.baseline.json
|
|
177
|
+
matrixscroll_version: "0.6.2"
|
|
178
|
+
```
|
|
179
|
+
|
|
157
180
|
Full scripted demo: [`examples/demo/mcp-rugpull-demo.sh`](examples/demo/mcp-rugpull-demo.sh)
|
|
158
181
|
Golden artifact (this repo's own MCP server, signed): [`examples/mcp/matrixscroll-mcp.signed.json`](examples/mcp/matrixscroll-mcp.signed.json)
|
|
159
182
|
Schema (CC0): [`schemas/ssx360.mcp-manifest.v1.json`](schemas/ssx360.mcp-manifest.v1.json)
|
|
160
|
-
Browser demo: [matrixscroll.com/scan](https://matrixscroll.com/scan)
|
|
161
|
-
Launch checklist: [`docs/SHOW-HN-MCP-TRUST-LAUNCH.md`](docs/SHOW-HN-MCP-TRUST-LAUNCH.md)
|
|
183
|
+
Browser demo: [matrixscroll.com/scan](https://matrixscroll.com/scan/)
|
|
162
184
|
|
|
163
|
-
## Also available
|
|
185
|
+
## Also available: CLI and hooks
|
|
164
186
|
|
|
165
187
|
```bash
|
|
166
|
-
pip install "matrixscroll==0.6.
|
|
188
|
+
pip install "matrixscroll==0.6.2"
|
|
167
189
|
matrixscroll hook-install
|
|
168
190
|
export MATRIXSCROLL_ACTOR_TYPE=agent
|
|
169
191
|
export MATRIXSCROLL_TOOL=agent-runner
|
|
@@ -184,7 +206,7 @@ matrixscroll sign-action --type ci_step \
|
|
|
184
206
|
|
|
185
207
|
Action schema: [`schemas/action-envelope.v1.json`](https://github.com/SSX360/matrixscroll/blob/main/schemas/action-envelope.v1.json)
|
|
186
208
|
|
|
187
|
-
### SSX360 Scroll
|
|
209
|
+
### SSX360 Scroll: Git wrapper (Layer 3, Phase 1)
|
|
188
210
|
|
|
189
211
|
Git under the hood; governance on top. **Not a Git replacement.**
|
|
190
212
|
|
|
@@ -211,11 +233,13 @@ that produced it.
|
|
|
211
233
|
Keep GitHub Advanced Security, Semgrep, Snyk, branch protection, and artifact
|
|
212
234
|
attestations. Matrix Scroll adds signed commit-time authorship proof before
|
|
213
235
|
merge, and it keeps the same offline verification contract across the CLI,
|
|
214
|
-
browser, CI, and the SE050
|
|
236
|
+
browser, CI, and the SE050 hardware prototype path.
|
|
215
237
|
|
|
216
238
|
The reference SDK ships pure Ed25519 over canonical manifest bytes today. The
|
|
217
|
-
SSX360 / NXP SE050 path is the compatible next trust layer
|
|
218
|
-
|
|
239
|
+
SSX360 / NXP SE050 path is the compatible next trust layer: M1 signing PoC and
|
|
240
|
+
RP2350 + GMT130 display prototype are bench-validated; live SE050 on the
|
|
241
|
+
display bring-up UF2 remains fail-closed until the NXP backend is restored.
|
|
242
|
+
This is **prototype / pilot evaluation**, not a GA hardware product.
|
|
219
243
|
|
|
220
244
|
## RFC 8032 (Ed25519) alignment
|
|
221
245
|
|
|
@@ -227,13 +251,23 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](https://github.com/SSX360/matrixscro
|
|
|
227
251
|
|
|
228
252
|
## Honest limits
|
|
229
253
|
|
|
230
|
-
- Shipping now: PyPI `matrixscroll==0.6.
|
|
254
|
+
- Shipping now: PyPI `matrixscroll==0.6.2`, Git post-commit hooks,
|
|
231
255
|
`matrixscroll sign-action`, `matrixscroll scroll commit` (thin wrapper),
|
|
232
256
|
`matrixscroll envelope-verify`, Scroll Gate PR verification (partial SLSA L1–2),
|
|
233
|
-
verifier, the GitHub Action, and a USB CDC host transport
|
|
234
|
-
|
|
235
|
-
-
|
|
236
|
-
|
|
257
|
+
verifier, the GitHub Action, and a USB CDC host transport for the SE050
|
|
258
|
+
hardware prototype path. Emulated mode is the default evaluation path.
|
|
259
|
+
- Prototype (bench): Pico 2 W / RP2350 + GMT130 ST7789 LCD/LED bring-up locked
|
|
260
|
+
(2026-07-21); NXP SE050 M1 signing PoC accepted (Jul 2026) on contractor
|
|
261
|
+
firmware, not GA; display bring-up UF2 keeps `pubkey`/`sign` fail-closed
|
|
262
|
+
until Plug & Trust restore. External Ed25519-capable hardware key backends
|
|
263
|
+
and transparency-log integrations remain roadmap.
|
|
264
|
+
- The post-quantum overlay implements the ML-DSA and SLH-DSA algorithms specified
|
|
265
|
+
in FIPS 204 and FIPS 205, through liboqs. That is an algorithm implementation,
|
|
266
|
+
not a CMVP-validated cryptographic module, and it is never described as FIPS
|
|
267
|
+
validated, certified or compliant. liboqs itself states that it should not be
|
|
268
|
+
relied on in production or to protect sensitive data, which is a limit worth
|
|
269
|
+
repeating rather than burying. The overlay is attached alongside the Ed25519
|
|
270
|
+
signature and never replaces it.
|
|
237
271
|
- Compliance language is evidence mapping (DORA, PCI DSS 4.0, Treasury FS-AI RMF, SSDF, EU AI Act Article 12 readiness, Five Eyes agentic-AI guidance), not certification or customer endorsement.
|
|
238
272
|
- Illustrative deployment profiles are not endorsements or existing customer relationships.
|
|
239
273
|
- Not: IAM, sandboxing, prompt filtering, or an agent runtime.
|
|
@@ -245,7 +279,7 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](https://github.com/SSX360/matrixscro
|
|
|
245
279
|
- Hardware keys and build attestations remain complementary roots and downstream
|
|
246
280
|
proofs; Matrix Scroll covers commit-time provenance.
|
|
247
281
|
- The public contract stays pure Ed25519 over canonical manifest bytes for the
|
|
248
|
-
required `signature` block
|
|
282
|
+
required `signature` block, whether the signer is emulated today or
|
|
249
283
|
SE050 secure-element signing later. Software signers may optionally attach ML-DSA/SLH-DSA
|
|
250
284
|
overlays (FIPS 204/205) via `matrixscroll[pqc]` without changing hardware firmware.
|
|
251
285
|
|
|
@@ -263,8 +297,9 @@ verify that proof offline in the CLI, browser, or CI before merge.
|
|
|
263
297
|
Emulated mode ships today and keeps the signing key on disk with owner-only
|
|
264
298
|
permissions so teams can evaluate the full workflow now. Hardware mode keeps
|
|
265
299
|
the same verifier contract and commit envelope schema, but moves the private
|
|
266
|
-
key into the SE050 secure element so the host cannot export it
|
|
267
|
-
|
|
300
|
+
key into the SE050 secure element so the host cannot export it. That path is
|
|
301
|
+
a bench-validated L2 Hardware prototype (Pico 2 W + SE050 M1 PoC) available
|
|
302
|
+
for pilot evaluation, not GA.
|
|
268
303
|
|
|
269
304
|
### How can I integrate Matrix Scroll into a CI/CD workflow?
|
|
270
305
|
|
|
@@ -277,7 +312,7 @@ alongside your existing scanners, branch protection, and build attestations.
|
|
|
277
312
|
## Quickstart (CLI)
|
|
278
313
|
|
|
279
314
|
```bash
|
|
280
|
-
pip install "matrixscroll==0.6.
|
|
315
|
+
pip install "matrixscroll==0.6.2"
|
|
281
316
|
matrixscroll hook-install
|
|
282
317
|
matrixscroll hook-status
|
|
283
318
|
|
|
@@ -288,7 +323,7 @@ git commit -m "feat: agent-assisted change"
|
|
|
288
323
|
matrixscroll envelope-verify "$(git rev-parse HEAD)"
|
|
289
324
|
```
|
|
290
325
|
|
|
291
|
-
**Try it in the browser:** [matrixscroll.com/try](https://matrixscroll.com/try)
|
|
326
|
+
**Try it in the browser:** [matrixscroll.com/try](https://matrixscroll.com/try/)
|
|
292
327
|
|
|
293
328
|
See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
|
|
294
329
|
[`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
|
|
@@ -306,7 +341,7 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
|
|
|
306
341
|
head-ref: ${{ github.event.pull_request.head.sha }}
|
|
307
342
|
base-ref: ${{ github.event.pull_request.base.sha }}
|
|
308
343
|
source: notes
|
|
309
|
-
matrixscroll-version: "0.6.
|
|
344
|
+
matrixscroll-version: "0.6.2"
|
|
310
345
|
require-mode: emulated
|
|
311
346
|
```
|
|
312
347
|
|
|
@@ -326,7 +361,7 @@ git push origin refs/notes/matrixscroll
|
|
|
326
361
|
head-ref: ${{ github.event.pull_request.head.sha }}
|
|
327
362
|
base-ref: ${{ github.event.pull_request.base.sha }}
|
|
328
363
|
source: notes
|
|
329
|
-
matrixscroll-version: "0.6.
|
|
364
|
+
matrixscroll-version: "0.6.2"
|
|
330
365
|
summary-output: provenance-summary.json
|
|
331
366
|
```
|
|
332
367
|
|
|
@@ -334,13 +369,13 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
|
|
|
334
369
|
[`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
|
|
335
370
|
|
|
336
371
|
The `--require-mode`, `--trusted-keys`, and actor or delegation policy checks
|
|
337
|
-
ship in the current release line; examples in this README pin `0.6.
|
|
372
|
+
ship in the current release line; examples in this README pin `0.6.2`.
|
|
338
373
|
|
|
339
374
|
## Security: Ed25519 via cryptography
|
|
340
375
|
|
|
341
376
|
Ed25519 signing, verification, and key generation use the [`cryptography`](https://pypi.org/project/cryptography/)
|
|
342
377
|
package (required dependency, `>=42.0`). Official wheels ship native crypto
|
|
343
|
-
backends (OpenSSL + Rust components)
|
|
378
|
+
backends (OpenSSL + Rust components), so no Rust toolchain for users. All
|
|
344
379
|
primitives are centralized in `matrixscroll/crypto_backend.py`; see
|
|
345
380
|
[`docs/CRYPTO_BACKEND.md`](docs/CRYPTO_BACKEND.md).
|
|
346
381
|
|
|
@@ -357,23 +392,23 @@ when they preserve the same pure Ed25519 byte contract.
|
|
|
357
392
|
|
|
358
393
|
## Public proof links
|
|
359
394
|
|
|
360
|
-
- Browser verifier: <https://matrixscroll.com/verify
|
|
361
|
-
- Try it (quickstart + tamper demo): <https://matrixscroll.com/try
|
|
362
|
-
-
|
|
363
|
-
- Documentation: <https://matrixscroll.com/docs>
|
|
395
|
+
- Browser verifier: <https://matrixscroll.com/verify/>
|
|
396
|
+
- Try it (quickstart + tamper demo): <https://matrixscroll.com/try/>
|
|
397
|
+
- Documentation: <https://matrixscroll.com/docs/>
|
|
364
398
|
- Specification: [`SPEC.md`](https://github.com/SSX360/matrixscroll/blob/main/SPEC.md)
|
|
365
399
|
- Commit envelope schema: [`schemas/commit-envelope.v1.json`](https://github.com/SSX360/matrixscroll/blob/main/schemas/commit-envelope.v1.json)
|
|
366
400
|
- Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
|
|
367
401
|
- Conformance vectors: [`vectors/`](https://github.com/SSX360/matrixscroll/tree/main/vectors/)
|
|
368
402
|
- GitHub Action: <https://github.com/SSX360/matrixscroll-verify-action>
|
|
369
403
|
- Agentic AI controls: [`docs/AGENTIC_AI_SECURITY.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/AGENTIC_AI_SECURITY.md)
|
|
370
|
-
- Site: <https://matrixscroll.com> ·
|
|
371
|
-
-
|
|
404
|
+
- Site: <https://matrixscroll.com> · Browser verifier: <https://matrixscroll.com/verify/>
|
|
405
|
+
- Hardware prototype status: [`docs/hardware-provider.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/hardware-provider.md) (bench-validated; not GA)
|
|
406
|
+
- Maintainer, and how independence is kept: <https://ssx360.com/about>
|
|
372
407
|
|
|
373
408
|
## Python API
|
|
374
409
|
|
|
375
410
|
```bash
|
|
376
|
-
pip install "matrixscroll==0.6.
|
|
411
|
+
pip install "matrixscroll==0.6.2"
|
|
377
412
|
```
|
|
378
413
|
|
|
379
414
|
```python
|
|
@@ -423,7 +458,7 @@ matrixscroll.sign_manifest(...) / post-commit hook
|
|
|
423
458
|
v
|
|
424
459
|
IdentityProvider --> Ed25519 signature
|
|
425
460
|
(L1 emulated today,
|
|
426
|
-
SSX360 / SE050
|
|
461
|
+
SSX360 / SE050 prototype, bench-validated)
|
|
427
462
|
|
|
|
428
463
|
v
|
|
429
464
|
signed document --> matrixscroll.verify_manifest(...)
|
|
@@ -431,21 +466,23 @@ signed document --> matrixscroll.verify_manifest(...)
|
|
|
431
466
|
```
|
|
432
467
|
|
|
433
468
|
Switch providers with `MATRIXSCROLL_MODE`. Hardware mode includes a USB CDC
|
|
434
|
-
host transport
|
|
435
|
-
|
|
436
|
-
|
|
469
|
+
host transport and a mock path for CI. The L2 Hardware prototype (Pico 2 W /
|
|
470
|
+
GMT130 display + SE050 M1 PoC) is bench-validated; live SE050 signing on the
|
|
471
|
+
display bring-up UF2 stays fail-closed until the NXP backend is restored.
|
|
472
|
+
External-key backends stay out of the mainline until they can sign the same
|
|
473
|
+
canonical bytes with Ed25519.
|
|
437
474
|
|
|
438
475
|
For rollout order, start with `MATRIXSCROLL_MODE=emulated` for evaluation,
|
|
439
476
|
layer in external Ed25519-capable signers only when they stay verifier
|
|
440
|
-
compatible, and treat `hardware` as the SE050
|
|
441
|
-
|
|
477
|
+
compatible, and treat `hardware` as the SE050 prototype path for pilot
|
|
478
|
+
evaluation, not GA.
|
|
442
479
|
|
|
443
480
|
## Compliance levels
|
|
444
481
|
|
|
445
482
|
| Level | Provider | Backed by | Status |
|
|
446
483
|
| ----- | -------- | --------- | ------ |
|
|
447
484
|
| **L1** Emulated | `EmulatedProvider` | Software key, file-backed (0600) | Shipping |
|
|
448
|
-
| **L2** Hardware | `HardwareProvider` | NXP SE050
|
|
485
|
+
| **L2** Hardware | `HardwareProvider` | NXP SE050 + Pico 2 W / RP2350 + GMT130 (SSX360) | Prototype (bench) |
|
|
449
486
|
| **L3** Attested | future | L2 + remote attestation | Roadmap |
|
|
450
487
|
|
|
451
488
|
`status()` exposes the active level via the `mode` and `available` fields.
|
|
@@ -484,11 +521,11 @@ The MCP server exposes **provenance verbs** (`create_envelope`, `verify_envelope
|
|
|
484
521
|
Install and register in Cursor / Claude Desktop / VS Code:
|
|
485
522
|
|
|
486
523
|
```bash
|
|
487
|
-
pip install "matrixscroll[mcp]==0.6.
|
|
524
|
+
pip install "matrixscroll[mcp]==0.6.2"
|
|
488
525
|
matrixscroll-mcp # stdio
|
|
489
526
|
```
|
|
490
527
|
|
|
491
|
-
See the [Install
|
|
528
|
+
See the [Install the MCP server](#install-the-mcp-server-headline-path) section above for
|
|
492
529
|
the recommended `mcp.json` snippet.
|
|
493
530
|
|
|
494
531
|
## License
|
|
@@ -496,6 +533,39 @@ the recommended `mcp.json` snippet.
|
|
|
496
533
|
- Code: **Apache-2.0** (`LICENSE`).
|
|
497
534
|
- Specification text (`SPEC.md`, `vectors/`): **CC0 1.0** - public domain.
|
|
498
535
|
|
|
536
|
+
## Verify this release
|
|
537
|
+
|
|
538
|
+
Every release is published from GitHub Actions through PyPI Trusted Publishing,
|
|
539
|
+
and every file carries a PEP 740 attestation recorded in the Sigstore
|
|
540
|
+
transparency log. You do not have to take our word for who built the wheel; you
|
|
541
|
+
can check it.
|
|
542
|
+
|
|
543
|
+
Ask PyPI directly:
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
curl -H "Accept: application/vnd.pypi.integrity.v1+json" \
|
|
547
|
+
https://pypi.org/integrity/matrixscroll/0.6.2/matrixscroll-0.6.2-py3-none-any.whl/provenance
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
The response names the publisher, and it should say exactly this:
|
|
551
|
+
|
|
552
|
+
```json
|
|
553
|
+
{"kind": "GitHub", "repository": "SSX360/matrixscroll",
|
|
554
|
+
"workflow": "publish.yml", "environment": "pypi"}
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
Transparency-log entry for the 0.6.2 wheel: log index `2215985472`. If the
|
|
558
|
+
publisher, the workflow, or the digest differs from what you expect, do not
|
|
559
|
+
install the file.
|
|
560
|
+
|
|
561
|
+
The human-readable view is on the
|
|
562
|
+
[PyPI project page](https://pypi.org/project/matrixscroll/0.6.2/), where files
|
|
563
|
+
built with attestations are marked as verified.
|
|
564
|
+
|
|
565
|
+
This matters more here than for most packages. A tool that sells offline
|
|
566
|
+
verifiability should be verifiable by the same standard it asks of everyone
|
|
567
|
+
else.
|
|
568
|
+
|
|
499
569
|
## Security
|
|
500
570
|
|
|
501
571
|
See [`SECURITY.md`](SECURITY.md) and [`docs/SECURITY_PROPERTIES.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/SECURITY_PROPERTIES.md).
|
|
@@ -504,5 +574,5 @@ Report vulnerabilities privately to
|
|
|
504
574
|
|
|
505
575
|
---
|
|
506
576
|
|
|
507
|
-
**
|
|
508
|
-
**
|
|
577
|
+
**Docs:** https://matrixscroll.com/docs/ · **Spec:** https://matrixscroll.com/spec/ · **Verify:** https://matrixscroll.com/verify/
|
|
578
|
+
**Maintainer:** https://ssx360.com/about · **Contact:** mission@ssx360.com
|