matrixscroll 0.2.5__tar.gz → 0.3.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 (118) hide show
  1. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/CHANGELOG.md +36 -2
  2. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/CONTRIBUTING.md +1 -1
  3. matrixscroll-0.3.0/PKG-INFO +411 -0
  4. matrixscroll-0.3.0/README.md +358 -0
  5. matrixscroll-0.3.0/docs/ADOPTER_KIT.md +90 -0
  6. matrixscroll-0.3.0/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +51 -0
  7. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/COMPARISON.md +1 -1
  8. matrixscroll-0.3.0/docs/FIVE_MINUTES.md +78 -0
  9. matrixscroll-0.3.0/docs/HERO_DEMO.md +45 -0
  10. matrixscroll-0.3.0/docs/ROADMAP_2026-07.md +44 -0
  11. matrixscroll-0.3.0/docs/SE050_POC_SCOPE.md +92 -0
  12. matrixscroll-0.3.0/docs/SE050_USB_PROTOCOL.md +96 -0
  13. matrixscroll-0.3.0/docs/SOFTWARE_PRODUCTS.md +53 -0
  14. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/WHITEPAPER.md +8 -6
  15. matrixscroll-0.3.0/docs/hardware-provider.md +60 -0
  16. matrixscroll-0.3.0/docs/quickstart-agent.md +64 -0
  17. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/quickstart-claude-code.md +5 -4
  18. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/quickstart-git.md +34 -6
  19. matrixscroll-0.3.0/docs/quickstart-mcp.md +50 -0
  20. matrixscroll-0.3.0/docs/registries-guide.md +51 -0
  21. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/rekor-guac-bridge-design.md +1 -1
  22. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +1 -1
  23. matrixscroll-0.3.0/docs/yubikey-bridge.md +54 -0
  24. matrixscroll-0.3.0/docs/yubikey-smoke.md +22 -0
  25. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/ci/protected-branch.yml +3 -3
  26. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/demo/agent-commit-demo.sh +1 -1
  27. matrixscroll-0.3.0/examples/demo/hero-self-attestation-demo.sh +110 -0
  28. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/__init__.py +5 -3
  29. matrixscroll-0.3.0/matrixscroll/_claim.py +96 -0
  30. matrixscroll-0.3.0/matrixscroll/_payment.py +31 -0
  31. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/cli.py +52 -4
  32. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/gate.py +0 -2
  33. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/git.py +8 -5
  34. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/manifest.py +7 -31
  35. matrixscroll-0.3.0/matrixscroll/mcp.py +167 -0
  36. matrixscroll-0.3.0/matrixscroll/mcp_core.py +215 -0
  37. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/providers/hardware.py +5 -3
  38. matrixscroll-0.3.0/matrixscroll/providers/se050_transport.py +226 -0
  39. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/providers/yubikey.py +16 -3
  40. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/pyproject.toml +17 -2
  41. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/fixtures/github-gpgsig-commit.txt +0 -1
  42. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_cli.py +2 -2
  43. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_git_envelope.py +1 -1
  44. matrixscroll-0.3.0/tests/test_mcp_core.py +79 -0
  45. matrixscroll-0.3.0/tests/test_mcp_server.py +114 -0
  46. matrixscroll-0.3.0/tests/test_se050_transport.py +120 -0
  47. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_yubikey_provider.py +19 -7
  48. matrixscroll-0.2.5/PKG-INFO +0 -224
  49. matrixscroll-0.2.5/README.md +0 -185
  50. matrixscroll-0.2.5/docs/hardware-provider.md +0 -38
  51. matrixscroll-0.2.5/docs/quickstart-copilot.md +0 -52
  52. matrixscroll-0.2.5/docs/quickstart-cursor.md +0 -57
  53. matrixscroll-0.2.5/docs/yubikey-bridge.md +0 -151
  54. matrixscroll-0.2.5/docs/yubikey-smoke.md +0 -35
  55. matrixscroll-0.2.5/matrixscroll/providers/se050_transport.py +0 -67
  56. matrixscroll-0.2.5/tests/test_se050_transport.py +0 -49
  57. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/.gitignore +0 -0
  58. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/LICENSE +0 -0
  59. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/SECURITY.md +0 -0
  60. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/SPEC.md +0 -0
  61. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/controls/agentic_ai_controls.json +0 -0
  62. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/AGENTIC_AI_SECURITY.md +0 -0
  63. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/CI_HARD_GATE.md +0 -0
  64. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/delegation-attestation-rfc.md +0 -0
  65. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
  66. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
  67. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/agentic_ai_evidence_manifest.json +0 -0
  68. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
  69. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/commit-envelope.json +0 -0
  70. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/commit-envelope.signed.json +0 -0
  71. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/demo/generate_signed_examples.py +0 -0
  72. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/release-manifest.json +0 -0
  73. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/release-manifest.signed.json +0 -0
  74. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/examples/trusted-keys-policy.json +0 -0
  75. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/_core.py +0 -0
  76. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/canonical.py +0 -0
  77. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/constants.py +0 -0
  78. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/errors.py +0 -0
  79. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/guac_export.py +0 -0
  80. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/hooks/post-commit +0 -0
  81. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/hooks/pre-push +0 -0
  82. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/policy.py +0 -0
  83. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/providers/__init__.py +0 -0
  84. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/providers/base.py +0 -0
  85. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/providers/emulated.py +0 -0
  86. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/providers/registry.py +0 -0
  87. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/providers/tpm.py +0 -0
  88. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/py.typed +0 -0
  89. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/matrixscroll/rekor_publish.py +0 -0
  90. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/schemas/commit-envelope.v1.json +0 -0
  91. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/schemas/evidence-pack.v1.json +0 -0
  92. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/schemas/release-manifest.v1.json +0 -0
  93. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/__init__.py +0 -0
  94. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_agentic_guidance.py +0 -0
  95. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_canonical.py +0 -0
  96. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_core.py +0 -0
  97. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_gate.py +0 -0
  98. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_guac_rekor.py +0 -0
  99. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_policy.py +0 -0
  100. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_release_metadata.py +0 -0
  101. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_tpm_provider.py +0 -0
  102. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/tests/test_vectors.py +0 -0
  103. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/README.md +0 -0
  104. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/_fixture_key.json +0 -0
  105. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/_generate.py +0 -0
  106. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/tampered_algorithm.json +0 -0
  107. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/tampered_device_id.json +0 -0
  108. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/tampered_field.json +0 -0
  109. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/tampered_nested.json +0 -0
  110. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/tampered_public_key.json +0 -0
  111. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/tampered_schema.json +0 -0
  112. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/tampered_signature.json +0 -0
  113. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/unsigned_empty_block.json +0 -0
  114. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/unsigned_no_block.json +0 -0
  115. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/valid_commit_envelope.json +0 -0
  116. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/valid_nested.json +0 -0
  117. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/valid_simple.json +0 -0
  118. {matrixscroll-0.2.5 → matrixscroll-0.3.0}/vectors/valid_unicode.json +0 -0
