commitguardian 0.1.1__tar.gz → 0.1.2__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 (485) hide show
  1. {commitguardian-0.1.1 → commitguardian-0.1.2}/CHANGELOG.md +12 -0
  2. {commitguardian-0.1.1 → commitguardian-0.1.2}/CITATION.cff +1 -1
  3. {commitguardian-0.1.1 → commitguardian-0.1.2}/PKG-INFO +1 -1
  4. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/README.md +1 -1
  5. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/doctor.md +1 -1
  6. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/README.md +1 -1
  7. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/local.md +1 -1
  8. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/production.md +1 -1
  9. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/troubleshooting.md +1 -1
  10. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/release-process.md +1 -1
  11. {commitguardian-0.1.1 → commitguardian-0.1.2}/pyproject.toml +1 -1
  12. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/__init__.py +1 -1
  13. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/repository.py +6 -0
  14. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/hooks.py +17 -1
  15. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/hooks/test_pre_push.py +25 -0
  16. {commitguardian-0.1.1 → commitguardian-0.1.2}/.gitignore +0 -0
  17. {commitguardian-0.1.1 → commitguardian-0.1.2}/CODE_OF_CONDUCT.md +0 -0
  18. {commitguardian-0.1.1 → commitguardian-0.1.2}/CONTRIBUTING.md +0 -0
  19. {commitguardian-0.1.1 → commitguardian-0.1.2}/LICENSE +0 -0
  20. {commitguardian-0.1.1 → commitguardian-0.1.2}/README.md +0 -0
  21. {commitguardian-0.1.1 → commitguardian-0.1.2}/SECURITY.md +0 -0
  22. {commitguardian-0.1.1 → commitguardian-0.1.2}/action.yml +0 -0
  23. {commitguardian-0.1.1 → commitguardian-0.1.2}/config/default.yaml +0 -0
  24. {commitguardian-0.1.1 → commitguardian-0.1.2}/config/examples/allow-ai.yaml +0 -0
  25. {commitguardian-0.1.1 → commitguardian-0.1.2}/config/examples/block-ai-coauthors.yaml +0 -0
  26. {commitguardian-0.1.1 → commitguardian-0.1.2}/config/examples/enterprise.yaml +0 -0
  27. {commitguardian-0.1.1 → commitguardian-0.1.2}/config/strict.yaml +0 -0
  28. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/README.md +0 -0
  29. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/001-detection-separate-from-policy.md +0 -0
  30. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/002-rules-as-data.md +0 -0
  31. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/003-fail-closed.md +0 -0
  32. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/004-trusted-policy-source.md +0 -0
  33. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/005-no-regex-trailer-parser.md +0 -0
  34. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/006-mandatory-policy-only-strengthens.md +0 -0
  35. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/007-immutable-evidence.md +0 -0
  36. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/008-not-published-to-pypi.md +0 -0
  37. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/009-published-to-pypi-as-commitguardian.md +0 -0
  38. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/adr/README.md +0 -0
  39. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/audit.md +0 -0
  40. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/authentication.md +0 -0
  41. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/authorization.md +0 -0
  42. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/bulk-operations.md +0 -0
  43. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/compliance-exports.md +0 -0
  44. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/errors.md +0 -0
  45. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/exceptions.md +0 -0
  46. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/github-installations.md +0 -0
  47. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/notifications.md +0 -0
  48. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/organizations.md +0 -0
  49. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/pagination.md +0 -0
  50. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/policies.md +0 -0
  51. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/policy-drafts.md +0 -0
  52. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/rate-limits.md +0 -0
  53. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/repositories.md +0 -0
  54. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/repository-groups.md +0 -0
  55. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/rollouts.md +0 -0
  56. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/rules.md +0 -0
  57. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/scan-schedules.md +0 -0
  58. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/scans.md +0 -0
  59. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/security-posture.md +0 -0
  60. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/simulations.md +0 -0
  61. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/violations.md +0 -0
  62. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/api/webhooks.md +0 -0
  63. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/architecture.md +0 -0
  64. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/README.md +0 -0
  65. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/benchmark.md +0 -0
  66. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/github.md +0 -0
  67. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/init.md +0 -0
  68. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/install.md +0 -0
  69. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/policy.md +0 -0
  70. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/reproduce.md +0 -0
  71. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/cli/scan.md +0 -0
  72. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/community/README.md +0 -0
  73. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/community/case-study-template.md +0 -0
  74. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/community/data-policy.md +0 -0
  75. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/community/external-evaluation.md +0 -0
  76. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/community/feedback-triage.md +0 -0
  77. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/community/good-first-issues.md +0 -0
  78. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/community/pilot-program.md +0 -0
  79. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/compliance-reporting.md +0 -0
  80. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/configuration.md +0 -0
  81. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/dashboard.md +0 -0
  82. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/github-actions.md +0 -0
  83. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/github-app.md +0 -0
  84. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/organization.md +0 -0
  85. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment/self-hosted.md +0 -0
  86. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/deployment.md +0 -0
  87. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/detection-engine.md +0 -0
  88. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/evidence/cli.json +0 -0
  89. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/evidence/phase-10-report.md +0 -0
  90. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/evidence/phase-10-verification-report.md +0 -0
  91. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/evidence/tests.json +0 -0
  92. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/evidence/timeline.md +0 -0
  93. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/evidence/validation-matrix.md +0 -0
  94. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/getting-started/quickstart.md +0 -0
  95. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/git-hooks.md +0 -0
  96. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/github-app.md +0 -0
  97. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/github-enforcement.md +0 -0
  98. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/README.md +0 -0
  99. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/architecture.md +0 -0
  100. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/benchmarking.md +0 -0
  101. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/development.md +0 -0
  102. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/incident-response.md +0 -0
  103. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/repository-management.md +0 -0
  104. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/maintainers/security.md +0 -0
  105. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/merge-queue.md +0 -0
  106. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/notifications.md +0 -0
  107. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/operations/runbook.md +0 -0
  108. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/organization-governance.md +0 -0
  109. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/policy-engine.md +0 -0
  110. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/policy-exceptions.md +0 -0
  111. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/policy-inheritance.md +0 -0
  112. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/policy-management.md +0 -0
  113. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/policy-rollouts.md +0 -0
  114. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/policy-simulation.md +0 -0
  115. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/presentations/commitguard-technical-overview.md +0 -0
  116. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/presentations/technical-article.md +0 -0
  117. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/recovery.md +0 -0
  118. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/repository-management.md +0 -0
  119. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/README.md +0 -0
  120. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/bypass-resistance.md +0 -0
  121. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/commitguard-architecture.md +0 -0
  122. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/cross-platform-validation.md +0 -0
  123. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/detection-evaluation.md +0 -0
  124. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/fuzzing.md +0 -0
  125. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/github-enforcement-validation.md +0 -0
  126. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/impact.md +0 -0
  127. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/innovation.md +0 -0
  128. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/limitations.md +0 -0
  129. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/merge-queue-security.md +0 -0
  130. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/methodology.md +0 -0
  131. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/performance-evaluation.md +0 -0
  132. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/policy-tampering.md +0 -0
  133. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/problem-definition.md +0 -0
  134. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/reliability-evaluation.md +0 -0
  135. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/reproducibility.md +0 -0
  136. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/research/roadmap.md +0 -0
  137. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/README.md +0 -0
  138. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/authorization-matrix.md +0 -0
  139. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/ci-pipeline-security.md +0 -0
  140. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/incident-response.md +0 -0
  141. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/review-guide.md +0 -0
  142. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/security-boundaries.md +0 -0
  143. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/supply-chain.md +0 -0
  144. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/threat-model.md +0 -0
  145. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security/vulnerability-response.md +0 -0
  146. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/security-posture.md +0 -0
  147. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/support/compatibility-policy.md +0 -0
  148. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/support/compatibility.md +0 -0
  149. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/support/maintenance-policy.md +0 -0
  150. {commitguardian-0.1.1 → commitguardian-0.1.2}/docs/threat-model.md +0 -0
  151. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/README.md +0 -0
  152. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/.commitguard.yaml +0 -0
  153. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/README.md +0 -0
  154. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/commits/ai-coauthor.txt +0 -0
  155. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/commits/ai-tool-footer.txt +0 -0
  156. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/commits/clean.txt +0 -0
  157. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/commits/disguised-coauthor.txt +0 -0
  158. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/commits/malformed-trailer.txt +0 -0
  159. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/basic/expected.json +0 -0
  160. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/exceptions/README.md +0 -0
  161. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/github-actions/README.md +0 -0
  162. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/github-actions/commitguard.yml +0 -0
  163. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/github-app/README.md +0 -0
  164. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/organization-policy/README.md +0 -0
  165. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/organization-policy/mandatory-policy.yaml +0 -0
  166. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/organization-policy/repository-attempt.yaml +0 -0
  167. {commitguardian-0.1.1 → commitguardian-0.1.2}/examples/policy-rollout/README.md +0 -0
  168. {commitguardian-0.1.1 → commitguardian-0.1.2}/hooks/README.md +0 -0
  169. {commitguardian-0.1.1 → commitguardian-0.1.2}/hooks/commit-msg +0 -0
  170. {commitguardian-0.1.1 → commitguardian-0.1.2}/hooks/pre-commit +0 -0
  171. {commitguardian-0.1.1 → commitguardian-0.1.2}/hooks/pre-push +0 -0
  172. {commitguardian-0.1.1 → commitguardian-0.1.2}/requirements/ci.in +0 -0
  173. {commitguardian-0.1.1 → commitguardian-0.1.2}/requirements/ci.txt +0 -0
  174. {commitguardian-0.1.1 → commitguardian-0.1.2}/rules/ai-domains.yaml +0 -0
  175. {commitguardian-0.1.1 → commitguardian-0.1.2}/rules/ai-identities.yaml +0 -0
  176. {commitguardian-0.1.1 → commitguardian-0.1.2}/rules/bot-identities.yaml +0 -0
  177. {commitguardian-0.1.1 → commitguardian-0.1.2}/rules/patterns.yaml +0 -0
  178. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/__main__.py +0 -0
  179. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/api/__init__.py +0 -0
  180. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/api/app.py +0 -0
  181. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/api/governance.py +0 -0
  182. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/api/hosting.py +0 -0
  183. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/api/http.py +0 -0
  184. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/api/settings.py +0 -0
  185. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/audit/__init__.py +0 -0
  186. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/audit/logger.py +0 -0
  187. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/audit/models.py +0 -0
  188. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/audit/storage.py +0 -0
  189. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/ci/__init__.py +0 -0
  190. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/ci/context.py +0 -0
  191. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/__init__.py +0 -0
  192. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/app.py +0 -0
  193. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/__init__.py +0 -0
  194. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/benchmark.py +0 -0
  195. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/check.py +0 -0
  196. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/ci.py +0 -0
  197. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/dashboard.py +0 -0
  198. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/doctor.py +0 -0
  199. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/github.py +0 -0
  200. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/hook.py +0 -0
  201. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/init.py +0 -0
  202. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/install.py +0 -0
  203. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/policy.py +0 -0
  204. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/report.py +0 -0
  205. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/reproduce.py +0 -0
  206. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/commands/scan.py +0 -0
  207. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/common.py +0 -0
  208. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/output.py +0 -0
  209. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/cli/render.py +0 -0
  210. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/config/__init__.py +0 -0
  211. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/config/defaults.py +0 -0
  212. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/config/enforcement.py +0 -0
  213. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/config/loader.py +0 -0
  214. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/config/schema.py +0 -0
  215. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/config/sources.py +0 -0
  216. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/__init__.py +0 -0
  217. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/access.py +0 -0
  218. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/commands.py +0 -0
  219. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/errors.py +0 -0
  220. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/identity.py +0 -0
  221. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/members.py +0 -0
  222. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/notifications.py +0 -0
  223. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/pagination.py +0 -0
  224. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/policies.py +0 -0
  225. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/queries.py +0 -0
  226. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/results.py +0 -0
  227. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/rules.py +0 -0
  228. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/controlplane/views.py +0 -0
  229. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/core/__init__.py +0 -0
  230. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/core/context.py +0 -0
  231. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/core/decision.py +0 -0
  232. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/core/engine.py +0 -0
  233. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/core/result.py +0 -0
  234. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/detectors/__init__.py +0 -0
  235. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/detectors/base.py +0 -0
  236. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/detectors/bot.py +0 -0
  237. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/detectors/coauthor.py +0 -0
  238. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/detectors/identity.py +0 -0
  239. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/detectors/registry.py +0 -0
  240. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/detectors/trailer.py +0 -0
  241. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/exceptions/__init__.py +0 -0
  242. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/exceptions/base.py +0 -0
  243. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/exceptions/configuration.py +0 -0
  244. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/exceptions/detection.py +0 -0
  245. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/exceptions/git.py +0 -0
  246. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/exceptions/service.py +0 -0
  247. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/__init__.py +0 -0
  248. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/commands.py +0 -0
  249. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/commit.py +0 -0
  250. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/diff.py +0 -0
  251. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/hooks.py +0 -0
  252. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/push.py +0 -0
  253. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/git/ranges.py +0 -0
  254. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/__init__.py +0 -0
  255. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/actions.py +0 -0
  256. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/app.py +0 -0
  257. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/auth.py +0 -0
  258. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/check_runs.py +0 -0
  259. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/checks.py +0 -0
  260. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/client.py +0 -0
  261. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/enforcement_status.py +0 -0
  262. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/errors.py +0 -0
  263. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/events.py +0 -0
  264. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/identifiers.py +0 -0
  265. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/installations.py +0 -0
  266. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/markdown.py +0 -0
  267. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/permissions.py +0 -0
  268. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/pull_requests.py +0 -0
  269. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/queue.py +0 -0
  270. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/recovery.py +0 -0
  271. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/repositories.py +0 -0
  272. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/server.py +0 -0
  273. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/settings.py +0 -0
  274. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/storage.py +0 -0
  275. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/webhooks.py +0 -0
  276. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/worker.py +0 -0
  277. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/github/workflow.py +0 -0
  278. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/__init__.py +0 -0
  279. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/bulk.py +0 -0
  280. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/cache.py +0 -0
  281. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/common.py +0 -0
  282. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/exceptions.py +0 -0
  283. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/groups.py +0 -0
  284. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/inventory.py +0 -0
  285. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/posture.py +0 -0
  286. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/resolver.py +0 -0
  287. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/rollouts.py +0 -0
  288. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/rules.py +0 -0
  289. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/schedules.py +0 -0
  290. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/service.py +0 -0
  291. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/settings.py +0 -0
  292. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/simulation.py +0 -0
  293. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/governance/workflow.py +0 -0
  294. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/__init__.py +0 -0
  295. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/channels/__init__.py +0 -0
  296. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/channels/base.py +0 -0
  297. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/channels/email.py +0 -0
  298. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/channels/in_app.py +0 -0
  299. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/channels/sink.py +0 -0
  300. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/channels/webhook.py +0 -0
  301. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/deduplication.py +0 -0
  302. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/dispatcher.py +0 -0
  303. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/models.py +0 -0
  304. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/outbox.py +0 -0
  305. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/preferences.py +0 -0
  306. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/retry.py +0 -0
  307. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/service.py +0 -0
  308. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/settings.py +0 -0
  309. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/notifications/templates.py +0 -0
  310. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/observability/__init__.py +0 -0
  311. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/observability/logging.py +0 -0
  312. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/observability/metrics.py +0 -0
  313. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/policies/__init__.py +0 -0
  314. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/policies/defaults.py +0 -0
  315. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/policies/evaluator.py +0 -0
  316. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/policies/governance.py +0 -0
  317. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/policies/loader.py +0 -0
  318. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/policies/mandatory.py +0 -0
  319. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/policies/model.py +0 -0
  320. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/provenance/__init__.py +0 -0
  321. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/provenance/author.py +0 -0
  322. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/provenance/committer.py +0 -0
  323. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/provenance/normalization.py +0 -0
  324. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/provenance/signatures.py +0 -0
  325. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/provenance/trailers.py +0 -0
  326. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/__init__.py +0 -0
  327. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/compare.py +0 -0
  328. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/datasets.py +0 -0
  329. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/detection.py +0 -0
  330. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/environment.py +0 -0
  331. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/gitenv.py +0 -0
  332. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/hooks.py +0 -0
  333. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/metrics.py +0 -0
  334. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/performance.py +0 -0
  335. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/platform.py +0 -0
  336. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/report.py +0 -0
  337. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/repository.py +0 -0
  338. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/reproduction.py +0 -0
  339. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/research/results.py +0 -0
  340. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/rules/__init__.py +0 -0
  341. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/rules/loader.py +0 -0
  342. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/rules/matcher.py +0 -0
  343. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/rules/models.py +0 -0
  344. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/security/__init__.py +0 -0
  345. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/security/hashing.py +0 -0
  346. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/security/rate_limit.py +0 -0
  347. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/security/safe_yaml.py +0 -0
  348. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/security/sanitization.py +0 -0
  349. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/security/secrets.py +0 -0
  350. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/security/validation.py +0 -0
  351. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/__init__.py +0 -0
  352. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/analysis.py +0 -0
  353. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/audit.py +0 -0
  354. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/ci.py +0 -0
  355. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/enforcement.py +0 -0
  356. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/push_fix.py +0 -0
  357. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/remediation.py +0 -0
  358. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/reports.py +0 -0
  359. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/services/scan.py +0 -0
  360. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/utils/__init__.py +0 -0
  361. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/utils/filesystem.py +0 -0
  362. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/utils/platform.py +0 -0
  363. {commitguardian-0.1.1 → commitguardian-0.1.2}/src/commitguard/utils/subprocess.py +0 -0
  364. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/conftest.py +0 -0
  365. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/e2e/dashboard_harness.py +0 -0
  366. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/ai_agent_author.yaml +0 -0
  367. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/ai_wording_only.yaml +0 -0
  368. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/bot_author.yaml +0 -0
  369. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/chatgpt_coauthor.yaml +0 -0
  370. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/claude_coauthor.yaml +0 -0
  371. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/copilot_coauthor.yaml +0 -0
  372. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/generated_with_trailer.yaml +0 -0
  373. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/human_coauthor.yaml +0 -0
  374. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/malformed_trailer.yaml +0 -0
  375. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/malicious_message.yaml +0 -0
  376. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/multiple_coauthors.yaml +0 -0
  377. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/normal_human.yaml +0 -0
  378. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/commits/unknown_ai_agent.yaml +0 -0
  379. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/alias.yaml +0 -0
  380. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/duplicate-keys.yaml +0 -0
  381. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/null-action.yaml +0 -0
  382. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/python-tag.yaml +0 -0
  383. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/string-boolean.yaml +0 -0
  384. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/unknown-key.yaml +0 -0
  385. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/unknown-policy.yaml +0 -0
  386. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/policies/valid-minimal.yaml +0 -0
  387. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/repositories/README.md +0 -0
  388. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/README.md +0 -0
  389. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/installation.created.json +0 -0
  390. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/installation.deleted.json +0 -0
  391. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/installation_repositories.added.json +0 -0
  392. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/installation_repositories.removed.json +0 -0
  393. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/pull_request.closed.json +0 -0
  394. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/pull_request.opened.json +0 -0
  395. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/pull_request.reopened.json +0 -0
  396. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/pull_request.synchronize.json +0 -0
  397. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/fixtures/webhooks/push.json +0 -0
  398. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/git/test_cli_commands.py +0 -0
  399. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/git/test_repository.py +0 -0
  400. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/conftest.py +0 -0
  401. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/conftest.py +0 -0
  402. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_api.py +0 -0
  403. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_authorization.py +0 -0
  404. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_lifecycle.py +0 -0
  405. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_notifications.py +0 -0
  406. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_performance.py +0 -0
  407. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_policies.py +0 -0
  408. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_recovery.py +0 -0
  409. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_dashboard_security.py +0 -0
  410. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_governance_end_to_end.py +0 -0
  411. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_governance_isolation.py +0 -0
  412. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_governance_operations.py +0 -0
  413. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_governance_performance.py +0 -0
  414. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_governance_policies.py +0 -0
  415. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_governance_rollouts.py +0 -0
  416. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/dashboard/test_governance_workflow.py +0 -0
  417. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/security/test_server_enforcement_experiments.py +0 -0
  418. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/test_app_action_consistency.py +0 -0
  419. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/test_app_cli.py +0 -0
  420. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/test_app_concurrency.py +0 -0
  421. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/test_app_end_to_end.py +0 -0
  422. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/test_app_http.py +0 -0
  423. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/test_app_merge_queue_reruns.py +0 -0
  424. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/app/test_app_security.py +0 -0
  425. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/conftest.py +0 -0
  426. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/security/test_bypass_resistance.py +0 -0
  427. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/test_action_scripts.py +0 -0
  428. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/test_ci_github.py +0 -0
  429. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/test_ci_security.py +0 -0
  430. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/test_defense_in_depth.py +0 -0
  431. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/test_github_cli.py +0 -0
  432. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/github/test_github_placeholder.py +0 -0
  433. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/hooks/conftest.py +0 -0
  434. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/hooks/test_commit_hooks.py +0 -0
  435. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/hooks/test_end_to_end.py +0 -0
  436. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/hooks/test_hook_templates.py +0 -0
  437. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/hooks/test_install.py +0 -0
  438. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/integration/test_examples.py +0 -0
  439. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/security/conftest.py +0 -0
  440. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/security/test_fuzz_parsers.py +0 -0
  441. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/security/test_properties.py +0 -0
  442. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/security/test_redos.py +0 -0
  443. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/config/test_config_validation.py +0 -0
  444. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/controlplane/test_controlplane.py +0 -0
  445. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/controlplane/test_governance_units.py +0 -0
  446. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/core/test_decision.py +0 -0
  447. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/core/test_engine.py +0 -0
  448. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/core/test_result.py +0 -0
  449. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/detectors/test_bot.py +0 -0
  450. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/detectors/test_coauthor.py +0 -0
  451. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/detectors/test_identity.py +0 -0
  452. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/detectors/test_registry.py +0 -0
  453. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/detectors/test_trailer.py +0 -0
  454. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/git/test_hook_rendering.py +0 -0
  455. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/git/test_push_parsing.py +0 -0
  456. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/conftest.py +0 -0
  457. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_auth.py +0 -0
  458. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_client.py +0 -0
  459. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_phase7_events_and_storage.py +0 -0
  460. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_policy_and_checks.py +0 -0
  461. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_secrets_and_logging.py +0 -0
  462. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_service_entry_points.py +0 -0
  463. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_storage.py +0 -0
  464. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_webhook_events.py +0 -0
  465. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/app/test_webhooks.py +0 -0
  466. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/test_events_and_output.py +0 -0
  467. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/github/test_workflows_static.py +0 -0
  468. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/notifications/test_notification_units.py +0 -0
  469. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/policies/test_evaluator.py +0 -0
  470. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/policies/test_governance_resolution.py +0 -0
  471. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/policies/test_policy_loader.py +0 -0
  472. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/provenance/test_identity_parsing.py +0 -0
  473. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/provenance/test_models.py +0 -0
  474. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/provenance/test_trailers.py +0 -0
  475. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/research/test_compare.py +0 -0
  476. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/rules/test_matcher.py +0 -0
  477. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/rules/test_rules_loader.py +0 -0
  478. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/security/test_safe_subprocess.py +0 -0
  479. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/security/test_sanitization.py +0 -0
  480. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/security/test_validation.py +0 -0
  481. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/services/test_analyzer.py +0 -0
  482. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/services/test_remediation.py +0 -0
  483. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/test_architecture.py +0 -0
  484. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/test_documented_commands.py +0 -0
  485. {commitguardian-0.1.1 → commitguardian-0.1.2}/tests/unit/test_env_example.py +0 -0
