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.
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/.gitignore +1 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/CHANGELOG.md +60 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/PKG-INFO +22 -20
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/README.md +10 -10
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/SECURITY.md +3 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/SPEC.md +23 -6
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/ADOPTER_KIT.md +5 -5
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/COMMIT_TIME_VS_ARTIFACT_TIME.md +1 -1
- matrixscroll-0.7.0/docs/COMPARISON.md +47 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/CRYPTO_ROADMAP.md +1 -1
- matrixscroll-0.7.0/docs/DOCTRINE.md +56 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/FIVE_MINUTES.md +2 -2
- matrixscroll-0.7.0/docs/POC2_AUDIT.md +52 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/ROADMAP_2026-07.md +2 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SECURITY_PROPERTIES.md +1 -1
- matrixscroll-0.7.0/docs/SLSA_SOURCE_TRACK_MAPPING.md +26 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SOFTWARE_PRODUCTS.md +3 -3
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/WHITEPAPER.md +18 -18
- matrixscroll-0.7.0/docs/commercial/README.md +20 -0
- matrixscroll-0.7.0/docs/commercial/SCROLL_GATE_V2.md +55 -0
- matrixscroll-0.7.0/docs/commercial/SSX360_SCROLL.md +34 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/delegation-attestation-rfc.md +1 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/ap2.md +2 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/style-supplement.md +7 -6
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/hardware-provider.md +16 -3
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/how-to/gate-protected-branch.md +2 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/how-to/scan-mcp-server.md +1 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/index.md +6 -6
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/quickstart-agent.md +1 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/quickstart-claude-code.md +1 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/quickstart-git.md +4 -4
- matrixscroll-0.7.0/docs/quickstart-mcp.md +64 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/cli.md +21 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/exit-codes.md +15 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/registries-guide.md +1 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/requirements.txt +2 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/tutorial/first-commit.md +1 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/ci/protected-branch.yml +3 -3
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/__init__.py +1 -1
- matrixscroll-0.7.0/matrixscroll/_schemas.py +34 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/cli.py +34 -17
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/cloud/__init__.py +0 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/cloud/client.py +6 -7
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/formal.py +1 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/gate.py +81 -19
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/mcp.py +47 -18
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/mcp_core.py +19 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/se050_transport.py +1 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/ssx360_cli.py +119 -33
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/pyproject.toml +22 -11
- matrixscroll-0.7.0/schemas/ssx360.evidence-pack.v1.json +64 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_cli.py +93 -0
- matrixscroll-0.7.0/tests/test_evidence_pack_export.py +333 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_formal_specs.py +8 -5
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_gate.py +89 -2
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_mcp_core.py +5 -1
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_mcp_server.py +83 -0
- matrixscroll-0.7.0/tests/test_no_monetization_surface.py +72 -0
- matrixscroll-0.7.0/tests/test_release_metadata.py +158 -0
- matrixscroll-0.7.0/tests/test_se050_acceptance_vectors.py +56 -0
- matrixscroll-0.7.0/tests/test_verify_action_parser.py +480 -0
- matrixscroll-0.7.0/tests/test_verify_action_step.py +352 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/README.md +3 -0
- matrixscroll-0.7.0/vectors/se050/README.md +35 -0
- matrixscroll-0.7.0/vectors/se050/vector_01.json +16 -0
- matrixscroll-0.6.4/docs/COMPARISON.md +0 -83
- matrixscroll-0.6.4/docs/DOCTRINE.md +0 -60
- matrixscroll-0.6.4/docs/POC2_AUDIT.md +0 -61
- matrixscroll-0.6.4/docs/SLSA_SOURCE_TRACK_MAPPING.md +0 -34
- matrixscroll-0.6.4/docs/commercial/PLATFORM_PIVOT.md +0 -62
- matrixscroll-0.6.4/docs/commercial/README.md +0 -13
- matrixscroll-0.6.4/docs/commercial/SCROLL_GATE_V2.md +0 -81
- matrixscroll-0.6.4/docs/commercial/SSX360_SCROLL.md +0 -31
- matrixscroll-0.6.4/docs/quickstart-mcp.md +0 -62
- matrixscroll-0.6.4/matrixscroll/_claim.py +0 -96
- matrixscroll-0.6.4/tests/test_release_metadata.py +0 -60
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/CONTRIBUTING.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/LICENSE +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/controls/agentic_ai_controls.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/AGENTIC_AI_SECURITY.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/AIMS_INTEROP.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/CI_HARD_GATE.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/CRYPTO_BACKEND.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/GITTUF_INTEROP.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/GIT_AI_NOTES_INTEROP.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/HERO_DEMO.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/OPENSSF_SANDBOX_DECISION.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SE050_POC_SCOPE.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/SE050_USB_PROTOCOL.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/actor-attribution.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/commit-time-vs-artifact-time.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/trust-boundaries.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/explanation/writing-workflow.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/how-to/publish-git-notes.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/images/ssx360-usb-signer-architecture.jpg +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/images/ssx360-usb-signer-round-trip.jpg +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/images/ssx360-usb-signer.jpg +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/commit-envelope.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/reference/python-api.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/rekor-guac-bridge-design.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/superpowers/plans/2026-06-19-ci-action-plan.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/yubikey-bridge.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/docs/yubikey-smoke.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/agentic_ai_evidence_manifest.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/agentic_ai_evidence_manifest.signed.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/commit-envelope.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/commit-envelope.signed.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/agent-commit-demo.sh +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/generate_signed_examples.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/hero-self-attestation-demo.sh +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/mcp-rugpull-demo.cast +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/mcp-rugpull-demo.gif +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/demo/mcp-rugpull-demo.sh +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/mcp/matrixscroll-mcp.baseline.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/mcp/matrixscroll-mcp.manifest.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/mcp/matrixscroll-mcp.signed.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/release-manifest.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/release-manifest.signed.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/examples/trusted-keys-policy.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/_core.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/_payment.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/agent_trace.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/canonical.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/constants.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/crypto_backend.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/errors.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/git.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/guac_export.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/hooks/post-commit +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/hooks/pre-push +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/manifest.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/mcp_trust.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/policy.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/pqc.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/provenance/__init__.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/provenance/actions.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/__init__.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/base.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/emulated.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/hardware.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/registry.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/tpm.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/providers/yubikey.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/py.typed +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/rekor_publish.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/scroll/README.md +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/matrixscroll/scroll/__init__.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/action-envelope.v1.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/commit-envelope.v1.1.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/commit-envelope.v1.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/evidence-pack.v1.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/pqc-signature.v1.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/release-manifest.v1.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/schemas/ssx360.mcp-manifest.v1.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/__init__.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/fixtures/github-gpgsig-commit.txt +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/fixtures/mcp-tools-sample.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_agent_trace.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_agentic_guidance.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_canonical.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_canonical_pqc.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_core.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_crypto_backend.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_git_envelope.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_guac_rekor.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_mcp_trust.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_policy.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_pqc.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_provenance.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_se050_transport.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_security_properties.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_ssx360_cli.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_tpm_provider.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_vectors.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/tests/test_yubikey_provider.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/_fixture_key.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/_generate.py +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_algorithm.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_device_id.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_field.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_nested.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_public_key.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_schema.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/tampered_signature.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/unsigned_empty_block.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/unsigned_no_block.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_commit_envelope.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_nested.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_simple.json +0 -0
- {matrixscroll-0.6.4 → matrixscroll-0.7.0}/vectors/valid_unicode.json +0 -0
|
@@ -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.
|
|
4
|
-
Summary: MCP server for signed
|
|
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:
|
|
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.
|
|
44
|
-
Requires-Dist:
|
|
45
|
-
Requires-Dist: pytest>=7.
|
|
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.
|
|
52
|
+
Requires-Dist: mcp<2.0.0,>=1.28.0; extra == 'mcp'
|
|
51
53
|
Provides-Extra: pqc
|
|
52
|
-
Requires-Dist: liboqs-python>=0.
|
|
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.
|
|
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
|
|
62
|
+
Model Context Protocol server for signed machine-action records and offline tool-surface verification.
|
|
61
63
|
|
|
62
64
|
[](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
|
|
63
65
|
[](https://pypi.org/project/matrixscroll/)
|
|
64
66
|
[](https://pypi.org/project/matrixscroll/)
|
|
65
67
|
[](https://github.com/SSX360/matrixscroll/blob/main/LICENSE)
|
|
66
68
|
|
|
67
|
-
An MCP server can change its tool descriptions or input schemas after
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
3
|
+
Model Context Protocol server for signed machine-action records and offline tool-surface verification.
|
|
4
4
|
|
|
5
5
|
[](https://github.com/SSX360/matrixscroll/actions/workflows/ci-unit.yml)
|
|
6
6
|
[](https://pypi.org/project/matrixscroll/)
|
|
7
7
|
[](https://pypi.org/project/matrixscroll/)
|
|
8
8
|
[](https://github.com/SSX360/matrixscroll/blob/main/LICENSE)
|
|
9
9
|
|
|
10
|
-
An MCP server can change its tool descriptions or input schemas after
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
44
|
-
| 0.
|
|
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
|
-
-
|
|
18
|
-
|
|
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
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
|
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.
|
|
14
|
+
1. Install `matrixscroll==0.7.0` in one repo.
|
|
15
15
|
2. Run `matrixscroll hook-install`.
|
|
16
|
-
3. Make one
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|