@marinjursic/prc-linux-arm64 0.1.9 → 0.2.0

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 (39) hide show
  1. package/bin/catalog/assertions/core-repository.yaml +28 -28
  2. package/bin/catalog/control-check-bindings.json.gz +0 -0
  3. package/bin/catalog/control-check-programs.json.gz +0 -0
  4. package/bin/catalog/control-contracts.json.gz +0 -0
  5. package/bin/fixtures/benchmarks/core-native/suite-comprehensive.yaml +10 -1
  6. package/bin/fixtures/benchmarks/core-native/suite.yaml +13 -2
  7. package/bin/packs/core-foundation.yaml +4 -4
  8. package/bin/packs/core-native.yaml +10 -10
  9. package/bin/prc +0 -0
  10. package/bin/schemas/adapter-execution-v0.3.schema.json +145 -0
  11. package/bin/schemas/authoritative-evidence-bundle.schema.json +38 -0
  12. package/bin/schemas/authoritative-evidence-set.schema.json +38 -0
  13. package/bin/schemas/authoritative-evidence-verification.schema.json +54 -0
  14. package/bin/schemas/automatic-coverage.schema.json +49 -0
  15. package/bin/schemas/control-check-bindings.schema.json +119 -0
  16. package/bin/schemas/control-check-evidence-v0.1.schema.json +244 -0
  17. package/bin/schemas/control-check-evidence.schema.json +244 -0
  18. package/bin/schemas/control-check-program-catalog.schema.json +160 -0
  19. package/bin/schemas/control-check-program-definitions.schema.json +139 -0
  20. package/bin/schemas/control-check-program.schema.json +298 -0
  21. package/bin/schemas/control-classification-final.schema.json +64 -0
  22. package/bin/schemas/control-classification-review.schema.json +161 -0
  23. package/bin/schemas/control-classification-skeptic-review.schema.json +96 -0
  24. package/bin/schemas/control-classification-strength-review.schema.json +90 -0
  25. package/bin/schemas/control-contracts.schema.json +101 -12
  26. package/bin/schemas/control-review-output-v0.2.schema.json +66 -0
  27. package/bin/schemas/control-review-output.schema.json +22 -3
  28. package/bin/schemas/evidence-requirements.schema.json +144 -0
  29. package/bin/schemas/evidence-set-verification.schema.json +65 -0
  30. package/bin/schemas/provider-capabilities.schema.json +26 -0
  31. package/bin/schemas/run-result-v0.10.schema.json +5 -5
  32. package/bin/schemas/run-result-v0.11.schema.json +5 -5
  33. package/bin/schemas/run-result-v0.12.schema.json +270 -0
  34. package/bin/schemas/run-result.schema.json +166 -16
  35. package/bin/schemas/signature-verification.schema.json +8 -1
  36. package/bin/schemas/signature.schema.json +8 -1
  37. package/bin/schemas/trust-store.schema.json +8 -1
  38. package/manifest.json +142 -32
  39. package/package.json +1 -1
@@ -2,16 +2,16 @@ schema_version: prc.assertions/v0.1
2
2
  catalog_version: 1.0.0
3
3
  assertions:
4
4
  - id: PRC-A-CORE-001
5
- revision: 2
5
+ revision: 3
6
6
  control_ids: [USEQ-FDCA6C71]
7
7
  title: README is present
8
- statement: A nonempty README file exists at the repository root.
8
+ statement: A README file containing non-whitespace UTF-8 text exists at the repository root.
9
9
  applicability: "true"
10
10
  evidence_required:
11
11
  - kind: repository-file
12
12
  minimum_authority: repository
13
- description: A nonempty root README file from the scanned commit.
14
- implementation_id: prc.native.file-present@0.1
13
+ description: A root README containing non-whitespace UTF-8 text from the scanned commit.
14
+ implementation_id: prc.native.file-present@0.2
15
15
  parameters:
16
16
  paths: [README.md, README.rst, README.txt]
17
17
  minimum_bytes: 1
@@ -19,16 +19,16 @@ assertions:
19
19
  gate: required
20
20
  remediation_class: R2
21
21
  - id: PRC-A-CORE-002
22
- revision: 1
22
+ revision: 2
23
23
  control_ids: [USEQ-6497B434]
24
24
  title: License is present