@@ -6,6 +6,18 @@ All notable changes to this project are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.2] - 2026-09-19
10
+
11
+ ### Fixed
12
+
13
+ - `remediation.fix_on_push` did nothing for `git push origin HEAD` or
14
+ `git push origin HEAD:main`. For those forms Git reports the local ref as plain
15
+ `HEAD`, which the "only move local branches" guard did not recognise, so the
16
+ push was blocked instead of cleaned (safely - nothing was rewritten or sent).
17
+ `HEAD` is now resolved to the checked-out branch when that branch's tip is the
18
+ commit being pushed; a detached `HEAD` is still refused. Found by testing the
19
+ released 0.1.1 package on a real machine.
20
+
9
21
  ## [0.1.1] - 2026-09-19
10
22
 
11
23
  ### Added
@@ -22,5 +22,5 @@ keywords:
22
22
  - ai-attribution
23
23
  - software-supply-chain
24
24
  license: MIT
25
- version: 0.1.1
25
+ version: 0.1.2
26
26
  date-released: "2026-09-19"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: commitguardian
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Block AI, bot and agent attribution in Git commits, locally and on GitHub.
5
5
  Project-URL: Homepage, https://github.com/oyinlola-tech/commitguard
6
6
  Project-URL: Repository, https://github.com/oyinlola-tech/commitguard