@@ -4,9 +4,43 @@ 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.2.5] - 2026-06-24
7
+ ## [0.3.0] - 2026-06-28
8
8
 
9
- Post-HN patch: GitHub gpgsig commit binding, SE050 mock transport, YubiKey pubkey export, Rekor/GUAC CLI MVP.
9
+ Digital Rain removal and provenance-only SDK surface.
10
+
11
+ ### Removed
12
+ - **Workspace intelligence modules** — deleted unused Digital Rain-era helpers
13
+ (`benchmark`, `brainstorm`, `scanner`, `vault`, radar modules, and related tests).
14
+
15
+ ### Changed
16
+ - **Public copy** — removed Digital Rain funnel language from README, MCP docs,
17
+ and hero demo script; SSX360 remains the hosted control plane reference.
18
+ - **Version pins** — bumped public quickstart and product docs to `0.3.0`.
19
+
20
+ ## [0.2.6] - 2026-06-21
21
+
22
+ SDK rollout hardening: generic public attribution, SE050 host transport preview,
23
+ and repo-local hardware rollout docs.
24
+
25
+ ### Added
26
+ - **USB CDC host transport preview** - `SerialSE050Transport` for newline-delimited
27
+ JSON `ping` / `pubkey` / `sign` framing over the RP2350 USB bridge.
28
+ - **Hardware extra** - `pip install "matrixscroll[hardware]"` now pulls in
29
+ `pyserial` for the SE050 host path.
30
+ - **Rollout docs** - adopter kit, five-minute guide, hardware provider quickstart,
31
+ SE050 protocol reference, and contractor-facing PoC scope kept inside the SDK repo.
32
+
33
+ ### Changed
34
+ - **Public quickstarts** - replaced editor-specific public quickstarts with
35
+ generic agent-facing guidance while keeping the manifest schema and API unchanged.
36
+ - **Hardware messaging** - clarified that the SDK now ships a host transport
37
+ preview and mock path, while real device signing still depends on firmware PoC validation.
38
+ - **Release copy** - aligned README, support docs, CI examples, and package metadata
39
+ around the `0.2.6` rollout surface.
40
+
41
+ ## [0.2.5] - 2026-06-20
42
+
43
+ Credibility and compatibility patch: GitHub gpgsig commit binding, SE050 mock transport, YubiKey pubkey export, Rekor/GUAC CLI MVP.
10
44
 
