@markdown-ai/cli 1.0.0-rc.2

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 (66) hide show
  1. package/HOW-TO-USE.md +386 -0
  2. package/README.md +18 -0
  3. package/dist/cli.js +11297 -0
  4. package/dist/conformance/README.md +36 -0
  5. package/dist/conformance/invalid/11-name-uppercase.mda +8 -0
  6. package/dist/conformance/invalid/12-description-over-1024.mda +8 -0
  7. package/dist/conformance/invalid/13-skill-output-mda-extended-toplevel.md +10 -0
  8. package/dist/conformance/invalid/14-signature-without-integrity.mda +14 -0
  9. package/dist/conformance/invalid/15-version-range-compound.mda +13 -0
  10. package/dist/conformance/invalid/16-agents-md-allowed-tools-toplevel.md +8 -0
  11. package/dist/conformance/invalid/17-mcp-server-md-missing-name.md +7 -0
  12. package/dist/conformance/invalid/18-integrity-bad-digest-length.mda +11 -0
  13. package/dist/conformance/invalid/19-signature-digest-mismatch.mda +17 -0
  14. package/dist/conformance/invalid/24-unterminated-frontmatter.mda +7 -0
  15. package/dist/conformance/invalid/25-invalid-utf8.mda +8 -0
  16. package/dist/conformance/invalid/26-skill-md-body-only.md +3 -0
  17. package/dist/conformance/invalid/28-trust-policy-issuer-only.json +12 -0
  18. package/dist/conformance/invalid/29-sigstore-signature-without-rekor.mda +15 -0
  19. package/dist/conformance/invalid/30-did-web-signature-with-rekor.mda +17 -0
  20. package/dist/conformance/invalid/31-payload-type-jcs-suffix.mda +18 -0
  21. package/dist/conformance/invalid/32-trust-policy-sigstore-without-rekor.json +10 -0
  22. package/dist/conformance/invalid/33-trust-policy-sigstore-empty-rekor.json +11 -0
  23. package/dist/conformance/invalid/34-trust-policy-sigstore-rekor-disabled.json +14 -0
  24. package/dist/conformance/invalid/37-trusted-runtime-missing-integrity.mda +11 -0
  25. package/dist/conformance/invalid/38-trusted-runtime-missing-signature.mda +14 -0
  26. package/dist/conformance/invalid/39-trusted-runtime-duplicate-did-web-signature.mda +25 -0
  27. package/dist/conformance/invalid/40-trusted-runtime-untrusted-did-web-signer.mda +20 -0
  28. package/dist/conformance/invalid/41-trust-policy-did-web-with-rekor.json +12 -0
  29. package/dist/conformance/invalid/44-trusted-runtime-untrusted-sigstore-subject.mda +23 -0
  30. package/dist/conformance/invalid/45-runtime-policy-version-2.json +9 -0
  31. package/dist/conformance/manifest.yaml +376 -0
  32. package/dist/conformance/valid/01-frontmatter-minimal.mda +8 -0
  33. package/dist/conformance/valid/03-relationships-with-mirror.mda +20 -0
  34. package/dist/conformance/valid/04-depends-on-and-requires.mda +21 -0
  35. package/dist/conformance/valid/05-integrity-sha256.mda +14 -0
  36. package/dist/conformance/valid/06-sigstore-signed.mda +22 -0
  37. package/dist/conformance/valid/07-did-web-signed.mda +20 -0
  38. package/dist/conformance/valid/08-agents-md-frontmatter-free.md +9 -0
  39. package/dist/conformance/valid/09-agents-md-with-frontmatter.md +12 -0
  40. package/dist/conformance/valid/20-bom-prefixed.mda +8 -0
  41. package/dist/conformance/valid/21-crlf-line-endings.mda +8 -0
  42. package/dist/conformance/valid/22-body-with-horizontal-rule.mda +16 -0
  43. package/dist/conformance/valid/23-empty-body.mda +4 -0
  44. package/dist/conformance/valid/27-trust-policy-github-actions.json +13 -0
  45. package/dist/conformance/valid/35-trust-policy-did-web.json +9 -0
  46. package/dist/conformance/valid/36-trust-policy-did-web-two-signatures.json +14 -0
  47. package/dist/conformance/valid/42-trust-policy-human-sigstore.json +13 -0
  48. package/dist/conformance/valid/43-trusted-runtime-sigstore-signed.mda +23 -0
  49. package/dist/schemas/_defs/depends-on.schema.json +18 -0
  50. package/dist/schemas/_defs/description.schema.json +9 -0
  51. package/dist/schemas/_defs/integrity.schema.json +34 -0
  52. package/dist/schemas/_defs/iso8601.schema.json +8 -0
  53. package/dist/schemas/_defs/mda-extended.schema.json +43 -0
  54. package/dist/schemas/_defs/mda-keys.schema.json +34 -0
  55. package/dist/schemas/_defs/metadata-namespaces.schema.json +48 -0
  56. package/dist/schemas/_defs/name.schema.json +10 -0
  57. package/dist/schemas/_defs/requires.schema.json +13 -0
  58. package/dist/schemas/_defs/signature.schema.json +72 -0
  59. package/dist/schemas/_defs/version-range.schema.json +8 -0
  60. package/dist/schemas/frontmatter-agents-md.schema.json +24 -0
  61. package/dist/schemas/frontmatter-mcp-server-md.schema.json +25 -0
  62. package/dist/schemas/frontmatter-skill-md.schema.json +26 -0
  63. package/dist/schemas/frontmatter-source.schema.json +37 -0
  64. package/dist/schemas/mda-trust-policy.schema.json +113 -0
  65. package/dist/schemas/relationship-footnote.schema.json +45 -0
  66. package/package.json +42 -0