@@ -5,7 +5,7 @@ dashboard is built on it. It exposes repositories, scans, violations, policies
5
5
  and their governance, exceptions, audit events, notifications and GitHub
6
6
  installations. The same process also receives GitHub webhooks.
7
7
 
8
- > **Stability.** CommitGuard is pre-alpha (`0.1.1`, "Development Status :: 2
8
+ > **Stability.** CommitGuard is pre-alpha (`0.1.2`, "Development Status :: 2
9
9
  > - Pre-Alpha"). The API is versioned `v1` in its path, but no compatibility
10
10
  > promise exists yet. Endpoints, fields and error codes can change between
11
11
  > commits. There is no OpenAPI document; these pages, the view models in
@@ -60,7 +60,7 @@ commitguard doctor --json
60
60
 
61
61
  ```json
62
62
  {
63
- "commitguard_version": "0.1.1",
63
+ "commitguard_version": "0.1.2",
64
64
  "status": "HEALTHY",
65
65
  "enforcement": "LOCAL ENFORCEMENT ONLY",
66
66
  "counts": {"PASS": 14, "INFO": 1, "NOT CONFIGURED": 2, "WARNING": 0, "FAIL": 0},
@@ -1,6 +1,6 @@
1
1
  # Deploying CommitGuard
2
2
 
3
- CommitGuard 0.1.1 is pre-alpha software. This section describes the ways it
3
+ CommitGuard 0.1.2 is pre-alpha software. This section describes the ways it
4
4
  can be deployed today, what each way protects against, and what it does not.
5
5
  Every mode runs the same detection engine and policy evaluator; they differ in
6
6
  where the check runs, who controls it, and whether it can prevent a merge.
@@ -25,7 +25,7 @@ and `commitguard-cli` on PyPI are unrelated projects.)
25
25
 
26
26
  ```bash
27
27
  pipx install commitguardian
28
- commitguard --version # commitguard 0.1.1
28
+ commitguard --version # commitguard 0.1.2
29
29
 
30
30
  # or pinned to an exact commit:
31
31
  pipx install "git+https://github.com/oyinlola-tech/commitguard@<commit-sha>"
@@ -1,6 +1,6 @@
1
1
  # Running the App service in production
2
2
 
3
- > Status: **Experimental.** CommitGuard is pre-alpha (0.1.1).
3
+ > Status: **Experimental.** CommitGuard is pre-alpha (0.1.2).
4
4
  > No external production deployments have been recorded yet.
5
5
  > The App service and organization governance have been validated only by this
6
6
  > repository's test suites, against an offline model of GitHub. There are no
@@ -30,7 +30,7 @@ repository. Uninstall it and install from source, pinned to a commit:
30
30
  ```bash
31
31
  python -m pip uninstall commitguard
32
32
  pipx install "git+https://github.com/oyinlola-tech/commitguard@<commit-sha>"
33
- commitguard --version # commitguard 0.1.1
33
+ commitguard --version # commitguard 0.1.2
34
34
  ```
35
35
 
36
36
  **`the GitHub App needs the optional dependencies: pip install 'commitguard[app]'`**
@@ -29,7 +29,7 @@ Artifacts are not signed, and no build provenance attestation is generated.
29
29
  | Runtime version (`commitguard --version`) | `src/commitguard/__init__.py`, `__version__` |
30
30
  | Dashboard package version | `web/package.json` (`"private": true`, not released separately; currently `0.1.0`, independent of the Python version) |
31
31
 
32
- Both Python locations must be changed together; today they both say `0.1.1`.
32
+ Both Python locations must be changed together; today they both say `0.1.2`.
33
33
  `tests/integration/git/test_cli_commands.py` checks that `commitguard --version`
34
34
  prints `__version__`; no test compares it with `pyproject.toml`, so check both by
35
35
  hand. The name in `pyproject.toml` is pinned by
@@ -7,7 +7,7 @@ build-backend = "hatchling.build"
7
7
  # "commitguard-cli", belong to two unrelated projects (see docs/adr/009). The
8
8
  # import package and the console script stay `commitguard`.
9
9
  name = "commitguardian"
10
- version = "0.1.1"
10
+ version = "0.1.2"
11
11
  description = "Block AI, bot and agent attribution in Git commits, locally and on GitHub."
12
12
  readme = "README.md"
13
13
  license = "MIT"
@@ -21,6 +21,6 @@ Package layout (dependency direction flows downwards only)::
21
21
  utils -> subprocess / filesystem / platform helpers
22
22
  """
23
23
 
24
- __version__ = "0.1.1"
24
+ __version__ = "0.1.2"
25
25
 
26
26
  __all__ = ["__version__"]
@@ -425,6 +425,12 @@ class Repository:
425
425
  raise MalformedGitOutputError("git hash-object returned no object id")
426
426
  return sha
427
427
 
428
+ def current_branch(self) -> str | None:
429
+ """``refs/heads/<name>`` that ``HEAD`` points at, or None when detached."""
430
+ result = self._git(["symbolic-ref", "--quiet", "HEAD"], check=False)
431
+ ref = result.stdout.decode("utf-8", errors="replace").strip()
432
+ return ref if result.ok and ref.startswith("refs/heads/") else None
433
+
428
434
  def not_on_any_remote(self, shas: Sequence[str]) -> set[str]:
429
435
  """The subset of ``shas`` not reachable from any remote-tracking branch.
430
436
 
@@ -228,6 +228,22 @@ def plan_push(
228
228
  return plans, list(ordered)
229
229
 
230
230
 
231
+ def _branch_ref(repository: Repository, update: PushUpdate) -> str:
232
+ """The local ref a push update really moves.
233
+
234
+ ``git push origin HEAD`` (and ``HEAD:main``) makes Git report the local ref
235
+ as plain ``HEAD``. It is the checked-out branch when ``HEAD`` points at one
236
+ whose tip is exactly the commit being pushed; otherwise it stays ``HEAD``,
237
+ which ``fix_on_push`` refuses to move (a detached ``HEAD`` is not a branch).
238
+ """
239
+ if update.local_ref != "HEAD":
240
+ return update.local_ref
241
+ branch = repository.current_branch()
242
+ if branch is not None and repository.ref_commit(branch) == update.local_oid:
243
+ return branch
244
+ return update.local_ref
245
+
246
+
231
247
  def run_pre_push(
232
248
  repository: Repository,
233
249
  remote: str,
@@ -256,7 +272,7 @@ def run_pre_push(
256
272
  analyzer,
257
273
  [
258
274
  BranchUpdate(
259
- local_ref=plan.update.local_ref,
275
+ local_ref=_branch_ref(repository, plan.update),
260
276
  local_oid=plan.update.local_oid,
261
277
  commits=plan.commits,
262
278
  )
@@ -556,3 +556,28 @@ def test_doctor_reports_that_fix_on_push_is_on(fixing_repo) -> None: # type: ig
556
556
  check=False,
557
557
  )
558
558
  assert "remediation.fix_on_push is on" in result.stdout
559
+
560
+
561
+ @pytest.mark.parametrize("refspec", ["main", "HEAD", "HEAD:main"])
562
+ def test_fix_on_push_works_for_every_way_of_naming_the_branch(fixing_repo, refspec: str) -> None: # type: ignore[no-untyped-def]
563
+ """`git push origin HEAD` makes Git report the local ref as plain `HEAD`.
564
+
565
+ That form was refused on 0.1.1 because `HEAD` is not `refs/heads/...`: found
566
+ by testing the released package on a real machine, not by the suite.
567
+ """
568
+ fixing_repo.commit(AI)
569
+ result = push(fixing_repo, refspec)
570
+ assert result.returncode != 0
571
+ assert "CLEANED 1 unpushed commit" in result.stderr, result.stderr
572
+ assert "Claude" not in messages(fixing_repo)
573
+
574
+
575
+ def test_fix_on_push_refuses_a_detached_head(fixing_repo) -> None: # type: ignore[no-untyped-def]
576
+ """A detached HEAD is not a branch, so there is nothing safe to move."""
577
+ bad = fixing_repo.commit(AI)
578
+ fixing_repo.git("checkout", "--quiet", "--detach", bad)
579
+ result = push(fixing_repo, "HEAD:refs/heads/main")
580
+ assert result.returncode != 0
581
+ assert "PUSH BLOCKED" in result.stderr
582
+ assert "CLEANED" not in result.stderr
583
+ assert fixing_repo.head() == bad
File without changes
File without changes