matrixscroll 0.6.4__tar.gz → 0.7.0__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 (192) hide show
  1. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/.gitignore +1 -0
  2. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/CHANGELOG.md +60 -0
  3. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/PKG-INFO +22 -20
  4. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/README.md +10 -10
  5. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/SECURITY.md +3 -2
  6. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/SPEC.md +23 -6
  7. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/ADOPTER_KIT.md +5 -5
  8. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +1 -1
  9. matrixscroll-0.7.0/docs/COMPARISON.md +47 -0
  10. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/CRYPTO_ROADMAP.md +1 -1
  11. matrixscroll-0.7.0/docs/DOCTRINE.md +56 -0
  12. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/FIVE_MINUTES.md +2 -2
  13. matrixscroll-0.7.0/docs/POC2_AUDIT.md +52 -0
  14. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/ROADMAP_2026-07.md +2 -2
  15. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SECURITY_PROPERTIES.md +1 -1
  16. matrixscroll-0.7.0/docs/SLSA_SOURCE_TRACK_MAPPING.md +26 -0
  17. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SOFTWARE_PRODUCTS.md +3 -3
  18. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/WHITEPAPER.md +18 -18
  19. matrixscroll-0.7.0/docs/commercial/README.md +20 -0
  20. matrixscroll-0.7.0/docs/commercial/SCROLL_GATE_V2.md +55 -0
  21. matrixscroll-0.7.0/docs/commercial/SSX360_SCROLL.md +34 -0
  22. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/delegation-attestation-rfc.md +1 -1
  23. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/ap2.md +2 -2
  24. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/style-supplement.md +7 -6
  25. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/hardware-provider.md +16 -3
  26. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/how-to/gate-protected-branch.md +2 -2
  27. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/how-to/scan-mcp-server.md +1 -1
  28. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/index.md +6 -6
  29. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/quickstart-agent.md +1 -1
  30. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/quickstart-claude-code.md +1 -1
  31. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/quickstart-git.md +4 -4
  32. matrixscroll-0.7.0/docs/quickstart-mcp.md +64 -0
  33. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/cli.md +21 -2
  34. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/exit-codes.md +15 -1
  35. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/registries-guide.md +1 -1
  36. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/requirements.txt +2 -2
  37. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/tutorial/first-commit.md +1 -1
  38. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/ci/protected-branch.yml +3 -3
  39. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/__init__.py +1 -1
  40. matrixscroll-0.7.0/matrixscroll/_schemas.py +34 -0
  41. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/cli.py +34 -17
  42. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/cloud/__init__.py +0 -2
  43. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/cloud/client.py +6 -7
  44. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/formal.py +1 -0
  45. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/gate.py +81 -19
  46. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/mcp.py +47 -18
  47. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/mcp_core.py +19 -1
  48. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/se050_transport.py +1 -1
  49. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/ssx360_cli.py +119 -33
  50. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/pyproject.toml +22 -11
  51. matrixscroll-0.7.0/schemas/ssx360.evidence-pack.v1.json +64 -0
  52. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_cli.py +93 -0
  53. matrixscroll-0.7.0/tests/test_evidence_pack_export.py +333 -0
  54. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_formal_specs.py +8 -5
  55. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_gate.py +89 -2
  56. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_mcp_core.py +5 -1
  57. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_mcp_server.py +83 -0
  58. matrixscroll-0.7.0/tests/test_no_monetization_surface.py +72 -0
  59. matrixscroll-0.7.0/tests/test_release_metadata.py +158 -0
  60. matrixscroll-0.7.0/tests/test_se050_acceptance_vectors.py +56 -0
  61. matrixscroll-0.7.0/tests/test_verify_action_parser.py +480 -0
  62. matrixscroll-0.7.0/tests/test_verify_action_step.py +352 -0
  63. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/README.md +3 -0
  64. matrixscroll-0.7.0/vectors/se050/README.md +35 -0
  65. matrixscroll-0.7.0/vectors/se050/vector_01.json +16 -0
  66. matrixscroll-0.6.4/docs/COMPARISON.md +0 -83
  67. matrixscroll-0.6.4/docs/DOCTRINE.md +0 -60
  68. matrixscroll-0.6.4/docs/POC2_AUDIT.md +0 -61
  69. matrixscroll-0.6.4/docs/SLSA_SOURCE_TRACK_MAPPING.md +0 -34
  70. matrixscroll-0.6.4/docs/commercial/PLATFORM_PIVOT.md +0 -62
  71. matrixscroll-0.6.4/docs/commercial/README.md +0 -13
  72. matrixscroll-0.6.4/docs/commercial/SCROLL_GATE_V2.md +0 -81
  73. matrixscroll-0.6.4/docs/commercial/SSX360_SCROLL.md +0 -31
  74. matrixscroll-0.6.4/docs/quickstart-mcp.md +0 -62
  75. matrixscroll-0.6.4/matrixscroll/_claim.py +0 -96
  76. matrixscroll-0.6.4/tests/test_release_metadata.py +0 -60
  77. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/CONTRIBUTING.md +0 -0
  78. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/LICENSE +0 -0
  79. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/controls/agentic_ai_controls.json +0 -0
  80. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/AGENTIC_AI_SECURITY.md +0 -0
  81. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/AIMS_INTEROP.md +0 -0
  82. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/CI_HARD_GATE.md +0 -0
  83. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/CRYPTO_BACKEND.md +0 -0
  84. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/GITTUF_INTEROP.md +0 -0
  85. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/GIT_AI_NOTES_INTEROP.md +0 -0
  86. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/HERO_DEMO.md +0 -0
  87. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/OPENSSF_SANDBOX_DECISION.md +0 -0
  88. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SE050_POC_SCOPE.md +0 -0
  89. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SE050_USB_PROTOCOL.md +0 -0
  90. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/actor-attribution.md +0 -0
  91. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/commit-time-vs-artifact-time.md +0 -0
  92. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/trust-boundaries.md +0 -0
  93. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/writing-workflow.md +0 -0
  94. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/how-to/publish-git-notes.md +0 -0
  95. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/images/ssx360-usb-signer-architecture.jpg +0 -0
  96. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/images/ssx360-usb-signer-round-trip.jpg +0 -0
  97. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/images/ssx360-usb-signer.jpg +0 -0
  98. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/commit-envelope.md +0 -0
  99. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/python-api.md +0 -0
  100. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/rekor-guac-bridge-design.md +0 -0
  101. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
  102. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
  103. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
  104. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/yubikey-bridge.md +0 -0
  105. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/yubikey-smoke.md +0 -0
  106. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/agentic_ai_evidence_manifest.json +0 -0
  107. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
  108. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/commit-envelope.json +0 -0
  109. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/commit-envelope.signed.json +0 -0
  110. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/agent-commit-demo.sh +0 -0
  111. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/generate_signed_examples.py +0 -0
  112. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/hero-self-attestation-demo.sh +0 -0
  113. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/mcp-rugpull-demo.cast +0 -0
  114. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/mcp-rugpull-demo.gif +0 -0
  115. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/mcp-rugpull-demo.sh +0 -0
  116. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/mcp/matrixscroll-mcp.baseline.json +0 -0
  117. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/mcp/matrixscroll-mcp.manifest.json +0 -0
  118. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/mcp/matrixscroll-mcp.signed.json +0 -0
  119. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/release-manifest.json +0 -0
  120. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/release-manifest.signed.json +0 -0
  121. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/trusted-keys-policy.json +0 -0
  122. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/_core.py +0 -0
  123. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/_payment.py +0 -0
  124. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/agent_trace.py +0 -0
  125. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/canonical.py +0 -0
  126. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/constants.py +0 -0
  127. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/crypto_backend.py +0 -0
  128. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/errors.py +0 -0
  129. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/git.py +0 -0
  130. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/guac_export.py +0 -0
  131. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/hooks/post-commit +0 -0
  132. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/hooks/pre-push +0 -0
  133. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/manifest.py +0 -0
  134. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/mcp_trust.py +0 -0
  135. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/policy.py +0 -0
  136. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/pqc.py +0 -0
  137. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/provenance/__init__.py +0 -0
  138. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/provenance/actions.py +0 -0
  139. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/__init__.py +0 -0
  140. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/base.py +0 -0
  141. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/emulated.py +0 -0
  142. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/hardware.py +0 -0
  143. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/registry.py +0 -0
  144. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/tpm.py +0 -0
  145. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/yubikey.py +0 -0
  146. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/py.typed +0 -0
  147. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/rekor_publish.py +0 -0
  148. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/scroll/README.md +0 -0
  149. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/scroll/__init__.py +0 -0
  150. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/action-envelope.v1.json +0 -0
  151. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/commit-envelope.v1.1.json +0 -0
  152. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/commit-envelope.v1.json +0 -0
  153. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/evidence-pack.v1.json +0 -0
  154. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/pqc-signature.v1.json +0 -0
  155. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/release-manifest.v1.json +0 -0
  156. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/ssx360.mcp-manifest.v1.json +0 -0
  157. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/__init__.py +0 -0
  158. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/fixtures/github-gpgsig-commit.txt +0 -0
  159. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/fixtures/mcp-tools-sample.json +0 -0
  160. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_agent_trace.py +0 -0
  161. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_agentic_guidance.py +0 -0
  162. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_canonical.py +0 -0
  163. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_canonical_pqc.py +0 -0
  164. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_core.py +0 -0
  165. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_crypto_backend.py +0 -0
  166. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_git_envelope.py +0 -0
  167. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_guac_rekor.py +0 -0
  168. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_mcp_trust.py +0 -0
  169. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_policy.py +0 -0
  170. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_pqc.py +0 -0
  171. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_provenance.py +0 -0
  172. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_se050_transport.py +0 -0
  173. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_security_properties.py +0 -0
  174. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_ssx360_cli.py +0 -0
  175. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_tpm_provider.py +0 -0
  176. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_vectors.py +0 -0
  177. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_yubikey_provider.py +0 -0
  178. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/_fixture_key.json +0 -0
  179. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/_generate.py +0 -0
  180. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_algorithm.json +0 -0
  181. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_device_id.json +0 -0
  182. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_field.json +0 -0
  183. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_nested.json +0 -0
  184. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_public_key.json +0 -0
  185. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_schema.json +0 -0
  186. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_signature.json +0 -0
  187. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/unsigned_empty_block.json +0 -0
  188. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/unsigned_no_block.json +0 -0
  189. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_commit_envelope.json +0 -0
  190. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_nested.json +0 -0
  191. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_simple.json +0 -0
  192. {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_unicode.json +0 -0
@@ -18,6 +18,7 @@ htmlcov/
18
18
  .tox/
19
19
  .mypy_cache/
20
20
  .ruff_cache/
21
+ onboarding-smoke-summary*.json
21
22
 
22
23
  # Virtual envs
23
24
  .venv/
@@ -6,6 +6,59 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.7.0] - 2026-08-11
10
+
11
+ Fail-closed verification, package completeness, and public positioning. No
12
+ wire-format change.
13
+
14
+ ### Added
15
+ - Range verification results now report agent-scope details and the formal model
16
+ includes the default-path invariant `Inv_EmptyRangeFailsClosed`.
17
+ - Added `schemas/ssx360.evidence-pack.v1.json` for the document written by the
18
+ evidence-pack exporter.
19
+ - Added a hardware-signed SE050 acceptance vector with CLI and CI verification.
20
+ - You can explicitly set the composite action's `allow-empty-range` input. It
21
+ remains disabled by default and cannot satisfy a signature-mode requirement.
22
+
23
+ ### Changed
24
+ - Empty commit ranges now return `ok: false` by default. CLI and Python callers
25
+ that intentionally accept an empty range must opt in explicitly. MCP callers
26
+ use the same explicit opt-in and fail closed by default.
27
+ - Documentation now describes the shipped 14-tool MCP server and completed USB
28
+ signer directly, without retired pricing tiers or level-based product gates.
29
+ - Development, documentation, and GitHub Action dependencies were refreshed.
30
+ - Public package metadata now describes signed machine-action records instead
31
+ of leading with AI terminology. Exact schema terms such as `actor_type: agent`
32
+ remain unchanged.
33
+
34
+ ### Fixed
35
+ - **The verify action could hand a caller a blank `ok` when the verifier
36
+ crashed.** It now writes all eight outputs on every path, masks captured
37
+ verifier output in the job summary, and distinguishes tool failures from
38
+ legitimate verification failures. Parser and action-step tests cover crashes,
39
+ silent output, malformed JSON, and signature failures.
40
+ - Unhandled CLI exceptions now return structured JSON with exit status 1 instead
41
+ of leaking a traceback into automation output.
42
+ - Evidence-pack annotations no longer mutate signed hosted response bodies.
43
+ - JSON schemas now ship in wheels and MCP schema resources resolve the installed
44
+ copies.
45
+ - The MCP extra now requires the verified 1.28+ SDK line; earlier 1.x releases
46
+ cannot register the server's annotated tools, and MCP 2.0 removed the
47
+ `mcp.server.fastmcp` API entirely.
48
+ - You receive an explicit rejection when a hosted MCP Git range is empty, before
49
+ any API call. Non-empty ranges send the resolved commit SHAs.
50
+ - Hosted CLI checks now write `--summary-output` on successful and empty-range
51
+ responses, matching local checks.
52
+ - Local evidence-pack documents without a `bundle` now fail schema validation,
53
+ and CI verifies all eight schemas from an isolated wheel installation.
54
+
55
+ ### Removed
56
+ - **Breaking:** removed `matrixscroll claim`, `matrixscroll identity`, the
57
+ `--identity` verification flag, and their private paid-enrollment client. The
58
+ retired service no longer issues identity certificates; device identity
59
+ remains the local Ed25519 key pair reported by `matrixscroll status`.
60
+ - Removed the retired platform-pricing and signup guide.
61
+
9
62
  ## [0.6.4] - 2026-08-11
