merriv 0.1.0a2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. merriv-0.1.0a2/.gitattributes +8 -0
  2. merriv-0.1.0a2/.github/CODEOWNERS +12 -0
  3. merriv-0.1.0a2/.github/ISSUE_TEMPLATE/bug.yml +32 -0
  4. merriv-0.1.0a2/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. merriv-0.1.0a2/.github/ISSUE_TEMPLATE/external-reproduction.yml +44 -0
  6. merriv-0.1.0a2/.github/ISSUE_TEMPLATE/mcr-compatibility.yml +40 -0
  7. merriv-0.1.0a2/.github/ISSUE_TEMPLATE/plugin.yml +39 -0
  8. merriv-0.1.0a2/.github/PULL_REQUEST_TEMPLATE.md +25 -0
  9. merriv-0.1.0a2/.github/dependabot.yml +16 -0
  10. merriv-0.1.0a2/.github/workflows/ci.yml +175 -0
  11. merriv-0.1.0a2/.github/workflows/dependency-review.yml +18 -0
  12. merriv-0.1.0a2/.github/workflows/nvidia-vertical.yml +59 -0
  13. merriv-0.1.0a2/.github/workflows/release.yml +106 -0
  14. merriv-0.1.0a2/.github/workflows/scorecard.yml +39 -0
  15. merriv-0.1.0a2/.gitignore +45 -0
  16. merriv-0.1.0a2/CHANGELOG.md +154 -0
  17. merriv-0.1.0a2/CITATION.cff +20 -0
  18. merriv-0.1.0a2/CODE_OF_CONDUCT.md +30 -0
  19. merriv-0.1.0a2/CONTRIBUTING.md +63 -0
  20. merriv-0.1.0a2/LICENSE +175 -0
  21. merriv-0.1.0a2/PKG-INFO +323 -0
  22. merriv-0.1.0a2/README.md +281 -0
  23. merriv-0.1.0a2/ROADMAP.md +97 -0
  24. merriv-0.1.0a2/SECURITY.md +103 -0
  25. merriv-0.1.0a2/SUPPORT.md +19 -0
  26. merriv-0.1.0a2/action-requirements.lock +216 -0
  27. merriv-0.1.0a2/action.yml +132 -0
  28. merriv-0.1.0a2/corpus/README.md +17 -0
  29. merriv-0.1.0a2/corpus/backlog.md +21 -0
  30. merriv-0.1.0a2/corpus/cases/llamacpp-22544-tensor-type-regression.json +22 -0
  31. merriv-0.1.0a2/corpus/cases/modelopt-tensorrt-calibration-regression.json +21 -0
  32. merriv-0.1.0a2/corpus/cases/onnx-calibration-range-regression.json +18 -0
  33. merriv-0.1.0a2/corpus/cases/onnx-opset-upgrade-control.json +17 -0
  34. merriv-0.1.0a2/corpus/cases/recorded-rare-slice-regression.json +19 -0
  35. merriv-0.1.0a2/corpus/index.json +10 -0
  36. merriv-0.1.0a2/docs/architecture.md +161 -0
  37. merriv-0.1.0a2/docs/brand.md +51 -0
  38. merriv-0.1.0a2/docs/competitive-landscape.md +52 -0
  39. merriv-0.1.0a2/docs/external-producers.md +72 -0
  40. merriv-0.1.0a2/docs/external-reproduction-guide.md +23 -0
  41. merriv-0.1.0a2/docs/images/merriv-release-evidence-flow.svg +215 -0
  42. merriv-0.1.0a2/docs/images/source/merriv-release-evidence-flow.drawio +158 -0
  43. merriv-0.1.0a2/docs/mcr-0.4-migration.md +38 -0
  44. merriv-0.1.0a2/docs/mcr-certification.md +25 -0
  45. merriv-0.1.0a2/docs/mcr-changelog.md +47 -0
  46. merriv-0.1.0a2/docs/mcr-compatibility.md +36 -0
  47. merriv-0.1.0a2/docs/mcr-conformance.md +74 -0
  48. merriv-0.1.0a2/docs/mcr-specification.md +133 -0
  49. merriv-0.1.0a2/docs/plugin-sdk.md +79 -0
  50. merriv-0.1.0a2/docs/protocol-governance.md +35 -0
  51. merriv-0.1.0a2/docs/quickstart.md +101 -0
  52. merriv-0.1.0a2/docs/release-checklist.md +44 -0
  53. merriv-0.1.0a2/docs/release-evidence-case-study.md +225 -0
  54. merriv-0.1.0a2/docs/statistical-gating.md +42 -0
  55. merriv-0.1.0a2/docs/supply-chain-interop.md +129 -0
  56. merriv-0.1.0a2/examples/api_compare/README.md +41 -0
  57. merriv-0.1.0a2/examples/api_compare/policy.yaml +13 -0
  58. merriv-0.1.0a2/examples/api_compare/suite.jsonl +3 -0
  59. merriv-0.1.0a2/examples/checkpoint_bisect/README.md +12 -0
  60. merriv-0.1.0a2/examples/checkpoint_bisect/checkpoints.jsonl +6 -0
  61. merriv-0.1.0a2/examples/content_identity/README.md +24 -0
  62. merriv-0.1.0a2/examples/content_identity/float-vectors.json +5128 -0
  63. merriv-0.1.0a2/examples/content_identity/generate_vectors.py +286 -0
  64. merriv-0.1.0a2/examples/content_identity/golden-vectors.json +280 -0
  65. merriv-0.1.0a2/examples/content_identity/typed_values.py +47 -0
  66. merriv-0.1.0a2/examples/content_identity/verify_golden.mjs +151 -0
  67. merriv-0.1.0a2/examples/content_identity/verify_golden.py +72 -0
  68. merriv-0.1.0a2/examples/custom_executor/README.md +20 -0
  69. merriv-0.1.0a2/examples/custom_executor/tagged_local_executor.py +53 -0
  70. merriv-0.1.0a2/examples/custom_metric_plugin/README.md +21 -0
  71. merriv-0.1.0a2/examples/custom_metric_plugin/length_metric.py +43 -0
  72. merriv-0.1.0a2/examples/historical_llamacpp_22544/README.md +26 -0
  73. merriv-0.1.0a2/examples/historical_llamacpp_22544/baseline.jsonl +2 -0
  74. merriv-0.1.0a2/examples/historical_llamacpp_22544/candidate.jsonl +2 -0
  75. merriv-0.1.0a2/examples/historical_llamacpp_22544/policy.yaml +10 -0
  76. merriv-0.1.0a2/examples/historical_llamacpp_22544/suite.jsonl +2 -0
  77. merriv-0.1.0a2/examples/independent_producer/README.md +14 -0
  78. merriv-0.1.0a2/examples/independent_producer/generate_bundle.py +322 -0
  79. merriv-0.1.0a2/examples/mcr_conformance/README.md +39 -0
  80. merriv-0.1.0a2/examples/mcr_conformance/block/mcr-report.json +86 -0
  81. merriv-0.1.0a2/examples/mcr_conformance/error/mcr-report.json +69 -0
  82. merriv-0.1.0a2/examples/mcr_conformance/full/artifact-diff.json +23 -0
  83. merriv-0.1.0a2/examples/mcr_conformance/full/evidence-manifest.json +30 -0
  84. merriv-0.1.0a2/examples/mcr_conformance/full/mcr-report.json +95 -0
  85. merriv-0.1.0a2/examples/mcr_conformance/full/numerical-diff.json +30 -0
  86. merriv-0.1.0a2/examples/mcr_conformance/full/release-plan.json +32 -0
  87. merriv-0.1.0a2/examples/mcr_conformance/generate_fixtures.py +91 -0
  88. merriv-0.1.0a2/examples/mcr_conformance/insufficient_power/mcr-report.json +86 -0
  89. merriv-0.1.0a2/examples/mcr_conformance/negative/decision-mismatch/mcr-report.json +86 -0
  90. merriv-0.1.0a2/examples/mcr_conformance/negative/missing-evidence/mcr-report.json +94 -0
  91. merriv-0.1.0a2/examples/mcr_conformance/negative/tampered-id/mcr-report.json +86 -0
  92. merriv-0.1.0a2/examples/mcr_conformance/negative/unknown-version/mcr-report.json +86 -0
  93. merriv-0.1.0a2/examples/mcr_conformance/pass/mcr-report.json +86 -0
  94. merriv-0.1.0a2/examples/mcr_conformance/warn/mcr-report.json +86 -0
  95. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/README.md +101 -0
  96. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/build_artifacts.py +192 -0
  97. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/data_loader.py +35 -0
  98. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/policy.yaml +11 -0
  99. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/reference-receipt-rtx4060-20260829.json +73 -0
  100. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/requirements-modelopt.lock +1027 -0
  101. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/requirements-modelopt.txt +5 -0
  102. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/requirements-tensorrt-cu125-windows.lock +110 -0
  103. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/requirements-tensorrt-cu125-windows.txt +8 -0
  104. merriv-0.1.0a2/examples/nvidia_tensorrt_vertical/run_vertical.py +733 -0
  105. merriv-0.1.0a2/examples/onnx_opset_upgrade/README.md +19 -0
  106. merriv-0.1.0a2/examples/onnx_opset_upgrade/run_demo.py +130 -0
  107. merriv-0.1.0a2/examples/onnx_quantization/README.md +103 -0
  108. merriv-0.1.0a2/examples/onnx_quantization/assets/digits-mlp-fp32.onnx.b64 +135 -0
  109. merriv-0.1.0a2/examples/onnx_quantization/run_demo.py +419 -0
  110. merriv-0.1.0a2/examples/recorded_compare/README.md +29 -0
  111. merriv-0.1.0a2/examples/recorded_compare/baseline.jsonl +20 -0
  112. merriv-0.1.0a2/examples/recorded_compare/candidate.jsonl +20 -0
  113. merriv-0.1.0a2/examples/recorded_compare/github-actions.yml +38 -0
  114. merriv-0.1.0a2/examples/recorded_compare/policy.yaml +11 -0
  115. merriv-0.1.0a2/examples/recorded_compare/suite.jsonl +20 -0
  116. merriv-0.1.0a2/integrations/mlflow_mcr/README.md +27 -0
  117. merriv-0.1.0a2/integrations/mlflow_mcr/consume.py +163 -0
  118. merriv-0.1.0a2/integrations/mlflow_mcr/consumer-receipt.json +43 -0
  119. merriv-0.1.0a2/integrations/polygraphy_mcr/README.md +35 -0
  120. merriv-0.1.0a2/integrations/polygraphy_mcr/normalized-results.json +17 -0
  121. merriv-0.1.0a2/integrations/polygraphy_mcr/policy.yaml +7 -0
  122. merriv-0.1.0a2/integrations/polygraphy_mcr/produce.py +193 -0
  123. merriv-0.1.0a2/pyproject.toml +97 -0
  124. merriv-0.1.0a2/reference/mcr-reference-rust/Cargo.lock +205 -0
  125. merriv-0.1.0a2/reference/mcr-reference-rust/Cargo.toml +19 -0
  126. merriv-0.1.0a2/reference/mcr-reference-rust/README.md +28 -0
  127. merriv-0.1.0a2/reference/mcr-reference-rust/simple-evidence.json +15 -0
  128. merriv-0.1.0a2/reference/mcr-reference-rust/src/main.rs +793 -0
  129. merriv-0.1.0a2/rfcs/0001-project-scope.md +24 -0
  130. merriv-0.1.0a2/rfcs/0012-content-identity-canonicalization.md +86 -0
  131. merriv-0.1.0a2/rfcs/0014-mcr-protocol-and-conformance.md +30 -0
  132. merriv-0.1.0a2/rfcs/0015-mcr-0.4-evidence-identity-and-target-root.md +66 -0
  133. merriv-0.1.0a2/schemas/mcr-0.4/ArtifactDiff.schema.json +249 -0
  134. merriv-0.1.0a2/schemas/mcr-0.4/ArtifactProfile.schema.json +332 -0
  135. merriv-0.1.0a2/schemas/mcr-0.4/BackendComparisonEvidence.schema.json +317 -0
  136. merriv-0.1.0a2/schemas/mcr-0.4/BuildProvenanceEvidence.schema.json +168 -0
  137. merriv-0.1.0a2/schemas/mcr-0.4/Claim.schema.json +111 -0
  138. merriv-0.1.0a2/schemas/mcr-0.4/CompiledReleasePlan.schema.json +264 -0
  139. merriv-0.1.0a2/schemas/mcr-0.4/ConsumerConformanceReceipt.schema.json +100 -0
  140. merriv-0.1.0a2/schemas/mcr-0.4/EvalCase.schema.json +71 -0
  141. merriv-0.1.0a2/schemas/mcr-0.4/EvidenceManifest.schema.json +120 -0
  142. merriv-0.1.0a2/schemas/mcr-0.4/EvidenceManifestRef.schema.json +41 -0
  143. merriv-0.1.0a2/schemas/mcr-0.4/EvidenceRef.schema.json +44 -0
  144. merriv-0.1.0a2/schemas/mcr-0.4/EvidenceSet.schema.json +33 -0
  145. merriv-0.1.0a2/schemas/mcr-0.4/ExecutorDescriptor.schema.json +38 -0
  146. merriv-0.1.0a2/schemas/mcr-0.4/GateDecision.schema.json +262 -0
  147. merriv-0.1.0a2/schemas/mcr-0.4/GatePolicy.schema.json +152 -0
  148. merriv-0.1.0a2/schemas/mcr-0.4/MCRArtifactManifest.schema.json +131 -0
  149. merriv-0.1.0a2/schemas/mcr-0.4/MCRConformanceResult.schema.json +148 -0
  150. merriv-0.1.0a2/schemas/mcr-0.4/MCRInTotoStatement.schema.json +858 -0
  151. merriv-0.1.0a2/schemas/mcr-0.4/MCRVerification.schema.json +242 -0
  152. merriv-0.1.0a2/schemas/mcr-0.4/ModelChangeReport.schema.json +773 -0
  153. merriv-0.1.0a2/schemas/mcr-0.4/ModelRef.schema.json +28 -0
  154. merriv-0.1.0a2/schemas/mcr-0.4/ModelSnapshot.schema.json +316 -0
  155. merriv-0.1.0a2/schemas/mcr-0.4/NumericalDiff.schema.json +181 -0
  156. merriv-0.1.0a2/schemas/mcr-0.4/Observation.schema.json +107 -0
  157. merriv-0.1.0a2/schemas/mcr-0.4/PluginManifest.schema.json +65 -0
  158. merriv-0.1.0a2/schemas/mcr-0.4/RunManifest.schema.json +158 -0
  159. merriv-0.1.0a2/schemas/mcr-0.4/RuntimeProfile.schema.json +113 -0
  160. merriv-0.1.0a2/schemas/mcr-0.4/SnapshotArtifactManifest.schema.json +388 -0
  161. merriv-0.1.0a2/schemas/mcr-0.4/TargetEvidenceManifest.schema.json +269 -0
  162. merriv-0.1.0a2/schemas/mcr-0.4/TargetEvidenceVerification.schema.json +56 -0
  163. merriv-0.1.0a2/schemas/mcr-0.4/ToolNativeEvidence.schema.json +123 -0
  164. merriv-0.1.0a2/src/merriv/__init__.py +39 -0
  165. merriv-0.1.0a2/src/merriv/adapters/__init__.py +19 -0
  166. merriv-0.1.0a2/src/merriv/adapters/base.py +40 -0
  167. merriv-0.1.0a2/src/merriv/adapters/fake.py +51 -0
  168. merriv-0.1.0a2/src/merriv/adapters/onnx_runtime.py +278 -0
  169. merriv-0.1.0a2/src/merriv/adapters/openai_compatible.py +793 -0
  170. merriv-0.1.0a2/src/merriv/adapters/recorded.py +85 -0
  171. merriv-0.1.0a2/src/merriv/artifacts/__init__.py +57 -0
  172. merriv-0.1.0a2/src/merriv/artifacts/diff.py +146 -0
  173. merriv-0.1.0a2/src/merriv/artifacts/inspector.py +420 -0
  174. merriv-0.1.0a2/src/merriv/artifacts/models.py +177 -0
  175. merriv-0.1.0a2/src/merriv/artifacts/numerical.py +416 -0
  176. merriv-0.1.0a2/src/merriv/attestation.py +72 -0
  177. merriv-0.1.0a2/src/merriv/bisect/__init__.py +49 -0
  178. merriv-0.1.0a2/src/merriv/bisect/engine.py +422 -0
  179. merriv-0.1.0a2/src/merriv/bisect/execution.py +110 -0
  180. merriv-0.1.0a2/src/merriv/bisect/manifest.py +95 -0
  181. merriv-0.1.0a2/src/merriv/cli.py +849 -0
  182. merriv-0.1.0a2/src/merriv/conformance.py +335 -0
  183. merriv-0.1.0a2/src/merriv/core/__init__.py +1 -0
  184. merriv-0.1.0a2/src/merriv/core/identity.py +358 -0
  185. merriv-0.1.0a2/src/merriv/core/models.py +311 -0
  186. merriv-0.1.0a2/src/merriv/core/schema.py +89 -0
  187. merriv-0.1.0a2/src/merriv/demo.py +104 -0
  188. merriv-0.1.0a2/src/merriv/engine/__init__.py +29 -0
  189. merriv-0.1.0a2/src/merriv/engine/cache.py +306 -0
  190. merriv-0.1.0a2/src/merriv/engine/runner.py +303 -0
  191. merriv-0.1.0a2/src/merriv/evidence.py +342 -0
  192. merriv-0.1.0a2/src/merriv/execution/__init__.py +11 -0
  193. merriv-0.1.0a2/src/merriv/execution/base.py +53 -0
  194. merriv-0.1.0a2/src/merriv/execution/local.py +39 -0
  195. merriv-0.1.0a2/src/merriv/gate/__init__.py +27 -0
  196. merriv-0.1.0a2/src/merriv/gate/policy.py +515 -0
  197. merriv-0.1.0a2/src/merriv/importers/__init__.py +15 -0
  198. merriv-0.1.0a2/src/merriv/importers/polygraphy.py +185 -0
  199. merriv-0.1.0a2/src/merriv/io/__init__.py +31 -0
  200. merriv-0.1.0a2/src/merriv/io/json.py +84 -0
  201. merriv-0.1.0a2/src/merriv/io/loaders.py +197 -0
  202. merriv-0.1.0a2/src/merriv/metrics/__init__.py +6 -0
  203. merriv-0.1.0a2/src/merriv/metrics/base.py +32 -0
  204. merriv-0.1.0a2/src/merriv/metrics/builtin.py +42 -0
  205. merriv-0.1.0a2/src/merriv/oci.py +220 -0
  206. merriv-0.1.0a2/src/merriv/pipeline.py +613 -0
  207. merriv-0.1.0a2/src/merriv/planning/__init__.py +27 -0
  208. merriv-0.1.0a2/src/merriv/planning/compiler.py +313 -0
  209. merriv-0.1.0a2/src/merriv/planning/models.py +66 -0
  210. merriv-0.1.0a2/src/merriv/plugins/__init__.py +32 -0
  211. merriv-0.1.0a2/src/merriv/plugins/builtin.py +33 -0
  212. merriv-0.1.0a2/src/merriv/plugins/models.py +41 -0
  213. merriv-0.1.0a2/src/merriv/plugins/registry.py +330 -0
  214. merriv-0.1.0a2/src/merriv/py.typed +1 -0
  215. merriv-0.1.0a2/src/merriv/reports/__init__.py +50 -0
  216. merriv-0.1.0a2/src/merriv/reports/ci.py +140 -0
  217. merriv-0.1.0a2/src/merriv/reports/io.py +195 -0
  218. merriv-0.1.0a2/src/merriv/reports/models.py +405 -0
  219. merriv-0.1.0a2/src/merriv/reports/render.py +160 -0
  220. merriv-0.1.0a2/src/merriv/reports/verify.py +709 -0
  221. merriv-0.1.0a2/src/merriv/stats/__init__.py +21 -0
  222. merriv-0.1.0a2/src/merriv/stats/paired.py +276 -0
  223. merriv-0.1.0a2/src/merriv/target.py +259 -0
  224. merriv-0.1.0a2/tests/test_adapter_contract.py +42 -0
  225. merriv-0.1.0a2/tests/test_adversarial.py +126 -0
  226. merriv-0.1.0a2/tests/test_api_adapter.py +583 -0
  227. merriv-0.1.0a2/tests/test_artifacts_onnx.py +411 -0
  228. merriv-0.1.0a2/tests/test_backend_evidence.py +74 -0
  229. merriv-0.1.0a2/tests/test_bisect.py +254 -0
  230. merriv-0.1.0a2/tests/test_bisect_execution.py +138 -0
  231. merriv-0.1.0a2/tests/test_cli.py +254 -0
  232. merriv-0.1.0a2/tests/test_contracts.py +125 -0
  233. merriv-0.1.0a2/tests/test_evidence_graph.py +280 -0
  234. merriv-0.1.0a2/tests/test_identity.py +216 -0
  235. merriv-0.1.0a2/tests/test_integrations.py +92 -0
  236. merriv-0.1.0a2/tests/test_pipeline_demo.py +31 -0
  237. merriv-0.1.0a2/tests/test_recorded_cli.py +248 -0
  238. merriv-0.1.0a2/tests/test_reports.py +814 -0
  239. merriv-0.1.0a2/tests/test_runner_cache.py +222 -0
  240. merriv-0.1.0a2/tests/test_security_hardening.py +343 -0
  241. merriv-0.1.0a2/tests/test_stage4_adversarial.py +952 -0
  242. merriv-0.1.0a2/tests/test_stage4_cli_metrics.py +201 -0
  243. merriv-0.1.0a2/tests/test_stage5_sdk_planning.py +683 -0
  244. merriv-0.1.0a2/tests/test_stats_gate.py +292 -0
  245. merriv-0.1.0a2/tests/test_supply_chain.py +184 -0
  246. merriv-0.1.0a2/tools/regenerate_onnx_demo_fixture.py +90 -0
  247. merriv-0.1.0a2/tools/verify_onnx_demo.py +175 -0
  248. merriv-0.1.0a2/tools/verify_regression_corpus.py +139 -0
  249. merriv-0.1.0a2/tools/verify_rust_interop.py +68 -0
  250. merriv-0.1.0a2/uv.lock +1362 -0