25
- statement: A nonempty license file exists at the repository root.
25
+ statement: A license file containing non-whitespace UTF-8 text exists at the repository root.
26
26
  applicability: "true"
27
27
  evidence_required:
28
28
  - kind: repository-file
29
29
  minimum_authority: repository
30
- description: A nonempty root license file from the scanned commit.
31
- implementation_id: prc.native.file-present@0.1
30
+ description: A root license file containing non-whitespace UTF-8 text from the scanned commit.
31
+ implementation_id: prc.native.file-present@0.2
32
32
  parameters:
33
33
  paths: [LICENSE, LICENSE.md, LICENSE.txt, COPYING]
34
34
  minimum_bytes: 1
@@ -36,16 +36,16 @@ assertions:
36
36
  gate: required
37
37
  remediation_class: R0
38
38
  - id: PRC-A-CORE-003
39
- revision: 1
39
+ revision: 2
40
40
  control_ids: [USEQ-89F5E97A]
41
41
  title: Contribution guidance is present
42
- statement: A nonempty contribution guide exists at the repository root.
42
+ statement: A contribution guide containing non-whitespace UTF-8 text exists at the repository root.
43
43
  applicability: "true"
44
44
  evidence_required:
45
45
  - kind: repository-file
46
46
  minimum_authority: repository
47
- description: A nonempty root contribution guide from the scanned commit.
48
- implementation_id: prc.native.file-present@0.1
47
+ description: A root contribution guide containing non-whitespace UTF-8 text from the scanned commit.
48
+ implementation_id: prc.native.file-present@0.2
49
49
  parameters:
50
50
  paths: [CONTRIBUTING.md, CONTRIBUTING.rst]
51
51
  minimum_bytes: 1
@@ -53,16 +53,16 @@ assertions:
53
53
  gate: advisory
54
54
  remediation_class: R0
55
55
  - id: PRC-A-CORE-004
56
- revision: 1
56
+ revision: 2
57
57
  control_ids: [USEQ-AC6AC548]
58
58
  title: Security policy is present
59
- statement: A nonempty security policy exists at the repository root.
59
+ statement: A security policy containing non-whitespace UTF-8 text exists at the repository root.
60
60
  applicability: "true"
61
61
  evidence_required:
62
62
  - kind: repository-file
63
63
  minimum_authority: repository
64
- description: A nonempty root security policy from the scanned commit.
65
- implementation_id: prc.native.file-present@0.1
64
+ description: A root security policy containing non-whitespace UTF-8 text from the scanned commit.
65
+ implementation_id: prc.native.file-present@0.2
66
66
  parameters:
67
67
  paths: [SECURITY.md, docs/SECURITY.md]
68
68
  minimum_bytes: 1
@@ -70,16 +70,16 @@ assertions:
70
70
  gate: required
71
71
  remediation_class: R0
72
72
  - id: PRC-A-CORE-005
73
- revision: 1
73
+ revision: 2
74
74
  control_ids: [USEQ-D73106BF]
75
75
  title: Code of conduct is present
76
- statement: A nonempty code-of-conduct document exists at the repository root.
76
+ statement: A code-of-conduct document containing non-whitespace UTF-8 text exists at the repository root.
77
77
  applicability: "true"
78
78
  evidence_required:
79
79
  - kind: repository-file
80
80
  minimum_authority: repository
81
- description: A nonempty root code-of-conduct document from the scanned commit.
82
- implementation_id: prc.native.file-present@0.1
81
+ description: A root code-of-conduct document containing non-whitespace UTF-8 text from the scanned commit.
82
+ implementation_id: prc.native.file-present@0.2
83
83
  parameters:
84
84
  paths: [CODE_OF_CONDUCT.md, CODE_OF_CONDUCT.rst]
85
85
  minimum_bytes: 1
@@ -87,16 +87,16 @@ assertions:
87
87
  gate: advisory
88
88
  remediation_class: R0
89
89
  - id: PRC-A-CORE-006
90
- revision: 1
90
+ revision: 2
91
91
  control_ids: [USEQ-CA602113]
92
92
  title: Code ownership is declared
93
- statement: A nonempty CODEOWNERS file exists in a supported repository location.
93
+ statement: A CODEOWNERS file containing non-whitespace UTF-8 text exists in a supported repository location.
94
94
  applicability: "true"
95
95
  evidence_required:
96
96
  - kind: repository-file
97
97
  minimum_authority: repository
98
- description: A nonempty CODEOWNERS file from the scanned commit.
99
- implementation_id: prc.native.file-present@0.1
98
+ description: A CODEOWNERS file containing non-whitespace UTF-8 text from the scanned commit.
99
+ implementation_id: prc.native.file-present@0.2
100
100
  parameters:
101
101
  paths: [.github/CODEOWNERS, CODEOWNERS, docs/CODEOWNERS]
102
102
  minimum_bytes: 1
@@ -244,16 +244,16 @@ assertions:
244
244
  gate: required
245
245
  remediation_class: R0
246
246
  - id: PRC-A-CORE-016
247
- revision: 1
247
+ revision: 2
248
248
  control_ids: [PRC-36-011]
249
249
  title: Dependency updates are configured
250
- statement: A supported dependency-update automation configuration is present.
250
+ statement: A supported dependency-update automation configuration containing non-whitespace UTF-8 text is present.
251
251
  applicability: inventory.package_ecosystems.size() > 0
252
252
  evidence_required:
253
253
  - kind: repository-file
254
254
  minimum_authority: repository
255
- description: A nonempty supported dependency-update configuration.
256
- implementation_id: prc.native.file-present@0.1
255
+ description: A supported dependency-update configuration containing non-whitespace UTF-8 text.
256
+ implementation_id: prc.native.file-present@0.2
257
257
  parameters:
258
258
  paths: [.github/dependabot.yml, .github/dependabot.yaml, renovate.json, renovate.json5, .renovaterc, .renovaterc.json]
259
259
  minimum_bytes: 1
@@ -1,5 +1,5 @@
1
1
  schema_version: prc.benchmark-suite/v0.2
2
- id: prc.benchmark.core-native@1.0
2
+ id: prc.benchmark.core-native@1.1
3
3
  title: Comprehensive core native assertion benchmark
4
4
  profile_id: prc/core-repository
5
5
  cases:
@@ -78,6 +78,15 @@ cases:
78
78
  target: targets/readme-missing
79
79
  expectations:
80
80
  - {assertion_id: PRC-A-CORE-001, assessment: fail, execution: completed}
81
+ - id: readme-whitespace
82
+ target: targets/baseline
83
+ setup:
84
+ - operation: replace_text
85
+ path: README.md
86
+ find: "# Benchmark baseline\n\nThis fixture exercises repository, inapplicable, manual, and blocked outcomes.\n"
87
+ replace: "\uFEFF\u00A0\u2003\n"
88
+ expectations:
89
+ - {assertion_id: PRC-A-CORE-001, assessment: fail, execution: completed}
81
90
  - id: test-declaration-valid
82
91
  target: targets/test-declaration-valid
83
92
  expectations:
@@ -1,5 +1,5 @@
1
- schema_version: prc.benchmark-suite/v0.1
2
- id: prc.benchmark.core-native@0.1
1
+ schema_version: prc.benchmark-suite/v0.2
2
+ id: prc.benchmark.core-native@0.2
3
3
  title: Core native assertion benchmark
4
4
  profile_id: prc/core-repository
5
5
  cases:
@@ -39,6 +39,17 @@ cases:
39
39
  - assertion_id: PRC-A-CORE-001
40
40
  assessment: fail
41
41
  execution: completed
42
+ - id: readme-whitespace
43
+ target: targets/baseline
44
+ setup:
45
+ - operation: replace_text
46
+ path: README.md
47
+ find: "# Benchmark baseline\n\nThis fixture exercises repository, inapplicable, manual, and blocked outcomes.\n"
48
+ replace: "\uFEFF\u00A0\u2003\n"
49
+ expectations:
50
+ - assertion_id: PRC-A-CORE-001
51
+ assessment: fail
52
+ execution: completed
42
53
  - id: workflow-malformed
43
54
  target: targets/workflow-malformed
44
55
  expectations:
@@ -1,5 +1,5 @@
1
1
  schema_version: prc.pack/v0.1
2
- id: prc.pack.core-foundation@0.1
2
+ id: prc.pack.core-foundation@0.2
3
3
  title: Core repository validated foundation
4
4
  description: A small, measured foundation of deterministic repository checks.
5
5
  publisher_id: prc-project
