matrixscroll 0.6.1__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.1 → matrixscroll-0.6.2}/.gitignore +27 -0
  2. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/CHANGELOG.md +26 -0
  3. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/CONTRIBUTING.md +16 -2
  4. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/PKG-INFO +115 -74
  5. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/README.md +107 -65
  6. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/ADOPTER_KIT.md +3 -3
  7. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/COMPARISON.md +0 -1
  8. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/CRYPTO_ROADMAP.md +1 -1
  9. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/DOCTRINE.md +60 -60
  10. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/FIVE_MINUTES.md +2 -2
  11. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/HERO_DEMO.md +2 -2
  12. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/POC2_AUDIT.md +2 -2
  13. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/ROADMAP_2026-07.md +2 -2
  14. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/SECURITY_PROPERTIES.md +1 -1
  15. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/SOFTWARE_PRODUCTS.md +3 -3
  16. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/WHITEPAPER.md +4 -4
  17. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/commercial/PLATFORM_PIVOT.md +2 -2
  18. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/commercial/SSX360_SCROLL.md +1 -1
  19. matrixscroll-0.6.2/docs/explanation/actor-attribution.md +77 -0
  20. matrixscroll-0.6.2/docs/explanation/ap2.md +74 -0
  21. matrixscroll-0.6.2/docs/explanation/commit-time-vs-artifact-time.md +78 -0
  22. matrixscroll-0.6.2/docs/explanation/style-supplement.md +123 -0
  23. matrixscroll-0.6.2/docs/explanation/trust-boundaries.md +85 -0
  24. matrixscroll-0.6.2/docs/explanation/writing-workflow.md +100 -0
  25. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/hardware-provider.md +2 -2
  26. matrixscroll-0.6.2/docs/how-to/gate-protected-branch.md +109 -0
  27. matrixscroll-0.6.2/docs/how-to/publish-git-notes.md +53 -0
  28. matrixscroll-0.6.2/docs/how-to/scan-mcp-server.md +57 -0
  29. matrixscroll-0.6.2/docs/index.md +70 -0
  30. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/quickstart-agent.md +1 -1
  31. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/quickstart-claude-code.md +1 -1
  32. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/quickstart-git.md +6 -6
  33. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/quickstart-mcp.md +2 -2
  34. matrixscroll-0.6.2/docs/reference/cli.md +82 -0
  35. matrixscroll-0.6.2/docs/reference/commit-envelope.md +45 -0
  36. matrixscroll-0.6.2/docs/reference/exit-codes.md +38 -0
  37. matrixscroll-0.6.2/docs/reference/python-api.md +56 -0
  38. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/registries-guide.md +13 -14
  39. matrixscroll-0.6.2/docs/requirements.txt +9 -0
  40. matrixscroll-0.6.2/docs/tutorial/first-commit.md +133 -0
  41. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/yubikey-bridge.md +5 -5
  42. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/yubikey-smoke.md +1 -1
  43. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/ci/protected-branch.yml +3 -3
  44. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/__init__.py +1 -1
  45. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/agent_trace.py +90 -90
  46. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/formal.py +11 -4
  47. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/git.py +51 -2
  48. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/se050_transport.py +1 -1
  49. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/pyproject.toml +12 -9
  50. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_agent_trace.py +55 -55
  51. matrixscroll-0.6.2/tests/test_formal_specs.py +84 -0
  52. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_git_envelope.py +62 -1
  53. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_release_metadata.py +21 -3
  54. matrixscroll-0.6.1/docs/ADOPTION.md +0 -13
  55. matrixscroll-0.6.1/docs/SHOW-HN-MCP-TRUST-LAUNCH.md +0 -151
  56. matrixscroll-0.6.1/tests/test_formal_specs.py +0 -40
  57. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/LICENSE +0 -0
  58. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/SECURITY.md +0 -0
  59. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/SPEC.md +0 -0
  60. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/controls/agentic_ai_controls.json +0 -0
  61. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/AGENTIC_AI_SECURITY.md +0 -0
  62. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/AIMS_INTEROP.md +0 -0
  63. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/CI_HARD_GATE.md +0 -0
  64. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +0 -0
  65. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/CRYPTO_BACKEND.md +0 -0
  66. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/GITTUF_INTEROP.md +0 -0
  67. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/GIT_AI_NOTES_INTEROP.md +0 -0
  68. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/OPENSSF_SANDBOX_DECISION.md +0 -0
  69. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/SE050_POC_SCOPE.md +0 -0
  70. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/SE050_USB_PROTOCOL.md +0 -0
  71. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/SLSA_SOURCE_TRACK_MAPPING.md +0 -0
  72. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/commercial/README.md +0 -0
  73. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/commercial/SCROLL_GATE_V2.md +0 -0
  74. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/delegation-attestation-rfc.md +0 -0
  75. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/rekor-guac-bridge-design.md +0 -0
  76. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
  77. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
  78. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
  79. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/agentic_ai_evidence_manifest.json +0 -0
  80. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
  81. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/commit-envelope.json +0 -0
  82. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/commit-envelope.signed.json +0 -0
  83. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/demo/agent-commit-demo.sh +0 -0
  84. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/demo/generate_signed_examples.py +0 -0
  85. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/demo/hero-self-attestation-demo.sh +0 -0
  86. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/demo/mcp-rugpull-demo.cast +0 -0
  87. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/demo/mcp-rugpull-demo.gif +0 -0
  88. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/demo/mcp-rugpull-demo.sh +0 -0
  89. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/mcp/matrixscroll-mcp.manifest.json +0 -0
  90. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/mcp/matrixscroll-mcp.signed.json +0 -0
  91. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/release-manifest.json +0 -0
  92. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/release-manifest.signed.json +0 -0
  93. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/examples/trusted-keys-policy.json +0 -0
  94. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/_claim.py +0 -0
  95. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/_core.py +0 -0
  96. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/_payment.py +0 -0
  97. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/canonical.py +0 -0
  98. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/cli.py +0 -0
  99. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/cloud/__init__.py +0 -0
  100. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/cloud/client.py +0 -0
  101. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/constants.py +0 -0
  102. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/crypto_backend.py +0 -0
  103. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/errors.py +0 -0
  104. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/gate.py +0 -0
  105. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/guac_export.py +0 -0
  106. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/hooks/post-commit +0 -0
  107. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/hooks/pre-push +0 -0
  108. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/manifest.py +0 -0
  109. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/mcp.py +0 -0
  110. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/mcp_core.py +0 -0
  111. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/mcp_trust.py +0 -0
  112. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/policy.py +0 -0
  113. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/pqc.py +0 -0
  114. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/provenance/__init__.py +0 -0
  115. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/provenance/actions.py +0 -0
  116. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/__init__.py +0 -0
  117. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/base.py +0 -0
  118. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/emulated.py +0 -0
  119. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/hardware.py +0 -0
  120. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/registry.py +0 -0
  121. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/tpm.py +0 -0
  122. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/providers/yubikey.py +0 -0
  123. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/py.typed +0 -0
  124. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/rekor_publish.py +0 -0
  125. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/scroll/README.md +0 -0
  126. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/scroll/__init__.py +0 -0
  127. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/matrixscroll/ssx360_cli.py +0 -0
  128. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/schemas/action-envelope.v1.json +0 -0
  129. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/schemas/commit-envelope.v1.1.json +0 -0
  130. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/schemas/commit-envelope.v1.json +0 -0
  131. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/schemas/evidence-pack.v1.json +0 -0
  132. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/schemas/pqc-signature.v1.json +0 -0
  133. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/schemas/release-manifest.v1.json +0 -0
  134. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/schemas/ssx360.mcp-manifest.v1.json +0 -0
  135. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/__init__.py +0 -0
  136. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/fixtures/github-gpgsig-commit.txt +0 -0
  137. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/fixtures/mcp-tools-sample.json +0 -0
  138. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_agentic_guidance.py +0 -0
  139. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_canonical.py +0 -0
  140. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_canonical_pqc.py +0 -0
  141. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_cli.py +0 -0
  142. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_core.py +0 -0
  143. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_crypto_backend.py +0 -0
  144. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_gate.py +0 -0
  145. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_guac_rekor.py +0 -0
  146. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_mcp_core.py +0 -0
  147. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_mcp_server.py +0 -0
  148. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_mcp_trust.py +0 -0
  149. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_policy.py +0 -0
  150. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_pqc.py +0 -0
  151. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_provenance.py +0 -0
  152. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_se050_transport.py +0 -0
  153. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_security_properties.py +0 -0
  154. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_ssx360_cli.py +0 -0
  155. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_tpm_provider.py +0 -0
  156. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_vectors.py +0 -0
  157. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/tests/test_yubikey_provider.py +0 -0
  158. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/README.md +0 -0
  159. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/_fixture_key.json +0 -0
  160. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/_generate.py +0 -0
  161. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/tampered_algorithm.json +0 -0
  162. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/tampered_device_id.json +0 -0
  163. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/tampered_field.json +0 -0
  164. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/tampered_nested.json +0 -0
  165. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/tampered_public_key.json +0 -0
  166. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/tampered_schema.json +0 -0
  167. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/tampered_signature.json +0 -0
  168. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/unsigned_empty_block.json +0 -0
  169. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/unsigned_no_block.json +0 -0
  170. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/valid_commit_envelope.json +0 -0
  171. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/valid_nested.json +0 -0
  172. {matrixscroll-0.6.1 → matrixscroll-0.6.2}/vectors/valid_simple.json +0 -0
  173. {matrixscroll-0.6.1 → 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,32 @@ 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
+
7
33
  ## [0.6.1] - 2026-07-22
8
34
 
9
35
  ### Documentation
@@ -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.1
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.1/
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,47 +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)
68
66
 
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)
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.
70
71
 
