matrixscroll 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. matrixscroll-0.2.0/CHANGELOG.md +73 -0
  2. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/CONTRIBUTING.md +2 -2
  3. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/PKG-INFO +47 -12
  4. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/README.md +43 -10
  5. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/controls/agentic_ai_controls.json +7 -5
  6. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/docs/AGENTIC_AI_SECURITY.md +8 -8
  7. matrixscroll-0.2.0/docs/hardware-provider.md +20 -0
  8. matrixscroll-0.2.0/docs/quickstart-git.md +61 -0
  9. matrixscroll-0.2.0/docs/superpowers/plans/2026-06-19-ci-action-plan.md +88 -0
  10. matrixscroll-0.2.0/docs/superpowers/plans/2026-06-19-sdk-refactor-plan.md +166 -0
  11. matrixscroll-0.2.0/docs/superpowers/specs/2026-06-19-matrixscroll-git-design.md +205 -0
  12. matrixscroll-0.2.0/docs/yubikey-bridge.md +137 -0
  13. matrixscroll-0.2.0/examples/agentic_ai_evidence_manifest.signed.json +80 -0
  14. matrixscroll-0.2.0/examples/ci/protected-branch.yml +38 -0
  15. matrixscroll-0.2.0/examples/commit-envelope.json +29 -0
  16. matrixscroll-0.2.0/examples/commit-envelope.signed.json +38 -0
  17. matrixscroll-0.2.0/examples/demo/agent-commit-demo.sh +46 -0
  18. matrixscroll-0.2.0/examples/demo/generate_signed_examples.py +32 -0
  19. matrixscroll-0.2.0/examples/release-manifest.json +24 -0
  20. matrixscroll-0.2.0/examples/release-manifest.signed.json +33 -0
  21. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/matrixscroll/__init__.py +5 -4
  22. matrixscroll-0.2.0/matrixscroll/_core.py +43 -0
  23. matrixscroll-0.2.0/matrixscroll/canonical.py +18 -0
  24. matrixscroll-0.2.0/matrixscroll/cli.py +178 -0
  25. matrixscroll-0.2.0/matrixscroll/constants.py +12 -0
  26. matrixscroll-0.2.0/matrixscroll/errors.py +11 -0
  27. matrixscroll-0.2.0/matrixscroll/git.py +376 -0
  28. matrixscroll-0.2.0/matrixscroll/hooks/post-commit +17 -0
  29. matrixscroll-0.2.0/matrixscroll/hooks/pre-push +17 -0
  30. matrixscroll-0.2.0/matrixscroll/manifest.py +59 -0
  31. matrixscroll-0.2.0/matrixscroll/policy.py +55 -0
  32. matrixscroll-0.2.0/matrixscroll/providers/__init__.py +7 -0
  33. matrixscroll-0.2.0/matrixscroll/providers/base.py +26 -0
  34. matrixscroll-0.2.0/matrixscroll/providers/emulated.py +116 -0
  35. matrixscroll-0.2.0/matrixscroll/providers/hardware.py +22 -0
  36. matrixscroll-0.2.0/matrixscroll/providers/registry.py +106 -0
  37. matrixscroll-0.2.0/matrixscroll/providers/yubikey.py +104 -0
  38. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/pyproject.toml +5 -2
  39. matrixscroll-0.2.0/schemas/commit-envelope.v1.json +150 -0
  40. matrixscroll-0.2.0/schemas/evidence-pack.v1.json +54 -0
  41. matrixscroll-0.2.0/schemas/release-manifest.v1.json +63 -0
  42. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/tests/test_agentic_guidance.py +3 -1
  43. matrixscroll-0.2.0/tests/test_canonical.py +10 -0
  44. matrixscroll-0.2.0/tests/test_git_envelope.py +88 -0
  45. matrixscroll-0.2.0/tests/test_policy.py +26 -0
  46. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/tests/test_release_metadata.py +20 -1
  47. matrixscroll-0.2.0/tests/test_yubikey_provider.py +35 -0
  48. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/_fixture_key.json +5 -5
  49. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/tampered_algorithm.json +13 -13
  50. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/tampered_device_id.json +13 -13
  51. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/tampered_field.json +13 -13
  52. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/tampered_nested.json +28 -28
  53. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/tampered_public_key.json +13 -13
  54. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/tampered_schema.json +13 -13
  55. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/tampered_signature.json +13 -13
  56. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/unsigned_empty_block.json +6 -6
  57. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/unsigned_no_block.json +4 -4
  58. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/valid_nested.json +28 -28
  59. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/valid_simple.json +13 -13
  60. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/valid_unicode.json +14 -14
  61. matrixscroll-0.1.0/CHANGELOG.md +0 -34
  62. matrixscroll-0.1.0/matrixscroll/_core.py +0 -360
  63. matrixscroll-0.1.0/matrixscroll/cli.py +0 -94
  64. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/.gitignore +0 -0
  65. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/LICENSE +0 -0
  66. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/SECURITY.md +0 -0
  67. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/SPEC.md +0 -0
  68. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/examples/agentic_ai_evidence_manifest.json +0 -0
  69. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/matrixscroll/py.typed +0 -0
  70. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/tests/__init__.py +0 -0
  71. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/tests/test_cli.py +0 -0
  72. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/tests/test_core.py +0 -0
  73. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/tests/test_vectors.py +0 -0
  74. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/README.md +0 -0
  75. {matrixscroll-0.1.0 → matrixscroll-0.2.0}/vectors/_generate.py +0 -0