@@ -8,7 +8,7 @@ engine_apis: [prc.engine/v0.1]
8
8
  profile_ids: [prc/core-repository]
9
9
  assertions:
10
10
  - assertion_id: PRC-A-CORE-001
11
- implementation_id: prc.native.file-present@0.1
11
+ implementation_id: prc.native.file-present@0.2
12
12
  validated_outcomes: [pass, fail]
13
13
  - assertion_id: PRC-A-CORE-007
14
14
  implementation_id: prc.native.dependency-lock@0.1
@@ -17,9 +17,9 @@ assertions:
17
17
  implementation_id: prc.native.github-workflow-valid@0.1
18
18
  validated_outcomes: [pass, not_applicable, error]
19
19
  benchmark:
20
- suite_id: prc.benchmark.core-native@0.1
20
+ suite_id: prc.benchmark.core-native@0.2
21
21
  suite_path: fixtures/benchmarks/core-native/suite.yaml
22
- suite_sha256: 208c180313d0bd0b13d09eaca040eb967fb6664f205b283841f386b9cacd2e7d
22
+ suite_sha256: 06a20e9bf344e4a1684043f6a90a1aed714eca4efc59a015d84e890e5acd5395
23
23
  limitations:
24
24
  - The pack covers only three native assertions and is not the complete core profile.
25
25
  - The initial fixtures do not establish cross-platform or large-repository performance.
@@ -1,5 +1,5 @@
1
1
  schema_version: prc.pack/v0.1
2
- id: prc.pack.core-native@1.0
2
+ id: prc.pack.core-native@1.1
3
3
  title: Core native assertion pack
4
4
  description: Catalog-wide deterministic checks measured against the comprehensive core fixture corpus.
5
5
  publisher_id: prc-project
@@ -7,12 +7,12 @@ maintenance: active
7
7
  engine_apis: [prc.engine/v0.1]
8
8
  profile_ids: [prc/core-repository, prc/api, prc/kubernetes]
9
9
  assertions:
10
- - {assertion_id: PRC-A-CORE-001, implementation_id: prc.native.file-present@0.1, validated_outcomes: [pass, fail]}
11
- - {assertion_id: PRC-A-CORE-002, implementation_id: prc.native.file-present@0.1, validated_outcomes: [pass, fail]}
12
- - {assertion_id: PRC-A-CORE-003, implementation_id: prc.native.file-present@0.1, validated_outcomes: [pass, fail]}
13
- - {assertion_id: PRC-A-CORE-004, implementation_id: prc.native.file-present@0.1, validated_outcomes: [pass, fail]}
14
- - {assertion_id: PRC-A-CORE-005, implementation_id: prc.native.file-present@0.1, validated_outcomes: [pass, fail]}
15
- - {assertion_id: PRC-A-CORE-006, implementation_id: prc.native.file-present@0.1, validated_outcomes: [pass, fail]}
10
+ - {assertion_id: PRC-A-CORE-001, implementation_id: prc.native.file-present@0.2, validated_outcomes: [pass, fail]}
11
+ - {assertion_id: PRC-A-CORE-002, implementation_id: prc.native.file-present@0.2, validated_outcomes: [pass, fail]}
12
+ - {assertion_id: PRC-A-CORE-003, implementation_id: prc.native.file-present@0.2, validated_outcomes: [pass, fail]}
13
+ - {assertion_id: PRC-A-CORE-004, implementation_id: prc.native.file-present@0.2, validated_outcomes: [pass, fail]}
14
+ - {assertion_id: PRC-A-CORE-005, implementation_id: prc.native.file-present@0.2, validated_outcomes: [pass, fail]}
15
+ - {assertion_id: PRC-A-CORE-006, implementation_id: prc.native.file-present@0.2, validated_outcomes: [pass, fail]}
16
16
  - {assertion_id: PRC-A-CORE-007, implementation_id: prc.native.dependency-lock@0.1, validated_outcomes: [pass, fail, not_applicable]}
17
17
  - {assertion_id: PRC-A-CORE-008, implementation_id: prc.native.github-action-pin@0.1, validated_outcomes: [pass, fail, not_applicable]}
18
18
  - {assertion_id: PRC-A-CORE-009, implementation_id: prc.native.ci-present@0.1, validated_outcomes: [pass, fail]}
