@marinjursic/prc-linux-arm64 0.1.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 (264) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/bin/LICENSE +21 -0
  4. package/bin/README.md +335 -0
  5. package/bin/THIRD_PARTY_NOTICES.md +74 -0
  6. package/bin/adapters/checkov-v3.3.8.yaml +50 -0
  7. package/bin/adapters/gitleaks-v8.30.0.yaml +63 -0
  8. package/bin/adapters/grype-v0.116.1.yaml +58 -0
  9. package/bin/adapters/syft-v1.51.0.yaml +54 -0
  10. package/bin/catalog/assertions/core-repository.yaml +625 -0
  11. package/bin/catalog/assertions/iac.yaml +24 -0
  12. package/bin/catalog/assertions/supply-chain.yaml +45 -0
  13. package/bin/catalog/control-contracts.json +1 -0
  14. package/bin/catalog/control-id-registry.json +110470 -0
  15. package/bin/catalog/objectives/core-repository.yaml +243 -0
  16. package/bin/catalog/objectives/iac.yaml +13 -0
  17. package/bin/catalog/objectives/supply-chain.yaml +13 -0
  18. package/bin/catalog/profiles/api.yaml +12 -0
  19. package/bin/catalog/profiles/core-repository.yaml +49 -0
  20. package/bin/catalog/profiles/iac.yaml +18 -0
  21. package/bin/catalog/profiles/kubernetes.yaml +15 -0
  22. package/bin/catalog/profiles/quick.yaml +27 -0
  23. package/bin/catalog/profiles/supply-chain.yaml +20 -0
  24. package/bin/docs/architecture/adapters.md +380 -0
  25. package/bin/docs/architecture/agent-providers.md +188 -0
  26. package/bin/docs/architecture/applicability.md +80 -0
  27. package/bin/docs/architecture/catalog-integrity.md +85 -0
  28. package/bin/docs/architecture/evidence-and-results.md +154 -0
  29. package/bin/docs/architecture/execution-plans.md +61 -0
  30. package/bin/docs/architecture/product-contract.md +76 -0
  31. package/bin/docs/architecture/publisher-trust.md +68 -0
  32. package/bin/docs/architecture/remediation-contract.md +113 -0
  33. package/bin/docs/architecture/trust-model.md +95 -0
  34. package/bin/docs/assets/hero.svg +37 -0
  35. package/bin/docs/assets/logo.svg +13 -0
  36. package/bin/docs/assets/production-readiness-scan-demo-poster.png +0 -0
  37. package/bin/docs/assets/production-readiness-scan-demo.gif +0 -0
  38. package/bin/docs/assets/production-readiness-scan-demo.mp4 +0 -0
  39. package/bin/docs/assets/social-card.png +0 -0
  40. package/bin/docs/assets/social-card.svg +40 -0
  41. package/bin/docs/checklists/00-readiness-principle.md +17 -0
  42. package/bin/docs/checklists/01-release-foundations.md +91 -0
  43. package/bin/docs/checklists/02-product-risk-architecture.md +136 -0
  44. package/bin/docs/checklists/03-source-build-supply-chain.md +97 -0
  45. package/bin/docs/checklists/04-environments-quality-experience.md +226 -0
  46. package/bin/docs/checklists/05-application-security.md +320 -0
  47. package/bin/docs/checklists/06-data-privacy-performance.md +166 -0
  48. package/bin/docs/checklists/07-reliability-operations.md +355 -0
  49. package/bin/docs/checklists/08-maintenance-vendors-compliance.md +112 -0
  50. package/bin/docs/checklists/09-conditional-modules.md +229 -0
  51. package/bin/docs/checklists/10-evidence-and-decision.md +111 -0
  52. package/bin/docs/engineering/00-overview.md +51 -0
  53. package/bin/docs/engineering/01-governance-and-foundations.md +919 -0
  54. package/bin/docs/engineering/02-product-and-requirements.md +186 -0
  55. package/bin/docs/engineering/03-user-experience-web-and-content.md +1352 -0
  56. package/bin/docs/engineering/04-architecture-and-design.md +387 -0
  57. package/bin/docs/engineering/05-code-quality-and-implementation.md +1103 -0
  58. package/bin/docs/engineering/06-application-services-and-apis.md +476 -0
  59. package/bin/docs/engineering/07-data-and-information-lifecycle.md +1009 -0
  60. package/bin/docs/engineering/08-security-and-cryptography.md +1215 -0
  61. package/bin/docs/engineering/09-privacy-and-data-protection.md +205 -0
  62. package/bin/docs/engineering/10-verification-and-testing.md +841 -0
  63. package/bin/docs/engineering/11-developer-experience-platform-and-delivery.md +1013 -0
  64. package/bin/docs/engineering/12-operations-sre-and-support.md +795 -0
  65. package/bin/docs/engineering/13-documentation-and-knowledge.md +349 -0
  66. package/bin/docs/engineering/14-trust-safety-and-ecosystems.md +330 -0
  67. package/bin/docs/engineering/15-ai-ml-and-ai-assisted-development.md +785 -0
  68. package/bin/docs/engineering/16-specialized-domains-and-release-assurance.md +775 -0
  69. package/bin/docs/engineering/source-manifest.md +479 -0
  70. package/bin/docs/guides/ai-assisted-review.md +61 -0
  71. package/bin/docs/guides/getting-started.md +78 -0
  72. package/bin/docs/index.md +66 -0
  73. package/bin/docs/prompts/evidence-challenge.md +26 -0
  74. package/bin/docs/prompts/full-readiness-review.md +34 -0
  75. package/bin/docs/prompts/release-diff-review.md +31 -0
  76. package/bin/docs/records/evidence-record.md +42 -0
  77. package/bin/docs/records/go-no-go-decision.md +63 -0
  78. package/bin/docs/records/release-assessment.md +124 -0
  79. package/bin/docs/records/risk-exception.md +64 -0
  80. package/bin/docs/references.md +52 -0
  81. package/bin/docs/scanner/ai-control-review.md +208 -0
  82. package/bin/docs/scanner/benchmarks.md +122 -0
  83. package/bin/docs/scanner/cli-contract.md +130 -0
  84. package/bin/docs/scanner/configuration.md +101 -0
  85. package/bin/docs/scanner/control-contracts.md +47 -0
  86. package/bin/docs/scanner/core-repository.md +62 -0
  87. package/bin/docs/scanner/diff-and-invalidation.md +79 -0
  88. package/bin/docs/scanner/doctor.md +71 -0
  89. package/bin/docs/scanner/getting-started.md +355 -0
  90. package/bin/docs/scanner/go-http-timeouts.md +96 -0
  91. package/bin/docs/scanner/infrastructure-policy.md +64 -0
  92. package/bin/docs/scanner/kubernetes-workloads.md +63 -0
  93. package/bin/docs/scanner/mcp-agent-integration.md +138 -0
  94. package/bin/docs/scanner/openapi-contracts.md +75 -0
  95. package/bin/docs/scanner/private-key-armor.md +44 -0
  96. package/bin/docs/scanner/releases.md +160 -0
  97. package/bin/docs/scanner/remediation.md +273 -0
  98. package/bin/docs/scanner/risk-exceptions.md +52 -0
  99. package/bin/docs/scanner/security-walkthrough.md +236 -0
  100. package/bin/docs/scanner/state-and-history.md +113 -0
  101. package/bin/docs/scanner/supply-chain.md +132 -0
  102. package/bin/docs/scanner/test-discovery.md +60 -0
  103. package/bin/docs/stylesheets/extra.css +183 -0
  104. package/bin/fixtures/benchmarks/core-native/suite-comprehensive.yaml +302 -0
  105. package/bin/fixtures/benchmarks/core-native/suite.yaml +59 -0
  106. package/bin/fixtures/benchmarks/core-native/targets/baseline/README.md +3 -0
  107. package/bin/fixtures/benchmarks/core-native/targets/baseline/app.go +1 -0
  108. package/bin/fixtures/benchmarks/core-native/targets/conflict-template/app.js +5 -0
  109. package/bin/fixtures/benchmarks/core-native/targets/container-risky-template/Dockerfile +2 -0
  110. package/bin/fixtures/benchmarks/core-native/targets/container-valid/Dockerfile +2 -0
  111. package/bin/fixtures/benchmarks/core-native/targets/dependency-lock-missing/package.json +5 -0
  112. package/bin/fixtures/benchmarks/core-native/targets/dependency-lock-present/package-lock.json +6 -0
  113. package/bin/fixtures/benchmarks/core-native/targets/dependency-lock-present/package.json +5 -0
  114. package/bin/fixtures/benchmarks/core-native/targets/empty-manifest-template/package.json +1 -0
  115. package/bin/fixtures/benchmarks/core-native/targets/final-newline-template/app.py +1 -0
  116. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/.github/CODEOWNERS +1 -0
  117. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/.github/dependabot.yml +6 -0
  118. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/.github/workflows/validate.yml +15 -0
  119. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/CODE_OF_CONDUCT.md +3 -0
  120. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/CONTRIBUTING.md +3 -0
  121. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/LICENSE +1 -0
  122. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/README.md +3 -0
  123. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/SECURITY.md +3 -0
  124. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/package-lock.json +6 -0
  125. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/package.json +7 -0
  126. package/bin/fixtures/benchmarks/core-native/targets/foundation-present/tests/example.test.js +3 -0
  127. package/bin/fixtures/benchmarks/core-native/targets/go-http-server-timeout-risky-template/go.mod +3 -0
  128. package/bin/fixtures/benchmarks/core-native/targets/go-http-server-timeout-risky-template/server.go +18 -0
  129. package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-malformed-template/client.go +3 -0
  130. package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-malformed-template/go.mod +3 -0
  131. package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-risky-template/client.go +7 -0
  132. package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-risky-template/go.mod +3 -0
  133. package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-safe/client.go +22 -0
  134. package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-safe/go.mod +3 -0
  135. package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-safe/hazards_test.go +8 -0
  136. package/bin/fixtures/benchmarks/core-native/targets/kubernetes-risky-template/deployment.yaml +27 -0
  137. package/bin/fixtures/benchmarks/core-native/targets/kubernetes-valid/deployment.yaml +26 -0
  138. package/bin/fixtures/benchmarks/core-native/targets/openapi-operation-ids-risky-template/openapi.yaml +17 -0
  139. package/bin/fixtures/benchmarks/core-native/targets/openapi-operation-responses-risky-template/openapi.yaml +11 -0
  140. package/bin/fixtures/benchmarks/core-native/targets/openapi-root-malformed-template/openapi.yaml +5 -0
  141. package/bin/fixtures/benchmarks/core-native/targets/openapi-root-risky-template/openapi.yaml +5 -0
  142. package/bin/fixtures/benchmarks/core-native/targets/openapi-root-valid/openapi.yaml +17 -0
  143. package/bin/fixtures/benchmarks/core-native/targets/package-test-command/app.js +3 -0
  144. package/bin/fixtures/benchmarks/core-native/targets/package-test-command/package.json +7 -0
  145. package/bin/fixtures/benchmarks/core-native/targets/package-test-placeholder/app.js +3 -0
  146. package/bin/fixtures/benchmarks/core-native/targets/package-test-placeholder/package.json +7 -0
  147. package/bin/fixtures/benchmarks/core-native/targets/private-key-template/deploy.pem +3 -0
  148. package/bin/fixtures/benchmarks/core-native/targets/readme-missing/fixture.txt +1 -0
  149. package/bin/fixtures/benchmarks/core-native/targets/runtime-missing/package-lock.json +6 -0
  150. package/bin/fixtures/benchmarks/core-native/targets/runtime-missing/package.json +4 -0
  151. package/bin/fixtures/benchmarks/core-native/targets/terraform-locked/.terraform.lock.hcl +3 -0
  152. package/bin/fixtures/benchmarks/core-native/targets/terraform-locked/main.tf +7 -0
  153. package/bin/fixtures/benchmarks/core-native/targets/terraform-unlocked-template/.terraform.lock.hcl +3 -0
  154. package/bin/fixtures/benchmarks/core-native/targets/terraform-unlocked-template/main.tf +7 -0
  155. package/bin/fixtures/benchmarks/core-native/targets/test-declaration-valid/app.py +2 -0
  156. package/bin/fixtures/benchmarks/core-native/targets/test-declaration-valid/tests/test_app.py +5 -0
  157. package/bin/fixtures/benchmarks/core-native/targets/test-path-without-declaration/app.py +2 -0
  158. package/bin/fixtures/benchmarks/core-native/targets/test-path-without-declaration/tests/test_app.py +1 -0
  159. package/bin/fixtures/benchmarks/core-native/targets/workflow-malformed/.github/workflows/validate.yml +1 -0
  160. package/bin/fixtures/benchmarks/core-native/targets/workflow-no-jobs/.github/workflows/empty.yml +9 -0
  161. package/bin/fixtures/benchmarks/core-native/targets/workflow-risky/.github/workflows/risky.yml +10 -0
  162. package/bin/fixtures/benchmarks/core-native/targets/workflow-valid/.github/workflows/validate.yml +14 -0
  163. package/bin/packs/core-foundation.yaml +25 -0
  164. package/bin/packs/core-native.yaml +59 -0
  165. package/bin/prc +0 -0
  166. package/bin/schemas/adapter-execution-v0.1.schema.json +101 -0
  167. package/bin/schemas/adapter-execution-v0.2.schema.json +128 -0
  168. package/bin/schemas/adapter-execution.schema.json +145 -0
  169. package/bin/schemas/adapter-fixture-report.schema.json +59 -0
  170. package/bin/schemas/adapter-fixture-suite.schema.json +104 -0
  171. package/bin/schemas/adapter-manifest-v0.1.schema.json +55 -0
  172. package/bin/schemas/adapter-manifest-v0.2.schema.json +122 -0
  173. package/bin/schemas/adapter-manifest-v0.3.schema.json +172 -0
  174. package/bin/schemas/adapter-manifest.schema.json +299 -0
  175. package/bin/schemas/adapter-message.schema.json +136 -0
  176. package/bin/schemas/adapter-registry-report.schema.json +13 -0
  177. package/bin/schemas/adapter-registry.schema.json +47 -0
  178. package/bin/schemas/agent-execution-v0.1.schema.json +26 -0
  179. package/bin/schemas/agent-execution.schema.json +26 -0
  180. package/bin/schemas/agent-failure-v0.1.schema.json +102 -0
  181. package/bin/schemas/agent-failure.schema.json +102 -0
  182. package/bin/schemas/agent-output-v0.1.schema.json +36 -0
  183. package/bin/schemas/agent-output.schema.json +36 -0
  184. package/bin/schemas/agent-task-v0.1.schema.json +44 -0
  185. package/bin/schemas/agent-task.schema.json +46 -0
  186. package/bin/schemas/assertion-catalog.schema.json +69 -0
  187. package/bin/schemas/benchmark-report.schema.json +94 -0
  188. package/bin/schemas/benchmark-suite.schema.json +116 -0
  189. package/bin/schemas/catalog-bundle.schema.json +27 -0
  190. package/bin/schemas/catalog-manifest.schema.json +23 -0
  191. package/bin/schemas/checkov-iac-policy-report.schema.json +82 -0
  192. package/bin/schemas/control-contracts.schema.json +44 -0
  193. package/bin/schemas/control-review-output.schema.json +51 -0
  194. package/bin/schemas/doctor.schema.json +53 -0
  195. package/bin/schemas/evidence-v0.1.schema.json +21 -0
  196. package/bin/schemas/evidence.schema.json +21 -0
  197. package/bin/schemas/finding-v0.1.schema.json +70 -0
  198. package/bin/schemas/finding.schema.json +70 -0
  199. package/bin/schemas/fix-contract-v0.1.schema.json +35 -0
  200. package/bin/schemas/fix-contract-v0.2.schema.json +46 -0
  201. package/bin/schemas/fix-contract-v0.3.schema.json +49 -0
  202. package/bin/schemas/fix-contract.schema.json +49 -0
  203. package/bin/schemas/grype-vulnerability-report.schema.json +88 -0
  204. package/bin/schemas/history.schema.json +37 -0
  205. package/bin/schemas/invalidation.schema.json +86 -0
  206. package/bin/schemas/inventory-v0.1.schema.json +42 -0
  207. package/bin/schemas/inventory-v0.2.schema.json +95 -0
  208. package/bin/schemas/inventory-v0.3.schema.json +139 -0
  209. package/bin/schemas/inventory.schema.json +139 -0
  210. package/bin/schemas/objective-catalog.schema.json +62 -0
  211. package/bin/schemas/pack-report.schema.json +16 -0
  212. package/bin/schemas/pack.schema.json +53 -0
  213. package/bin/schemas/plan-v0.1.schema.json +31 -0
  214. package/bin/schemas/plan-v0.2.schema.json +32 -0
  215. package/bin/schemas/plan-v0.3.schema.json +44 -0
  216. package/bin/schemas/plan-v0.4.schema.json +48 -0
  217. package/bin/schemas/plan-v0.5.schema.json +49 -0
  218. package/bin/schemas/plan-v0.6.schema.json +137 -0
  219. package/bin/schemas/plan.schema.json +137 -0
  220. package/bin/schemas/profile.schema.json +42 -0
  221. package/bin/schemas/project-config.schema.json +128 -0
  222. package/bin/schemas/release-manifest-v0.1.schema.json +86 -0
  223. package/bin/schemas/release-manifest-v0.2.schema.json +146 -0
  224. package/bin/schemas/release-manifest-v0.3.schema.json +146 -0
  225. package/bin/schemas/release-manifest.schema.json +6 -0
  226. package/bin/schemas/remediation-candidate-v0.1.schema.json +51 -0
  227. package/bin/schemas/remediation-candidate-v0.2.schema.json +51 -0
  228. package/bin/schemas/remediation-candidate-v0.3.schema.json +51 -0
  229. package/bin/schemas/remediation-candidate-v0.4.schema.json +69 -0
  230. package/bin/schemas/remediation-candidate.schema.json +69 -0
  231. package/bin/schemas/remediation-run-v0.1.schema.json +69 -0
  232. package/bin/schemas/remediation-run-v0.2.schema.json +78 -0
  233. package/bin/schemas/remediation-run-v0.3.schema.json +86 -0
  234. package/bin/schemas/remediation-run-v0.4.schema.json +86 -0
  235. package/bin/schemas/remediation-run-v0.5.schema.json +131 -0
  236. package/bin/schemas/remediation-run-v0.6.schema.json +143 -0
  237. package/bin/schemas/remediation-run-v0.7.schema.json +160 -0
  238. package/bin/schemas/remediation-run-v0.8.schema.json +161 -0
  239. package/bin/schemas/remediation-run.schema.json +161 -0
  240. package/bin/schemas/risk-exception-verification.schema.json +17 -0
  241. package/bin/schemas/risk-exception.schema.json +137 -0
  242. package/bin/schemas/run-result-v0.1.schema.json +54 -0
  243. package/bin/schemas/run-result-v0.10.schema.json +64 -0
  244. package/bin/schemas/run-result-v0.11.schema.json +146 -0
  245. package/bin/schemas/run-result-v0.2.schema.json +60 -0
  246. package/bin/schemas/run-result-v0.3.schema.json +52 -0
  247. package/bin/schemas/run-result-v0.4.schema.json +52 -0
  248. package/bin/schemas/run-result-v0.5.schema.json +60 -0
  249. package/bin/schemas/run-result-v0.6.schema.json +61 -0
  250. package/bin/schemas/run-result-v0.7.schema.json +61 -0
  251. package/bin/schemas/run-result-v0.8.schema.json +61 -0
  252. package/bin/schemas/run-result-v0.9.schema.json +77 -0
  253. package/bin/schemas/run-result.schema.json +165 -0
  254. package/bin/schemas/signature-verification.schema.json +22 -0
  255. package/bin/schemas/signature.schema.json +18 -0
  256. package/bin/schemas/state-check-v0.1.schema.json +27 -0
  257. package/bin/schemas/state-check.schema.json +28 -0
  258. package/bin/schemas/trust-store.schema.json +50 -0
  259. package/bin/schemas/verification-execution-v0.1.schema.json +105 -0
  260. package/bin/schemas/verification-execution.schema.json +105 -0
  261. package/bin/schemas/version-v0.1.schema.json +27 -0
  262. package/bin/schemas/version.schema.json +27 -0
  263. package/manifest.json +9 -0
  264. package/package.json +28 -0