@@ -0,0 +1,36 @@
1
+ # MDA conformance suite
2
+
3
+ A reference set of fixtures for validators and compilers. Every fixture is bound to one or more spec rules in `manifest.yaml` so a failing run identifies which rule fired.
4
+
5
+ ## Layout
6
+
7
+ ```
8
+ conformance/
9
+ ├── manifest.yaml # Binds fixture → rule id → expected verdict
10
+ ├── valid/ # MUST pass source-side validation
11
+ ├── invalid/ # MUST fail validation; reason in manifest
12
+ └── compile/ # MUST compile to expected output (per-fixture subdir)
13
+ ```
14
+
15
+ ## How to use
16
+
17
+ A conforming MDA validator MUST:
18
+
19
+ 1. Load `manifest.yaml`.
20
+ 2. For each entry under `valid/`: validate the file against the schemas indicated in its `against` list. Verdict MUST be **accept**.
21
+ 3. For each entry under `invalid/`: validate the file. Verdict MUST be **reject**. Rule IDs are informative for humans; when `expected-error` is present, the rejection category MUST match it.
22
+ 4. For each entry under `compile/`: read `input.mda`, compile to the named target, and compare the output tree to `expected/` byte-for-byte (after YAML-key-order normalization).
23
+
24
+ For trusted-runtime semantic fixtures, `verified-identities` records the
25
+ post-crypto identity that the runner should match against the trust policy.
26
+
27
+ A run that disagrees with the manifest on any entry is a non-conformance.
28
+
29
+ ## Adding fixtures
30
+
31
+ When a new spec rule is added, add at least one `valid/` and one `invalid/` fixture exercising it. Update `manifest.yaml` in the same PR.
32
+
33
+ Numbering convention: fixture IDs are stable numeric slugs. Allocate the next
34
+ unused integer; do not infer fixture type from the number.
35
+
36
+ The compiler's CI MUST run this suite on every PR.
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: BadName
3
+ description: name field uses uppercase letters; expected to be rejected by §02-2.1 (kebab-case identifier shape).
4
+ ---
5
+
6
+ # Bad name
7
+
8
+ This source is invalid because `name` is not a kebab-case identifier.
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: too-long-description
3
+ description: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4
+ ---
5
+
6
+ # Too long
7
+
8
+ This source's description exceeds 1024 characters; expected to be rejected by §02-2.2.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: bad-skill-output
3
+ description: Compiled SKILL.md keeps `doc-id` at the top level instead of nesting under metadata.mda. Expected to be rejected by §06-targets/skill-md §06-3.3 (unevaluatedProperties:false).
4
+ doc-id: 99999999-9999-9999-9999-999999999999
5
+ ---
6
+
7
+ # Bad SKILL output
8
+
9
+ A conformant compiler MUST relocate `doc-id` to `metadata.mda.doc-id`. This file
10
+ exists to verify that the strict SKILL.md target schema rejects the violation.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: bad-signature-no-integrity
3
+ description: Source declaring signatures[] without the required integrity anchor. The dependentRequired clause MUST reject this.
4
+ signatures:
5
+ - signer: "did-web:tools.example.com"
6
+ key-id: "ed25519-9c4e7b"
7
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
8
+ algorithm: ed25519
9
+ signature: "BASE64ILLUSTRATIVE=="
10
+ ---
11
+
12
+ # Bad
13
+
14
+ This fixture has a signature but no integrity field; the source schema MUST reject it.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: bad-version-range
3
+ description: Source declaring a depends-on entry with a compound version-range. v1.0 admits only exact and caret ranges; the schema MUST reject.
4
+ metadata:
5
+ mda:
6
+ depends-on:
7
+ - name: pdf-tools
8
+ version-range: ">=1.2.0 <2.0.0"
9
+ ---
10
+
11
+ # Bad
12
+
13
+ This fixture uses a compound version-range (`>=1.2.0 <2.0.0`) which is not in the v1.0 admitted subset.
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: AGENTS.md output that places allowed-tools at the top level. The AGENTS.md target schema forbids this; allowed-tools must nest under the relevant vendor namespace.
3
+ allowed-tools: "Read Bash(git:*)"
4
+ ---
5
+
6
+ # Bad AGENTS.md
7
+
8
+ This file violates §06-targets/agents-md §06-3.2.
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: MCP-SERVER.md output that omits the required top-level `name` field. The MCP-SERVER.md target schema requires both `name` and `description`.
3
+ ---
4
+
5
+ # Bad MCP-SERVER.md
6
+
7
+ This file violates §06-targets/mcp-server-md §06-3.1.
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: bad-integrity-length
3
+ description: Source declaring sha256 algorithm with a digest of incorrect length. The conditional length constraint MUST reject.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0"
7
+ ---
8
+
9
+ # Bad
10
+
11
+ This fixture has a sha256 algorithm but only 6 hex characters in the digest; sha256 requires exactly 64.
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: bad-signature-digest-mismatch
3
+ description: Source whose signatures[0].payload-digest is well-formed but does NOT equal integrity.digest. The §09-2 cross-field rule MUST reject.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ signatures:
8
+ - signer: "did-web:tools.example.com"
9
+ key-id: "ed25519-9c4e7b"
10
+ payload-digest: "sha256:0000000000000000000000000000000000000000000000000000000000000000"
11
+ algorithm: ed25519
12
+ signature: "BASE64ILLUSTRATIVE=="
13
+ ---
14
+
15
+ # Bad
16
+
17
+ Both digests pass schema validation individually (correct prefix, correct hex length), but they are not equal. §09-2 mandates byte-for-byte equality, enforced by the runner's semantic check.
@@ -0,0 +1,7 @@
1
+ ---
2
+ name: unterminated
3
+ description: Opening fence with no closing --- line; §02-1.1 step 5 requires extractors to refuse this file.
4
+
5
+ # Body never reached
6
+
7
+ The conformance runner records this fixture as a §02-1.1 step 5 rejection (extraction-expected: unterminated-frontmatter).
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: invalid-utf8-source
3
+ description: Body contains a stray 0xFF byte; UTF-8 decode MUST fail per §02-1.1 step 2.
4
+ ---
5
+
6
+ # Invalid UTF-8
7
+
8
+ This line ends with a stray byte: � and that byte is not a valid UTF-8 continuation, so the strict TextDecoder raises and the runner records an invalid-encoding rejection.
@@ -0,0 +1,3 @@
1
+ # Skill without frontmatter
2
+
3
+ This file has no opening `---` fence at offset 0. AGENTS.md permits frontmatter-free authoring (§06-targets/agents-md), but every other Tier-1/Tier-2 target — including SKILL.md — requires a YAML frontmatter block. The conformance runner records this fixture as a §02 / §06-targets/skill-md rejection.
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 1,
3
+ "trustedSigners": [
4
+ {
5
+ "type": "sigstore-oidc",
6
+ "issuer": "https://token.actions.githubusercontent.com"
7
+ }
8
+ ],
9
+ "rekor": {
10
+ "url": "https://rekor.sigstore.dev"
11
+ }
12
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: sigstore-without-rekor
3
+ description: Invalid Sigstore signature fixture with missing Rekor coordinates.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ signatures:
8
+ - signer: "sigstore-oidc:https://token.actions.githubusercontent.com"
9
+ key-id: "fulcio:abc123"
10
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
11
+ algorithm: ecdsa-p256
12
+ signature: "MEUCIQDkX"
13
+ ---
14
+
15
+ # Invalid Sigstore Signature
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: did-web-with-rekor
3
+ description: Invalid did:web signature fixture with Sigstore-only Rekor fields.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ signatures:
8
+ - signer: "did-web:tools.example.com"
9
+ key-id: "ed25519:abc123"
10
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
11
+ algorithm: ed25519
12
+ signature: "MEUCIQDkX"
13
+ rekor-log-id: "c0d23b6c4f2"
14
+ rekor-log-index: 123
15
+ ---
16
+
17
+ # Invalid did:web Signature
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: payload-type-jcs-suffix
3
+ description: Invalid signature fixture using a non-IANA +jcs+json structured suffix.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ signatures:
8
+ - signer: "sigstore-oidc:https://token.actions.githubusercontent.com"
9
+ key-id: "fulcio:abc123"
10
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
11
+ algorithm: ecdsa-p256
12
+ signature: "MEUCIQDkX"
13
+ rekor-log-id: "c0d23b6c4f2"
14
+ rekor-log-index: 123
15
+ payload-type: "application/vnd.example.llm-config+jcs+json"
16
+ ---
17
+
18
+ # Invalid Payload Type
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 1,
3
+ "trustedSigners": [
4
+ {
5
+ "type": "sigstore-oidc",
6
+ "issuer": "https://token.actions.githubusercontent.com",
7
+ "subject": "repo:sno-ai/llmix:ref:refs/tags/v2.0.0"
8
+ }
9
+ ]
10
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 1,
3
+ "trustedSigners": [
4
+ {
5
+ "type": "sigstore-oidc",
6
+ "issuer": "https://token.actions.githubusercontent.com",
7
+ "subject": "repo:sno-ai/llmix:ref:refs/tags/v2.0.0"
8
+ }
9
+ ],
10
+ "rekor": {}
11
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "trustedSigners": [
4
+ {
5
+ "type": "sigstore-oidc",
6
+ "issuer": "https://token.actions.githubusercontent.com",
7
+ "subject": "repo:sno-ai/llmix:ref:refs/tags/v2.0.0"
8
+ }
9
+ ],
10
+ "rekor": {
11
+ "url": "https://rekor.sigstore.dev",
12
+ "required": false
13
+ }
14
+ }
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: trusted-runtime-missing-integrity
3
+ description: Schema-valid source that trusted-runtime must reject because integrity is absent.
4
+ metadata:
5
+ mda:
6
+ version: "1.0.0"
7
+ ---
8
+
9
+ # Missing integrity
10
+
11
+ Schema validation can pass, but production trusted-runtime cannot load it.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: trusted-runtime-missing-signature
3
+ description: Schema-valid source that trusted-runtime must reject because signatures are absent.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ metadata:
8
+ mda:
9
+ version: "1.0.0"
10
+ ---
11
+
12
+ # Missing signature
13
+
14
+ Integrity alone is not enough for trusted-runtime.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: trusted-runtime-duplicate-did-web-signature
3
+ description: Two valid-looking signatures from the same trusted did:web identity must count once.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ signatures:
8
+ - signer: "did-web:tools.example.com"
9
+ key-id: "ed25519-9c4e7b"
10
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
11
+ algorithm: ed25519
12
+ signature: "BASE64ILLUSTRATIVE=="
13
+ - signer: "did-web:tools.example.com"
14
+ key-id: "ed25519-9c4e7b"
15
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
16
+ algorithm: ed25519
17
+ signature: "BASE64ILLUSTRATIVE=="
18
+ metadata:
19
+ mda:
20
+ version: "1.0.0"
21
+ ---
22
+
23
+ # Duplicate signer
24
+
25
+ Duplicate entries do not satisfy a two-identity quorum.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: trusted-runtime-untrusted-did-web-signer
3
+ description: Schema-valid signed source whose did:web signer is outside the runtime trust policy.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ signatures:
8
+ - signer: "did-web:evil.example.com"
9
+ key-id: "ed25519-9c4e7b"
10
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
11
+ algorithm: ed25519
12
+ signature: "BASE64ILLUSTRATIVE=="
13
+ metadata:
14
+ mda:
15
+ version: "1.0.0"
16
+ ---
17
+
18
+ # Untrusted signer
19
+
20
+ The signature shape is valid, but the signer is not trusted.
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 1,
3
+ "trustedSigners": [
4
+ {
5
+ "type": "did-web",
6
+ "domain": "tools.example.com"
7
+ }
8
+ ],
9
+ "rekor": {
10
+ "url": "https://rekor.sigstore.dev"
11
+ }
12
+ }
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: trusted-runtime-untrusted-sigstore-subject
3
+ description: Schema-valid Sigstore-signed source whose verified OIDC subject is outside the runtime trust policy.
4
+ integrity:
5
+ algorithm: sha256
6
+ digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
7
+ signatures:
8
+ - signer: "sigstore-oidc:https://accounts.google.com"
9
+ key-id: "fulcio:9c4e7b2f1a05c3b9e2d6c2b1e7f0a8d4c3b9e2f1a05c3b9e2d6c2b1e7f0a8d4c"
10
+ payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
11
+ algorithm: ecdsa-p256
12
+ signature: "MEUCIQDkXILLUSTRATIVESIGNATUREBYTESFORFIXTUREPURPOSESONLY=="
13
+ rekor-log-id: "c0d23b6c4f200000000000000000000000000000000000000000000000000000"
14
+ rekor-log-index: 87654321
15
+ metadata:
16
+ mda:
17
+ version: "1.0.0"
18
+ ---
19
+
20
+ # Untrusted Sigstore subject
21
+
22
+ The Sigstore issuer is recognized, but the verified OIDC subject does not match
23
+ the runtime trust policy.
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 2,
3
+ "trustedSigners": [
4
+ {
5
+ "type": "did-web",
6
+ "domain": "tools.example.com"
7
+ }
8
+ ]
9
+ }