@@ -22,7 +22,7 @@ assertions:
22
22
  - {assertion_id: PRC-A-CORE-013, implementation_id: prc.native.analysis-evidence@0.1, validated_outcomes: [blocked]}
23
23
  - {assertion_id: PRC-A-CORE-014, implementation_id: prc.native.final-newline@0.1, validated_outcomes: [pass, fail]}
24
24
  - {assertion_id: PRC-A-CORE-015, implementation_id: prc.native.git-revision@0.1, validated_outcomes: [pass, fail]}
25
- - {assertion_id: PRC-A-CORE-016, implementation_id: prc.native.file-present@0.1, validated_outcomes: [pass, fail, not_applicable]}
25
+ - {assertion_id: PRC-A-CORE-016, implementation_id: prc.native.file-present@0.2, validated_outcomes: [pass, fail, not_applicable]}
26
26
  - {assertion_id: PRC-A-CORE-017, implementation_id: prc.native.github-workflow-valid@0.1, validated_outcomes: [pass, not_applicable, error]}
27
27
  - {assertion_id: PRC-A-CORE-018, implementation_id: prc.native.github-workflow-jobs@0.1, validated_outcomes: [pass, fail, not_applicable, error]}
28
28
  - {assertion_id: PRC-A-CORE-019, implementation_id: prc.native.github-workflow-timeouts@0.1, validated_outcomes: [pass, fail, not_applicable, error]}
@@ -48,9 +48,9 @@ assertions:
48
48
  - {assertion_id: PRC-A-K8S-003, implementation_id: prc.native.kubernetes-capabilities@0.1, validated_outcomes: [pass, fail, not_applicable]}
49
49
  - {assertion_id: PRC-A-K8S-004, implementation_id: prc.native.kubernetes-seccomp@0.1, validated_outcomes: [pass, fail, not_applicable]}
50
50
  benchmark:
51
- suite_id: prc.benchmark.core-native@1.0
51
+ suite_id: prc.benchmark.core-native@1.1
52
52
  suite_path: fixtures/benchmarks/core-native/suite-comprehensive.yaml
53
- suite_sha256: 1035fef3034185344a18bbf3e308143418f1b0bbd7f1fdd0a71a8adc138c9968
53
+ suite_sha256: 532a5828a6e283d38ddcdbae71fdbbfd03159128067e5a8037dac3f6a36ac4b3
54
54
  limitations:
55
55
  - Manual-review and adapter-backed assertions are validated only in their fail-closed manual or blocked states.
56
56
  - OpenAPI operation checks cover direct path and webhook operations; referenced Path Items, callbacks, multi-document descriptions, and referenced responses require a future bounded resolver or adapter.