@@ -0,0 +1,54 @@
1
+ schema_version: prc.adapter-manifest/v0.4
2
+ id: prc.adapter.syft@1.51
3
+ title: Syft repository CycloneDX SBOM
4
+ description: Runs the reviewed Syft 1.51.0 image against the exact sealed inventory snapshot and preserves a deterministic normalized CycloneDX 1.7 SBOM.
5
+ publisher:
6
+ id: prc-project
7
+ name: Production Readiness Checklist
8
+ owner: scanner-maintainers
9
+ maintenance: active
10
+ protocol: prc-adapter-syft-cyclonedx-json-v1
11
+ output_schema: cyclonedx.bom/v1.7+syft-1.51.0
12
+ observation_kinds: [sbom-generation]
13
+ compatibility:
14
+ engine_apis: [prc.engine/v0.1]
15
+ tool:
16
+ name: syft
17
+ version: 1.51.0
18
+ upstream: https://github.com/anchore/syft
19
+ formats:
20
+ - name: cyclonedx-json
21
+ versions: ["1.7"]
22
+ limitations:
23
+ - Catalogs only regular files in the current sealed repository inventory; it does not describe a built release artifact or container image.
24
+ - Package and file discovery depends on Syft cataloger support and can contain false positives, false negatives, or incomplete metadata.
25
+ - Uses a scanner-owned empty Syft configuration so target configuration cannot disable or redirect cataloging.
26
+ - The normalized artifact removes Syft's nondeterministic generation timestamp, document serial number, and source bom-ref while retaining package, file, and dependency content.
27
+ - SBOM generation does not determine whether components are vulnerable, acceptably licensed, supported, or actually reachable at runtime.
28
+ runner: oci
29
+ image: ghcr.io/anchore/syft@sha256:d2dc3ec86cb2b4e7ddb226ba0305c4523b7c0694c45d9f576b42b4c2f5ce7aa8
30
+ command:
31
+ - scan
32
+ - --quiet
33
+ - --config=/workspace/.prc/syft-config.yaml
34
+ - --parallelism=1
35
+ - --output=cyclonedx-json
36
+ - dir:/workspace
37
+ capabilities:
38
+ read_workspace: true
39
+ write_scratch: false
40
+ network: deny
41
+ network_hosts: []
42
+ secret_handles: []
43
+ child_processes: true
44
+ resources:
45
+ timeout_seconds: 180
46
+ memory_mb: 512
47
+ cpus: 1
48
+ pids: 64
49
+ tmpfs_mb: 1
50
+ max_line_bytes: 262144
51
+ max_messages: 10000
52
+ max_stdin_bytes: 1024
53
+ max_stdout_bytes: 67108864
54
+ max_stderr_bytes: 65536
@@ -0,0 +1,625 @@
1
+ schema_version: prc.assertions/v0.1
2
+ catalog_version: 1.0.0
3
+ assertions:
4
+ - id: PRC-A-CORE-001
5
+ revision: 2
6
+ control_ids: [USEQ-FDCA6C71]
7
+ title: README is present
8
+ statement: A nonempty README file exists at the repository root.
9
+ applicability: "true"
10
+ evidence_required:
11
+ - kind: repository-file
12
+ minimum_authority: repository
13
+ description: A nonempty root README file from the scanned commit.
14
+ implementation_id: prc.native.file-present@0.1
15
+ parameters:
16
+ paths: [README.md, README.rst, README.txt]
17
+ minimum_bytes: 1
18
+ severity: medium
19
+ gate: required
20
+ remediation_class: R2
21
+ - id: PRC-A-CORE-002
22
+ revision: 1
23
+ control_ids: [USEQ-6497B434]
24
+ title: License is present
25
+ statement: A nonempty license file exists at the repository root.
26
+ applicability: "true"
27
+ evidence_required:
28
+ - kind: repository-file
29
+ minimum_authority: repository
30
+ description: A nonempty root license file from the scanned commit.
31
+ implementation_id: prc.native.file-present@0.1
32
+ parameters:
33
+ paths: [LICENSE, LICENSE.md, LICENSE.txt, COPYING]
34
+ minimum_bytes: 1
35
+ severity: medium
36
+ gate: required
37
+ remediation_class: R0
38
+ - id: PRC-A-CORE-003
39
+ revision: 1
40
+ control_ids: [USEQ-89F5E97A]
41
+ title: Contribution guidance is present
42
+ statement: A nonempty contribution guide exists at the repository root.
43
+ applicability: "true"
44
+ evidence_required:
45
+ - kind: repository-file
46
+ minimum_authority: repository
47
+ description: A nonempty root contribution guide from the scanned commit.
48
+ implementation_id: prc.native.file-present@0.1
49
+ parameters:
50
+ paths: [CONTRIBUTING.md, CONTRIBUTING.rst]
51
+ minimum_bytes: 1
52
+ severity: low
53
+ gate: advisory
54
+ remediation_class: R0
55
+ - id: PRC-A-CORE-004
56
+ revision: 1
57
+ control_ids: [USEQ-AC6AC548]
58
+ title: Security policy is present
59
+ statement: A nonempty security policy exists at the repository root.
60
+ applicability: "true"
61
+ evidence_required:
62
+ - kind: repository-file
63
+ minimum_authority: repository
64
+ description: A nonempty root security policy from the scanned commit.
65
+ implementation_id: prc.native.file-present@0.1
66
+ parameters:
67
+ paths: [SECURITY.md, docs/SECURITY.md]
68
+ minimum_bytes: 1
69
+ severity: medium
70
+ gate: required
71
+ remediation_class: R0
72
+ - id: PRC-A-CORE-005
73
+ revision: 1
74
+ control_ids: [USEQ-D73106BF]
75
+ title: Code of conduct is present
76
+ statement: A nonempty code-of-conduct document exists at the repository root.
77
+ applicability: "true"
78
+ evidence_required:
79
+ - kind: repository-file
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
83
+ parameters:
84
+ paths: [CODE_OF_CONDUCT.md, CODE_OF_CONDUCT.rst]
85
+ minimum_bytes: 1
86
+ severity: low
87
+ gate: advisory
88
+ remediation_class: R0
89
+ - id: PRC-A-CORE-006
90
+ revision: 1
91
+ control_ids: [USEQ-CA602113]
92
+ title: Code ownership is declared
93
+ statement: A nonempty CODEOWNERS file exists in a supported repository location.
94
+ applicability: "true"
95
+ evidence_required:
96
+ - kind: repository-file
97
+ minimum_authority: repository
98
+ description: A nonempty CODEOWNERS file from the scanned commit.
99
+ implementation_id: prc.native.file-present@0.1
100
+ parameters:
101
+ paths: [.github/CODEOWNERS, CODEOWNERS, docs/CODEOWNERS]
102
+ minimum_bytes: 1
103
+ severity: medium
104
+ gate: required
105
+ remediation_class: R0
106
+ - id: PRC-A-CORE-007
107
+ revision: 1
108
+ control_ids: [USEQ-D1076D92]
109
+ title: Dependency resolution is reproducible
110
+ statement: Each detected package ecosystem has a supported lock or checksum file.
111
+ applicability: inventory.package_ecosystems.size() > 0
112
+ evidence_required:
113
+ - kind: repository-file
114
+ minimum_authority: repository
115
+ description: Lock or checksum files corresponding to detected dependency manifests.
116
+ implementation_id: prc.native.dependency-lock@0.1
117
+ parameters: {}
118
+ severity: high
119
+ gate: required
120
+ remediation_class: R2
121
+ - id: PRC-A-CORE-008
122
+ revision: 1
123
+ control_ids: [USEQ-F4D6E3B3]
124
+ title: GitHub Actions use immutable references
125
+ statement: Every external GitHub Action is pinned to a full commit SHA.
126
+ applicability: inventory.ci.github_actions == true
127
+ evidence_required:
128
+ - kind: workflow-parse
129
+ minimum_authority: repository
130
+ description: Parsed workflow action references from the scanned commit.
131
+ implementation_id: prc.native.github-action-pin@0.1
132
+ parameters:
133
+ allow_local_actions: true
134
+ severity: high
135
+ gate: required
136
+ remediation_class: R2
137
+ - id: PRC-A-CORE-009
138
+ revision: 1
139
+ control_ids: [USEQ-12655775]
140
+ title: Continuous integration is configured
141
+ statement: The repository contains a supported continuous-integration configuration.
142
+ applicability: "true"
143
+ evidence_required:
144
+ - kind: repository-file
145
+ minimum_authority: repository
146
+ description: A supported CI configuration from the scanned commit.
147
+ implementation_id: prc.native.ci-present@0.1
148
+ parameters: {}
149
+ severity: medium
150
+ gate: required
151
+ remediation_class: R2
152
+ - id: PRC-A-CORE-010
153
+ revision: 2
154
+ control_ids: [USEQ-12655775]
155
+ title: Automated tests are discoverable
156
+ statement: The repository contains a recognized test location or test command declaration.
157
+ applicability: inventory.source_files > 0
158
+ evidence_required:
159
+ - kind: repository-structure
160
+ minimum_authority: repository
161
+ description: Recognized test paths or manifest test commands from the scanned commit.
162
+ implementation_id: prc.native.test-suite@0.2
163
+ parameters: {}
164
+ severity: high
165
+ gate: required
166
+ remediation_class: R2
167
+ - id: PRC-A-CORE-011
168
+ revision: 1
169
+ control_ids: [USEQ-73488048]
170
+ title: Workflow permissions are explicit
171
+ statement: GitHub Actions workflows declare explicit least-privilege permissions.
172
+ applicability: inventory.ci.github_actions == true
173
+ evidence_required:
174
+ - kind: workflow-parse
175
+ minimum_authority: repository
176
+ description: Parsed top-level and job-level permissions from the scanned commit.
177
+ implementation_id: prc.native.github-workflow-permissions@0.1
178
+ parameters: {}
179
+ severity: high
180
+ gate: required
181
+ remediation_class: R2
182
+ - id: PRC-A-CORE-012
183
+ revision: 1
184
+ control_ids: [USEQ-F0F5ACE7]
185
+ title: Generated code follows normal review controls
186
+ statement: Generated or suggested code is subject to the project's normal ownership, review, testing, security, licensing, and provenance controls.
187
+ applicability: "true"
188
+ evidence_required:
189
+ - kind: reviewer-attestation
190
+ minimum_authority: human
191
+ description: Current scoped review evidence for generated or suggested code.
192
+ implementation_id: prc.native.manual-evidence@0.1
193
+ parameters: {}
194
+ severity: high
195
+ gate: required
196
+ remediation_class: R0
197
+ - id: PRC-A-CORE-013
198
+ revision: 2
199
+ control_ids: [USEQ-70E9D5AA]
200
+ title: Configured secret detection has executed
201
+ statement: The selected profile's pinned secret-detection adapter has a current executed result for the scanned inventory.
202
+ applicability: inventory.source_files > 0
203
+ evidence_required:
204
+ - kind: analysis-result
205
+ minimum_authority: executed
206
+ description: Current output from the exact pinned secret-detection adapter selected by this profile.
207
+ implementation_id: prc.native.analysis-evidence@0.1
208
+ parameters:
209
+ adapter_bindings:
210
+ - adapter_id: prc.adapter.gitleaks@8.30
211
+ manifest_sha256: ee223fd11f9d32b1799bf2b25c50cea294fd1f7b59686f9d438b351b5c4faac8
212
+ observation_kind: secret-detection
213
+ severity: high
214
+ gate: required
215
+ remediation_class: R2
216
+ - id: PRC-A-CORE-014
217
+ revision: 1
218
+ control_ids: [USEQ-DAF77C8F]
219
+ title: Source files end with a newline
220
+ statement: Every recognized source file ends with a line-feed byte.
221
+ applicability: inventory.source_files > 0
222
+ evidence_required:
223
+ - kind: source-format
224
+ minimum_authority: repository
225
+ description: Current content evidence for every recognized source file in the scanned commit.
226
+ implementation_id: prc.native.final-newline@0.1
227
+ parameters: {}
228
+ severity: low
229
+ gate: advisory
230
+ remediation_class: R1
231
+ - id: PRC-A-CORE-015
232
+ revision: 1
233
+ control_ids: [USEQ-72088469]
234
+ title: Source revision is identifiable
235
+ statement: The scanned repository resolves to an immutable Git commit identity.
236
+ applicability: "true"
237
+ evidence_required:
238
+ - kind: repository-identity
239
+ minimum_authority: repository
240
+ description: The immutable source revision captured by the deterministic inventory.
241
+ implementation_id: prc.native.git-revision@0.1
242
+ parameters: {}
243
+ severity: medium
244
+ gate: required
245
+ remediation_class: R0
246
+ - id: PRC-A-CORE-016
247
+ revision: 1
248
+ control_ids: [PRC-36-011]
249
+ title: Dependency updates are configured
250
+ statement: A supported dependency-update automation configuration is present.
251
+ applicability: inventory.package_ecosystems.size() > 0
252
+ evidence_required:
253
+ - kind: repository-file
254
+ minimum_authority: repository
255
+ description: A nonempty supported dependency-update configuration.
256
+ implementation_id: prc.native.file-present@0.1
257
+ parameters:
258
+ paths: [.github/dependabot.yml, .github/dependabot.yaml, renovate.json, renovate.json5, .renovaterc, .renovaterc.json]
259
+ minimum_bytes: 1
260
+ severity: medium
261
+ gate: advisory
262
+ remediation_class: R2
263
+ - id: PRC-A-CORE-017
264
+ revision: 1
265
+ control_ids: [USEQ-F4D6E3B3]
266
+ title: Workflow definitions parse
267
+ statement: Every detected GitHub Actions workflow is valid YAML with a mapping document root.
268
+ applicability: inventory.ci.github_actions == true
269
+ evidence_required:
270
+ - kind: workflow-parse
271
+ minimum_authority: repository
272
+ description: A successful strict parse of every detected workflow file.
273
+ implementation_id: prc.native.github-workflow-valid@0.1
274
+ parameters: {}
275
+ severity: high
276
+ gate: required
277
+ remediation_class: R2
278
+ - id: PRC-A-CORE-018
279
+ revision: 1
280
+ control_ids: [USEQ-12655775]
281
+ title: Workflows define executable jobs
282
+ statement: Every detected GitHub Actions workflow defines at least one job.
283
+ applicability: inventory.ci.github_actions == true
284
+ evidence_required:
285
+ - kind: workflow-parse
286
+ minimum_authority: repository
287
+ description: Parsed nonempty job mappings from every detected workflow.
288
+ implementation_id: prc.native.github-workflow-jobs@0.1
289
+ parameters: {}
290
+ severity: high
291
+ gate: required
292
+ remediation_class: R2
293
+ - id: PRC-A-CORE-019
294
+ revision: 1
295
+ control_ids: [USEQ-B66A3064]
296
+ title: Workflow jobs have bounded runtimes
297
+ statement: Every directly executed GitHub Actions job declares a positive static timeout no greater than six hours.
298
+ applicability: inventory.ci.github_actions == true
299
+ evidence_required:
300
+ - kind: workflow-parse
301
+ minimum_authority: repository
302
+ description: Parsed timeout-minutes values for every job that declares runs-on.
303
+ implementation_id: prc.native.github-workflow-timeouts@0.1
304
+ parameters:
305
+ maximum_minutes: 360
306
+ severity: medium
307
+ gate: required
308
+ remediation_class: R2
309
+ - id: PRC-A-CORE-020
310
+ revision: 2
311
+ control_ids: [USEQ-73488048]
312
+ title: pull_request_target workflows receive security review
313
+ statement: Each workflow using pull_request_target avoids executing untrusted pull-request code and keeps permissions and secrets least privileged.
314
+ applicability: inventory.ci.github_actions == true
315
+ evidence_required:
316
+ - kind: workflow-parse
317
+ minimum_authority: repository
318
+ description: Parsed trigger declarations identify workflows that need data-flow and permission review; trigger presence alone is not proof of unsafe execution.
319
+ implementation_id: prc.native.github-no-pull-request-target@0.1
320
+ parameters: {}
321
+ severity: critical
322
+ gate: required
323
+ remediation_class: R0
324
+ - id: PRC-A-CORE-021
325
+ revision: 1
326
+ control_ids: [USEQ-12655775]
327
+ title: Unresolved merge conflicts are absent
328
+ statement: Recognized source, build, workflow, container, and infrastructure files contain no complete merge-conflict marker set.
329
+ applicability: "true"
330
+ evidence_required:
331
+ - kind: source-integrity
332
+ minimum_authority: repository
333
+ description: Deterministic content inspection of scoped repository files.
334
+ implementation_id: prc.native.merge-conflict-markers@0.1
335
+ parameters: {}
336
+ severity: high
337
+ gate: no-go
338
+ remediation_class: R2
339
+ - id: PRC-A-CORE-022
340
+ revision: 1
341
+ control_ids: [USEQ-D60E6950]
342
+ title: Repository files are not broadly writable
343
+ statement: Inventoried regular files are not writable by group or other users.
344
+ applicability: "true"
345
+ evidence_required:
346
+ - kind: repository-metadata
347
+ minimum_authority: repository
348
+ description: Permission modes captured for every inventoried regular file.
349
+ implementation_id: prc.native.restrictive-file-modes@0.1
350
+ parameters: {}
351
+ severity: medium
352
+ gate: advisory
353
+ remediation_class: R1
354
+ - id: PRC-A-CORE-023
355
+ revision: 1
356
+ control_ids: [USEQ-D1076D92]
357
+ title: Dependency manifests are nonempty
358
+ statement: Every detected dependency manifest contains data.
359
+ applicability: inventory.package_ecosystems.size() > 0
360
+ evidence_required:
361
+ - kind: repository-file
362
+ minimum_authority: repository
363
+ description: Current content evidence for every detected dependency manifest.
364
+ implementation_id: prc.native.inventory-files-nonempty@0.1
365
+ parameters:
366
+ inventory_field: manifests
367
+ severity: high
368
+ gate: required
369
+ remediation_class: R2
370
+ - id: PRC-A-CORE-024
371
+ revision: 1
372
+ control_ids: [USEQ-D1076D92]
373
+ title: Dependency locks are nonempty
374
+ statement: Every detected dependency lock or checksum file contains data.
375
+ applicability: inventory.package_ecosystems.size() > 0
376
+ evidence_required:
377
+ - kind: repository-file
378
+ minimum_authority: repository
379
+ description: Current content evidence for every detected dependency lock or checksum file.
380
+ implementation_id: prc.native.inventory-files-nonempty@0.1
381
+ parameters:
382
+ inventory_field: lock_files
383
+ severity: high
384
+ gate: required
385
+ remediation_class: R2
386
+ - id: PRC-A-CORE-025
387
+ revision: 1
388
+ control_ids: [USEQ-0B7FDB5F]
389
+ title: Runtime versions are declared
390
+ statement: Every detected package ecosystem has a supported runtime or toolchain version declaration.
391
+ applicability: inventory.package_ecosystems.size() > 0
392
+ evidence_required:
393
+ - kind: runtime-declaration
394
+ minimum_authority: repository
395
+ description: A supported version declaration for each detected package ecosystem.
396
+ implementation_id: prc.native.runtime-version@0.1
397
+ parameters: {}
398
+ severity: medium
399
+ gate: required
400
+ remediation_class: R2
401
+ - id: PRC-A-CORE-026
402
+ revision: 1
403
+ control_ids: [USEQ-7D4DA192]
404
+ title: Container base images are immutable
405
+ statement: Every Dockerfile build stage uses scratch or a base image pinned by a sha256 digest.
406
+ applicability: inventory.container_files.size() > 0
407
+ evidence_required:
408
+ - kind: containerfile-parse
409
+ minimum_authority: repository
410
+ description: Parsed FROM instructions from every detected container build file.
411
+ implementation_id: prc.native.container-base-pin@0.1
412
+ parameters: {}
413
+ severity: high
414
+ gate: required
415
+ remediation_class: R2
416
+ - id: PRC-A-CORE-027
417
+ revision: 1
418
+ control_ids: [USEQ-A3559C64]
419
+ title: Final container stages declare a non-root user
420
+ statement: Every Dockerfile final stage declares a static USER other than root or zero.
421
+ applicability: inventory.container_files.size() > 0
422
+ evidence_required:
423
+ - kind: containerfile-parse
424
+ minimum_authority: repository
425
+ description: Parsed USER instruction in the final stage of every detected container build file.
426
+ implementation_id: prc.native.container-nonroot@0.1
427
+ parameters: {}
428
+ severity: high
429
+ gate: required
430
+ remediation_class: R2
431
+ - id: PRC-A-CORE-028
432
+ revision: 1
433
+ control_ids: [USEQ-D1076D92]
434
+ title: Terraform provider selections are locked
435
+ statement: Each directory containing Terraform configuration also contains a nonempty provider dependency lock file.
436
+ applicability: inventory.infrastructure.terraform_files.size() > 0
437
+ evidence_required:
438
+ - kind: repository-file
439
+ minimum_authority: repository
440
+ description: A nonempty .terraform.lock.hcl next to each detected Terraform configuration root.
441
+ implementation_id: prc.native.terraform-lock@0.1
442
+ parameters: {}
443
+ severity: medium
444
+ gate: advisory
445
+ remediation_class: R2
446
+ - id: PRC-A-CORE-029
447
+ revision: 1
448
+ control_ids: [USEQ-A3559C64]
449
+ title: Kubernetes workloads require non-root containers
450
+ statement: Every detected Kubernetes workload declares runAsNonRoot for its pod or every container and does not declare user zero.
451
+ applicability: inventory.infrastructure.kubernetes_files.size() > 0
452
+ evidence_required:
453
+ - kind: kubernetes-parse
454
+ minimum_authority: repository
455
+ description: Parsed pod and container security contexts from detected workload resources.
456
+ implementation_id: prc.native.kubernetes-nonroot@0.2
457
+ parameters: {}
458
+ severity: high
459
+ gate: required
460
+ remediation_class: R2
461
+ - id: PRC-A-CORE-030
462
+ revision: 1
463
+ control_ids: [USEQ-13CBD6C6]
464
+ title: Kubernetes containers declare resource policy
465
+ statement: Every container in a detected Kubernetes workload declares nonempty resource requests and limits.
466
+ applicability: inventory.infrastructure.kubernetes_files.size() > 0
467
+ evidence_required:
468
+ - kind: kubernetes-parse
469
+ minimum_authority: repository
470
+ description: Parsed resource requests and limits from detected workload containers.
471
+ implementation_id: prc.native.kubernetes-resources@0.2
472
+ parameters: {}
473
+ severity: high
474
+ gate: required
475
+ remediation_class: R2
476
+ - id: PRC-A-K8S-001
477
+ revision: 1
478
+ control_ids: [USEQ-A3559C64]
479
+ title: Kubernetes workloads avoid privileged host access
480
+ statement: Detected Kubernetes workloads leave host namespace and HostProcess sharing disabled, declare no hostPath volumes, and do not run privileged containers.
481
+ applicability: inventory.infrastructure.kubernetes_files.size() > 0
482
+ evidence_required:
483
+ - kind: kubernetes-parse
484
+ minimum_authority: repository
485
+ description: Bounded parsing of pod, volume, and container host-access fields in detected workload resources.
486
+ implementation_id: prc.native.kubernetes-host-access@0.1
487
+ parameters: {}
488
+ severity: high
489
+ gate: required
490
+ remediation_class: R2
491
+ - id: PRC-A-K8S-002
492
+ revision: 1
493
+ control_ids: [USEQ-A3559C64]
494
+ title: Kubernetes Linux containers disable privilege escalation
495
+ statement: Every ordinary, init, and ephemeral container in a detected Linux Kubernetes workload explicitly sets allowPrivilegeEscalation to false.
496
+ applicability: inventory.infrastructure.kubernetes_files.size() > 0
497
+ evidence_required:
498
+ - kind: kubernetes-parse
499
+ minimum_authority: repository
500
+ description: Bounded parsing of container privilege-escalation fields in detected Linux workload resources.
501
+ implementation_id: prc.native.kubernetes-privilege-escalation@0.1
502
+ parameters: {}
503
+ severity: high
504
+ gate: required
505
+ remediation_class: R2
506
+ - id: PRC-A-K8S-003
507
+ revision: 1
508
+ control_ids: [USEQ-A3559C64]
509
+ title: Kubernetes Linux containers restrict capabilities
510
+ statement: Every ordinary, init, and ephemeral container in a detected Linux Kubernetes workload drops ALL capabilities and adds back at most NET_BIND_SERVICE.
511
+ applicability: inventory.infrastructure.kubernetes_files.size() > 0
512
+ evidence_required:
513
+ - kind: kubernetes-parse
514
+ minimum_authority: repository
515
+ description: Bounded parsing of container capability add and drop lists in detected Linux workload resources.
516
+ implementation_id: prc.native.kubernetes-capabilities@0.1
517
+ parameters: {}
518
+ severity: high
519
+ gate: required
520
+ remediation_class: R2
521
+ - id: PRC-A-K8S-004
522
+ revision: 1
523
+ control_ids: [USEQ-A3559C64]
524
+ title: Kubernetes Linux containers use bounded seccomp profiles
525
+ statement: Every ordinary, init, and ephemeral container in a detected Linux Kubernetes workload inherits or selects a RuntimeDefault or Localhost seccomp profile.
526
+ applicability: inventory.infrastructure.kubernetes_files.size() > 0
527
+ evidence_required:
528
+ - kind: kubernetes-parse
529
+ minimum_authority: repository
530
+ description: Bounded parsing of pod and container seccomp profile types in detected Linux workload resources.
531
+ implementation_id: prc.native.kubernetes-seccomp@0.1
532
+ parameters: {}
533
+ severity: medium
534
+ gate: required
535
+ remediation_class: R2
536
+ - id: PRC-A-CORE-031
537
+ revision: 1
538
+ control_ids: [USEQ-E85957E3]
539
+ title: Private-key armor is absent from repository files
540
+ statement: Recognized armored private-key blocks are absent from bounded source, configuration, documentation, infrastructure, and key-file content in the inventoried repository.
541
+ applicability: inventory.file_count > 0
542
+ evidence_required:
543
+ - kind: sensitive-material-scan
544
+ minimum_authority: repository
545
+ description: Content-addressed bounded inspection for standards-defined private-key armor blocks without retaining key material.
546
+ implementation_id: prc.native.private-key-armor@0.1
547
+ parameters: {}
548
+ severity: critical
549
+ gate: no-go
550
+ remediation_class: R2
551
+ - id: PRC-A-GO-001
552
+ revision: 2
553
+ control_ids: [USEQ-F6ACEF15]
554
+ title: Go net/http package helpers do not use the default client
555
+ statement: Non-test Go source does not call net/http Get, Head, Post, or PostForm package helpers whose end-to-end timeout depends on mutable global DefaultClient state.
556
+ applicability: '"go" in inventory.package_ecosystems'
557
+ evidence_required:
558
+ - kind: go-ast-analysis
559
+ minimum_authority: repository
560
+ description: Bounded syntax-aware inspection of inventoried non-test Go source for direct calls to net/http package convenience helpers backed by mutable global DefaultClient state.
561
+ implementation_id: prc.native.go-http-timeout@0.1
562
+ parameters: {}
563
+ severity: high
564
+ gate: required
565
+ remediation_class: R2
566
+ - id: PRC-A-GO-002
567
+ revision: 1
568
+ control_ids: [USEQ-B66A3064]
569
+ title: Go HTTP servers use configurable Server instances
570
+ statement: Non-test Go source does not call net/http ListenAndServe, ListenAndServeTLS, Serve, or ServeTLS package helpers whose constructed Server cannot configure request timeout fields.
571
+ applicability: '"go" in inventory.package_ecosystems'
572
+ evidence_required:
573
+ - kind: go-ast-analysis
574
+ minimum_authority: repository
575
+ description: Bounded syntax-aware inspection of inventoried non-test Go source for direct calls to net/http package server helpers that construct Server values without configurable timeout fields.
576
+ implementation_id: prc.native.go-http-server-timeout@0.1
577
+ parameters: {}
578
+ severity: high
579
+ gate: required
580
+ remediation_class: R2
581
+ - id: PRC-A-API-001
582
+ revision: 1
583
+ control_ids: [USEQ-13208C54]
584
+ title: OpenAPI documents expose required root metadata
585
+ statement: Every detected OpenAPI 3.0, 3.1, or 3.2 document has one bounded YAML or JSON document, required root and info metadata, and the version-specific required structural fields.
586
+ applicability: 'inventory.components.exists(c, c.kind == "api-description" && c.ecosystem == "openapi")'
587
+ evidence_required:
588
+ - kind: openapi-parse
589
+ minimum_authority: repository
590
+ description: Content-addressed bounded parsing of detected OpenAPI YAML or JSON documents for required 3.0, 3.1, or 3.2 root structure and metadata.
591
+ implementation_id: prc.native.openapi-root@0.1
592
+ parameters: {}
593
+ severity: medium
594
+ gate: required
595
+ remediation_class: R2
596
+ - id: PRC-A-API-002
597
+ revision: 1
598
+ control_ids: [USEQ-13208C54]
599
+ title: OpenAPI operations define valid responses
600
+ statement: Every directly declared operation under OpenAPI paths or webhooks has a nonempty Responses Object whose response keys and inline response descriptions satisfy the supported OpenAPI structure.
601
+ applicability: 'inventory.components.exists(c, c.kind == "api-description" && c.ecosystem == "openapi")'
602
+ evidence_required:
603
+ - kind: openapi-parse
604
+ minimum_authority: repository
605
+ description: Content-addressed bounded parsing of directly declared OpenAPI path and webhook operations, including 3.2 query and additionalOperations entries.
606
+ implementation_id: prc.native.openapi-operation-responses@0.1
607
+ parameters: {}
608
+ severity: high
609
+ gate: required
610
+ remediation_class: R2
611
+ - id: PRC-A-API-003
612
+ revision: 1
613
+ control_ids: [USEQ-13208C54]
614
+ title: Declared OpenAPI operation IDs are unique
615
+ statement: Every operationId declared by a directly declared OpenAPI path or webhook operation is a nonempty string and is unique within its OpenAPI document.
616
+ applicability: 'inventory.components.exists(c, c.kind == "api-description" && c.ecosystem == "openapi")'
617
+ evidence_required:
618
+ - kind: openapi-parse
619
+ minimum_authority: repository
620
+ description: Content-addressed bounded parsing of operationId fields on directly declared OpenAPI path and webhook operations, including 3.2 query and additionalOperations entries.
621
+ implementation_id: prc.native.openapi-operation-ids@0.1
622
+ parameters: {}
623
+ severity: medium
624
+ gate: required
625
+ remediation_class: R2