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.
Files changed (173) hide show
  1. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/.gitignore +27 -0
  2. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/CHANGELOG.md +35 -0
  3. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/CONTRIBUTING.md +16 -2
  4. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/PKG-INFO +151 -81
  5. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/README.md +143 -72
  6. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/ADOPTER_KIT.md +3 -3
  7. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +1 -1
  8. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/COMPARISON.md +0 -1
  9. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/CRYPTO_ROADMAP.md +1 -1
  10. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/DOCTRINE.md +60 -60
  11. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/FIVE_MINUTES.md +2 -2
  12. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/HERO_DEMO.md +2 -2
  13. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/POC2_AUDIT.md +2 -2
  14. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/ROADMAP_2026-07.md +15 -10
  15. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SECURITY_PROPERTIES.md +1 -1
  16. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SOFTWARE_PRODUCTS.md +5 -4
  17. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/WHITEPAPER.md +5 -5
  18. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/PLATFORM_PIVOT.md +2 -2
  19. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/SSX360_SCROLL.md +1 -1
  20. matrixscroll-0.6.2/docs/explanation/actor-attribution.md +77 -0
  21. matrixscroll-0.6.2/docs/explanation/ap2.md +74 -0
  22. matrixscroll-0.6.2/docs/explanation/commit-time-vs-artifact-time.md +78 -0
  23. matrixscroll-0.6.2/docs/explanation/style-supplement.md +123 -0
  24. matrixscroll-0.6.2/docs/explanation/trust-boundaries.md +85 -0
  25. matrixscroll-0.6.2/docs/explanation/writing-workflow.md +100 -0
  26. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/hardware-provider.md +25 -8
  27. matrixscroll-0.6.2/docs/how-to/gate-protected-branch.md +109 -0
  28. matrixscroll-0.6.2/docs/how-to/publish-git-notes.md +53 -0
  29. matrixscroll-0.6.2/docs/how-to/scan-mcp-server.md +57 -0
  30. matrixscroll-0.6.2/docs/index.md +70 -0
  31. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-agent.md +1 -1
  32. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-claude-code.md +1 -1
  33. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-git.md +6 -6
  34. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/quickstart-mcp.md +2 -2
  35. matrixscroll-0.6.2/docs/reference/cli.md +82 -0
  36. matrixscroll-0.6.2/docs/reference/commit-envelope.md +45 -0
  37. matrixscroll-0.6.2/docs/reference/exit-codes.md +38 -0
  38. matrixscroll-0.6.2/docs/reference/python-api.md +56 -0
  39. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/registries-guide.md +15 -14
  40. matrixscroll-0.6.2/docs/requirements.txt +9 -0
  41. matrixscroll-0.6.2/docs/tutorial/first-commit.md +133 -0
  42. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/yubikey-bridge.md +5 -5
  43. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/yubikey-smoke.md +1 -1
  44. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/ci/protected-branch.yml +3 -3
  45. matrixscroll-0.6.2/examples/demo/mcp-rugpull-demo.cast +207 -0
  46. matrixscroll-0.6.2/examples/demo/mcp-rugpull-demo.gif +0 -0
  47. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/mcp-rugpull-demo.sh +38 -6
  48. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/__init__.py +1 -1
  49. matrixscroll-0.6.2/matrixscroll/agent_trace.py +90 -0
  50. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/cli.py +34 -0
  51. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/formal.py +11 -4
  52. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/git.py +51 -2
  53. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/mcp.py +63 -0
  54. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/se050_transport.py +1 -1
  55. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/pyproject.toml +12 -9
  56. matrixscroll-0.6.2/tests/test_agent_trace.py +55 -0
  57. matrixscroll-0.6.2/tests/test_formal_specs.py +84 -0
  58. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_git_envelope.py +62 -1
  59. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_release_metadata.py +21 -3
  60. matrixscroll-0.6.0/docs/ADOPTION.md +0 -13
  61. matrixscroll-0.6.0/docs/SHOW-HN-MCP-TRUST-LAUNCH.md +0 -169
  62. matrixscroll-0.6.0/tests/test_formal_specs.py +0 -40
  63. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/LICENSE +0 -0
  64. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/SECURITY.md +0 -0
  65. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/SPEC.md +0 -0
  66. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/controls/agentic_ai_controls.json +0 -0
  67. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/AGENTIC_AI_SECURITY.md +0 -0
  68. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/AIMS_INTEROP.md +0 -0
  69. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/CI_HARD_GATE.md +0 -0
  70. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/CRYPTO_BACKEND.md +0 -0
  71. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/GITTUF_INTEROP.md +0 -0
  72. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/GIT_AI_NOTES_INTEROP.md +0 -0
  73. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/OPENSSF_SANDBOX_DECISION.md +0 -0
  74. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SE050_POC_SCOPE.md +0 -0
  75. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SE050_USB_PROTOCOL.md +0 -0
  76. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/SLSA_SOURCE_TRACK_MAPPING.md +0 -0
  77. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/README.md +0 -0
  78. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/commercial/SCROLL_GATE_V2.md +0 -0
  79. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/delegation-attestation-rfc.md +0 -0
  80. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/rekor-guac-bridge-design.md +0 -0
  81. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
  82. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
  83. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
  84. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/agentic_ai_evidence_manifest.json +0 -0
  85. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
  86. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/commit-envelope.json +0 -0
  87. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/commit-envelope.signed.json +0 -0
  88. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/agent-commit-demo.sh +0 -0
  89. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/generate_signed_examples.py +0 -0
  90. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/demo/hero-self-attestation-demo.sh +0 -0
  91. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/mcp/matrixscroll-mcp.manifest.json +0 -0
  92. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/mcp/matrixscroll-mcp.signed.json +0 -0
  93. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/release-manifest.json +0 -0
  94. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/release-manifest.signed.json +0 -0
  95. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/examples/trusted-keys-policy.json +0 -0
  96. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/_claim.py +0 -0
  97. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/_core.py +0 -0
  98. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/_payment.py +0 -0
  99. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/canonical.py +0 -0
  100. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/cloud/__init__.py +0 -0
  101. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/cloud/client.py +0 -0
  102. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/constants.py +0 -0
  103. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/crypto_backend.py +0 -0
  104. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/errors.py +0 -0
  105. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/gate.py +0 -0
  106. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/guac_export.py +0 -0
  107. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/hooks/post-commit +0 -0
  108. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/hooks/pre-push +0 -0
  109. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/manifest.py +0 -0
  110. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/mcp_core.py +0 -0
  111. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/mcp_trust.py +0 -0
  112. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/policy.py +0 -0
  113. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/pqc.py +0 -0
  114. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/provenance/__init__.py +0 -0
  115. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/provenance/actions.py +0 -0
  116. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/__init__.py +0 -0
  117. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/base.py +0 -0
  118. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/emulated.py +0 -0
  119. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/hardware.py +0 -0
  120. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/registry.py +0 -0
  121. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/tpm.py +0 -0
  122. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/providers/yubikey.py +0 -0
  123. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/py.typed +0 -0
  124. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/rekor_publish.py +0 -0
  125. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/scroll/README.md +0 -0
  126. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/scroll/__init__.py +0 -0
  127. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/matrixscroll/ssx360_cli.py +0 -0
  128. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/action-envelope.v1.json +0 -0
  129. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/commit-envelope.v1.1.json +0 -0
  130. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/commit-envelope.v1.json +0 -0
  131. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/evidence-pack.v1.json +0 -0
  132. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/pqc-signature.v1.json +0 -0
  133. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/release-manifest.v1.json +0 -0
  134. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/schemas/ssx360.mcp-manifest.v1.json +0 -0
  135. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/__init__.py +0 -0
  136. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/fixtures/github-gpgsig-commit.txt +0 -0
  137. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/fixtures/mcp-tools-sample.json +0 -0
  138. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_agentic_guidance.py +0 -0
  139. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_canonical.py +0 -0
  140. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_canonical_pqc.py +0 -0
  141. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_cli.py +0 -0
  142. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_core.py +0 -0
  143. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_crypto_backend.py +0 -0
  144. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_gate.py +0 -0
  145. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_guac_rekor.py +0 -0
  146. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_mcp_core.py +0 -0
  147. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_mcp_server.py +0 -0
  148. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_mcp_trust.py +0 -0
  149. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_policy.py +0 -0
  150. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_pqc.py +0 -0
  151. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_provenance.py +0 -0
  152. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_se050_transport.py +0 -0
  153. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_security_properties.py +0 -0
  154. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_ssx360_cli.py +0 -0
  155. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_tpm_provider.py +0 -0
  156. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_vectors.py +0 -0
  157. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/tests/test_yubikey_provider.py +0 -0
  158. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/README.md +0 -0
  159. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/_fixture_key.json +0 -0
  160. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/_generate.py +0 -0
  161. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_algorithm.json +0 -0
  162. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_device_id.json +0 -0
  163. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_field.json +0 -0
  164. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_nested.json +0 -0
  165. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_public_key.json +0 -0
  166. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_schema.json +0 -0
  167. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/tampered_signature.json +0 -0
  168. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/unsigned_empty_block.json +0 -0
  169. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/unsigned_no_block.json +0 -0
  170. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/valid_commit_envelope.json +0 -0
  171. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/valid_nested.json +0 -0
  172. {matrixscroll-0.6.0 → matrixscroll-0.6.2}/vectors/valid_simple.json +0 -0
  173. {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.0
4
- Summary: Signed provenance for agent-assisted Git commits with offline Ed25519 verification; optional ML-DSA/SLH-DSA software overlay (FIPS 204/205). USB/NFC/SE050 hardware remains Ed25519.
5
- Project-URL: Homepage, https://ssx360.com
6
- Project-URL: Documentation, https://ssx360.com/docs
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
- **Try it:** [matrixscroll.com/try](https://matrixscroll.com/try) — offline tamper demo and ten-line quickstart.
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
  [![ci-unit](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml/badge.svg)](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
66
- [![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)
67
- [![codecov](https://codecov.io/gh/SSX360/matrixscroll/graph/badge.svg)](https://codecov.io/gh/SSX360/matrixscroll)
63
+ [![PyPI](https://img.shields.io/pypi/v/matrixscroll)](https://pypi.org/project/matrixscroll/)
64
+ [![Python](https://img.shields.io/pypi/pyversions/matrixscroll)](https://pypi.org/project/matrixscroll/)
65
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](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
- **146 tests** · Hypothesis-verified security properties · [Security properties](https://github.com/SSX360/matrixscroll/blob/main/docs/SECURITY_PROPERTIES.md) · [TLA+ formal models](formal/README.md)
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
- **Signed proof of who — or what — wrote every AI-assisted commit.** Matrix Scroll is an
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
- **Hosted control plane:** identity, billing, audit ledger, and Scroll Gate live at
78
- [ssx360.com](https://ssx360.com/). Enterprise teams evaluating protected-branch enforcement should
79
- [book a provenance pilot](https://ssx360.com/contact?intent=pilot) or visit
80
- [ssx360.com/enterprise](https://ssx360.com/enterprise).
81
- Provisioned pilot and team accounts sign in at [ssx360.com/signup](https://ssx360.com/signup).
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)** — ICT change-management evidence for software changes.
88
- - **PCI DSS 4.0 Req 6.5 (Mar 2025)** — change-control evidence for custom software.
89
- - **US Treasury FS-AI RMF (Feb 2026)** — traceability for agent actions in financial software.
90
- - **NIST SSDF** — provenance, change authorization, and release gate review.
91
- - **EU AI Act Article 12** — record-keeping readiness (high-risk obligations Dec 2027), not a live mandate claim.
92
- - **Five Eyes Agentic AI guidance (Apr 2026)** — linked crosswalk only: [`controls/agentic_ai_controls.json`](controls/agentic_ai_controls.json)
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 — MCP server (headline path)
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.0"
113
- matrixscroll-mcp # stdio — register in Cursor / Claude Desktop / VS Code
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 preview, roadmap).
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 — catch a rug-pull in 60 seconds
129
+ ### MCP Trust Scanner: catch a rug-pull in 60 seconds
123
130
 
124
- Sign the tool surface. Verify at install. Offline Ed25519 manifests for MCP rug-pull detection —
125
- zero cloud, zero signup, exit code 2 fails your CI.
131
+ ![MCP rug-pull detection demo](examples/demo/mcp-rugpull-demo.gif)
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) — fingerprints every tool: name, description, input schema
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 — no server needed: `matrixscroll mcp scan --tools ./tools.json`
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 — CLI & hooks
185
+ ## Also available: CLI and hooks
164
186
 
165
187
  ```bash
166
- pip install "matrixscroll==0.6.0"
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 — Git wrapper (Layer 3, Phase 1)
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 preview path.
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 and remains a
218
- preview path until device acceptance is complete.
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.0`, Git post-commit hooks,
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 preview for the
234
- SE050 rollout path. Emulated mode is the default evaluation path.
235
- - In progress: nRF52840 + SE050 firmware validation — secure-element signing remains preview until device acceptance gates pass; external Ed25519-capable
236
- hardware key backends, and transparency-log integrations.
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 — whether the signer is emulated today or
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; that path
267
- remains preview-only until device acceptance is complete.
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.0"
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.0"
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.0"
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.0`.
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) — no Rust toolchain for users. All
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
- - Compare page: <https://matrixscroll.com/compare>
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> · Control plane: <https://ssx360.com> · Enterprise: <https://ssx360.com/enterprise>
371
- - SE050 hardware preview: <https://ssx360.com/enterprise#roadmap> (in firmware validation)
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.0"
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 in firmware validation)
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 preview and a mock path for CI; real SE050 signing still
435
- depends on device firmware validation. External-key backends stay out of the
436
- mainline until they can sign the same canonical bytes with Ed25519.
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 preview path until device
441
- acceptance is complete.
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 secure element (SSX360) | In progress |
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.0"
524
+ pip install "matrixscroll[mcp]==0.6.2"
488
525
  matrixscroll-mcp # stdio
489
526
  ```
490
527
 
491
- See the [Install — MCP server](#install--mcp-server-headline-path) section above for
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
- **Protocol:** https://ssx360.com/docs · **Verify:** https://ssx360.com/verify
508
- **Control plane:** https://ssx360.com · **Pilot:** mission@ssx360.com · **Sign in:** https://ssx360.com/signup
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