@@ -0,0 +1,73 @@
1
+ # Changelog
2
+
3
+ All notable changes to the Matrix Scroll Python SDK are documented here. The
4
+ format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
5
+ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [0.2.0] - 2026-06-20
8
+
9
+ Agent provenance release: Git commit envelopes, SDK module split, CI scaffolding.
10
+
11
+ ### Added
12
+ - **Git integration** — `matrixscroll/git.py` with post-commit envelope signing
13
+ and pre-push verification for commits being pushed.
14
+ - **Hook installer** — `matrixscroll hook-install` / `matrixscroll hook-status`
15
+ (hooks ship inside the wheel at `matrixscroll/hooks/`).
16
+ - **Commit envelope schema** — `schemas/commit-envelope.v1.json` plus release and
17
+ evidence-pack schemas under `schemas/`.
18
+ - **Signed examples** — `examples/*.signed.json` for CI and documentation.
19
+ - **Agent demo** — `examples/demo/agent-commit-demo.sh` and signed-example generator.
20
+ - **SDK split** — `canonical.py`, `manifest.py`, `policy.py`, `providers/` with
21
+ `_core.py` retained as a compatibility shim.
22
+ - **Policy verification** — `verify_manifest_with_policy()` for mode and trusted-key gates.
23
+ - **YubiKey prototype** — `providers/yubikey.py` boundary (`MATRIXSCROLL_MODE=yubikey`).
24
+ - **CI** — `verify-manifest` workflow and protected-branch example using
25
+ `SSX360/matrixscroll-verify-action@v1`.
26
+
27
+ ### Changed
28
+ - CLI adds `envelope`, `envelope-verify`, and hook subcommands.
29
+ - Commit envelopes bind to the **actual** commit SHA via post-commit signing.
30
+
31
+ ## [0.1.1] - 2026-06-19
32
+
33
+ Copy and citation hardening patch. No protocol or API changes.
34
+
35
+ ### Changed
36
+ - Clarified public README and package metadata: v0.1.x ships a software root of
37
+ trust; SSX360/NXP SE050 hardware signing is the compatible reference-device
38
+ path in progress.
39
+ - Replaced a direct PDF citation that may return `403` from some environments
40
+ with resolvable official agency pages for the joint agentic-AI guidance.
41
+ - Added regression checks so PyPI-facing metadata avoids over-strong hardware
42
+ availability claims.
43
+
44
+ ## [0.1.0] - 2026-06-19
45
+
46
+ Initial public release. Extracted from the SSX360 reference implementation.
47
+
48
+ ### Added
49
+ - `EmulatedProvider` — software Ed25519 root of trust backed by a local key
50
+ store at `~/.matrixscroll/device.json` (override with `MATRIXSCROLL_HOME`).
51
+ Private seed is written 0600 at file-create time (no write-then-chmod race).
52
+ - `HardwareProvider` — typed stub for the NXP SE050 secure element; reports
53
+ `is_available()` honestly so read-only surfaces can render without crashing
54
+ before the SE050 transport ships.
55
+ - `status()` — soft status surface returning `available`/`reason` without
56
+ raising; `identity_info()` retains the loud-failure behavior used by signing.
57
+ - `sign_manifest()` / `verify_manifest()` — manifest-level helpers using a
58
+ deterministic canonical JSON encoding (sorted keys, ASCII-escaped, NaN
59
+ rejected, `signature` block excluded).
60
+ - `matrixscroll` console script (`status` / `verify` / `sign`) for field
61
+ debugging and release-evidence verification without a host application.
62
+ - Conformance test vectors under `vectors/` for third-party implementations.
63
+
64
+ ### Protocol
65
+ - Identity schema: `matrixscroll.identity.v1`.
66
+ - Signature schema: `matrixscroll.signature.v1`.
67
+ - Algorithm: `ed25519`.
68
+ - Device id format: `MS-XXXX-XXXX` (SHA-256 of the raw public key, first 8 hex
69
+ chars, uppercase).
70
+
71
+ [0.2.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.2.0
72
+ [0.1.1]: https://github.com/SSX360/matrixscroll/releases/tag/v0.1.1
73
+ [0.1.0]: https://github.com/SSX360/matrixscroll/releases/tag/v0.1.0
@@ -15,8 +15,8 @@ well-tested, spec-aware."
15
15
  - **No new runtime dependencies** without discussion in an issue first. The
16
16
  surface area of a cryptographic SDK should stay tight.
17
17
  - **Signed commits preferred.** Use `git config commit.gpgsign true` or an SSH
18
- signing key. Once the SSX360 device ships, hardware-signed commits are the
19
- preferred default.
18
+ signing key. Once the SSX360 device ships, hardware-backed commit signing is
19
+ the preferred default.
20
20
 
21
21
  ## Development setup
22
22
 
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrixscroll
3
- Version: 0.1.0
4
- Summary: Open protocol for hardware-signed AI-assisted code (Ed25519 root of trust, software emulator + SSX360 reference device).
3
+ Version: 0.2.0
4
+ Summary: Open protocol for signing AI-assisted code provenance with Ed25519; shipping software root of trust with SSX360 hardware support in progress.
5
5
  Project-URL: Homepage, https://matrixscroll.com
6
6
  Project-URL: Documentation, https://matrixscroll.com/docs
7
7
  Project-URL: Source, https://github.com/SSX360/matrixscroll
@@ -31,23 +31,27 @@ Requires-Dist: cryptography>=41.0
31
31
  Provides-Extra: dev
32
32
  Requires-Dist: build>=1.0; extra == 'dev'
33
33
  Requires-Dist: pytest>=7.4; extra == 'dev'
34
+ Provides-Extra: git
35
+ Provides-Extra: yubikey
34
36
  Description-Content-Type: text/markdown
35
37
 
36
38
  # Matrix Scroll
37
39
 
38
- **Open protocol for hardware-signed AI-assisted code.**
40
+ **Open protocol for signed AI-assisted code provenance.**
39
41
 
40
- Every AI-generated change in your IDE gets cryptographically signed by an
41
- Ed25519 key sealed in a hardware root of trust. Anyone can verify the result
42
- offline with a public key and one command.
42
+ Every AI-generated change in your IDE can be cryptographically signed by an
43
+ Ed25519 identity and verified offline with a public key and one command. The
44
+ v0.2.x reference implementation ships a well-tested software root of trust
45
+ with Git commit-envelope hooks; SSX360/NXP SE050 hardware signing is the
46
+ compatible reference-device path in progress.
43
47
 
44
48
  - 📜 **Spec:** [`SPEC.md`](SPEC.md) — wire format, canonical encoding, schemas.
45
49
  - 🛡 **Agentic AI controls:** [`docs/AGENTIC_AI_SECURITY.md`](docs/AGENTIC_AI_SECURITY.md)
46
50
  maps Matrix Scroll to the joint *Careful Adoption of Agentic AI Services* guidance.
47
- - 🔐 **Algorithm:** Ed25519 (RFC 8032). Keys never leave the provider.
51
+ - 🔐 **Algorithm:** Ed25519 (RFC 8032). Private keys are never exposed by the SDK API.
48
52
  - 🧪 **Conformance vectors:** [`vectors/`](vectors/) — for non-Python implementations.
49
53
  - 🌐 **Site:** <https://matrixscroll.com>
50
- - 🔧 **Reference device:** [SSX360](https://matrixscroll.com/device) (NXP SE050).
54
+ - 🔧 **Reference device:** [SSX360](https://matrixscroll.com/device) (NXP SE050 hardware path in progress).
51
55
 
52
56
  ```bash
53
57
  pip install matrixscroll
@@ -70,6 +74,35 @@ signed = matrixscroll.sign_manifest({"release": "v1.0.0", "artifacts": [...]})
70
74
  assert matrixscroll.verify_manifest(signed)
71
75
  ```
72
76
 
77
+ ## Agent provenance for Git commits
78
+
79
+ When an AI agent (Cursor, Claude Code, Copilot, etc.) produces a commit, Matrix
80
+ Scroll attaches a signed **commit envelope** with actor, tool, and scope metadata.
81
+ Verify in CI without trusting the IDE.
82
+
83
+ ```bash
84
+ pip install matrixscroll
85
+ matrixscroll hook-install
86
+
87
+ export MATRIXSCROLL_ACTOR_TYPE=agent
88
+ export MATRIXSCROLL_TOOL=cursor
89
+ git commit -m "feat: agent-assisted change"
90
+
91
+ matrixscroll envelope-verify "$(git rev-parse HEAD)"
92
+ ```
93
+
94
+ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
95
+ [`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
96
+
97
+ ### CI verify
98
+
99
+ ```yaml
100
+ - uses: SSX360/matrixscroll-verify-action@v1
101
+ with:
102
+ manifest: examples/agentic_ai_evidence_manifest.signed.json
103
+ matrixscroll-version: "0.2.0"
104
+ ```
105
+
73
106
  ## CLI
74
107
 
75
108
  ```bash
@@ -113,8 +146,10 @@ parsing the output.
113
146
  (anyone, anywhere, offline)
114
147
  ```
115
148
 
116
- The same Python API serves the local software emulator and the physical
117
- SSX360 device. Switch with the `MATRIXSCROLL_MODE` environment variable.
149
+ The same Python API is designed to serve the local software emulator and the
150
+ physical SSX360 device path. Switch with the `MATRIXSCROLL_MODE` environment
151
+ variable; in v0.1.x, `hardware` mode reports unavailable until the SE050
152
+ transport ships.
118
153
 
119
154
  ## Compliance levels
120
155
 
@@ -136,8 +171,8 @@ read-only dashboards can render before the hardware path is wired.
136
171
  a race cannot silently clobber an existing key store.
137
172
  - A corrupt or truncated store **fails loud** (`IdentityError`) rather than
138
173
  silently minting a fresh identity. Identity rotation is an explicit operation.
139
- - The hardware path holds nothing private on disk — the seed is sealed in the
140
- secure element.
174
+ - The planned hardware path holds nothing private on disk — the seed is sealed
175
+ in the secure element. In v0.1.x, this path is a typed availability stub.
141
176
 
142
177
  ## Reference implementation, not the only one
143
178
 
@@ -1,18 +1,20 @@
1
1
  # Matrix Scroll
2
2
 
3
- **Open protocol for hardware-signed AI-assisted code.**
3
+ **Open protocol for signed AI-assisted code provenance.**
4
4
 
5
- Every AI-generated change in your IDE gets cryptographically signed by an
6
- Ed25519 key sealed in a hardware root of trust. Anyone can verify the result
7
- offline with a public key and one command.
5
+ Every AI-generated change in your IDE can be cryptographically signed by an
6
+ Ed25519 identity and verified offline with a public key and one command. The
7
+ v0.2.x reference implementation ships a well-tested software root of trust
8
+ with Git commit-envelope hooks; SSX360/NXP SE050 hardware signing is the
9
+ compatible reference-device path in progress.
8
10
 
9
11
  - 📜 **Spec:** [`SPEC.md`](SPEC.md) — wire format, canonical encoding, schemas.
10
12
  - 🛡 **Agentic AI controls:** [`docs/AGENTIC_AI_SECURITY.md`](docs/AGENTIC_AI_SECURITY.md)
11
13
  maps Matrix Scroll to the joint *Careful Adoption of Agentic AI Services* guidance.
12
- - 🔐 **Algorithm:** Ed25519 (RFC 8032). Keys never leave the provider.
14
+ - 🔐 **Algorithm:** Ed25519 (RFC 8032). Private keys are never exposed by the SDK API.
13
15
  - 🧪 **Conformance vectors:** [`vectors/`](vectors/) — for non-Python implementations.
14
16
  - 🌐 **Site:** <https://matrixscroll.com>
15
- - 🔧 **Reference device:** [SSX360](https://matrixscroll.com/device) (NXP SE050).
17
+ - 🔧 **Reference device:** [SSX360](https://matrixscroll.com/device) (NXP SE050 hardware path in progress).
16
18
 
17
19
  ```bash
18
20
  pip install matrixscroll
@@ -35,6 +37,35 @@ signed = matrixscroll.sign_manifest({"release": "v1.0.0", "artifacts": [...]})
35
37
  assert matrixscroll.verify_manifest(signed)
36
38
  ```
37
39
 
40
+ ## Agent provenance for Git commits
41
+
42
+ When an AI agent (Cursor, Claude Code, Copilot, etc.) produces a commit, Matrix
43
+ Scroll attaches a signed **commit envelope** with actor, tool, and scope metadata.
44
+ Verify in CI without trusting the IDE.
45
+
46
+ ```bash
47
+ pip install matrixscroll
48
+ matrixscroll hook-install
49
+
50
+ export MATRIXSCROLL_ACTOR_TYPE=agent
51
+ export MATRIXSCROLL_TOOL=cursor
52
+ git commit -m "feat: agent-assisted change"
53
+
54
+ matrixscroll envelope-verify "$(git rev-parse HEAD)"
55
+ ```
56
+
57
+ See [`docs/quickstart-git.md`](docs/quickstart-git.md) and run
58
+ [`examples/demo/agent-commit-demo.sh`](examples/demo/agent-commit-demo.sh).
59
+
60
+ ### CI verify
61
+
62
+ ```yaml
63
+ - uses: SSX360/matrixscroll-verify-action@v1
64
+ with:
65
+ manifest: examples/agentic_ai_evidence_manifest.signed.json
66
+ matrixscroll-version: "0.2.0"
67
+ ```
68
+
38
69
  ## CLI
39
70
 
40
71
  ```bash
@@ -78,8 +109,10 @@ parsing the output.
78
109
  (anyone, anywhere, offline)
79
110
  ```
80
111
 
81
- The same Python API serves the local software emulator and the physical
82
- SSX360 device. Switch with the `MATRIXSCROLL_MODE` environment variable.
112
+ The same Python API is designed to serve the local software emulator and the
113
+ physical SSX360 device path. Switch with the `MATRIXSCROLL_MODE` environment
114
+ variable; in v0.1.x, `hardware` mode reports unavailable until the SE050
115
+ transport ships.
83
116
 
84
117
  ## Compliance levels
85
118
 
@@ -101,8 +134,8 @@ read-only dashboards can render before the hardware path is wired.
101
134
  a race cannot silently clobber an existing key store.
102
135
  - A corrupt or truncated store **fails loud** (`IdentityError`) rather than
103
136
  silently minting a fresh identity. Identity rotation is an explicit operation.
104
- - The hardware path holds nothing private on disk — the seed is sealed in the
105
- secure element.
137
+ - The planned hardware path holds nothing private on disk — the seed is sealed
138
+ in the secure element. In v0.1.x, this path is a typed availability stub.
106
139
 
107
140
  ## Reference implementation, not the only one
108
141
 
@@ -1,8 +1,10 @@
1
1
  {
2
2
  "schema": "matrixscroll.agentic_ai_controls.v1",
3
3
  "sources": [
4
- "https://media.defense.gov/2026/Apr/30/2003922823/-1/-1/0/CAREFUL%20ADOPTION%20OF%20AGENTIC%20AI%20SERVICES_FINAL.PDF",
4
+ "https://www.cyber.gov.au/business-government/secure-design/artificial-intelligence/careful-adoption-of-agentic-ai-services",
5
5
  "https://www.cisa.gov/resources-tools/resources/careful-adoption-agentic-ai-services",
6
+ "https://www.nsa.gov/aisc/",
7
+ "https://www.cyber.gc.ca/en/news-events/joint-guidance-careful-adoption-agentic-artificial-intelligence-services",
6
8
  "https://www.ncsc.govt.nz/protect-your-organisation/careful-adoption-of-agentic-ai-services/",
7
9
  "https://www.ncsc.gov.uk/blogs/thinking-carefully-before-adopting-agentic-ai"
8
10
  ],
@@ -13,7 +15,7 @@
13
15
  "guidance": "Adopt agentic AI incrementally; prefer tightly scoped pilots before connecting agents to real systems or sensitive data.",
14
16
  "matrixscroll_control": "Matrix Scroll signs bounded manifests rather than granting agents authority. The SDK records scope, task, reviewer, and policy fields as verifiable evidence.",
15
17
  "evidence_paths": ["examples/agentic_ai_evidence_manifest.json", "README.md"],
16
- "goes_beyond": "Hardware-rooted signatures make the boundary review portable and independently auditable."
18
+ "goes_beyond": "Signed boundary reviews are portable and independently auditable; the planned hardware path can bind them to a physical signer."
17
19
  },
18
20
  {
19
21
  "id": "AAI-02",
@@ -29,7 +31,7 @@
29
31
  "guidance": "Use temporary credentials where possible and revoke elevated access when work completes.",
30
32
  "matrixscroll_control": "Manifests can require short-lived credential metadata and explicitly avoid embedding secrets. Tests enforce redaction-sensitive fields stay unsigned as labels only.",
31
33
  "evidence_paths": ["SECURITY.md", "examples/agentic_ai_evidence_manifest.json"],
32
- "goes_beyond": "The signing key itself never appears as an application credential; hardware mode seals it in SSX360/SE050."
34
+ "goes_beyond": "The signing key itself never appears as an application credential; the planned hardware mode seals it in SSX360/SE050."
33
35
  },
34
36
  {
35
37
  "id": "AAI-04",
@@ -37,7 +39,7 @@
37
39
  "guidance": "Define who owns the agent, approves access, monitors behaviour, reviews incidents, and can stop it.",
38
40
  "matrixscroll_control": "Signed manifests carry owner, approver, reviewer, and break-glass contact fields as tamper-evident accountability evidence.",
39
41
  "evidence_paths": ["examples/agentic_ai_evidence_manifest.json", "docs/AGENTIC_AI_SECURITY.md"],
40
- "goes_beyond": "Approvals can be bound to a physical root of trust instead of a mutable log entry."
42
+ "goes_beyond": "Approvals can be bound to a signature instead of a mutable log entry; the planned hardware path can bind that signature to a physical root of trust."
41
43
  },
42
44
  {
43
45
  "id": "AAI-05",
@@ -83,7 +85,7 @@
83
85
  "id": "AAI-10",
84
86
  "title": "Strong authentication and non-repudiation",
85
87
  "guidance": "Use strong authentication and avoid relying on weak internal safeguards for agent authority.",
86
- "matrixscroll_control": "Ed25519 signatures bind agent evidence to a public key; hardware mode moves the private key into SSX360/SE050.",
88
+ "matrixscroll_control": "Ed25519 signatures bind agent evidence to a public key; the planned hardware mode moves the private key into SSX360/SE050.",
87
89
  "evidence_paths": ["SPEC.md", "matrixscroll/_core.py", "SECURITY.md"],
88
90
  "goes_beyond": "The private signing key is separated from agent runtime credentials and can be physically held or removed."
89
91
  },
@@ -4,13 +4,12 @@ This document maps Matrix Scroll to the joint guidance **Careful Adoption of
4
4
  Agentic AI Services** published by ASD's ACSC, CISA, NSA, the Canadian Centre
5
5
  for Cyber Security, NCSC-NZ, and NCSC-UK.
6
6
 
7
- Primary source:
8
-
9
- - <https://media.defense.gov/2026/Apr/30/2003922823/-1/-1/0/CAREFUL%20ADOPTION%20OF%20AGENTIC%20AI%20SERVICES_FINAL.PDF>
10
-
11
- Additional public mirrors/summaries used for traceability:
7
+ Official public sources verified for traceability:
12
8
 
9
+ - <https://www.cyber.gov.au/business-government/secure-design/artificial-intelligence/careful-adoption-of-agentic-ai-services>
13
10
  - <https://www.cisa.gov/resources-tools/resources/careful-adoption-agentic-ai-services>
11
+ - <https://www.nsa.gov/aisc/>
12
+ - <https://www.cyber.gc.ca/en/news-events/joint-guidance-careful-adoption-agentic-artificial-intelligence-services>
14
13
  - <https://www.ncsc.govt.nz/protect-your-organisation/careful-adoption-of-agentic-ai-services/>
15
14
  - <https://www.ncsc.gov.uk/blogs/thinking-carefully-before-adopting-agentic-ai>
16
15
 
@@ -40,7 +39,7 @@ The machine-readable control matrix lives at
40
39
  | AAI-07 | Monitoring and auditability | Signed manifests are portable audit records verifiable offline. |
41
40
  | AAI-08 | Incident response / kill switch | CI/CLI verification exits non-zero; manifests include escalation and shutdown metadata. |
42
41
  | AAI-09 | Supply-chain management | Minimal deps, Dependabot, CI build verification, and conformance vectors. |
43
- | AAI-10 | Strong authentication / non-repudiation | Ed25519 identity; SSX360 hardware mode keeps private keys out of agent runtimes. |
42
+ | AAI-10 | Strong authentication / non-repudiation | Ed25519 identity; the planned SSX360 hardware mode keeps private keys out of agent runtimes. |
44
43
  | AAI-11 | Governance and change control | CODEOWNERS + CI protect spec/core/vectors/security files. |
45
44
  | AAI-12 | Deception / prompt-injection resilience | Trust is verified after agent action; model text cannot forge signatures. |
46
45
 
@@ -51,8 +50,9 @@ Matrix Scroll adds a stronger evidence layer on top:
51
50
 
52
51
  1. **Offline verification** — auditors can verify a manifest without trusting
53
52
  Matrix Scroll servers, the original CI system, or the agent runtime.
54
- 2. **Hardware-rooted provenance** — SSX360 L2 mode moves the signing key into a
55
- secure element so the agent cannot exfiltrate it as a normal credential.
53
+ 2. **Hardware-rooted provenance path** — the SSX360 L2 design moves the signing
54
+ key into a secure element so the agent cannot exfiltrate it as a normal
55
+ credential. In v0.1.x, this is a typed provider path awaiting SE050 transport.
56
56
  3. **Fail-closed policy gates** — the CLI returns exit `2` for tampered,
57
57
  unsigned, malformed, wrong-schema, wrong-algorithm, or wrong-device-id input.
58
58
  4. **Executable conformance** — `vectors/` lets third-party implementations
@@ -0,0 +1,20 @@
1
+ # SSX360 hardware provider (L2)
2
+
3
+ **Status:** Stage-0 prototype — `HardwareProvider` reports unavailable until the
4
+ NXP SE050 transport ships on the SSX360 reference device.
5
+
6
+ ## Planned behavior
7
+
8
+ - `MATRIXSCROLL_MODE=hardware` selects the secure-element provider
9
+ - Private keys never leave the SE050; no seed on disk
10
+ - User-presence touch gating for protected-branch commits
11
+ - Compatible with the same manifest and commit-envelope schemas as L1 emulated mode
12
+
13
+ ## Related docs
14
+
15
+ - [`docs/yubikey-bridge.md`](yubikey-bridge.md) — bridge path before SSX360 GA
16
+ - [`SPEC.md`](../SPEC.md) — wire format (unchanged for L2 signing algorithm)
17
+
18
+ ## Device
19
+
20
+ Reference hardware: [matrixscroll.com/device](https://matrixscroll.com/device)
@@ -0,0 +1,61 @@
1
+ # Git Quickstart
2
+
3
+ Matrix Scroll Git hooks attach a signed **commit envelope** to every local commit.
4
+
5
+ ## Install hooks
6
+
7
+ ```bash
8
+ pip install matrixscroll
9
+ matrixscroll hook-install
10
+ matrixscroll hook-status
11
+ ```
12
+
13
+ Hooks ship inside the Python wheel (`matrixscroll/hooks/`). No separate clone path
14
+ is required for pip-installed users.
15
+
16
+ ## What happens on commit
17
+
18
+ 1. **post-commit** reads the new commit SHA and builds a commit envelope from `git show`
19
+ 2. The envelope is signed with your active Matrix Scroll identity
20
+ 3. The signed envelope is stored at `.git/matrixscroll/envelopes/<sha>.json`
21
+
22
+ **pre-push** verifies envelopes only for commits being pushed (not every envelope
23
+ ever stored locally).
24
+
25
+ By default hooks run in **warn mode** (signing failures do not block commits).
26
+ Enable enforce mode in `.git/matrixscroll/config.json`:
27
+
28
+ ```json
29
+ {
30
+ "enforce": true,
31
+ "actor_type": "human",
32
+ "tool": "cursor"
33
+ }
34
+ ```
35
+
36
+ ## Agent provenance
37
+
38
+ Set environment variables before committing:
39
+
40
+ ```bash
41
+ export MATRIXSCROLL_ACTOR_TYPE=agent
42
+ export MATRIXSCROLL_TOOL=cursor
43
+ export MATRIXSCROLL_AGENT_SCOPE=examples/agentic_ai_evidence_manifest.signed.json
44
+ ```
45
+
46
+ ## Verify in CI
47
+
48
+ ```bash
49
+ matrixscroll verify .git/matrixscroll/envelopes/<commit-sha>.json
50
+ matrixscroll envelope-verify <commit-sha>
51
+ ```
52
+
53
+ Or use [`SSX360/matrixscroll-verify-action@v1`](https://github.com/SSX360/matrixscroll-verify-action).
54
+
55
+ ## Demo
56
+
57
+ ```bash
58
+ bash examples/demo/agent-commit-demo.sh
59
+ ```
60
+
61
+ See [spec](../superpowers/specs/2026-06-19-matrixscroll-git-design.md).
@@ -0,0 +1,88 @@
1
+ # CI Action Implementation Plan
2
+
3
+ > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development or superpowers:executing-plans to implement this plan task-by-task.
4
+
5
+ **Goal:** Provide a zero-config GitHub Action that runs `matrixscroll verify` with CI-friendly exit codes.
6
+
7
+ **Architecture:** Composite action installs matrixscroll from PyPI, runs verify on one or more manifest paths, optionally applies policy flags.
8
+
9
+ **Tech Stack:** GitHub Actions, Python 3.10+, matrixscroll CLI
10
+
11
+ ---
12
+
13
+ ## Exit code contract
14
+
15
+ | Code | Meaning | CI interpretation |
16
+ |------|---------|-------------------|
17
+ | 0 | Valid signature | Pass check |
18
+ | 1 | Usage/config error | Fail workflow (misconfiguration) |
19
+ | 2 | Verification failed | Fail workflow (tampered/invalid) |
20
+
21
+ The action MUST propagate CLI exit codes unchanged (`set -e` in bash step).
22
+
23
+ ## Action inputs
24
+
25
+ | Input | Required | Default | Description |
26
+ |-------|----------|---------|-------------|
27
+ | `manifest` | yes | — | Path to signed manifest JSON |
28
+ | `python-version` | no | `3.12` | Python for pip install |
29
+ | `matrixscroll-version` | no | `latest` | Pin e.g. `0.1.1` for reproducibility |
30
+ | `require-mode` | no | `` | Pass through to policy verify (v0.2.1) |
31
+ | `trusted-keys` | no | `` | Path to trusted keys JSON (v0.2.1) |
32
+
33
+ ## Action outputs
34
+
35
+ | Output | Description |
36
+ |--------|-------------|
37
+ | `ok` | `true` or `false` |
38
+ | `device_id` | Signer device id from manifest |
39
+ | `mode` | Provider mode (`emulated`, `hardware`, `yubikey`) |
40
+
41
+ ## Files
42
+
43
+ | File | Purpose |
44
+ |------|---------|
45
+ | `matrixscroll-action/action.yml` | Composite action definition |
46
+ | `matrixscroll-action/README.md` | Usage docs |
47
+ | `matrixscroll/.github/workflows/verify-manifest.yml` | Dogfood workflow |
48
+ | `matrixscroll/examples/ci/protected-branch.yml` | Copy-paste template |
49
+
50
+ ## Protected branch pattern
51
+
52
+ ```yaml
53
+ name: provenance
54
+ on:
55
+ pull_request:
56
+ branches: [main]
57
+ jobs:
58
+ verify-release-manifest:
59
+ runs-on: ubuntu-latest
60
+ steps:
61
+ - uses: actions/checkout@v4
62
+ - uses: SSX360/matrixscroll-verify-action@v1
63
+ with:
64
+ manifest: examples/release-manifest.signed.json
65
+ ```
66
+
67
+ ## Release verification pattern
68
+
69
+ 1. Build job signs release manifest, uploads artifact
70
+ 2. Verify job downloads artifact, runs action
71
+ 3. Deploy job requires verify job success
72
+
73
+ ## Task checklist
74
+
75
+ - [x] Write action.yml composite action
76
+ - [x] Add dogfood workflow in matrixscroll repo
77
+ - [x] Add protected-branch example
78
+ - [ ] Publish action repo and tag v1 (manual release step)
79
+ - [ ] Add signed release-manifest to examples once v0.2.0 ships
80
+
81
+ ## Verification
82
+
83
+ ```bash
84
+ cd matrixscroll
85
+ pip install -e ".[dev]"
86
+ pytest tests/test_cli.py -v
87
+ matrixscroll verify examples/agentic_ai_evidence_manifest.json # expect exit 2 unsigned
88
+ ```