71
- **Agent Authorization Authority — offline-verifiable proof for every machine action.** Matrix Scroll is an
72
- **open protocol for cryptographically signed agent authorization** — Ed25519 records for Git commits (L1),
73
- MCP tool surfaces (L2), and agent runs / NHI actions (L3), verified offline in CLI, browser, and CI.
74
- Software emulated keys ship today; NXP SE050 secure-element signing is a
75
- bench-validated PoC (Jul 2026) with the same verifier contract. The Pico 2 W /
76
- GMT130 display bring-up is a locked L2 Hardware prototype (Jul 2026) — not GA.
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.
77
76
 
78
- *They receipt the model call. We receipt everything the machine does.*
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).
79
81
 
80
- **Authorization ladder:** L1 Code (commits) · L2 Tools (MCP manifests) · L3 Actions (agent runs) · L4 Money (AP2 — demo) · L5 Silicon (2029+)
82
+ **Authorization ladder:** L1 Code (commits), L2 Tools (MCP manifests), L3 Actions (agent runs), L4 Money (AP2, demo), L5 Silicon (2029+)
81
83
 
82
- **Hosted control plane:** identity, billing, authorization ledger, and Scroll Gate live at
83
- [ssx360.com](https://ssx360.com/). Enterprise teams evaluating protected-branch enforcement should
84
- [book a provenance pilot](https://ssx360.com/contact?intent=pilot) or visit
85
- [ssx360.com/enterprise](https://ssx360.com/enterprise).
86
- 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).
87
89
 
88
90
  ## Compliance evidence mapping
89
91
 
90
92
  Matrix Scroll **maps to** and **produces evidence for** (never “required by”; not a certification claim):
91
93
 
92
- - **DORA (Jan 2025)** — ICT change-management evidence for software changes.
93
- - **PCI DSS 4.0 Req 6.5 (Mar 2025)** — change-control evidence for custom software.
94
- - **US Treasury FS-AI RMF (Feb 2026)** — traceability for agent actions in financial software.
95
- - **NIST SSDF** — provenance, change authorization, and release gate review.
96
- - **EU AI Act Article 12** — record-keeping readiness (high-risk obligations Dec 2027), not a live mandate claim.
97
- - **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)
98
100
 
99
101
  POC 2 audit readiness: [`docs/POC2_AUDIT.md`](docs/POC2_AUDIT.md)
100
102
 
101
- ## Install — MCP server (headline path)
103
+ ## Install the MCP server (headline path)
102
104
 
103
105
  Agents sign commits in-loop via the **provenance-only** MCP server:
104
106
 
@@ -114,29 +116,29 @@ Agents sign commits in-loop via the **provenance-only** MCP server:
114
116
  ```
115
117
 
116
118
  ```bash
117
- pip install "matrixscroll[mcp]==0.6.1"
118
- 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
119
121
  ```
120
122
 
121
123
  **MCP tools (provenance verbs only):** `create_envelope`, `sign_action`, `verify_envelope`,
122
124
  `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`, `list_envelopes`,
123
- `connect_card` (SE050 hardware prototype — pilot evaluation; not GA).
125
+ `connect_card` (SE050 hardware prototype, pilot evaluation, not GA).
124
126
 
125
127
  **MCP trust tools (manifest surface):** `scan_mcp_server`, `sign_mcp_manifest`, `verify_mcp_manifest`.
126
128
 
127
- ### MCP Trust Scanner — catch a rug-pull in 60 seconds
129
+ ### MCP Trust Scanner: catch a rug-pull in 60 seconds
128
130
 
129
131
  ![MCP rug-pull detection demo](examples/demo/mcp-rugpull-demo.gif)
130
132
 
131
133
  [Watch on asciinema](https://asciinema.org/a/rbCRkIcZnjNWmqZF) · cast file: [`examples/demo/mcp-rugpull-demo.cast`](examples/demo/mcp-rugpull-demo.cast)
132
134
 
133
- Sign the tool surface. Verify at install. Offline Ed25519 manifests for MCP rug-pull detection —
134
- zero cloud, zero signup, exit code 2 fails your CI.
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.
135
137
 
136
138
  ```bash
137
- pip install "matrixscroll==0.6.1"
139
+ pip install "matrixscroll==0.6.2"
138
140
 
139
- # 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
140
142
  matrixscroll mcp scan --connect stdio --server-command "npx -y some-mcp-server" \
141
143
  -o manifest.json --pretty
142
144
 
@@ -160,10 +162,10 @@ A mutated tool description or input schema fails loudly:
160
162
  FAIL surface_drift — do not trust this server until you review the diff
161
163
  ```
162
164
 
163
- 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`
164
166
  accepts a plain JSON tool array or `{"tools": [...]}` (paste from any `tools/list` response).
165
167
 
166
- Gate it in CI — fail the build on unsigned or drifted manifests with the reusable workflow:
168
+ Gate it in CI. Fail the build on unsigned or drifted manifests with the reusable workflow:
167
169
 
168
170
  ```yaml
169
171
  jobs:
@@ -172,19 +174,18 @@ jobs:
172
174
  with:
173
175
  manifest: mcp/my-server.signed.json
174
176
  baseline: mcp/my-server.baseline.json
175
- matrixscroll_version: "0.6.1"
177
+ matrixscroll_version: "0.6.2"
176
178
  ```
177
179
 
178
180
  Full scripted demo: [`examples/demo/mcp-rugpull-demo.sh`](examples/demo/mcp-rugpull-demo.sh)
179
181
  Golden artifact (this repo's own MCP server, signed): [`examples/mcp/matrixscroll-mcp.signed.json`](examples/mcp/matrixscroll-mcp.signed.json)
180
182
  Schema (CC0): [`schemas/ssx360.mcp-manifest.v1.json`](schemas/ssx360.mcp-manifest.v1.json)
181
- Browser demo: [matrixscroll.com/scan](https://matrixscroll.com/scan)
182
- 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/)
183
184
 
184
- ## Also available — CLI & hooks
185
+ ## Also available: CLI and hooks
185
186
 
186
187
  ```bash
187
- pip install "matrixscroll==0.6.1"
188
+ pip install "matrixscroll==0.6.2"
188
189
  matrixscroll hook-install
189
190
  export MATRIXSCROLL_ACTOR_TYPE=agent
190
191
  export MATRIXSCROLL_TOOL=agent-runner
@@ -205,7 +206,7 @@ matrixscroll sign-action --type ci_step \
205
206
 
206
207
  Action schema: [`schemas/action-envelope.v1.json`](https://github.com/SSX360/matrixscroll/blob/main/schemas/action-envelope.v1.json)
207
208
 
208
- ### SSX360 Scroll — Git wrapper (Layer 3, Phase 1)
209
+ ### SSX360 Scroll: Git wrapper (Layer 3, Phase 1)
209
210
 
210
211
  Git under the hood; governance on top. **Not a Git replacement.**
211
212
 
@@ -250,16 +251,23 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](https://github.com/SSX360/matrixscro
250
251
 
251
252
  ## Honest limits
252
253
 
253
- - Shipping now: PyPI `matrixscroll==0.6.1`, Git post-commit hooks,
254
+ - Shipping now: PyPI `matrixscroll==0.6.2`, Git post-commit hooks,
254
255
  `matrixscroll sign-action`, `matrixscroll scroll commit` (thin wrapper),
255
256
  `matrixscroll envelope-verify`, Scroll Gate PR verification (partial SLSA L1–2),
256
257
  verifier, the GitHub Action, and a USB CDC host transport for the SE050
257
258
  hardware prototype path. Emulated mode is the default evaluation path.
258
259
  - Prototype (bench): Pico 2 W / RP2350 + GMT130 ST7789 LCD/LED bring-up locked
259
260
  (2026-07-21); NXP SE050 M1 signing PoC accepted (Jul 2026) on contractor
260
- firmware — not GA; display bring-up UF2 keeps `pubkey`/`sign` fail-closed
261
+ firmware, not GA; display bring-up UF2 keeps `pubkey`/`sign` fail-closed
261
262
  until Plug & Trust restore. External Ed25519-capable hardware key backends
262
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.
263
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.
264
272
  - Illustrative deployment profiles are not endorsements or existing customer relationships.
265
273
  - Not: IAM, sandboxing, prompt filtering, or an agent runtime.
@@ -271,7 +279,7 @@ canonical UTF-8 JSON bytes (see [`SPEC.md`](https://github.com/SSX360/matrixscro
271
279
  - Hardware keys and build attestations remain complementary roots and downstream
272
280
  proofs; Matrix Scroll covers commit-time provenance.
273
281
  - The public contract stays pure Ed25519 over canonical manifest bytes for the
274
- required `signature` block — whether the signer is emulated today or
282
+ required `signature` block, whether the signer is emulated today or
275
283
  SE050 secure-element signing later. Software signers may optionally attach ML-DSA/SLH-DSA
276
284
  overlays (FIPS 204/205) via `matrixscroll[pqc]` without changing hardware firmware.
277
285
 
@@ -291,7 +299,7 @@ permissions so teams can evaluate the full workflow now. Hardware mode keeps
291
299
  the same verifier contract and commit envelope schema, but moves the private
292
300
  key into the SE050 secure element so the host cannot export it. That path is
293
301
  a bench-validated L2 Hardware prototype (Pico 2 W + SE050 M1 PoC) available
294
- for pilot evaluation — not GA.
302
+ for pilot evaluation, not GA.
295
303
 
296
304
  ### How can I integrate Matrix Scroll into a CI/CD workflow?
297
305
 
@@ -304,7 +312,7 @@ alongside your existing scanners, branch protection, and build attestations.
304
312
  ## Quickstart (CLI)
305
313
 
306
314
  ```bash
307
- pip install "matrixscroll==0.6.1"
315
+ pip install "matrixscroll==0.6.2"
308
316
  matrixscroll hook-install
309
317
  matrixscroll hook-status
310
318
 
@@ -315,7 +323,7 @@ git commit -m "feat: agent-assisted change"
315
323
  matrixscroll envelope-verify "$(git rev-parse HEAD)"
316
324
  ```
317
325
 
318
- **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/)
319
327
 
320
328
  See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
321
329
  [`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
@@ -333,7 +341,7 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
333
341
  head-ref: ${{ github.event.pull_request.head.sha }}
334
342
  base-ref: ${{ github.event.pull_request.base.sha }}
335
343
  source: notes
336
- matrixscroll-version: "0.6.1"
344
+ matrixscroll-version: "0.6.2"
337
345
  require-mode: emulated
338
346
  ```
339
347
 
@@ -353,7 +361,7 @@ git push origin refs/notes/matrixscroll
353
361
  head-ref: ${{ github.event.pull_request.head.sha }}
354
362
  base-ref: ${{ github.event.pull_request.base.sha }}
355
363
  source: notes
356
- matrixscroll-version: "0.6.1"
364
+ matrixscroll-version: "0.6.2"
357
365
  summary-output: provenance-summary.json
358
366
  ```
359
367
 
@@ -361,13 +369,13 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
361
369
  [`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
362
370
 
363
371
  The `--require-mode`, `--trusted-keys`, and actor or delegation policy checks
364
- ship in the current release line; examples in this README pin `0.6.1`.
372
+ ship in the current release line; examples in this README pin `0.6.2`.
365
373
 
366
374
  ## Security: Ed25519 via cryptography
367
375
 
368
376
  Ed25519 signing, verification, and key generation use the [`cryptography`](https://pypi.org/project/cryptography/)
369
377
  package (required dependency, `>=42.0`). Official wheels ship native crypto
370
- backends (OpenSSL + Rust components) — no Rust toolchain for users. All
378
+ backends (OpenSSL + Rust components), so no Rust toolchain for users. All
371
379
  primitives are centralized in `matrixscroll/crypto_backend.py`; see
372
380
  [`docs/CRYPTO_BACKEND.md`](docs/CRYPTO_BACKEND.md).
373
381
 
@@ -384,23 +392,23 @@ when they preserve the same pure Ed25519 byte contract.
384
392
 
385
393
  ## Public proof links
386
394
 
387
- - Browser verifier: <https://matrixscroll.com/verify>
388
- - Try it (quickstart + tamper demo): <https://matrixscroll.com/try>
389
- - Compare page: <https://matrixscroll.com/compare>
390
- - 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/>
391
398
  - Specification: [`SPEC.md`](https://github.com/SSX360/matrixscroll/blob/main/SPEC.md)
392
399
  - Commit envelope schema: [`schemas/commit-envelope.v1.json`](https://github.com/SSX360/matrixscroll/blob/main/schemas/commit-envelope.v1.json)
393
400
  - Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
394
401
  - Conformance vectors: [`vectors/`](https://github.com/SSX360/matrixscroll/tree/main/vectors/)
395
402
  - GitHub Action: <https://github.com/SSX360/matrixscroll-verify-action>
396
403
  - Agentic AI controls: [`docs/AGENTIC_AI_SECURITY.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/AGENTIC_AI_SECURITY.md)
397
- - Site: <https://matrixscroll.com> · Control plane: <https://ssx360.com> · Enterprise: <https://ssx360.com/enterprise>
398
- - SE050 hardware prototype: <https://ssx360.com/enterprise#roadmap> (bench-validated; not GA)
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>
399
407
 
400
408
  ## Python API
401
409
 
402
410
  ```bash
403
- pip install "matrixscroll==0.6.1"
411
+ pip install "matrixscroll==0.6.2"
404
412
  ```
405
413
 
406
414
  ```python
@@ -450,7 +458,7 @@ matrixscroll.sign_manifest(...) / post-commit hook
450
458
  v
451
459
  IdentityProvider --> Ed25519 signature
452
460
  (L1 emulated today,
453
- SSX360 / SE050 prototype — bench-validated)
461
+ SSX360 / SE050 prototype, bench-validated)
454
462
  |
455
463
  v
456
464
  signed document --> matrixscroll.verify_manifest(...)
@@ -467,7 +475,7 @@ canonical bytes with Ed25519.
467
475
  For rollout order, start with `MATRIXSCROLL_MODE=emulated` for evaluation,
468
476
  layer in external Ed25519-capable signers only when they stay verifier
469
477
  compatible, and treat `hardware` as the SE050 prototype path for pilot
470
- evaluation — not GA.
478
+ evaluation, not GA.
471
479
 
472
480
  ## Compliance levels
473
481
 
@@ -513,11 +521,11 @@ The MCP server exposes **provenance verbs** (`create_envelope`, `verify_envelope
513
521
  Install and register in Cursor / Claude Desktop / VS Code:
514
522
 
515
523
  ```bash
516
- pip install "matrixscroll[mcp]==0.6.1"
524
+ pip install "matrixscroll[mcp]==0.6.2"
517
525
  matrixscroll-mcp # stdio
518
526
  ```
519
527
 
520
- 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
521
529
  the recommended `mcp.json` snippet.
522
530
 
523
531
  ## License
@@ -525,6 +533,39 @@ the recommended `mcp.json` snippet.
525
533
  - Code: **Apache-2.0** (`LICENSE`).
526
534
  - Specification text (`SPEC.md`, `vectors/`): **CC0 1.0** - public domain.
527
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
+
528
569
  ## Security
529
570
 
530
571
  See [`SECURITY.md`](SECURITY.md) and [`docs/SECURITY_PROPERTIES.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/SECURITY_PROPERTIES.md).
@@ -533,5 +574,5 @@ Report vulnerabilities privately to
533
574
 
534
575
  ---
535
576
 
536
- **Protocol:** https://ssx360.com/docs · **Verify:** https://ssx360.com/verify
537
- **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