matrixscroll 0.6.1__tar.gz → 0.6.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/.gitignore +27 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/CHANGELOG.md +69 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/CONTRIBUTING.md +16 -2
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/PKG-INFO +141 -99
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/README.md +132 -89
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/SECURITY.md +2 -2
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/ADOPTER_KIT.md +9 -5
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/COMPARISON.md +1 -2
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/CRYPTO_ROADMAP.md +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/DOCTRINE.md +60 -60
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/FIVE_MINUTES.md +3 -3
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/HERO_DEMO.md +3 -3
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/POC2_AUDIT.md +2 -2
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/ROADMAP_2026-07.md +2 -2
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/SECURITY_PROPERTIES.md +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/SOFTWARE_PRODUCTS.md +5 -5
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/WHITEPAPER.md +5 -5
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/commercial/PLATFORM_PIVOT.md +2 -2
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/commercial/SCROLL_GATE_V2.md +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/commercial/SSX360_SCROLL.md +1 -1
- matrixscroll-0.6.3/docs/explanation/actor-attribution.md +77 -0
- matrixscroll-0.6.3/docs/explanation/ap2.md +74 -0
- matrixscroll-0.6.3/docs/explanation/commit-time-vs-artifact-time.md +78 -0
- matrixscroll-0.6.3/docs/explanation/style-supplement.md +123 -0
- matrixscroll-0.6.3/docs/explanation/trust-boundaries.md +85 -0
- matrixscroll-0.6.3/docs/explanation/writing-workflow.md +100 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/hardware-provider.md +2 -2
- matrixscroll-0.6.3/docs/how-to/gate-protected-branch.md +109 -0
- matrixscroll-0.6.3/docs/how-to/publish-git-notes.md +53 -0
- matrixscroll-0.6.3/docs/how-to/scan-mcp-server.md +57 -0
- matrixscroll-0.6.3/docs/index.md +70 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/quickstart-agent.md +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/quickstart-claude-code.md +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/quickstart-git.md +9 -9
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/quickstart-mcp.md +2 -2
- matrixscroll-0.6.3/docs/reference/cli.md +82 -0
- matrixscroll-0.6.3/docs/reference/commit-envelope.md +45 -0
- matrixscroll-0.6.3/docs/reference/exit-codes.md +38 -0
- matrixscroll-0.6.3/docs/reference/python-api.md +56 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/registries-guide.md +13 -14
- matrixscroll-0.6.3/docs/requirements.txt +9 -0
- matrixscroll-0.6.3/docs/tutorial/first-commit.md +133 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/yubikey-bridge.md +5 -5
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/yubikey-smoke.md +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/ci/protected-branch.yml +6 -6
- matrixscroll-0.6.3/examples/mcp/matrixscroll-mcp.signed.json +81 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/__init__.py +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/agent_trace.py +90 -90
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/formal.py +11 -4
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/git.py +51 -2
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/se050_transport.py +1 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/pyproject.toml +13 -10
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_agent_trace.py +55 -55
- matrixscroll-0.6.3/tests/test_formal_specs.py +84 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_git_envelope.py +62 -1
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_release_metadata.py +21 -3
- matrixscroll-0.6.1/docs/ADOPTION.md +0 -13
- matrixscroll-0.6.1/docs/SHOW-HN-MCP-TRUST-LAUNCH.md +0 -151
- matrixscroll-0.6.1/tests/test_formal_specs.py +0 -40
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/LICENSE +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/SPEC.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/controls/agentic_ai_controls.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/AGENTIC_AI_SECURITY.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/AIMS_INTEROP.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/CI_HARD_GATE.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/CRYPTO_BACKEND.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/GITTUF_INTEROP.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/GIT_AI_NOTES_INTEROP.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/OPENSSF_SANDBOX_DECISION.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/SE050_POC_SCOPE.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/SE050_USB_PROTOCOL.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/SLSA_SOURCE_TRACK_MAPPING.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/commercial/README.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/delegation-attestation-rfc.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/rekor-guac-bridge-design.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/agentic_ai_evidence_manifest.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/commit-envelope.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/commit-envelope.signed.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/demo/agent-commit-demo.sh +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/demo/generate_signed_examples.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/demo/hero-self-attestation-demo.sh +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/demo/mcp-rugpull-demo.cast +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/demo/mcp-rugpull-demo.gif +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/demo/mcp-rugpull-demo.sh +0 -0
- /matrixscroll-0.6.1/examples/mcp/matrixscroll-mcp.signed.json → /matrixscroll-0.6.3/examples/mcp/matrixscroll-mcp.baseline.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/mcp/matrixscroll-mcp.manifest.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/release-manifest.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/release-manifest.signed.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/examples/trusted-keys-policy.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/_claim.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/_core.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/_payment.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/canonical.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/cli.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/cloud/__init__.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/cloud/client.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/constants.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/crypto_backend.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/errors.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/gate.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/guac_export.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/hooks/post-commit +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/hooks/pre-push +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/manifest.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/mcp.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/mcp_core.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/mcp_trust.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/policy.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/pqc.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/provenance/__init__.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/provenance/actions.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/__init__.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/base.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/emulated.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/hardware.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/registry.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/tpm.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/providers/yubikey.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/py.typed +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/rekor_publish.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/scroll/README.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/scroll/__init__.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/matrixscroll/ssx360_cli.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/schemas/action-envelope.v1.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/schemas/commit-envelope.v1.1.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/schemas/commit-envelope.v1.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/schemas/evidence-pack.v1.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/schemas/pqc-signature.v1.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/schemas/release-manifest.v1.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/schemas/ssx360.mcp-manifest.v1.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/__init__.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/fixtures/github-gpgsig-commit.txt +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/fixtures/mcp-tools-sample.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_agentic_guidance.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_canonical.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_canonical_pqc.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_cli.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_core.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_crypto_backend.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_gate.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_guac_rekor.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_mcp_core.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_mcp_server.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_mcp_trust.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_policy.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_pqc.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_provenance.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_se050_transport.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_security_properties.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_ssx360_cli.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_tpm_provider.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_vectors.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/tests/test_yubikey_provider.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/README.md +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/_fixture_key.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/_generate.py +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/tampered_algorithm.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/tampered_device_id.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/tampered_field.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/tampered_nested.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/tampered_public_key.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/tampered_schema.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/tampered_signature.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/unsigned_empty_block.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/unsigned_no_block.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/valid_commit_envelope.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/valid_nested.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/vectors/valid_simple.json +0 -0
- {matrixscroll-0.6.1 → matrixscroll-0.6.3}/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,73 @@ 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
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.6.3] - 2026-08-10
|
|
10
|
+
|
|
11
|
+
Repository layout and documentation. No code, CLI or wire-format changes.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **The Matrix Scroll Verify action now lives in this repo** at
|
|
15
|
+
[`.github/actions/verify`](.github/actions/verify), and the reusable MCP
|
|
16
|
+
manifest gate at `.github/workflows/mcp-manifest-gate.yml`. Both were
|
|
17
|
+
published from the separate `SSX360/matrixscroll-verify-action` repository,
|
|
18
|
+
which is now archived. Inputs, outputs and exit codes are unchanged.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- **Call sites move to the new reference.** Replace
|
|
22
|
+
`SSX360/matrixscroll-verify-action@v1` with
|
|
23
|
+
`SSX360/matrixscroll/.github/actions/verify@action-v1`, and
|
|
24
|
+
`SSX360/matrixscroll-verify-action/.github/workflows/mcp-manifest-gate.yml@main`
|
|
25
|
+
with `SSX360/matrixscroll/.github/workflows/mcp-manifest-gate.yml@action-v1`.
|
|
26
|
+
The `action-v1` tag tracks the current action release line and is separate
|
|
27
|
+
from the SDK's `v0.6.x` tags.
|
|
28
|
+
- The reusable MCP gate now defaults `matrixscroll_version` to `0.6.3`, matching
|
|
29
|
+
the action default and the published PyPI release. It runs on `workflow_call`
|
|
30
|
+
and `workflow_dispatch` only, so it does not add a job to every SDK pull
|
|
31
|
+
request.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
- **PyPI dropped every relative link in the README.** Its sanitiser removes any
|
|
35
|
+
`href` it cannot resolve, so 17 documentation links arrived on the project
|
|
36
|
+
page as plain text and the MCP rug-pull demo GIF arrived as its alt text,
|
|
37
|
+
leaving that section without its only visual. All of them are absolute
|
|
38
|
+
`github.com` and `raw.githubusercontent.com` URLs now.
|
|
39
|
+
- **Three README links promised a tamper demo at a page that redirects.**
|
|
40
|
+
`matrixscroll.com/try` routes to `/docs/`. The demo is the browser verifier
|
|
41
|
+
at `/verify/`, which carries the Tamper sample control, so the inline links
|
|
42
|
+
point there. The `Try it` entry under Public proof links repeated the
|
|
43
|
+
verifier line above it and is now the MCP Trust Scanner at `/scan/`.
|
|
44
|
+
- **`SECURITY.md` offered support for 0.2.x and 0.1.x.** A reader installing
|
|
45
|
+
the published release found their version missing from the table on the page
|
|
46
|
+
the PyPI sidebar links as the security policy.
|
|
47
|
+
|
|
48
|
+
## [0.6.2] - 2026-08-03
|
|
49
|
+
|
|
50
|
+
Documentation and packaging metadata only. No code, CLI or wire-format changes,
|
|
51
|
+
and no new dependencies.
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
- **Packaging URLs pointed at pages that had moved or gone.** `Documentation` and
|
|
55
|
+
`Verifier` routed through `ssx360.com` redirects that land on
|
|
56
|
+
`matrixscroll.com`, `Reference Device` pointed at a culled `/hardware` page,
|
|
57
|
+
and `Compare` duplicated `Documentation`. Every link now resolves directly, and
|
|
58
|
+
`Homepage` is the protocol site rather than the maintainer's.
|
|
59
|
+
- **The README described a hosted control plane with billing.** SSX360 is an
|
|
60
|
+
independent audit practice that sells assessments, not a platform, so the
|
|
61
|
+
README now says who maintains the protocol and why that separation exists. The
|
|
62
|
+
links to the retired `/enterprise`, `/signup` and `/compare` pages are gone.
|
|
63
|
+
|
|
64
|
+
### Documentation
|
|
65
|
+
- **State the post-quantum limit where people actually read it.** The summary and
|
|
66
|
+
keywords claim FIPS 204 and FIPS 205, but nothing on the PyPI page said the
|
|
67
|
+
overlay is an algorithm implementation through liboqs rather than a
|
|
68
|
+
CMVP-validated module, or repeated liboqs's own warning against production use.
|
|
69
|
+
Honest limits now carries both.
|
|
70
|
+
- Summary rewritten to lead with what the protocol does rather than the hardware
|
|
71
|
+
signing path, which is a bench prototype and not a product.
|
|
72
|
+
- Install pin `matrixscroll==0.6.2`.
|
|
73
|
+
|
|
7
74
|
## [0.6.1] - 2026-07-22
|
|
8
75
|
|
|
9
76
|
### Documentation
|
|
@@ -245,6 +312,8 @@ Initial public release. Extracted from the SSX360 reference implementation.
|
|
|
245
312
|
- Device id format: `MS-XXXX-XXXX` (SHA-256 of the raw public key, first 8 hex
|
|
246
313
|
chars, uppercase).
|
|
247
314
|
|
|
315
|
+
[0.6.3]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.3
|
|
316
|
+
[0.6.2]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.2
|
|
248
317
|
[0.6.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.1
|
|
249
318
|
[0.6.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.6.0
|
|
250
319
|
[0.5.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.5.1
|
|
@@ -35,13 +35,27 @@ For PRs that include agent-assisted commits, publish signed commit envelopes to
|
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
matrixscroll hook-install
|
|
38
|
-
export MATRIXSCROLL_ACTOR_TYPE=agent # or human / ci as appropriate
|
|
39
|
-
export MATRIXSCROLL_TOOL=agent-runner # or your editor / agent tool name
|
|
40
38
|
git commit -m "feat: your change"
|
|
41
39
|
matrixscroll envelope-publish-notes --base origin/main --head HEAD
|
|
42
40
|
git push origin refs/notes/matrixscroll
|
|
43
41
|
```
|
|
44
42
|
|
|
43
|
+
`actor_type` and `tool` are detected from the environment. A commit made in a
|
|
44
|
+
Cursor, Claude Code, Aider, Codex, or Devin session is recorded as `agent` with
|
|
45
|
+
that tool; a commit made by a CI runner is recorded as `ci`. Everything else is
|
|
46
|
+
`human` and `git-cli`.
|
|
47
|
+
|
|
48
|
+
Set `MATRIXSCROLL_ACTOR_TYPE` and `MATRIXSCROLL_TOOL` only when the detection
|
|
49
|
+
list does not cover your agent runner, and only to describe what actually made
|
|
50
|
+
the commit. Never set `MATRIXSCROLL_ACTOR_TYPE=human` inside an agent session.
|
|
51
|
+
The envelope exists to record who wrote a change. A signed envelope carrying the
|
|
52
|
+
wrong actor is the exact falsification this project detects.
|
|
53
|
+
|
|
54
|
+
Detection and its limits are covered in
|
|
55
|
+
[`docs/explanation/actor-attribution.md`](docs/explanation/actor-attribution.md),
|
|
56
|
+
which also explains why envelopes already published with the wrong actor are
|
|
57
|
+
left in place.
|
|
58
|
+
|
|
45
59
|
CI verifies the PR range with `matrixscroll envelope-verify-range --source notes`.
|
|
46
60
|
Until repository variable `ENFORCE_PROVENANCE=true` is set, missing notes produce a **warning**
|
|
47
61
|
in the GitHub Step Summary rather than a hard failure.
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: matrixscroll
|
|
3
|
-
Version: 0.6.
|
|
4
|
-
Summary:
|
|
5
|
-
Project-URL: Homepage, https://
|
|
6
|
-
Project-URL: Documentation, https://
|
|
3
|
+
Version: 0.6.3
|
|
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
|
-
Project-URL: GitHub Action, https://github.com/SSX360/matrixscroll
|
|
18
|
-
Project-URL: PyPI Provenance, https://pypi.org/project/matrixscroll/0.6.1/
|
|
19
|
-
Project-URL: Reference Device, https://ssx360.com/hardware
|
|
16
|
+
Project-URL: GitHub Action, https://github.com/SSX360/matrixscroll/tree/main/.github/actions/verify
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
**Codebase direction:** [`docs/DOCTRINE.md`](docs/DOCTRINE.md)
|
|
60
|
+
Signed provenance for agent-assisted Git commits, with offline Ed25519 verification.
|
|
64
61
|
|
|
65
62
|
[](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
|
|
66
|
-
[](https://pypi.org/project/matrixscroll/)
|
|
64
|
+
[](https://pypi.org/project/matrixscroll/)
|
|
65
|
+
[](https://github.com/SSX360/matrixscroll/blob/main/LICENSE)
|
|
68
66
|
|
|
69
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
77
|
+
**Try it:** [matrixscroll.com/verify](https://matrixscroll.com/verify/) runs an offline
|
|
78
|
+
tamper demo in the browser. **Codebase direction:** [`docs/DOCTRINE.md`](https://github.com/SSX360/matrixscroll/blob/main/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](https://github.com/SSX360/matrixscroll/blob/main/formal/README.md).
|
|
79
81
|
|
|
80
|
-
**Authorization ladder:** L1 Code (commits)
|
|
82
|
+
**Authorization ladder:** L1 Code (commits), L2 Tools (MCP manifests), L3 Actions (agent runs), L4 Money (AP2, demo), L5 Silicon (2029+)
|
|
81
83
|
|
|
82
|
-
**
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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)
|
|
93
|
-
- **PCI DSS 4.0 Req 6.5 (Mar 2025)
|
|
94
|
-
- **US Treasury FS-AI RMF (Feb 2026)
|
|
95
|
-
- **NIST SSDF
|
|
96
|
-
- **EU AI Act Article 12
|
|
97
|
-
- **Five Eyes Agentic AI guidance (Apr 2026)
|
|
94
|
+
- **DORA (Jan 2025)**: ICT change-management evidence for software changes.
|
|
95
|
+
- **PCI DSS 4.0 Req 6.5 (Mar 2025)**: change-control evidence for custom software.
|
|
96
|
+
- **US Treasury FS-AI RMF (Feb 2026)**: traceability for agent actions in financial software.
|
|
97
|
+
- **NIST SSDF**: provenance, change authorization, and release gate review.
|
|
98
|
+
- **EU AI Act Article 12**: record-keeping readiness (high-risk obligations Dec 2027), not a live mandate claim.
|
|
99
|
+
- **Five Eyes Agentic AI guidance (Apr 2026)**: linked crosswalk only: [`controls/agentic_ai_controls.json`](https://github.com/SSX360/matrixscroll/blob/main/controls/agentic_ai_controls.json)
|
|
98
100
|
|
|
99
|
-
POC 2 audit readiness: [`docs/POC2_AUDIT.md`](docs/POC2_AUDIT.md)
|
|
101
|
+
POC 2 audit readiness: [`docs/POC2_AUDIT.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/POC2_AUDIT.md)
|
|
100
102
|
|
|
101
|
-
## Install
|
|
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.
|
|
118
|
-
matrixscroll-mcp # stdio
|
|
119
|
+
pip install "matrixscroll[mcp]==0.6.3"
|
|
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
|
|
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
|
|
129
|
+
### MCP Trust Scanner: catch a rug-pull in 60 seconds
|
|
128
130
|
|
|
129
|
-

|
|
131
|
+

|
|
130
132
|
|
|
131
|
-
[Watch on asciinema](https://asciinema.org/a/rbCRkIcZnjNWmqZF) · cast file: [`examples/demo/mcp-rugpull-demo.cast`](examples/demo/mcp-rugpull-demo.cast)
|
|
133
|
+
[Watch on asciinema](https://asciinema.org/a/rbCRkIcZnjNWmqZF) · cast file: [`examples/demo/mcp-rugpull-demo.cast`](https://github.com/SSX360/matrixscroll/blob/main/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
|
-
|
|
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.
|
|
139
|
+
pip install "matrixscroll==0.6.3"
|
|
138
140
|
|
|
139
|
-
# 1. Scan a live MCP server (stdio)
|
|
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,31 +162,30 @@ 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
|
|
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
|
|
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:
|
|
170
172
|
mcp-gate:
|
|
171
|
-
uses: SSX360/matrixscroll
|
|
173
|
+
uses: SSX360/matrixscroll/.github/workflows/mcp-manifest-gate.yml@action-v1
|
|
172
174
|
with:
|
|
173
175
|
manifest: mcp/my-server.signed.json
|
|
174
176
|
baseline: mcp/my-server.baseline.json
|
|
175
|
-
matrixscroll_version: "0.6.
|
|
177
|
+
matrixscroll_version: "0.6.3"
|
|
176
178
|
```
|
|
177
179
|
|
|
178
|
-
Full scripted demo: [`examples/demo/mcp-rugpull-demo.sh`](examples/demo/mcp-rugpull-demo.sh)
|
|
179
|
-
Golden artifact (this repo's own MCP server, signed): [`examples/mcp/matrixscroll-mcp.signed.json`](examples/mcp/matrixscroll-mcp.signed.json)
|
|
180
|
-
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)
|
|
180
|
+
Full scripted demo: [`examples/demo/mcp-rugpull-demo.sh`](https://github.com/SSX360/matrixscroll/blob/main/examples/demo/mcp-rugpull-demo.sh)
|
|
181
|
+
Golden artifact (this repo's own MCP server, signed): [`examples/mcp/matrixscroll-mcp.signed.json`](https://github.com/SSX360/matrixscroll/blob/main/examples/mcp/matrixscroll-mcp.signed.json)
|
|
182
|
+
Schema (CC0): [`schemas/ssx360.mcp-manifest.v1.json`](https://github.com/SSX360/matrixscroll/blob/main/schemas/ssx360.mcp-manifest.v1.json)
|
|
183
|
+
Browser demo: [matrixscroll.com/scan](https://matrixscroll.com/scan/)
|
|
183
184
|
|
|
184
|
-
## Also available
|
|
185
|
+
## Also available: CLI and hooks
|
|
185
186
|
|
|
186
187
|
```bash
|
|
187
|
-
pip install "matrixscroll==0.6.
|
|
188
|
+
pip install "matrixscroll==0.6.3"
|
|
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
|
|
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
|
|
|
@@ -213,10 +214,10 @@ Git under the hood; governance on top. **Not a Git replacement.**
|
|
|
213
214
|
matrixscroll scroll commit -m "feat: governed commit"
|
|
214
215
|
```
|
|
215
216
|
|
|
216
|
-
See [`docs/commercial/SSX360_SCROLL.md`](docs/commercial/SSX360_SCROLL.md).
|
|
217
|
+
See [`docs/commercial/SSX360_SCROLL.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/commercial/SSX360_SCROLL.md).
|
|
217
218
|
|
|
218
|
-
See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
|
|
219
|
-
[`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
|
|
219
|
+
See [`docs/quickstart-git.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/quickstart-git.md) and
|
|
220
|
+
[`examples/demo/agent-commit-demo.sh`](https://github.com/SSX360/matrixscroll/blob/main/examples/demo/agent-commit-demo.sh).
|
|
220
221
|
|
|
221
222
|
---
|
|
222
223
|
|
|
@@ -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.
|
|
254
|
+
- Shipping now: PyPI `matrixscroll==0.6.3`, 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
|
|
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
|
|
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,20 +299,21 @@ 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
|
|
302
|
+
for pilot evaluation, not GA.
|
|
295
303
|
|
|
296
304
|
### How can I integrate Matrix Scroll into a CI/CD workflow?
|
|
297
305
|
|
|
298
306
|
Install the SDK and hooks in your repo, publish commit envelopes to
|
|
299
307
|
`refs/notes/matrixscroll` before PR review, and use
|
|
300
|
-
`SSX360/matrixscroll
|
|
301
|
-
GitHub Actions. Protected branches can then require Matrix
|
|
308
|
+
`SSX360/matrixscroll/.github/actions/verify@action-v1` to verify the full PR
|
|
309
|
+
commit range in GitHub Actions. Protected branches can then require Matrix
|
|
310
|
+
Scroll proof
|
|
302
311
|
alongside your existing scanners, branch protection, and build attestations.
|
|
303
312
|
|
|
304
313
|
## Quickstart (CLI)
|
|
305
314
|
|
|
306
315
|
```bash
|
|
307
|
-
pip install "matrixscroll==0.6.
|
|
316
|
+
pip install "matrixscroll==0.6.3"
|
|
308
317
|
matrixscroll hook-install
|
|
309
318
|
matrixscroll hook-status
|
|
310
319
|
|
|
@@ -315,10 +324,10 @@ git commit -m "feat: agent-assisted change"
|
|
|
315
324
|
matrixscroll envelope-verify "$(git rev-parse HEAD)"
|
|
316
325
|
```
|
|
317
326
|
|
|
318
|
-
**Try it in the browser:** [matrixscroll.com/
|
|
327
|
+
**Try it in the browser:** [matrixscroll.com/verify](https://matrixscroll.com/verify/)
|
|
319
328
|
|
|
320
|
-
See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
|
|
321
|
-
[`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
|
|
329
|
+
See [`docs/quickstart-git.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/quickstart-git.md) and run
|
|
330
|
+
[`examples/demo/agent-commit-demo.sh`](https://github.com/SSX360/matrixscroll/blob/main/examples/demo/agent-commit-demo.sh).
|
|
322
331
|
|
|
323
332
|
## CI verify
|
|
324
333
|
|
|
@@ -328,12 +337,12 @@ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
|
|
|
328
337
|
- uses: actions/checkout@v4
|
|
329
338
|
with:
|
|
330
339
|
fetch-depth: 0
|
|
331
|
-
- uses: SSX360/matrixscroll
|
|
340
|
+
- uses: SSX360/matrixscroll/.github/actions/verify@action-v1
|
|
332
341
|
with:
|
|
333
342
|
head-ref: ${{ github.event.pull_request.head.sha }}
|
|
334
343
|
base-ref: ${{ github.event.pull_request.base.sha }}
|
|
335
344
|
source: notes
|
|
336
|
-
matrixscroll-version: "0.6.
|
|
345
|
+
matrixscroll-version: "0.6.3"
|
|
337
346
|
require-mode: emulated
|
|
338
347
|
```
|
|
339
348
|
|
|
@@ -348,28 +357,28 @@ git push origin refs/notes/matrixscroll
|
|
|
348
357
|
- uses: actions/checkout@v4
|
|
349
358
|
with:
|
|
350
359
|
fetch-depth: 0
|
|
351
|
-
- uses: SSX360/matrixscroll
|
|
360
|
+
- uses: SSX360/matrixscroll/.github/actions/verify@action-v1
|
|
352
361
|
with:
|
|
353
362
|
head-ref: ${{ github.event.pull_request.head.sha }}
|
|
354
363
|
base-ref: ${{ github.event.pull_request.base.sha }}
|
|
355
364
|
source: notes
|
|
356
|
-
matrixscroll-version: "0.6.
|
|
365
|
+
matrixscroll-version: "0.6.3"
|
|
357
366
|
summary-output: provenance-summary.json
|
|
358
367
|
```
|
|
359
368
|
|
|
360
|
-
See [`docs/quickstart-git.md`](docs/quickstart-git.md) and
|
|
361
|
-
[`examples/ci/protected-branch.yml`](examples/ci/protected-branch.yml).
|
|
369
|
+
See [`docs/quickstart-git.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/quickstart-git.md) and
|
|
370
|
+
[`examples/ci/protected-branch.yml`](https://github.com/SSX360/matrixscroll/blob/main/examples/ci/protected-branch.yml).
|
|
362
371
|
|
|
363
372
|
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.
|
|
373
|
+
ship in the current release line; examples in this README pin `0.6.3`.
|
|
365
374
|
|
|
366
375
|
## Security: Ed25519 via cryptography
|
|
367
376
|
|
|
368
377
|
Ed25519 signing, verification, and key generation use the [`cryptography`](https://pypi.org/project/cryptography/)
|
|
369
378
|
package (required dependency, `>=42.0`). Official wheels ship native crypto
|
|
370
|
-
backends (OpenSSL + Rust components)
|
|
379
|
+
backends (OpenSSL + Rust components), so no Rust toolchain for users. All
|
|
371
380
|
primitives are centralized in `matrixscroll/crypto_backend.py`; see
|
|
372
|
-
[`docs/CRYPTO_BACKEND.md`](docs/CRYPTO_BACKEND.md).
|
|
381
|
+
[`docs/CRYPTO_BACKEND.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/CRYPTO_BACKEND.md).
|
|
373
382
|
|
|
374
383
|
## Why it is different from Sigstore
|
|
375
384
|
|
|
@@ -384,23 +393,23 @@ when they preserve the same pure Ed25519 byte contract.
|
|
|
384
393
|
|
|
385
394
|
## Public proof links
|
|
386
395
|
|
|
387
|
-
- Browser verifier: <https://matrixscroll.com/verify
|
|
388
|
-
-
|
|
389
|
-
-
|
|
390
|
-
- Documentation: <https://matrixscroll.com/docs>
|
|
396
|
+
- Browser verifier: <https://matrixscroll.com/verify/>
|
|
397
|
+
- MCP Trust Scanner (browser, offline): <https://matrixscroll.com/scan/>
|
|
398
|
+
- Documentation: <https://matrixscroll.com/docs/>
|
|
391
399
|
- Specification: [`SPEC.md`](https://github.com/SSX360/matrixscroll/blob/main/SPEC.md)
|
|
392
400
|
- Commit envelope schema: [`schemas/commit-envelope.v1.json`](https://github.com/SSX360/matrixscroll/blob/main/schemas/commit-envelope.v1.json)
|
|
393
|
-
- Whitepaper: [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md)
|
|
401
|
+
- Whitepaper: [`docs/WHITEPAPER.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/WHITEPAPER.md)
|
|
394
402
|
- Conformance vectors: [`vectors/`](https://github.com/SSX360/matrixscroll/tree/main/vectors/)
|
|
395
|
-
- GitHub Action: <https://github.com/SSX360/matrixscroll
|
|
403
|
+
- GitHub Action: <https://github.com/SSX360/matrixscroll/tree/main/.github/actions/verify>
|
|
396
404
|
- 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> ·
|
|
398
|
-
-
|
|
405
|
+
- Site: <https://matrixscroll.com> · Browser verifier: <https://matrixscroll.com/verify/>
|
|
406
|
+
- Hardware prototype status: [`docs/hardware-provider.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/hardware-provider.md) (bench-validated; not GA)
|
|
407
|
+
- Maintainer, and how independence is kept: <https://ssx360.com/about>
|
|
399
408
|
|
|
400
409
|
## Python API
|
|
401
410
|
|
|
402
411
|
```bash
|
|
403
|
-
pip install "matrixscroll==0.6.
|
|
412
|
+
pip install "matrixscroll==0.6.3"
|
|
404
413
|
```
|
|
405
414
|
|
|
406
415
|
```python
|
|
@@ -450,7 +459,7 @@ matrixscroll.sign_manifest(...) / post-commit hook
|
|
|
450
459
|
v
|
|
451
460
|
IdentityProvider --> Ed25519 signature
|
|
452
461
|
(L1 emulated today,
|
|
453
|
-
SSX360 / SE050 prototype
|
|
462
|
+
SSX360 / SE050 prototype, bench-validated)
|
|
454
463
|
|
|
|
455
464
|
v
|
|
456
465
|
signed document --> matrixscroll.verify_manifest(...)
|
|
@@ -467,7 +476,7 @@ canonical bytes with Ed25519.
|
|
|
467
476
|
For rollout order, start with `MATRIXSCROLL_MODE=emulated` for evaluation,
|
|
468
477
|
layer in external Ed25519-capable signers only when they stay verifier
|
|
469
478
|
compatible, and treat `hardware` as the SE050 prototype path for pilot
|
|
470
|
-
evaluation
|
|
479
|
+
evaluation, not GA.
|
|
471
480
|
|
|
472
481
|
## Compliance levels
|
|
473
482
|
|
|
@@ -499,9 +508,9 @@ implementations in Rust, Go, TypeScript, and embedded C. Run them against
|
|
|
499
508
|
## Agentic AI guidance proof
|
|
500
509
|
|
|
501
510
|
The repo includes a machine-readable control matrix at
|
|
502
|
-
[`controls/agentic_ai_controls.json`](controls/agentic_ai_controls.json), an
|
|
511
|
+
[`controls/agentic_ai_controls.json`](https://github.com/SSX360/matrixscroll/blob/main/controls/agentic_ai_controls.json), an
|
|
503
512
|
example bounded-agent evidence manifest at
|
|
504
|
-
[`examples/agentic_ai_evidence_manifest.json`](examples/agentic_ai_evidence_manifest.json),
|
|
513
|
+
[`examples/agentic_ai_evidence_manifest.json`](https://github.com/SSX360/matrixscroll/blob/main/examples/agentic_ai_evidence_manifest.json),
|
|
505
514
|
and executable checks in `tests/test_agentic_guidance.py`.
|
|
506
515
|
|
|
507
516
|
## Model Context Protocol (MCP) Server
|
|
@@ -513,11 +522,11 @@ The MCP server exposes **provenance verbs** (`create_envelope`, `verify_envelope
|
|
|
513
522
|
Install and register in Cursor / Claude Desktop / VS Code:
|
|
514
523
|
|
|
515
524
|
```bash
|
|
516
|
-
pip install "matrixscroll[mcp]==0.6.
|
|
525
|
+
pip install "matrixscroll[mcp]==0.6.3"
|
|
517
526
|
matrixscroll-mcp # stdio
|
|
518
527
|
```
|
|
519
528
|
|
|
520
|
-
See the [Install
|
|
529
|
+
See the [Install the MCP server](#install-the-mcp-server-headline-path) section above for
|
|
521
530
|
the recommended `mcp.json` snippet.
|
|
522
531
|
|
|
523
532
|
## License
|
|
@@ -525,13 +534,46 @@ the recommended `mcp.json` snippet.
|
|
|
525
534
|
- Code: **Apache-2.0** (`LICENSE`).
|
|
526
535
|
- Specification text (`SPEC.md`, `vectors/`): **CC0 1.0** - public domain.
|
|
527
536
|
|
|
537
|
+
## Verify this release
|
|
538
|
+
|
|
539
|
+
Every release is published from GitHub Actions through PyPI Trusted Publishing,
|
|
540
|
+
and every file carries a PEP 740 attestation recorded in the Sigstore
|
|
541
|
+
transparency log. You do not have to take our word for who built the wheel; you
|
|
542
|
+
can check it.
|
|
543
|
+
|
|
544
|
+
Ask PyPI directly:
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
curl -H "Accept: application/vnd.pypi.integrity.v1+json" \
|
|
548
|
+
https://pypi.org/integrity/matrixscroll/0.6.3/matrixscroll-0.6.3-py3-none-any.whl/provenance
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
The response names the publisher, and it should say exactly this:
|
|
552
|
+
|
|
553
|
+
```json
|
|
554
|
+
{"kind": "GitHub", "repository": "SSX360/matrixscroll",
|
|
555
|
+
"workflow": "publish.yml", "environment": "pypi"}
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
Transparency-log entry for the 0.6.2 wheel: log index `2215985472`. If the
|
|
559
|
+
publisher, the workflow, or the digest differs from what you expect, do not
|
|
560
|
+
install the file.
|
|
561
|
+
|
|
562
|
+
The human-readable view is on the
|
|
563
|
+
[PyPI project page](https://pypi.org/project/matrixscroll/0.6.3/), where files
|
|
564
|
+
built with attestations are marked as verified.
|
|
565
|
+
|
|
566
|
+
This matters more here than for most packages. A tool that sells offline
|
|
567
|
+
verifiability should be verifiable by the same standard it asks of everyone
|
|
568
|
+
else.
|
|
569
|
+
|
|
528
570
|
## Security
|
|
529
571
|
|
|
530
|
-
See [`SECURITY.md`](SECURITY.md) and [`docs/SECURITY_PROPERTIES.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/SECURITY_PROPERTIES.md).
|
|
572
|
+
See [`SECURITY.md`](https://github.com/SSX360/matrixscroll/blob/main/SECURITY.md) and [`docs/SECURITY_PROPERTIES.md`](https://github.com/SSX360/matrixscroll/blob/main/docs/SECURITY_PROPERTIES.md).
|
|
531
573
|
Report vulnerabilities privately to
|
|
532
574
|
**security@matrixscroll.com** or via a GitHub Security Advisory.
|
|
533
575
|
|
|
534
576
|
---
|
|
535
577
|
|
|
536
|
-
**
|
|
537
|
-
**
|
|
578
|
+
**Docs:** https://matrixscroll.com/docs/ · **Spec:** https://matrixscroll.com/spec/ · **Verify:** https://matrixscroll.com/verify/
|
|
579
|
+
**Maintainer:** https://ssx360.com/about · **Contact:** mission@ssx360.com
|