package/bin/prc CHANGED
Binary file
@@ -0,0 +1,145 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://marinjursic.github.io/production-readiness-checklist/schemas/adapter-execution-v0.3.schema.json",
4
+ "title": "Bound Production Readiness Adapter Execution v0.3",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "execution_id", "adapter_run_id", "adapter_id", "manifest_sha256", "image", "resolution", "data_inputs", "subject", "started_at", "completed_at", "duration_ms", "diagnostics_sha256", "diagnostics_bytes", "transcript"],
8
+ "properties": {
9
+ "schema_version": {"const": "prc.adapter-execution/v0.3"},
10
+ "execution_id": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
11
+ "adapter_run_id": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
12
+ "adapter_id": {"type": "string", "pattern": "^prc\\.adapter\\.[a-z0-9.-]+@[0-9]+\\.[0-9]+$"},
13
+ "manifest_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
14
+ "image": {"type": "string", "pattern": "^.+@sha256:[0-9a-f]{64}$"},
15
+ "resolution": {"$ref": "#/$defs/resolution"},
16
+ "data_inputs": {
17
+ "type": "array",
18
+ "maxItems": 16,
19
+ "items": {"$ref": "#/$defs/data_input"}
20
+ },
21
+ "subject": {"$ref": "#/$defs/subject"},
22
+ "started_at": {"type": "string", "format": "date-time"},
23
+ "completed_at": {"type": "string", "format": "date-time"},
24
+ "duration_ms": {"type": "integer", "minimum": 0},
25
+ "diagnostics_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
26
+ "diagnostics_bytes": {"type": "integer", "minimum": 0},
27
+ "transcript": {"$ref": "#/$defs/transcript"}
28
+ },
29
+ "$defs": {
30
+ "data_input": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": ["name", "destination", "sha256", "files", "bytes"],
34
+ "properties": {
35
+ "name": {"type": "string", "pattern": "^[a-z0-9][a-z0-9.-]{0,127}$"},
36
+ "destination": {"type": "string", "pattern": "^/prc-inputs/[a-z0-9][a-z0-9.-]{0,127}$"},
37
+ "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
38
+ "files": {"type": "integer", "minimum": 1},
39
+ "bytes": {"type": "integer", "minimum": 1}
40
+ }
41
+ },
42
+ "resolution": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "required": ["source", "publisher_id", "trust"],
46
+ "properties": {
47
+ "source": {"enum": ["explicit-local", "registry"]},
48
+ "publisher_id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9.-]{0,127}$"},
49
+ "trust": {"enum": ["local-explicit", "first-party-sandboxed", "verified-community", "unverified-community", "local"]},
50
+ "registry_id": {"type": "string", "pattern": "^prc\\.adapter-registry\\.[a-z0-9.-]+@[0-9]+\\.[0-9]+$"},
51
+ "registry_revision": {"type": "integer", "minimum": 1},
52
+ "registry_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"}
53
+ },
54
+ "allOf": [
55
+ {
56
+ "if": {"properties": {"source": {"const": "registry"}}},
57
+ "then": {
58
+ "required": ["registry_id", "registry_revision", "registry_digest"],
59
+ "properties": {"trust": {"enum": ["first-party-sandboxed", "verified-community", "unverified-community", "local"]}}
60
+ },
61
+ "else": {
62
+ "properties": {"trust": {"const": "local-explicit"}},
63
+ "not": {"anyOf": [{"required": ["registry_id"]}, {"required": ["registry_revision"]}, {"required": ["registry_digest"]}]}
64
+ }
65
+ }
66
+ ]
67
+ },
68
+ "subject": {
69
+ "type": "object",
70
+ "additionalProperties": false,
71
+ "required": ["target_name", "inventory_digest"],
72
+ "properties": {
73
+ "target_name": {"type": "string", "minLength": 1},
74
+ "target_commit": {"type": "string", "pattern": "^[0-9a-f]{40,64}$"},
75
+ "inventory_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"}
76
+ }
77
+ },
78
+ "location": {
79
+ "type": "object",
80
+ "additionalProperties": false,
81
+ "required": ["path"],
82
+ "properties": {
83
+ "path": {"type": "string", "minLength": 1},
84
+ "line": {"type": "integer", "minimum": 0},
85
+ "column": {"type": "integer", "minimum": 0}
86
+ }
87
+ },
88
+ "observation": {
89
+ "type": "object",
90
+ "additionalProperties": false,
91
+ "required": ["id", "kind", "outcome", "summary", "locations"],
92
+ "properties": {
93
+ "id": {"type": "string", "minLength": 1},
94
+ "kind": {"type": "string", "minLength": 1},
95
+ "outcome": {"enum": ["found", "not_found", "value", "unsupported"]},
96
+ "summary": {"type": "string", "minLength": 1},
97
+ "locations": {"type": "array", "items": {"$ref": "#/$defs/location"}},
98
+ "data": {"type": "object"}
99
+ }
100
+ },
101
+ "artifact": {
102
+ "type": "object",
103
+ "additionalProperties": false,
104
+ "required": ["id", "media_type", "digest", "size"],
105
+ "properties": {
106
+ "id": {"type": "string", "minLength": 1},
107
+ "media_type": {"type": "string", "minLength": 1},
108
+ "digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
109
+ "size": {"type": "integer", "minimum": 0},
110
+ "path": {"type": "string", "minLength": 1}
111
+ }
112
+ },
113
+ "log": {
114
+ "type": "object",
115
+ "additionalProperties": false,
116
+ "required": ["level", "message"],
117
+ "properties": {
118
+ "level": {"enum": ["debug", "info", "warning", "error"]},
119
+ "message": {"type": "string", "minLength": 1}
120
+ }
121
+ },
122
+ "summary": {
123
+ "type": "object",
124
+ "additionalProperties": false,
125
+ "required": ["status", "counts"],
126
+ "properties": {
127
+ "status": {"enum": ["completed", "partial", "unsupported", "configuration_error", "execution_error", "timeout", "parse_error"]},
128
+ "counts": {"type": "object", "additionalProperties": {"type": "integer", "minimum": 0}},
129
+ "reason": {"type": "string", "minLength": 1}
130
+ },
131
+ "allOf": [{"if": {"properties": {"status": {"not": {"const": "completed"}}}}, "then": {"required": ["reason"]}}]
132
+ },
133
+ "transcript": {
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "required": ["logs", "observations", "artifacts", "summary"],
137
+ "properties": {
138
+ "logs": {"type": "array", "items": {"$ref": "#/$defs/log"}},
139
+ "observations": {"type": "array", "items": {"$ref": "#/$defs/observation"}},
140
+ "artifacts": {"type": "array", "items": {"$ref": "#/$defs/artifact"}},
141
+ "summary": {"$ref": "#/$defs/summary"}
142
+ }
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://marinjursic.github.io/production-readiness-checklist/schemas/authoritative-evidence-bundle.schema.json",
4
+ "title": "Production Readiness Authoritative Evidence Bundle v0.1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "id", "catalog_sha256", "inventory_sha256", "authority", "entries"],
8
+ "properties": {
9
+ "schema_version": {"const": "prc.authoritative-evidence-bundle/v0.1"},
10
+ "id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9./@_-]{0,255}$"},
11
+ "catalog_sha256": {"$ref": "#/$defs/digest"},
12
+ "inventory_sha256": {"$ref": "#/$defs/digest"},
13
+ "authority": {"$ref": "#/$defs/authority"},
14
+ "entries": {
15
+ "type": "array",
16
+ "minItems": 1,
17
+ "maxItems": 765,
18
+ "items": {"$ref": "#/$defs/entry"}
19
+ }
20
+ },
21
+ "$defs": {
22
+ "digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
23
+ "authority": {
24
+ "enum": ["repository", "artifact", "executed", "environment", "external_registry", "structured_record"]
25
+ },
26
+ "entry": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["template_id", "provider_id", "program", "evidence"],
30
+ "properties": {
31
+ "template_id": {"$ref": "#/$defs/digest"},
32
+ "provider_id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._/@:-]{0,255}$"},
33
+ "program": {"$ref": "control-check-program.schema.json"},
34
+ "evidence": {"$ref": "control-check-evidence.schema.json"}
35
+ }
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://marinjursic.github.io/production-readiness-checklist/schemas/authoritative-evidence-set.schema.json",
4
+ "title": "Production Readiness Authoritative Evidence Set v0.1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "trust_store_file", "bundles"],
8
+ "properties": {
9
+ "schema_version": {"const": "prc.authoritative-evidence-set/v0.1"},
10
+ "trust_store_file": {"$ref": "#/$defs/file_name"},
11
+ "bundles": {
12
+ "type": "array",
13
+ "minItems": 1,
14
+ "maxItems": 6,
15
+ "items": {"$ref": "#/$defs/bundle"}
16
+ }
17
+ },
18
+ "$defs": {
19
+ "file_name": {
20
+ "type": "string",
21
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
22
+ },
23
+ "authority": {
24
+ "enum": ["artifact", "environment", "executed", "external_registry", "repository", "structured_record"]
25
+ },
26
+ "bundle": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["authority", "bundle_file", "policy_signature_file", "evidence_signature_file"],
30
+ "properties": {
31
+ "authority": {"$ref": "#/$defs/authority"},
32
+ "bundle_file": {"$ref": "#/$defs/file_name"},
33
+ "policy_signature_file": {"$ref": "#/$defs/file_name"},
34
+ "evidence_signature_file": {"$ref": "#/$defs/file_name"}
35
+ }
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://marinjursic.github.io/production-readiness-checklist/schemas/authoritative-evidence-verification.schema.json",
4
+ "title": "Production Readiness Authoritative Evidence Verification v0.1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version", "bundle_id", "bundle_sha256", "policy_sha256", "catalog_sha256", "inventory_sha256",
9
+ "authority", "entry_count", "entries", "policy_signature", "evidence_signature"
10
+ ],
11
+ "properties": {
12
+ "schema_version": {"const": "prc.authoritative-evidence-verification/v0.1"},
13
+ "bundle_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9./@_-]{0,255}$"},
14
+ "bundle_sha256": {"$ref": "#/$defs/digest"},
15
+ "policy_sha256": {"$ref": "#/$defs/digest"},
16
+ "catalog_sha256": {"$ref": "#/$defs/digest"},
17
+ "inventory_sha256": {"$ref": "#/$defs/digest"},
18
+ "authority": {
19
+ "enum": ["repository", "artifact", "executed", "environment", "external_registry", "structured_record"]
20
+ },
21
+ "entry_count": {"type": "integer", "minimum": 1, "maximum": 765},
22
+ "entries": {
23
+ "type": "array",
24
+ "minItems": 1,
25
+ "maxItems": 765,
26
+ "items": {"$ref": "#/$defs/entry"}
27
+ },
28
+ "policy_signature": {"$ref": "signature-verification.schema.json"},
29
+ "evidence_signature": {"$ref": "signature-verification.schema.json"}
30
+ },
31
+ "$defs": {
32
+ "digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
33
+ "entry": {
34
+ "type": "object",
35
+ "additionalProperties": false,
36
+ "required": ["template_id", "provider_id", "program", "evidence_sha256", "outcome", "reason_code"],
37
+ "properties": {
38
+ "template_id": {"$ref": "#/$defs/digest"},
39
+ "provider_id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._/@:-]{0,255}$"},
40
+ "program": {"$ref": "control-check-program.schema.json"},
41
+ "evidence_sha256": {"$ref": "#/$defs/digest"},
42
+ "outcome": {"enum": ["pass", "fail", "blocked", "not_applicable"]},
43
+ "reason_code": {
44
+ "enum": [
45
+ "passed", "predicate_false", "not_applicable", "invalid_program", "invalid_evidence",
46
+ "evidence_binding_mismatch", "wrong_authority", "evidence_stale", "evidence_from_future",
47
+ "evidence_incomplete", "evidence_conflicting", "applicability_unknown",
48
+ "not_applicable_disallowed", "applicability_proof_missing", "fact_missing", "fact_type_mismatch"
49
+ ]
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://marinjursic.github.io/production-readiness-checklist/schemas/automatic-coverage.schema.json",
4
+ "title": "Production Readiness Automatic Coverage v0.1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version", "control_count", "reviewed_routing_control_count",
9
+ "deterministic_control_count", "nondeterministic_control_count", "advisory_ai_review_control_count", "exact_clause_count",
10
+ "exact_predicate_clause_count", "built_in_collector_clause_count",
11
+ "signed_import_supported_clause_count", "authorities"
12
+ ],
13
+ "properties": {
14
+ "schema_version": {"const": "prc.automatic-coverage/v0.1"},
15
+ "control_count": {"type": "integer", "minimum": 1},
16
+ "reviewed_routing_control_count": {"type": "integer", "minimum": 0},
17
+ "deterministic_control_count": {"type": "integer", "minimum": 0},
18
+ "nondeterministic_control_count": {"type": "integer", "minimum": 0},
19
+ "advisory_ai_review_control_count": {"type": "integer", "minimum": 0},
20
+ "exact_clause_count": {"type": "integer", "minimum": 0},
21
+ "exact_predicate_clause_count": {"type": "integer", "minimum": 0},
22
+ "built_in_collector_clause_count": {"type": "integer", "minimum": 0},
23
+ "signed_import_supported_clause_count": {"type": "integer", "minimum": 0},
24
+ "authorities": {
25
+ "type": "array",
26
+ "minItems": 1,
27
+ "maxItems": 6,
28
+ "items": {"$ref": "#/$defs/authority"}
29
+ }
30
+ },
31
+ "$defs": {
32
+ "authority": {
33
+ "type": "object",
34
+ "additionalProperties": false,
35
+ "required": [
36
+ "name", "exact_clause_count", "built_in_collector_clause_count",
37
+ "signed_import_supported_clause_count"
38
+ ],
39
+ "properties": {
40
+ "name": {
41
+ "enum": ["artifact", "environment", "executed", "external_registry", "repository", "structured_record"]
42
+ },
43
+ "exact_clause_count": {"type": "integer", "minimum": 0},
44
+ "built_in_collector_clause_count": {"type": "integer", "minimum": 0},
45
+ "signed_import_supported_clause_count": {"type": "integer", "minimum": 0}
46
+ }
47
+ }
48
+ }
49
+ }