10
63
 
11
64
  Documentation and release metadata. No wire-format change.
@@ -334,6 +387,7 @@ Initial public release. Extracted from the SSX360 reference implementation.
334
387
  - Device id format: `MS-XXXX-XXXX` (SHA-256 of the raw public key, first 8 hex
335
388
  chars, uppercase).
336
389
 
390
+ [0.7.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.7.0
337
391
  [0.6.4]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.4
338
392
  [0.6.3]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.3
339
393
  [0.6.2]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.2
@@ -341,6 +395,12 @@ Initial public release. Extracted from the SSX360 reference implementation.
341
395
  [0.6.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.0
342
396
  [0.5.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.5.1
343
397
  [0.5.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.5.0
398
+ [0.4.2]: https://github.com/SSX360/matrixscroll/releases/tag/v0.4.2
399
+ [0.4.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.4.1
400
+ [0.3.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.3.0
401
+ [0.2.6]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.6
402
+ [0.2.5]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.5
403
+ [0.2.4]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.4
344
404
  [0.2.2]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.2
345
405
  [0.2.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.1
346
406
  [0.2.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: matrixscroll
3
- Version: 0.6.4
4
- Summary: MCP server for signed AI-agent provenance with offline tool-surface checks and SSX360 USB signer support.
3
+ Version: 0.7.0
4
+ Summary: MCP server for signed machine-action records, offline tool-surface checks, and SSX360 USB signer support.
5
5
  Project-URL: Homepage, https://matrixscroll.com
6
6
  Project-URL: Documentation, https://matrixscroll.com/docs/
7
7
  Project-URL: Specification, https://matrixscroll.com/spec/
@@ -21,7 +21,7 @@ Project-URL: Maintainer, https://ssx360.com/about
21
21
  Author-email: SSX360 <security@matrixscroll.com>
22
22
  License-Expression: Apache-2.0
23
23
  License-File: LICENSE
24
- Keywords: ai,ed25519,fips-204,fips-205,matrixscroll,ml-dsa,post-quantum,provenance,root-of-trust,secure-element,signing,slh-dsa,ssx360,supply-chain
24
+ Keywords: authorization,ed25519,fips-204,fips-205,machine-action,matrixscroll,ml-dsa,post-quantum,provenance,root-of-trust,secure-element,signing,slh-dsa,ssx360,supply-chain
25
25
  Classifier: Development Status :: 4 - Beta
26
26
  Classifier: Intended Audience :: Developers
27
27
  Classifier: Intended Audience :: Information Technology
@@ -39,32 +39,34 @@ Classifier: Typing :: Typed
39
39
  Requires-Python: >=3.10
40
40
  Requires-Dist: cryptography>=43.0
41
41
  Provides-Extra: dev
42
- Requires-Dist: build>=1.0; extra == 'dev'
43
- Requires-Dist: hypothesis>=6.100; extra == 'dev'
44
- Requires-Dist: pytest-cov>=4.1; extra == 'dev'
45
- Requires-Dist: pytest>=7.4; extra == 'dev'
42
+ Requires-Dist: build>=1.5.0; extra == 'dev'
43
+ Requires-Dist: hypothesis>=6.165.2; extra == 'dev'
44
+ Requires-Dist: jsonschema>=4.23.0; extra == 'dev'
45
+ Requires-Dist: pytest-cov>=7.1.0; extra == 'dev'
46
+ Requires-Dist: pytest>=9.1.1; extra == 'dev'
47
+ Requires-Dist: pyyaml>=6.0.3; extra == 'dev'
46
48
  Provides-Extra: git
47
49
  Provides-Extra: hardware
48
50
  Requires-Dist: pyserial>=3.5; extra == 'hardware'
49
51
  Provides-Extra: mcp
50
- Requires-Dist: mcp<2.0.0,>=1.0.0; extra == 'mcp'
52
+ Requires-Dist: mcp<2.0.0,>=1.28.0; extra == 'mcp'
51
53
  Provides-Extra: pqc
52
- Requires-Dist: liboqs-python>=0.12.0; extra == 'pqc'
54
+ Requires-Dist: liboqs-python>=0.16.0; extra == 'pqc'
53
55
  Provides-Extra: tpm
54
56
  Provides-Extra: yubikey
55
- Requires-Dist: python-pkcs11>=0.7; extra == 'yubikey'
57
+ Requires-Dist: python-pkcs11>=0.9.5; extra == 'yubikey'
56
58
  Description-Content-Type: text/markdown
57
59
 
58
60
  # Matrix Scroll
59
61
 
60
- Model Context Protocol server for signed agent provenance and offline MCP tool-surface verification.
62
+ Model Context Protocol server for signed machine-action records and offline tool-surface verification.
61
63
 
62
64
  [![ci-unit](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml/badge.svg)](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
63
65
  [![PyPI](https://img.shields.io/pypi/v/matrixscroll)](https://pypi.org/project/matrixscroll/)
64
66
  [![Python](https://img.shields.io/pypi/pyversions/matrixscroll)](https://pypi.org/project/matrixscroll/)
65
67
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/SSX360/matrixscroll/blob/main/LICENSE)
66
68
 
67
- An MCP server can change its tool descriptions or input schemas after you install it. A Git commit can also name an agent without carrying proof of what signed the record. Matrix Scroll addresses both gaps with Ed25519-signed evidence that you can verify offline.
69
+ An MCP server can change its tool descriptions or input schemas after installation. A Git commit can also declare an actor or tool without carrying a signed authorization record. Matrix Scroll addresses both gaps with Ed25519-signed evidence that reviewers can verify offline.
68
70
 
69
71
  The `matrixscroll-mcp` stdio server exposes 14 tools for commit envelopes, action records, pull-request checks, Git notes, MCP surface manifests, agent traces, and the SSX360 USB signer. Local signing and verification need no cloud account.
70
72
 
@@ -88,7 +90,7 @@ Matrix Scroll is an open protocol. The Python SDK is Apache-2.0 software, and th
88
90
  Install the current release from PyPI:
89
91
 
90
92
  ```bash
91
- pip install "matrixscroll[mcp]==0.6.4"
93
+ pip install "matrixscroll[mcp]==0.7.0"
92
94
  ```
93
95
 
94
96
  Register the stdio server in your MCP client:
@@ -116,7 +118,7 @@ After your client connects, call `status`. The server reports the local identity
116
118
 
117
119
  ## MCP tools
118
120
 
119
- The `0.6.4` server exposes these tools:
121
+ The `0.7.0` server exposes these tools:
120
122
 
121
123
  | Tool | What it does | Network or write behavior |
122
124
  | --- | --- | --- |
@@ -142,7 +144,7 @@ An API key is optional. Local signing, offline verification, MCP manifest checks
142
144
  Matrix Scroll records an MCP server's tool names, descriptions, and input schemas in a signed manifest. Re-scan the server after an update and compare it with the install-time baseline.
143
145
 
144
146
  ```bash
145
- pip install "matrixscroll[mcp]==0.6.4"
147
+ pip install "matrixscroll[mcp]==0.7.0"
146
148
 
147
149
  matrixscroll mcp scan \
148
150
  --connect stdio \
@@ -179,7 +181,7 @@ matrixscroll mcp scan --tools tools.json --output manifest.json --pretty
179
181
  Install the hardware and MCP extras:
180
182
 
181
183
  ```bash
182
- pip install "matrixscroll[mcp,hardware]==0.6.4"
184
+ pip install "matrixscroll[mcp,hardware]==0.7.0"
183
185
  ```
184
186
 
185
187
  Set the hardware provider and USB CDC port before starting the MCP server.
@@ -243,7 +245,7 @@ The host receives the public key and signature. The private key stays inside the
243
245
  The Python package includes a CLI and Git hooks for workflows that do not use MCP.
244
246
 
245
247
  ```bash
246
- pip install "matrixscroll==0.6.4"
248
+ pip install "matrixscroll==0.7.0"
247
249
  matrixscroll hook-install
248
250
 
249
251
  export MATRIXSCROLL_ACTOR_TYPE=agent
@@ -266,7 +268,7 @@ matrixscroll verify release.signed.json
266
268
 
267
269
  <!-- vale ai-tells.ShipOveruse = NO -->
268
270
 
269
- - Shipping now: PyPI `matrixscroll==0.6.4` installs the 14-tool stdio MCP server and Git hooks. The release also includes the MCP Trust Scanner, offline verification, and USB CDC integration for the SSX360 signer.
271
+ - Shipping now: PyPI `matrixscroll==0.7.0` installs the 14-tool stdio MCP server and Git hooks. The release also includes the MCP Trust Scanner, offline verification, and USB CDC integration for the SSX360 signer.
270
272
  - Hardware availability: SSX360 produces the USB signer and supplies it after a direct inquiry. PyPI distributes the host software only.
271
273
  - Hosted tools: `list_envelopes` and the hosted modes of `verify_pr_range` and `audit_export` require `SSX360_API_KEY` and a deployed SSX360 API. Local alternatives remain available without a key.
272
274
  - Post-quantum overlay: the optional `matrixscroll[pqc]` extra provides ML-DSA and SLH-DSA through liboqs. This module has no CMVP validation. liboqs states that applications should not rely on it to protect sensitive data in production.
@@ -279,11 +281,11 @@ matrixscroll verify release.signed.json
279
281
 
280
282
  GitHub Actions publishes each Matrix Scroll release through PyPI Trusted Publishing. PyPI records a PEP 740 attestation for the wheel and source distribution.
281
283
 
282
- Ask PyPI for the `0.6.4` wheel provenance:
284
+ Ask PyPI for the `0.7.0` wheel provenance:
283
285
 
284
286
  ```bash
285
287
  curl -H "Accept: application/vnd.pypi.integrity.v1+json" \
286
- https://pypi.org/integrity/matrixscroll/0.6.4/matrixscroll-0.6.4-py3-none-any.whl/provenance
288
+ https://pypi.org/integrity/matrixscroll/0.7.0/matrixscroll-0.7.0-py3-none-any.whl/provenance
287
289
  ```
288
290
 
289
291
  The response names the GitHub publisher:
@@ -1,13 +1,13 @@
1
1
  # Matrix Scroll
2
2
 
3
- Model Context Protocol server for signed agent provenance and offline MCP tool-surface verification.
3
+ Model Context Protocol server for signed machine-action records and offline tool-surface verification.
4
4
 
5
5
  [![ci-unit](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml/badge.svg)](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
6
6
  [![PyPI](https://img.shields.io/pypi/v/matrixscroll)](https://pypi.org/project/matrixscroll/)
7
7
  [![Python](https://img.shields.io/pypi/pyversions/matrixscroll)](https://pypi.org/project/matrixscroll/)
8
8
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/SSX360/matrixscroll/blob/main/LICENSE)
9
9
 
10
- An MCP server can change its tool descriptions or input schemas after you install it. A Git commit can also name an agent without carrying proof of what signed the record. Matrix Scroll addresses both gaps with Ed25519-signed evidence that you can verify offline.
10
+ An MCP server can change its tool descriptions or input schemas after installation. A Git commit can also declare an actor or tool without carrying a signed authorization record. Matrix Scroll addresses both gaps with Ed25519-signed evidence that reviewers can verify offline.
11
11
 
12
12
  The `matrixscroll-mcp` stdio server exposes 14 tools for commit envelopes, action records, pull-request checks, Git notes, MCP surface manifests, agent traces, and the SSX360 USB signer. Local signing and verification need no cloud account.
13
13
 
@@ -31,7 +31,7 @@ Matrix Scroll is an open protocol. The Python SDK is Apache-2.0 software, and th
31
31
  Install the current release from PyPI:
32
32
 
33
33
  ```bash
34
- pip install "matrixscroll[mcp]==0.6.4"
34
+ pip install "matrixscroll[mcp]==0.7.0"
35
35
  ```
36
36
 
37
37
  Register the stdio server in your MCP client:
@@ -59,7 +59,7 @@ After your client connects, call `status`. The server reports the local identity
59
59
 
60
60
  ## MCP tools
61
61
 
62
- The `0.6.4` server exposes these tools:
62
+ The `0.7.0` server exposes these tools:
63
63
 
64
64
  | Tool | What it does | Network or write behavior |
65
65
  | --- | --- | --- |
@@ -85,7 +85,7 @@ An API key is optional. Local signing, offline verification, MCP manifest checks
85
85
  Matrix Scroll records an MCP server's tool names, descriptions, and input schemas in a signed manifest. Re-scan the server after an update and compare it with the install-time baseline.
86
86
 
87
87
  ```bash
88
- pip install "matrixscroll[mcp]==0.6.4"
88
+ pip install "matrixscroll[mcp]==0.7.0"
89
89
 
90
90
  matrixscroll mcp scan \
91
91
  --connect stdio \
@@ -122,7 +122,7 @@ matrixscroll mcp scan --tools tools.json --output manifest.json --pretty
122
122
  Install the hardware and MCP extras:
123
123
 
124
124
  ```bash
125
- pip install "matrixscroll[mcp,hardware]==0.6.4"
125
+ pip install "matrixscroll[mcp,hardware]==0.7.0"
126
126
  ```
127
127
 
128
128
  Set the hardware provider and USB CDC port before starting the MCP server.
@@ -186,7 +186,7 @@ The host receives the public key and signature. The private key stays inside the
186
186
  The Python package includes a CLI and Git hooks for workflows that do not use MCP.
187
187
 
188
188
  ```bash
189
- pip install "matrixscroll==0.6.4"
189
+ pip install "matrixscroll==0.7.0"
190
190
  matrixscroll hook-install
191
191
 
192
192
  export MATRIXSCROLL_ACTOR_TYPE=agent
@@ -209,7 +209,7 @@ matrixscroll verify release.signed.json
209
209
 
210
210
  <!-- vale ai-tells.ShipOveruse = NO -->
211
211
 
212
- - Shipping now: PyPI `matrixscroll==0.6.4` installs the 14-tool stdio MCP server and Git hooks. The release also includes the MCP Trust Scanner, offline verification, and USB CDC integration for the SSX360 signer.
212
+ - Shipping now: PyPI `matrixscroll==0.7.0` installs the 14-tool stdio MCP server and Git hooks. The release also includes the MCP Trust Scanner, offline verification, and USB CDC integration for the SSX360 signer.
213
213
  - Hardware availability: SSX360 produces the USB signer and supplies it after a direct inquiry. PyPI distributes the host software only.
214
214
  - Hosted tools: `list_envelopes` and the hosted modes of `verify_pr_range` and `audit_export` require `SSX360_API_KEY` and a deployed SSX360 API. Local alternatives remain available without a key.
215
215
  - Post-quantum overlay: the optional `matrixscroll[pqc]` extra provides ML-DSA and SLH-DSA through liboqs. This module has no CMVP validation. liboqs states that applications should not rely on it to protect sensitive data in production.
@@ -222,11 +222,11 @@ matrixscroll verify release.signed.json
222
222
 
223
223
  GitHub Actions publishes each Matrix Scroll release through PyPI Trusted Publishing. PyPI records a PEP 740 attestation for the wheel and source distribution.
224
224
 
225
- Ask PyPI for the `0.6.4` wheel provenance:
225
+ Ask PyPI for the `0.7.0` wheel provenance:
226
226
 
227
227
  ```bash
228
228
  curl -H "Accept: application/vnd.pypi.integrity.v1+json" \
229
- https://pypi.org/integrity/matrixscroll/0.6.4/matrixscroll-0.6.4-py3-none-any.whl/provenance
229
+ https://pypi.org/integrity/matrixscroll/0.7.0/matrixscroll-0.7.0-py3-none-any.whl/provenance
230
230
  ```
231
231
 
232
232
  The response names the GitHub publisher:
@@ -40,8 +40,9 @@ Out of scope:
40
40
 
41
41
  | Version | Status |
42
42
  | ------- | ------ |
43
- | 0.6.x | Active development. Security fixes are released as patch versions. The published release is 0.6.4. |
44
- | 0.5.x and earlier | Legacy. Upgrade to 0.6.x for the post-quantum overlay and the in-repo verify action. |
43
+ | 0.7.x | Active development. Security fixes are released as patch versions. The published release is 0.7.0. |
44
+ | 0.6.x | Maintenance through 2026-11-09 under the 90-day previous-minor policy. |
45
+ | 0.5.x and earlier | Legacy. Upgrade to 0.7.x for the current MCP server, USB signer host path, and in-repo verify action. |
45
46
 
46
47
  Pre-1.0 there is no extended support window. Pin to a known-good version
47
48
  in production until 1.0.
@@ -14,8 +14,8 @@ Two schema identifiers are stamped into every artifact:
14
14
  `status`, the on-disk key store).
15
15
  - `matrixscroll.signature.v1` — the signature block attached to manifests.
16
16
  - `matrixscroll.commit_envelope.v1` — Git commit provenance document (see §10).
17
- - `matrixscroll.release_manifest.v1` and evidence-pack schemas — release and
18
- audit artifacts (see §10).
17
+ - Release and audit artifacts (see §10): `matrixscroll.release_manifest.v1`,
18
+ `matrixscroll.evidence_pack.v1`, and `ssx360.evidence-pack.v1`.
19
19
 
20
20
  A breaking change to canonical encoding, signature layout, device id
21
21
  derivation, or algorithm choice **must** bump the relevant version. Minor
@@ -192,10 +192,27 @@ Conformance vector: [`vectors/valid_commit_envelope.json`](vectors/valid_commit_
192
192
  Signed release metadata (version, tag, artifact list). JSON Schema:
193
193
  [`schemas/release-manifest.v1.json`](schemas/release-manifest.v1.json).
194
194
 
195
- ### 10.3 Evidence pack
196
-
197
- Signed audit or agent-scope evidence. JSON Schema:
198
- [`schemas/evidence-pack.v1.json`](schemas/evidence-pack.v1.json).
195
+ ### 10.3 Evidence packs
196
+
197
+ `matrixscroll.evidence_pack.v1` and `ssx360.evidence-pack.v1` both carry the
198
+ "evidence pack" name. They are separate documents with separate schemas, and
199
+ neither validates against the other.
200
+
201
+ `matrixscroll.evidence_pack.v1` is the protocol document: a `subject` plus an
202
+ `artifacts` list, holding audit or agent-scope evidence. JSON Schema:
203
+ [`schemas/evidence-pack.v1.json`](schemas/evidence-pack.v1.json). No command in
204
+ the Python reference SDK writes one yet. The schema is published so other
205
+ implementers can agree on the shape ahead of that.
206
+
207
+ `ssx360.evidence-pack.v1` is what `ssx360 ledger export` and
208
+ `ssx360-ledger --export` write. It is an index over a bundle of signed commit
209
+ envelopes, annotated with a framework mapping. The wrapper carries no
210
+ `signature` block and makes no claim about itself. The trust is in the
211
+ envelopes it points at, and each one verifies on its own. When the hosted
212
+ export returns a body that does carry a signature, that body is nested verbatim
213
+ under `evidence_pack` so its canonical bytes are the ones the signer covered.
214
+ JSON Schema:
215
+ [`schemas/ssx360.evidence-pack.v1.json`](schemas/ssx360.evidence-pack.v1.json).
199
216
 
200
217
  ## 11. Post-quantum overlay (v1.1 extension)
201
218
 
@@ -6,14 +6,14 @@ who want to trial Matrix Scroll without changing their core workflow.
6
6
  ## Best first-fit teams
7
7
 
8
8
  - OSS repos with active PR review and at least one protected branch
9
- - platform or DevSecOps teams evaluating agent-assisted coding controls
9
+ - platform or DevSecOps teams evaluating machine-action controls
10
10
  - teams that already use GitHub Actions and can add one verification job
11
11
 
12
12
  ## 15-minute pilot
13
13
 
14
- 1. Install `matrixscroll==0.6.4` in one repo.
14
+ 1. Install `matrixscroll==0.7.0` in one repo.
15
15
  2. Run `matrixscroll hook-install`.
16
- 3. Make one agent-assisted commit and verify it locally.
16
+ 3. Make one commit with a declared actor and tool, then verify it locally.
17
17
  4. Publish notes with `matrixscroll envelope-publish-notes`.
18
18
  5. Add `SSX360/matrixscroll/.github/actions/verify@action-v1` to PR CI.
19
19
 
@@ -38,7 +38,7 @@ jobs:
38
38
  head-ref: ${{ github.event.pull_request.head.sha }}
39
39
  base-ref: ${{ github.event.pull_request.base.sha }}
40
40
  source: notes
41
- matrixscroll-version: "0.6.4"
41
+ matrixscroll-version: "0.7.0"
42
42
  require-mode: emulated
43
43
  ```
44
44
 
@@ -65,7 +65,7 @@ jobs:
65
65
 
66
66
  Recorded on `2026-06-21` against the pinned public flow:
67
67
  `pip install matrixscroll` -> `matrixscroll hook-install` ->
68
- `matrixscroll hook-status` -> first agent-assisted commit ->
68
+ `matrixscroll hook-status` -> first signed commit ->
69
69
  `matrixscroll envelope-verify`.
70
70
 
71
71
  The pin that run used is not named here. It moved with every release since, and
@@ -38,7 +38,7 @@ Use artifact-layer tools when you need:
38
38
 
39
39
  ## How to use them together
40
40
 
41
- 1. Sign agent-assisted commits with Matrix Scroll.
41
+ 1. Sign commit-time authorization records with Matrix Scroll.
42
42
  2. Verify commit ranges in PRs with `SSX360/matrixscroll/.github/actions/verify@action-v1`.
43
43
  3. Keep Sigstore, GitHub attestations, or SLSA on the release path.
44
44
 
@@ -0,0 +1,47 @@
1
+ # Where Matrix Scroll fits
2
+
3
+ Matrix Scroll signs a declared authorization record at commit or action time.
4
+ It complements, rather than replaces, identity systems, source-control policy,
5
+ build provenance, artifact signing, and runtime security controls.
6
+
7
+ ## Control boundaries
8
+
9
+ | Control area | Primary question | Matrix Scroll role |
10
+ | --- | --- | --- |
11
+ | Identity and access management | Who may access or change a system? | Consumes trusted-key and authorization policy; does not issue access |
12
+ | Source-control policy | Which changes may merge? | Supplies a signed record and range-verification result for policy checks |
13
+ | Build provenance | What process produced an artifact? | Supplies optional source-history evidence; does not attest the build |
14
+ | Artifact signing | Which key signed a release or image? | Separate control; Matrix Scroll records can be referenced by the release process |
15
+ | Runtime security | What code or process is executing now? | Outside protocol scope |
16
+ | Compliance assessment | Which evidence supports a control review? | Exports signed records and verification results for scoped review |
17
+
18
+ ## Commit-time and artifact-time evidence
19
+
20
+ Matrix Scroll binds an envelope to a Git commit before or around push. Build
21
+ provenance and artifact-signing systems operate later, after CI has produced an
22
+ artifact. A complete software supply-chain review may use both:
23
+
24
+ 1. Matrix Scroll records the declared actor class, tool, scope, and commit SHA.
25
+ 2. Scroll Gate checks the selected commit range against key and policy inputs.
26
+ 3. CI produces build provenance and signs the resulting artifact.
27
+ 4. Reviewers compare the source-history and artifact evidence as separate
28
+ control records.
29
+
30
+ ## Signer choices
31
+
32
+ The file-backed provider is included for local use, tests, and CI. The completed
33
+ SSX360 USB signer keeps the Ed25519 private key inside an NXP SE050 secure
34
+ element and is supplied through [SSX360 contact](https://ssx360.com/contact).
35
+ Both paths produce the same public envelope format.
36
+
37
+ ## Limits
38
+
39
+ - A valid envelope proves integrity and key possession, not authorization to
40
+ use the key.
41
+ - Scroll Gate does not replace branch protection or reviewer approval.
42
+ - Matrix Scroll does not establish a SLSA level or certify compliance.
43
+ - Hardware custody, trusted-key registration, revocation, and offboarding are
44
+ deployment responsibilities.
45
+
46
+ For protocol details, read [`SPEC.md`](../SPEC.md). For an implementation path,
47
+ start with [`FIVE_MINUTES.md`](FIVE_MINUTES.md).
@@ -46,7 +46,7 @@ Post-sunset Ed25519-only envelopes rejected when org policy mandates PQC
46
46
  | FIPS 204 | ML-DSA (Dilithium) | Primary PQC signature | `ml-dsa-44/65/87` via liboqs |
47
47
  | FIPS 205 | SLH-DSA (SPHINCS+) | Hash-based backup | `slh-dsa-sha2-128s/f` |
48
48
 
49
- Enable: `pip install "matrixscroll[pqc]==0.6.4"` and `MATRIXSCROLL_PQC=ml-dsa-65`.
49
+ Enable: `pip install "matrixscroll[pqc]==0.7.0"` and `MATRIXSCROLL_PQC=ml-dsa-65`.
50
50
 
51
51
  ## POC 2 audit answers
52
52
 
@@ -0,0 +1,56 @@
1
+ # Publishing doctrine: SSX360 and Matrix Scroll
2
+
3
+ This document defines the public claims and technical boundaries shared by the
4
+ Matrix Scroll package, matrixscroll.com, PyPI, GitHub, and SSX360.
5
+
6
+ ## The thesis
7
+
8
+ Software changes code, infrastructure, and business records at machine speed.
9
+ Matrix Scroll signs a declared authorization record for those actions and lets
10
+ reviewers verify the record offline. SSX360 maintains the protocol, produces the
11
+ USB signer, and delivers scoped cybersecurity services.
12
+
13
+ ## Rules
14
+
15
+ ### 1. Describe evidence, not trust
16
+
17
+ Matrix Scroll verifies that signed bytes match and correspond to a key. It does
18
+ not establish who was authorized to use that key. Trusted-key policy, access
19
+ control, key custody, revocation, and review remain deployment responsibilities.
20
+
21
+ ### 2. Keep the protocol portable
22
+
23
+ The envelope format, schemas, conformance vectors, and verifier must work
24
+ without a Matrix Scroll account. Integrations may target GitHub, GitLab,
25
+ Forgejo, Gitea, or other systems, but the wire format must not depend on one
26
+ platform.
27
+
28
+ ### 3. Make every claim checkable
29
+
30
+ Software signing is described as software signing. The completed SSX360 USB
31
+ signer is described as an RP2350 and NXP SE050 device supplied through direct
32
+ contact. PyPI distributes the host software, not the physical device. Compliance
33
+ references are evidence mappings, not certifications.
34
+
35
+ ### 4. Apply the same controls to releases
36
+
37
+ Release examples use explicit version pins. PyPI artifacts are built from the
38
+ tagged repository state and published through Trusted Publishing with
39
+ attestations. The changelog, support policy, action defaults, site, and package
40
+ metadata must identify the same current release.
41
+
42
+ ### 5. Separate open software from commercial delivery
43
+
44
+ Matrix Scroll remains Apache-2.0 software with CC0 specification text and
45
+ vectors. SSX360 earns revenue from cybersecurity products and scoped services,
46
+ including the physical USB signer and compliance-aligned assessment work.
47
+
48
+ ## Publication check
49
+
50
+ Before publishing, confirm that:
51
+
52
+ 1. The capability exists in the referenced release or deployed service.
53
+ 2. The evidence and limitations appear beside the claim.
54
+ 3. Version numbers and install commands agree across every public surface.
55
+ 4. Hardware availability distinguishes host software from physical units.
56
+ 5. Standards references do not imply certification or third-party validation.
@@ -12,7 +12,7 @@ five-minute path from `pip install` to a verifiable commit envelope.
12
12
  ## 1. Install the SDK
13
13
 
14
14
  ```bash
15
- pip install "matrixscroll==0.6.4"
15
+ pip install "matrixscroll==0.7.0"
16
16
  matrixscroll hook-install
17
17
  matrixscroll hook-status
18
18
  ```
@@ -61,7 +61,7 @@ git push origin refs/notes/matrixscroll
61
61
  head-ref: ${{ github.event.pull_request.head.sha }}
62
62
  base-ref: ${{ github.event.pull_request.base.sha }}
63
63
  source: notes
64
- matrixscroll-version: "0.6.4"
64
+ matrixscroll-version: "0.7.0"
65
65
  require-mode: emulated
66
66
  ```
67
67
 
@@ -0,0 +1,52 @@
1
+ # Matrix Scroll release evidence
2
+
3
+ This checklist records the public evidence for Matrix Scroll 0.7.0. It is a
4
+ release-readiness record, not a third-party audit or certification.
5
+
6
+ ## Release surfaces
7
+
8
+ | Surface | Current reference |
9
+ | --- | --- |
10
+ | Python package | `matrixscroll==0.7.0` |
11
+ | MCP server | `matrixscroll-mcp`, 14 tools |
12
+ | GitHub Action | `SSX360/matrixscroll/.github/actions/verify@action-v1` |
13
+ | Browser verifier | <https://matrixscroll.com/verify/> |
14
+ | MCP surface scanner | <https://matrixscroll.com/scan/> |
15
+ | Protocol source | [`SPEC.md`](../SPEC.md) and [`schemas/`](../schemas/) |
16
+
17
+ ## Verification behavior
18
+
19
+ - Ed25519 signatures are checked over deterministic canonical JSON bytes.
20
+ - Invalid signatures, unsupported schemas, malformed records, and empty commit
21
+ ranges fail closed by default.
22
+ - Range checks can read local envelopes, Git notes, or exported bundles without
23
+ a hosted account.
24
+ - The wheel includes the public schemas used by the MCP resources and evidence
25
+ exporter.
26
+
27
+ ## Hardware path
28
+
29
+ - SSX360 produces the RP2350 and NXP SE050 USB signer.
30
+ - The SE050 creates and retains the non-exportable Ed25519 private key.
31
+ - USB CDC host support ships in `matrixscroll[hardware]==0.7.0`.
32
+ - Physical units are supplied by SSX360 through direct contact. PyPI distributes
33
+ the host software only.
34
+
35
+ ## Release chain
36
+
37
+ - GitHub Actions builds the wheel and source distribution from the release
38
+ repository state.
39
+ - PyPI Trusted Publishing supplies provenance attestations for both artifacts.
40
+ - `python scripts/release-readiness.py` checks package, README, and registry
41
+ version consistency before publication.
42
+ - `python -m twine check --strict dist/*` validates the built metadata.
43
+
44
+ ## Limits
45
+
46
+ - A valid signature proves integrity and key possession, not authorization to
47
+ use the key.
48
+ - The optional ML-DSA and SLH-DSA overlay uses liboqs and has no CMVP validation.
49
+ - Matrix Scroll does not replace IAM, sandboxing, build attestations, or review
50
+ policy.
51
+ - Compliance references map available evidence to control questions; they do
52
+ not claim certification.
@@ -6,7 +6,7 @@ Matrix Scroll stabilizes the verifier contract before adding new signing provide
6
6
 
7
7
  ## Current release
8
8
 
9
- - PyPI release: `matrixscroll==0.6.4`
9
+ - PyPI release: `matrixscroll==0.7.0`
10
10
  - MCP transport: stdio through `matrixscroll-mcp`
11
11
  - Public trust contract: Ed25519 over canonical manifest bytes
12
12
  - Software provider: file-backed key under `MATRIXSCROLL_HOME`
@@ -31,7 +31,7 @@ Matrix Scroll stabilizes the verifier contract before adding new signing provide
31
31
  - Commit-envelope schema
32
32
  - CLI exit codes
33
33
  - Offline verification behavior
34
- - MCP tool names for the `0.6.x` release line
34
+ - MCP tool names for the `0.7.x` release line
35
35
 
36
36
  ## Release rule
37
37
 
@@ -1,6 +1,6 @@
1
1
  # Matrix Scroll security properties
2
2
 
3
- Machine-checkable guarantees for the reference SDK (v0.6.4). Properties marked
3
+ Machine-checkable guarantees for the reference SDK (v0.7.0). Properties marked
4
4
  **verified** have Hypothesis property tests in `tests/test_security_properties.py`.
5
5
  **Formal TLA+ models** in [`formal/tla/`](../formal/tla/) are checked by TLC in
6
6
  [`.github/workflows/formal-verify.yml`](../.github/workflows/formal-verify.yml).
@@ -0,0 +1,26 @@
1
+ # SLSA source evidence context
2
+
3
+ SLSA applies requirements to software supply-chain provenance. Matrix Scroll
4
+ adds signed commit-time records that can support a reviewer examining source
5
+ history, but the protocol does not establish or certify a SLSA level.
6
+
7
+ ## Evidence Matrix Scroll can provide
8
+
9
+ | Review question | Matrix Scroll evidence | Deployment dependency |
10
+ | --- | --- | --- |
11
+ | Which commit was assessed? | Commit SHA bound into a signed envelope | Git repository history |
12
+ | Which actor class and tool were declared? | `provenance.actor_type` and `provenance.tool` | Accurate declaration by the signer |
13
+ | Was the record altered? | Ed25519 signature over canonical bytes | Trusted public-key policy |
14
+ | Did every selected commit carry a valid record? | Scroll Gate range result | Correct base and head refs |
15
+ | Was protected review enforced? | External branch and review evidence | Forge configuration and organization policy |
16
+ | What artifact did CI build? | Not provided by Matrix Scroll | Build provenance such as SLSA or Sigstore |
17
+
18
+ ## Use in an assessment
19
+
20
+ Treat Matrix Scroll envelopes and range results as source-history evidence. Pair
21
+ them with branch-protection records, reviewer approvals, build attestations, and
22
+ artifact signatures where those controls are in scope.
23
+
24
+ Use language such as "provides signed commit-time evidence for SLSA review."
25
+ Do not claim a SLSA level, SLSA certification, or complete build provenance from
26
+ Matrix Scroll alone.