11
45
  ### Added
12
46
  - **GitHub `gpgsig` commit binding** — verify envelopes against raw commit object SHA when OpenPGP signatures are present.
@@ -36,7 +36,7 @@ For PRs that include agent-assisted commits, publish signed commit envelopes to
36
36
  ```bash
37
37
  matrixscroll hook-install
38
38
  export MATRIXSCROLL_ACTOR_TYPE=agent # or human / ci as appropriate
39
- export MATRIXSCROLL_TOOL=cursor # or your IDE / agent tool name
39
+ export MATRIXSCROLL_TOOL=agent-runner # or your editor / agent tool name
40
40
  git commit -m "feat: your change"
41
41
  matrixscroll envelope-publish-notes --base origin/main --head HEAD
42
42
  git push origin refs/notes/matrixscroll
@@ -0,0 +1,411 @@
1
+ Metadata-Version: 2.4
2
+ Name: matrixscroll
3
+ Version: 0.3.0
4
+ Summary: Signed provenance for agent-assisted Git commits with offline verification; emulated Ed25519 ships today and the SE050 hardware path remains an optional preview.
5
+ Project-URL: Homepage, https://matrixscroll.com
6
+ Project-URL: Documentation, https://matrixscroll.com/docs
7
+ Project-URL: Source, https://github.com/SSX360/matrixscroll
8
+ Project-URL: Issues, https://github.com/SSX360/matrixscroll/issues
9
+ Project-URL: Specification, https://github.com/SSX360/matrixscroll/blob/main/SPEC.md
10
+ Project-URL: Whitepaper, https://github.com/SSX360/matrixscroll/blob/main/docs/WHITEPAPER.md
11
+ Project-URL: Verifier, https://matrixscroll.com/verify
12
+ Project-URL: Compare, https://matrixscroll.com/compare
13
+ Project-URL: Changelog, https://github.com/SSX360/matrixscroll/blob/main/CHANGELOG.md
14
+ Project-URL: Discussions, https://github.com/SSX360/matrixscroll/discussions
15
+ Project-URL: Security, https://github.com/SSX360/matrixscroll/blob/main/SECURITY.md
16
+ Project-URL: GitHub Action, https://github.com/SSX360/matrixscroll-verify-action
17
+ Project-URL: PyPI Provenance, https://pypi.org/project/matrixscroll/
18
+ Project-URL: Tests, https://github.com/SSX360/matrixscroll/tree/main/tests
19
+ Project-URL: Public Roadmap, https://github.com/SSX360/matrixscroll/blob/main/docs/ROADMAP_2026-07.md
20
+ Project-URL: Reference Device, https://matrixscroll.com/device
21
+ Author-email: SSX360 <security@matrixscroll.com>
22
+ License-Expression: Apache-2.0
23
+ License-File: LICENSE
24
+ Keywords: ai,ed25519,matrixscroll,provenance,root-of-trust,secure-element,signing,ssx360,supply-chain
25
+ Classifier: Development Status :: 4 - Beta
26
+ Classifier: Intended Audience :: Developers
27
+ Classifier: Intended Audience :: Information Technology
28
+ Classifier: License :: OSI Approved :: Apache Software License
29
+ Classifier: Operating System :: OS Independent
30
+ Classifier: Programming Language :: Python :: 3
31
+ Classifier: Programming Language :: Python :: 3 :: Only
32
+ Classifier: Programming Language :: Python :: 3.10
33
+ Classifier: Programming Language :: Python :: 3.11
34
+ Classifier: Programming Language :: Python :: 3.12
35
+ Classifier: Programming Language :: Python :: 3.13
36
+ Classifier: Topic :: Security :: Cryptography
37
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
38
+ Classifier: Typing :: Typed
39
+ Requires-Python: >=3.10
40
+ Requires-Dist: cryptography>=41.0
41
+ Provides-Extra: dev
42
+ Requires-Dist: build>=1.0; extra == 'dev'
43
+ Requires-Dist: pytest>=7.4; extra == 'dev'
44
+ Provides-Extra: git
45
+ Provides-Extra: hardware
46
+ Requires-Dist: pyserial>=3.5; extra == 'hardware'
47
+ Provides-Extra: mcp
48
+ Requires-Dist: mcp<2.0.0,>=1.0.0; extra == 'mcp'
49
+ Provides-Extra: tpm
50
+ Provides-Extra: yubikey
51
+ Requires-Dist: python-pkcs11>=0.7; extra == 'yubikey'
52
+ Description-Content-Type: text/markdown
53
+
54
+ # Matrix Scroll
55
+
56
+ **Signed proof of who — or what — wrote every commit.** Matrix Scroll is the
57
+ open Ed25519 commit-provenance protocol for agent-assisted Git — verified
58
+ offline in CLI, browser, and CI. Hardware (SE050) is an optional preview trust
59
+ upgrade; emulated mode ships today.
60
+
61
+ **Hosted control plane:** identity, billing, and device confirmation live at
62
+ [ssx360.com](https://ssx360.com/). Teams evaluating protected-branch enforcement should
63
+ [book a provenance pilot](mailto:mission@ssx360.com?subject=Provenance%20Pilot%20Inquiry);
64
+ Provisioned pilot and team accounts sign in at [ssx360.com/signup](https://ssx360.com/signup).
65
+
66
+ ## Compliance evidence mapping
67
+
68
+ Matrix Scroll **maps to** and **produces evidence for** (never “required by”):
69
+
70
+ - **Five Eyes · Agentic AI (Apr 2026)** — cryptographic attestation that agents
71
+ run expected, unmodified code.
72
+ - **EU AI Act · high-risk traceability** — verifiable commit-time audit artifacts.
73
+ - **US federal SSDF · self-attestation** — evidence packs for supply-chain review.
74
+
75
+ Full matrix: [`controls/agentic_ai_controls.json`](controls/agentic_ai_controls.json)
76
+
77
+ ## Adoption signals
78
+
79
+ Track outbound and registry traction while rolling out:
80
+
81
+ | Signal | Counter |
82
+ |--------|---------|
83
+ | PyPI `matrixscroll` | [![PyPI downloads](https://img.shields.io/pypi/dm/matrixscroll)](https://pypi.org/project/matrixscroll/) |
84
+ | PyPI `[mcp]` extra | [![PyPI MCP downloads](https://img.shields.io/pypi/dm/matrixscroll?label=mcp%20extra)](https://pypi.org/project/matrixscroll/) |
85
+ | GitHub stars | [![GitHub stars](https://img.shields.io/github/stars/SSX360/matrixscroll?style=social)](https://github.com/SSX360/matrixscroll/stargazers) |
86
+ | Scroll Gate Action | [![GitHub Action](https://img.shields.io/github/stars/SSX360/matrixscroll-verify-action?style=social)](https://github.com/SSX360/matrixscroll-verify-action) |
87
+ | Glama MCP registry | [matrixscroll on Glama](https://glama.ai/mcp/servers/SSX360/matrixscroll) |
88
+
89
+ ## Hero demo (post–MCP merge)
90
+
91
+ Record the 60–90s provenance flow in [`docs/HERO_DEMO.md`](docs/HERO_DEMO.md) — Scroll Gate + browser verifier + MCP verbs only.
92
+
93
+ ## Install — MCP server (headline path)
94
+
95
+ Agents sign commits in-loop via the **provenance-only** MCP server:
96
+
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "matrixscroll-mcp": {
101
+ "command": "matrixscroll-mcp",
102
+ "args": []
103
+ }
104
+ }
105
+ }
106
+ ```
107
+
108
+ ```bash
109
+ pip install "matrixscroll[mcp]==0.3.0"
110
+ matrixscroll-mcp # stdio — register in Cursor / Claude Desktop / VS Code
111
+ ```
112
+
113
+ **MCP tools (provenance verbs only):** `create_envelope`, `verify_envelope`,
114
+ `verify_pr_range` (Scroll Gate), `publish_notes`, `status`, `audit_export`.
115
+
116
+ ## Also available — CLI & hooks
117
+
118
+ ```bash
119
+ pip install "matrixscroll==0.3.0"
120
+ matrixscroll hook-install
121
+ export MATRIXSCROLL_ACTOR_TYPE=agent
122
+ export MATRIXSCROLL_TOOL=agent-runner
123
+ git commit -m "feat: agent-assisted change"
124
+ matrixscroll envelope-verify "$(git rev-parse HEAD)"
125
+ ```
126
+
127
+ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
128
+ [`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
129
+
130
+ ---
131
+
132
+ This repository is the canonical SDK, verifier contract, fixture set, and
133
+ release surface for the product.
134
+
135
+ Matrix Scroll is a cryptographic evidence layer for Git. When an agent, CI
136
+ workflow, or human operator produces a commit, a signed commit envelope can
137
+ record the actor, tool, and optional bounded scope. Anyone can verify that
138
+ envelope locally, in CI, or in the browser without trusting the editor session
139
+ that produced it.
140
+
141
+ Keep GitHub Advanced Security, Semgrep, Snyk, branch protection, and artifact
142
+ attestations. Matrix Scroll adds signed commit-time authorship proof before
143
+ merge, and it keeps the same offline verification contract across the CLI,
144
+ browser, CI, and the SE050 preview path.
145
+
146
+ The reference SDK ships pure Ed25519 over canonical manifest bytes today. The
147
+ SSX360 / NXP SE050 path is the compatible next trust layer and remains a
148
+ preview path until device acceptance is complete.
149
+
150
+ ## Honest limits
151
+
152
+ - Shipping now: PyPI `matrixscroll==0.3.0`, Git post-commit hooks,
153
+ `matrixscroll envelope-verify`, Scroll Gate PR verification, browser
154
+ verifier, the GitHub Action, and a USB CDC host transport preview for the
155
+ SE050 rollout path. Emulated mode is the default evaluation path.
156
+ - In progress: RP2350 + SE050 firmware validation, external Ed25519-capable
157
+ hardware key backends, and transparency-log integrations.
158
+ - Not: IAM, sandboxing, prompt filtering, or an agent runtime.
159
+
160
+ ## Where it fits
161
+
162
+ - Scanners and branch protection catch code and policy issues; Matrix Scroll
163
+ records who or what signed the change before push.
164
+ - Hardware keys and build attestations remain complementary roots and downstream
165
+ proofs; Matrix Scroll covers commit-time provenance.
166
+ - The public contract stays pure Ed25519 over canonical manifest bytes,
167
+ whether the signer is emulated today or hardware-backed later.
168
+
169
+ ## Common questions
170
+
171
+ ### What is Matrix Scroll and how does it secure Git?
172
+
173
+ Matrix Scroll is signed commit-time provenance for agent-assisted Git. It
174
+ secures Git by attaching an Ed25519-signed commit envelope to a commit,
175
+ recording the actor, tool, and optional bounded scope, then letting reviewers
176
+ verify that proof offline in the CLI, browser, or CI before merge.
177
+
178
+ ### How do hardware and emulated modes differ in Matrix Scroll?
179
+
180
+ Emulated mode ships today and keeps the signing key on disk with owner-only
181
+ permissions so teams can evaluate the full workflow now. Hardware mode keeps
182
+ the same verifier contract and commit envelope schema, but moves the private
183
+ key into the SE050 secure element so the host cannot export it; that path
184
+ remains preview-only until device acceptance is complete.
185
+
186
+ ### How can I integrate Matrix Scroll into a CI/CD workflow?
187
+
188
+ Install the SDK and hooks in your repo, publish commit envelopes to
189
+ `refs/notes/matrixscroll` before PR review, and use
190
+ `SSX360/matrixscroll-verify-action@v1` to verify the full PR commit range in
191
+ GitHub Actions. Protected branches can then require Matrix Scroll proof
192
+ alongside your existing scanners, branch protection, and build attestations.
193
+
194
+ ## Quickstart (CLI)
195
+
196
+ ```bash
197
+ pip install "matrixscroll==0.3.0"
198
+ matrixscroll hook-install
199
+ matrixscroll hook-status
200
+
201
+ export MATRIXSCROLL_ACTOR_TYPE=agent
202
+ export MATRIXSCROLL_TOOL=agent-runner
203
+ git commit -m "feat: agent-assisted change"
204
+
205
+ matrixscroll envelope-verify "$(git rev-parse HEAD)"
206
+ ```
207
+
208
+ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
209
+ [`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
210
+
211
+ ## CI verify
212
+
213
+ ### Scroll Gate for a PR commit range
214
+
215
+ ```yaml
216
+ - uses: actions/checkout@v4
217
+ with:
218
+ fetch-depth: 0
219
+ - uses: SSX360/matrixscroll-verify-action@v1
220
+ with:
221
+ head-ref: ${{ github.event.pull_request.head.sha }}
222
+ base-ref: ${{ github.event.pull_request.base.sha }}
223
+ source: notes
224
+ matrixscroll-version: "0.3.0"
225
+ require-mode: emulated
226
+ ```
227
+
228
+ Publish envelopes to git notes before review:
229
+
230
+ ```bash
231
+ matrixscroll envelope-publish-notes --base origin/main --head HEAD
232
+ git push origin refs/notes/matrixscroll
233
+ ```
234
+
235
+ ```yaml
236
+ - uses: actions/checkout@v4
237
+ with:
238
+ fetch-depth: 0
239
+ - uses: SSX360/matrixscroll-verify-action@v1
240
+ with:
241
+ head-ref: ${{ github.event.pull_request.head.sha }}
242
+ base-ref: ${{ github.event.pull_request.base.sha }}
243
+ source: notes
244
+ matrixscroll-version: "0.3.0"
245
+ summary-output: provenance-summary.json
246
+ ```
247
+
248
+ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
249
+ [`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
250
+
251
+ The `--require-mode`, `--trusted-keys`, and actor or delegation policy checks
252
+ are available in the `0.2.x` line; the examples in this README pin `0.3.0`.
253
+
254
+ ## Why it is different from Sigstore
255
+
256
+ Sigstore, GitHub artifact attestations, and SLSA answer "what was built in
257
+ CI?" Matrix Scroll answers "who signed this commit before push?" The systems
258
+ are complementary: Matrix Scroll signs commit envelopes at commit time, while
259
+ artifact-attestation systems sign build outputs later in the delivery chain.
260
+
261
+ Matrix Scroll does not compete with general authentication keys on their home
262
+ field. Existing hardware roots can become Matrix Scroll signing backends only
263
+ when they preserve the same pure Ed25519 byte contract.
264
+
265
+ ## Public proof links
266
+
267
+ - Browser verifier: <https://matrixscroll.com/verify/>
268
+ - Compare page: <https://matrixscroll.com/compare/>
269
+ - Specification: [`SPEC.md`](SPEC.md)
270
+ - Commit envelope schema: [`schemas/commit-envelope.v1.json`](schemas/commit-envelope.v1.json)
271
+ - Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
272
+ - Conformance vectors: [`vectors/`](vectors/)
273
+ - GitHub Action: <https://github.com/SSX360/matrixscroll-verify-action>
274
+ - Agentic AI controls: [`docs/AGENTIC_AI_SECURITY.md`](docs/AGENTIC_AI_SECURITY.md)
275
+ - Site: <https://matrixscroll.com>
276
+ - Reference device path: [SSX360](https://matrixscroll.com/device)
277
+
278
+ ## Python API
279
+
280
+ ```bash
281
+ pip install "matrixscroll==0.3.0"
282
+ ```
283
+
284
+ ```python
285
+ import matrixscroll
286
+
287
+ print(matrixscroll.status())
288
+ # {'schema': 'matrixscroll.identity.v1', 'available': True,
289
+ # 'mode': 'emulated', 'device_id': 'MS-A3F2-9C81', ...}
290
+
291
+ signed = matrixscroll.sign_manifest({"release": "v1.0.0", "artifacts": [...]})
292
+
293
+ assert matrixscroll.verify_manifest(signed)
294
+ ```
295
+
296
+ ## CLI
297
+
298
+ ```bash
299
+ $ matrixscroll status
300
+ {
301
+ "available": true,
302
+ "device_id": "MS-A3F2-9C81",
303
+ "mode": "emulated",
304
+ "public_key": "...",
305
+ "schema": "matrixscroll.identity.v1"
306
+ }
307
+
308
+ $ matrixscroll sign release.json > release.signed.json
309
+ $ matrixscroll verify release.signed.json
310
+ {"device_id": "MS-A3F2-9C81", "mode": "emulated", "ok": true, "signed_at": "..."}
311
+ ```
312
+
313
+ `matrixscroll verify` exits `0` on a valid signature and `2` on failure
314
+ (tampered manifest, missing signature block, wrong schema or algorithm,
315
+ mismatched device ID, malformed public key, unreadable file).
316
+
317
+ ## How it works
318
+
319
+ ```text
320
+ your IDE / agent / CI
321
+ |
322
+ | commit envelope, release manifest, evidence pack, SBOM
323
+ v
324
+ matrixscroll.sign_manifest(...) / post-commit hook
325
+ |
326
+ | canonical JSON (sorted keys, ASCII-escaped, no NaN,
327
+ | signature block excluded from input)
328
+ v
329
+ IdentityProvider --> Ed25519 signature
330
+ (L1 emulated today,
331
+ SSX360 / SE050 roadmap)
332
+ |
333
+ v
334
+ signed document --> matrixscroll.verify_manifest(...)
335
+ (anyone, anywhere, offline)
336
+ ```
337
+
338
+ Switch providers with `MATRIXSCROLL_MODE`. Hardware mode includes a USB CDC
339
+ host transport preview and a mock path for CI; real SE050 signing still
340
+ depends on device firmware validation. External-key backends stay out of the
341
+ mainline until they can sign the same canonical bytes with Ed25519.
342
+
343
+ For rollout order, start with `MATRIXSCROLL_MODE=emulated` for evaluation,
344
+ layer in external Ed25519-capable signers only when they stay verifier
345
+ compatible, and treat `hardware` as the SE050 preview path until device
346
+ acceptance is complete.
347
+
348
+ ## Compliance levels
349
+
350
+ | Level | Provider | Backed by | Status |
351
+ | ----- | -------- | --------- | ------ |
352
+ | **L1** Emulated | `EmulatedProvider` | Software key, file-backed (0600) | Shipping |
353
+ | **L2** Hardware | `HardwareProvider` | NXP SE050 secure element (SSX360) | In progress |
354
+ | **L3** Attested | future | L2 + remote attestation | Roadmap |
355
+
356
+ `status()` exposes the active level via the `mode` and `available` fields.
357
+
358
+ ## Storage and trust boundaries
359
+
360
+ - Emulated key store: `~/.matrixscroll/device.json`
361
+ (override with `MATRIXSCROLL_HOME`).
362
+ - The directory is created `0700`; the seed file is opened `0600` with
363
+ `O_CREAT|O_EXCL` so the private seed is never momentarily world-readable.
364
+ - A corrupt or truncated store fails loud (`IdentityError`) rather than
365
+ silently minting a fresh identity.
366
+ - The planned hardware path holds nothing private on disk; the seed is sealed
367
+ in the secure element.
368
+
369
+ ## Reference implementation, not the only one
370
+
371
+ Matrix Scroll is a protocol. This Python package is the reference. We welcome
372
+ implementations in Rust, Go, TypeScript, and embedded C. Run them against
373
+ [`vectors/`](vectors/) to self-certify. See `CONTRIBUTING.md`.
374
+
375
+ ## Agentic AI guidance proof
376
+
377
+ The repo includes a machine-readable control matrix at
378
+ [`controls/agentic_ai_controls.json`](controls/agentic_ai_controls.json), an
379
+ example bounded-agent evidence manifest at
380
+ [`examples/agentic_ai_evidence_manifest.json`](examples/agentic_ai_evidence_manifest.json),
381
+ and executable checks in `tests/test_agentic_guidance.py`.
382
+
383
+ ## Model Context Protocol (MCP) Server
384
+
385
+ The MCP server exposes **provenance verbs only**: `create_envelope`, `verify_envelope`,
386
+ `verify_pr_range`, `publish_notes`, `status`, and `audit_export`.
387
+
388
+ Install and register in Cursor / Claude Desktop / VS Code:
389
+
390
+ ```bash
391
+ pip install "matrixscroll[mcp]==0.3.0"
392
+ matrixscroll-mcp # stdio
393
+ ```
394
+
395
+ See the [Install — MCP server](#install--mcp-server-headline-path) section above for
396
+ the recommended `mcp.json` snippet.
397
+
398
+ ## License
399
+
400
+ - Code: **Apache-2.0** (`LICENSE`).
401
+ - Specification text (`SPEC.md`, `vectors/`): **CC0 1.0** - public domain.
402
+
403
+ ## Security
404
+
405
+ See [`SECURITY.md`](SECURITY.md). Report vulnerabilities privately to
406
+ **security@matrixscroll.com** or via a GitHub Security Advisory.
407
+
408
+ ---
409
+
410
+ **Protocol:** https://matrixscroll.com · **Verify:** https://matrixscroll.com/verify/
411
+ **Control plane:** https://ssx360.com · **Pilot:** mission@ssx360.com · **Sign in:** https://ssx360.com/signup