@@ -0,0 +1,8 @@
1
+ * text=auto eol=lf
2
+
3
+ *.onnx binary
4
+ *.pdf binary
5
+ *.png binary
6
+ *.jpg binary
7
+ *.jpeg binary
8
+ *.zip binary
@@ -0,0 +1,12 @@
1
+ # Bootstrap ownership. RFCs can split these paths as reviewers are added.
2
+ * @niansia
3
+
4
+ /schemas/ @niansia
5
+ /src/merriv/core/ @niansia
6
+ /src/merriv/gate/ @niansia
7
+ /src/merriv/reports/ @niansia
8
+ /src/merriv/evidence.py @niansia
9
+ /src/merriv/target.py @niansia
10
+ /rfcs/ @niansia
11
+ /docs/mcr-*.md @niansia
12
+ /.github/workflows/ @niansia
@@ -0,0 +1,32 @@
1
+ name: Bug report
2
+ description: Report incorrect release evidence, behavior, or compatibility
3
+ title: "[Bug]: "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: Do not include credentials or private model outputs. Use SECURITY.md for vulnerabilities.
9
+ - type: textarea
10
+ id: outcome
11
+ attributes:
12
+ label: Observed and expected outcome
13
+ validations:
14
+ required: true
15
+ - type: textarea
16
+ id: reproduce
17
+ attributes:
18
+ label: Minimal reproduction
19
+ description: Include sanitized suite/policy fragments and exact exit status.
20
+ validations:
21
+ required: true
22
+ - type: input
23
+ id: version
24
+ attributes:
25
+ label: Merriv and Python versions
26
+ validations:
27
+ required: true
28
+ - type: textarea
29
+ id: environment
30
+ attributes:
31
+ label: Execution environment
32
+ description: OS, adapter, executor, and relevant non-secret revisions.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/niansia/Merriv/security/advisories/new
5
+ about: Report vulnerabilities privately; never post exploit details in an issue.
6
+ - name: Support policy
7
+ url: https://github.com/niansia/Merriv/blob/main/SUPPORT.md
8
+ about: Read what information to include and which reports belong elsewhere.
@@ -0,0 +1,44 @@
1
+ name: External reproduction
2
+ description: Submit an independently executed corpus or target-GPU result
3
+ title: "[Reproduction]: "
4
+ labels: ["reproduction", "evidence"]
5
+ body:
6
+ - type: input
7
+ id: source
8
+ attributes:
9
+ label: Source commit
10
+ validations:
11
+ required: true
12
+ - type: input
13
+ id: target
14
+ attributes:
15
+ label: Hardware, runtime, and driver
16
+ validations:
17
+ required: true
18
+ - type: input
19
+ id: root
20
+ attributes:
21
+ label: Target evidence ID and archive SHA-256
22
+ validations:
23
+ required: true
24
+ - type: textarea
25
+ id: commands
26
+ attributes:
27
+ label: Commands and verification results
28
+ validations:
29
+ required: true
30
+ - type: textarea
31
+ id: deviations
32
+ attributes:
33
+ label: Deviations, unavailable fields, and limitations
34
+ validations:
35
+ required: true
36
+ - type: checkboxes
37
+ id: independence
38
+ attributes:
39
+ label: Independence
40
+ options:
41
+ - label: I controlled the execution environment and did not reuse the project's generated evidence archive.
42
+ required: true
43
+ - label: No credentials, proprietary artifacts, or private model outputs are attached.
44
+ required: true
@@ -0,0 +1,40 @@
1
+ name: Model Change Report compatibility
2
+ description: Report a producer, consumer, schema, or identity interoperability issue
3
+ title: "[Model Change Report compatibility]: "
4
+ labels: ["compatibility", "mcr"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: Do not include private evidence or vulnerability details.
9
+ - type: input
10
+ id: implementation
11
+ attributes:
12
+ label: Implementation and revision
13
+ validations:
14
+ required: true
15
+ - type: input
16
+ id: mcr_version
17
+ attributes:
18
+ label: Exact Model Change Report version
19
+ validations:
20
+ required: true
21
+ - type: dropdown
22
+ id: role
23
+ attributes:
24
+ label: Role
25
+ options: [Producer, Consumer, Verifier, Identity implementation]
26
+ validations:
27
+ required: true
28
+ - type: textarea
29
+ id: command
30
+ attributes:
31
+ label: Sanitized command and output
32
+ description: Include exit code and smallest public fixture or receipt.
33
+ validations:
34
+ required: true
35
+ - type: textarea
36
+ id: mismatch
37
+ attributes:
38
+ label: Expected and observed semantics
39
+ validations:
40
+ required: true
@@ -0,0 +1,39 @@
1
+ name: Plugin or integration proposal
2
+ description: Propose an adapter, paired metric, executor, or Model Change Report integration
3
+ title: "[Plugin]: "
4
+ labels: ["plugin", "proposal"]
5
+ body:
6
+ - type: dropdown
7
+ id: kind
8
+ attributes:
9
+ label: Extension kind
10
+ options: [Adapter, Paired metric, Executor, Model Change Report producer/consumer]
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: user
15
+ attributes:
16
+ label: User and release workflow
17
+ description: Who needs this and which release decision does it enable?
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: evidence
22
+ attributes:
23
+ label: Evidence contract
24
+ description: Inputs, outputs, capabilities, units/direction, and limitations.
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ id: identity
29
+ attributes:
30
+ label: Reproducibility and non-secret identity
31
+ description: What config/revision enters snapshot, manifest, executor, and cache identity?
32
+ validations:
33
+ required: true
34
+ - type: textarea
35
+ id: threats
36
+ attributes:
37
+ label: Trust boundary and resource limits
38
+ validations:
39
+ required: true
@@ -0,0 +1,25 @@
1
+ ## Problem and outcome
2
+ <!-- What user/release-engineering problem does this solve? -->
3
+
4
+ ## Evidence and verification
5
+
6
+ - [ ] Deterministic tests added or updated
7
+ - [ ] `uv run --frozen ruff check .` passes
8
+ - [ ] `uv run --frozen mypy src` passes
9
+ - [ ] `uv run --frozen pytest` passes
10
+ - [ ] Public schema output checked when contracts changed
11
+
12
+ ## Compatibility and security
13
+
14
+ - [ ] No public contract or behavior change
15
+ - [ ] Or: RFC/migration notes linked below
16
+ - [ ] Secrets, raw private outputs, and credential hashes are absent from identity,
17
+ cache, reports, logs, and exceptions
18
+ - [ ] Resource/cost limits and fail-closed behavior were considered
19
+
20
+ ## Plugin/executor changes
21
+
22
+ - [ ] Not applicable
23
+ - [ ] Manifest/API version and non-secret config identity documented
24
+ - [ ] Capabilities and mutation behavior tested
25
+ - [ ] Trust/isolation boundary documented
@@ -0,0 +1,16 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ cooldown:
8
+ default-days: 7
9
+ open-pull-requests-limit: 5
10
+ - package-ecosystem: github-actions
11
+ directory: "/"
12
+ schedule:
13
+ interval: weekly
14
+ cooldown:
15
+ default-days: 7
16
+ open-pull-requests-limit: 5
@@ -0,0 +1,175 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ concurrency:
11
+ group: ci-${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ test:
16
+ runs-on: ubuntu-latest
17
+ timeout-minutes: 30
18
+ strategy:
19
+ matrix:
20
+ python-version: ["3.11", "3.12", "3.13"]
21
+ steps:
22
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
+ with:
24
+ persist-credentials: false
25
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+ version: "0.11.18"
29
+ enable-cache: true
30
+ cache-dependency-glob: uv.lock
31
+ - run: uv sync --frozen --extra dev --extra onnx --group action-build
32
+ - run: uv run --frozen ruff check .
33
+ - run: uv run --frozen mypy src
34
+ - run: uv run --frozen pytest --cov=merriv --cov-report=term-missing --cov-fail-under=91
35
+ - run: uv run --frozen python -m pip_audit --local --skip-editable
36
+ - run: uv pip check
37
+ - if: matrix.python-version == '3.13'
38
+ shell: bash
39
+ run: |
40
+ uv run --frozen merriv schema export schemas/mcr-0.4
41
+ git diff --exit-code -- schemas/mcr-0.4
42
+ test -z "$(git status --porcelain --untracked-files=all -- schemas/mcr-0.4)"
43
+ uv run --frozen python tools/verify_regression_corpus.py
44
+ uv run --frozen merriv conformance producer examples/mcr_conformance
45
+ - if: matrix.python-version == '3.13'
46
+ run: uv run --frozen python -m build --wheel --no-isolation --outdir wheelhouse
47
+
48
+ action-smoke:
49
+ runs-on: ubuntu-latest
50
+ timeout-minutes: 20
51
+ steps:
52
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
53
+ with:
54
+ persist-credentials: false
55
+ - name: Run the repository's composite action
56
+ id: gate
57
+ continue-on-error: true
58
+ uses: ./
59
+ with:
60
+ baseline: examples/recorded_compare/baseline.jsonl
61
+ candidate: examples/recorded_compare/candidate.jsonl
62
+ suite: examples/recorded_compare/suite.jsonl
63
+ policy: examples/recorded_compare/policy.yaml
64
+ output: runs/action-smoke
65
+ slice-key: frequency
66
+ resamples: "200"
67
+ artifact-name: action-smoke-${{ github.run_id }}
68
+ - name: Assert BLOCK semantics and portable bundle
69
+ if: always()
70
+ env:
71
+ MERRIV_ACTION_OUTCOME: ${{ steps.gate.outcome }}
72
+ MERRIV_ACTION_EXIT_CODE: ${{ steps.gate.outputs.exit-code }}
73
+ run: |
74
+ test "$MERRIV_ACTION_OUTCOME" = "failure"
75
+ test "$MERRIV_ACTION_EXIT_CODE" = "2"
76
+ test -f runs/action-smoke/mcr-report.json
77
+ test -f runs/action-smoke/evidence-manifest.json
78
+ test -f runs/action-smoke/release-plan.json
79
+ test -f runs/action-smoke/summary.md
80
+ test -f runs/action-smoke/junit.xml
81
+ test -f runs/action-smoke/results.sarif
82
+ merriv mcr verify runs/action-smoke --strict
83
+ - name: Verify cross-language content identity vectors
84
+ run: node examples/content_identity/verify_golden.mjs
85
+
86
+ rust-mcr-interop:
87
+ runs-on: ubuntu-latest
88
+ timeout-minutes: 20
89
+ steps:
90
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
91
+ with:
92
+ persist-credentials: false
93
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
94
+ with:
95
+ python-version: "3.11"
96
+ version: "0.11.18"
97
+ enable-cache: true
98
+ cache-dependency-glob: uv.lock
99
+ - name: Install the Python verifier and select the stable Rust toolchain
100
+ run: |
101
+ uv sync --frozen
102
+ rustup toolchain install stable --profile minimal --component rustfmt
103
+ rustup default stable
104
+ - name: Verify typed identity vectors in Python, Node, and Rust
105
+ run: |
106
+ uv run --frozen python examples/content_identity/generate_vectors.py --check
107
+ uv run --frozen python examples/content_identity/verify_golden.py
108
+ node examples/content_identity/verify_golden.mjs
109
+ cargo fmt --manifest-path reference/mcr-reference-rust/Cargo.toml -- --check
110
+ cargo test --locked --manifest-path reference/mcr-reference-rust/Cargo.toml
111
+ cargo run --locked --quiet --manifest-path reference/mcr-reference-rust/Cargo.toml -- vectors examples/content_identity/golden-vectors.json
112
+ cargo run --locked --quiet --manifest-path reference/mcr-reference-rust/Cargo.toml -- float-vectors examples/content_identity/float-vectors.json
113
+ - name: Verify bidirectional Python and Rust Model Change Report interoperability
114
+ run: |
115
+ uv run --frozen python examples/independent_producer/generate_bundle.py --check
116
+ uv run --frozen python tools/verify_rust_interop.py
117
+
118
+ reproducible-package:
119
+ runs-on: ubuntu-latest
120
+ timeout-minutes: 15
121
+ steps:
122
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
123
+ with:
124
+ persist-credentials: false
125
+ fetch-depth: 0
126
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
127
+ with:
128
+ python-version: "3.13"
129
+ version: "0.11.18"
130
+ enable-cache: true
131
+ cache-dependency-glob: uv.lock
132
+ - run: uv sync --frozen --extra dev --group action-build
133
+ - name: Build twice from the same source epoch
134
+ shell: bash
135
+ run: |
136
+ export SOURCE_DATE_EPOCH="$(git log -1 --format=%ct)"
137
+ reproducibility_root="${RUNNER_TEMP}/merriv-repro-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
138
+ mkdir -p "${reproducibility_root}/a" "${reproducibility_root}/b"
139
+ uv run --frozen python -m build --no-isolation --outdir "${reproducibility_root}/a"
140
+ uv run --frozen python -m build --no-isolation --outdir "${reproducibility_root}/b"
141
+ cmp "${reproducibility_root}"/a/*.whl "${reproducibility_root}"/b/*.whl
142
+ cmp "${reproducibility_root}"/a/*.tar.gz "${reproducibility_root}"/b/*.tar.gz
143
+ sha256sum "${reproducibility_root}"/a/* "${reproducibility_root}"/b/*
144
+
145
+ onnx-demo:
146
+ strategy:
147
+ fail-fast: false
148
+ matrix:
149
+ os: [ubuntu-latest, windows-latest]
150
+ runs-on: ${{ matrix.os }}
151
+ timeout-minutes: 30
152
+ steps:
153
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
154
+ with:
155
+ persist-credentials: false
156
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
157
+ with:
158
+ python-version: "3.11"
159
+ version: "0.11.18"
160
+ enable-cache: true
161
+ cache-dependency-glob: uv.lock
162
+ - run: uv sync --frozen --extra onnx-demo
163
+ - run: uv run --frozen python examples/onnx_quantization/run_demo.py --output runs/onnx-quantization
164
+ - run: uv run --frozen python tools/verify_onnx_demo.py runs/onnx-quantization
165
+ - run: uv run --frozen python examples/onnx_opset_upgrade/run_demo.py --output runs/onnx-opset-upgrade
166
+ - name: Upload platform-specific ONNX evidence
167
+ if: always()
168
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
169
+ with:
170
+ name: onnx-release-evidence-${{ matrix.os }}
171
+ path: |
172
+ runs/onnx-quantization
173
+ runs/onnx-opset-upgrade
174
+ if-no-files-found: error
175
+ retention-days: 14
@@ -0,0 +1,18 @@
1
+ name: Dependency review
2
+
3
+ on:
4
+ pull_request:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ dependency-review:
11
+ runs-on: ubuntu-latest
12
+ timeout-minutes: 10
13
+ steps:
14
+ - name: Review dependency changes
15
+ uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
16
+ with:
17
+ fail-on-severity: moderate
18
+ deny-licenses: GPL-2.0, GPL-3.0, AGPL-1.0, AGPL-3.0
@@ -0,0 +1,59 @@
1
+ name: NVIDIA vertical
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ modelopt-tensorrt:
11
+ runs-on: [self-hosted, windows, x64, nvidia-gpu]
12
+ timeout-minutes: 60
13
+ env:
14
+ UV_CACHE_DIR: .uv-cache-${{ github.run_id }}
15
+ UV_NO_PROGRESS: "1"
16
+ steps:
17
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
18
+ with:
19
+ persist-credentials: false
20
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
21
+ with:
22
+ python-version: "3.11"
23
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
24
+ with:
25
+ version: "0.11.18"
26
+ enable-cache: false
27
+ - name: Generate the fixed CPU suite
28
+ shell: pwsh
29
+ run: |
30
+ $env:UV_PROJECT_ENVIRONMENT = ".venv-suite"
31
+ uv sync --frozen --extra onnx-demo
32
+ .venv-suite/Scripts/python examples/onnx_quantization/run_demo.py --output runs/onnx-quantization
33
+ - name: Build PyTorch and ModelOpt artifacts
34
+ shell: pwsh
35
+ run: |
36
+ uv venv --python 3.11 .venv-modelopt
37
+ uv pip sync --python .venv-modelopt/Scripts/python.exe --require-hashes examples/nvidia_tensorrt_vertical/requirements-modelopt.lock
38
+ .venv-modelopt/Scripts/python examples/nvidia_tensorrt_vertical/build_artifacts.py --fixture examples/onnx_quantization/assets/digits-mlp-fp32.onnx.b64 --output runs/nvidia/artifact-inputs
39
+ - name: Execute TensorRT, Polygraphy, gate, and bisect
40
+ shell: pwsh
41
+ run: |
42
+ $env:UV_PROJECT_ENVIRONMENT = ".venv-tensorrt"
43
+ uv sync --frozen --extra onnx-demo
44
+ uv pip install --python .venv-tensorrt/Scripts/python.exe --no-deps --require-hashes -r examples/nvidia_tensorrt_vertical/requirements-tensorrt-cu125-windows.lock
45
+ .venv-tensorrt/Scripts/python examples/nvidia_tensorrt_vertical/run_vertical.py --artifacts runs/nvidia/artifact-inputs --suite runs/onnx-quantization/suite.jsonl --output runs/nvidia/live --polygraphy-command .venv-tensorrt/Scripts/polygraphy.exe
46
+ - name: Verify target receipt and every Model Change Report bundle
47
+ shell: pwsh
48
+ run: |
49
+ .venv-tensorrt/Scripts/python -c "import json,pathlib; p=json.loads(pathlib.Path('runs/nvidia/live/gpu-receipt.json').read_text()); assert p['first_bad_index'] == 2; assert [b['decision'] for b in p['builds']] == ['PASS','PASS','BLOCK','BLOCK']; assert all(b['backend_matched_cases'] == p['case_count'] for b in p['builds'])"
50
+ .venv-tensorrt/Scripts/merriv.exe mcr verify-target runs/nvidia/live
51
+ if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
52
+ - name: Upload exact target evidence
53
+ if: always()
54
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
55
+ with:
56
+ name: nvidia-modelopt-tensorrt-${{ github.run_id }}
57
+ path: runs/nvidia
58
+ if-no-files-found: error
59
+ retention-days: 30
@@ -0,0 +1,106 @@
1
+ name: Build release artifacts
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ concurrency:
13
+ group: release-${{ github.ref }}
14
+ cancel-in-progress: false
15
+
16
+ jobs:
17
+ build:
18
+ runs-on: ubuntu-latest
19
+ timeout-minutes: 20
20
+ steps:
21
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
22
+ with:
23
+ persist-credentials: false
24
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
25
+ with:
26
+ python-version: "3.13"
27
+ version: "0.11.18"
28
+ enable-cache: false
29
+ - name: Install the locked build frontend
30
+ run: uv sync --frozen --extra dev --group action-build
31
+ - name: Build wheel and source distribution
32
+ shell: bash
33
+ run: |
34
+ export SOURCE_DATE_EPOCH="$(git log -1 --format=%ct)"
35
+ uv run --frozen python -m build --no-isolation
36
+ - name: Verify wheel installation
37
+ run: |
38
+ uv venv release-smoke --python 3.13
39
+ uv pip install --python release-smoke/bin/python --require-hashes -r action-requirements.lock
40
+ uv pip install --python release-smoke/bin/python --no-deps dist/*.whl
41
+ release-smoke/bin/merriv --help
42
+ release-smoke/bin/python -c "import importlib.util, merriv; assert importlib.util.find_spec('m2' + 'riv') is None"
43
+ legacy_command="m2""riv"
44
+ test ! -e "release-smoke/bin/${legacy_command}"
45
+ - name: Generate SPDX SBOM
46
+ uses: anchore/sbom-action@e22c389904149dbc22b58101806040fa8d37a610 # v0.24.0
47
+ with:
48
+ path: dist
49
+ format: spdx-json
50
+ output-file: dist/merriv.spdx.json
51
+ upload-artifact: false
52
+ upload-release-assets: false
53
+ - name: Write SHA-256 checksums
54
+ run: cd dist && sha256sum *.whl *.tar.gz *.spdx.json > SHA256SUMS
55
+ - name: Upload release bundle
56
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
57
+ with:
58
+ name: merriv-distributions-${{ github.ref_name }}
59
+ path: dist/*
60
+ if-no-files-found: error
61
+ retention-days: 30
62
+
63
+ attest:
64
+ needs: build
65
+ runs-on: ubuntu-latest
66
+ timeout-minutes: 10
67
+ permissions:
68
+ attestations: write
69
+ contents: read
70
+ id-token: write
71
+ steps:
72
+ - name: Download release bundle as inert data
73
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
74
+ with:
75
+ name: merriv-distributions-${{ github.ref_name }}
76
+ path: dist
77
+ - name: Attest release files
78
+ uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4.2.2
79
+ with:
80
+ subject-path: dist/*
81
+
82
+ publish:
83
+ needs: [build, attest]
84
+ if: startsWith(github.ref, 'refs/tags/v') && vars.MERRIV_BRAND_CLEARED == 'true'
85
+ runs-on: ubuntu-latest
86
+ timeout-minutes: 10
87
+ environment:
88
+ name: pypi
89
+ url: https://pypi.org/p/merriv
90
+ permissions:
91
+ contents: read
92
+ id-token: write
93
+ steps:
94
+ - name: Download attested distributions
95
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
96
+ with:
97
+ name: merriv-distributions-${{ github.ref_name }}
98
+ path: dist
99
+ - name: Isolate package files from checksums and SBOM
100
+ run: |
101
+ mkdir publish-dist
102
+ cp dist/*.whl dist/*.tar.gz publish-dist/
103
+ - name: Publish with PyPI Trusted Publishing
104
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
105
+ with:
106
+ packages-dir: publish-dist
@@ -0,0 +1,39 @@
1
+ name: OpenSSF Scorecard
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ schedule:
7
+ - cron: "30 1 * * 6"
8
+
9
+ permissions: read-all
10
+
11
+ jobs:
12
+ analysis:
13
+ name: Scorecard analysis
14
+ runs-on: ubuntu-latest
15
+ timeout-minutes: 20
16
+ permissions:
17
+ security-events: write
18
+ id-token: write
19
+ steps:
20
+ - name: Checkout without persisted credentials
21
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
22
+ with:
23
+ persist-credentials: false
24
+ - name: Run OpenSSF Scorecard
25
+ uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
26
+ with:
27
+ results_file: results.sarif
28
+ results_format: sarif
29
+ publish_results: true
30
+ - name: Retain the exact SARIF result
31
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
32
+ with:
33
+ name: openssf-scorecard-sarif
34
+ path: results.sarif
35
+ retention-days: 5
36
+ - name: Publish findings to code scanning
37
+ uses: github/codeql-action/upload-sarif@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
38
+ with:
39
+ sarif_file: results.sarif
@@ -0,0 +1,45 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .DS_Store
5
+ Thumbs.db
6
+ .idea/
7
+ .vscode/
8
+ .env
9
+ .env.*
10
+ !.env.example
11
+ .coverage
12
+ coverage.xml
13
+ htmlcov/
14
+ .mypy_cache/
15
+ .pytest_cache/
16
+ .ruff_cache/
17
+ .hypothesis/
18
+ .nox/
19
+ .tox/
20
+ .venv/
21
+ node_modules/
22
+ build/
23
+ target/
24
+ dist/
25
+ runs/
26
+ tmp/
27
+ output/
28
+ *.log
29
+ *.whl
30
+ *.tar.gz
31
+ *.zip
32
+ *.7z
33
+ *.pdf
34
+ *.ppt
35
+ *.pptx
36
+ *.onnx
37
+ *.engine
38
+ *.plan
39
+ *.pt
40
+ *.pth
41
+ *.safetensors
42
+ *.pem
43
+ *.key
44
+ *.p12
45
+ *.pfx