outerloop-science 0.1.0.dev2__tar.gz → 0.1.0.dev3__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 (180) hide show
  1. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/.pre-commit-config.yaml +2 -2
  2. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/CHANGELOG.md +1393 -1455
  3. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/PKG-INFO +4 -1
  4. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/README.md +3 -0
  5. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/RELEASING.md +11 -2
  6. outerloop_science-0.1.0.dev3/docs/community.md +54 -0
  7. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/contract.md +1 -0
  8. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/architecture.md +4 -4
  9. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/dispatcher.md +12 -11
  10. outerloop_science-0.1.0.dev3/docs/design/eval-cache.md +127 -0
  11. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/reviewer-infra.md +47 -0
  12. outerloop_science-0.1.0.dev3/docs/design/session-watcher.md +267 -0
  13. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/install.md +152 -23
  14. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/roadmap.md +16 -8
  15. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/pyproject.toml +2 -3
  16. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/README.md +1 -1
  17. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/tick_chain.sbatch +6 -5
  18. outerloop_science-0.1.0.dev3/scripts/tick_deploy.sh +239 -0
  19. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/__init__.py +2 -2
  20. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/attempt.py +310 -93
  21. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/brief.py +38 -25
  22. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/cli.py +40 -5
  23. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/climbboard.py +3 -0
  24. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/compute.py +148 -53
  25. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/contract.py +8 -0
  26. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/dispatch.py +63 -18
  27. outerloop_science-0.1.0.dev3/src/outerloop/evalcache.py +147 -0
  28. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/followup.py +38 -16
  29. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/github.py +38 -13
  30. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/harness.py +1 -18
  31. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/housekeeping.py +1 -17
  32. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/image.py +0 -4
  33. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/init.py +19 -1
  34. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/intake.py +4 -7
  35. outerloop_science-0.1.0.dev3/src/outerloop/launchlog.py +239 -0
  36. outerloop_science-0.1.0.dev3/src/outerloop/maintain.py +325 -0
  37. outerloop_science-0.1.0.dev3/src/outerloop/maintain_agent_cli.py +81 -0
  38. outerloop_science-0.1.0.dev3/src/outerloop/maintain_post_cli.py +140 -0
  39. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/measure.py +6 -0
  40. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/orchestrator.py +141 -31
  41. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/panel.py +3 -3
  42. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/review.py +4 -0
  43. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/review_agent.py +7 -7
  44. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/review_agent_cli.py +2 -2
  45. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/review_post_cli.py +2 -2
  46. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/review_summarize_cli.py +7 -5
  47. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/roles.py +27 -0
  48. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/rolespec.py +3 -1
  49. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/steward.py +5 -5
  50. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/syscall.py +261 -47
  51. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/syscall_cli.py +243 -12
  52. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/tick.py +90 -178
  53. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/verify_agent.py +8 -6
  54. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/verify_post_cli.py +2 -2
  55. outerloop_science-0.1.0.dev3/src/outerloop/watcher.py +203 -0
  56. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/conftest.py +11 -0
  57. outerloop_science-0.1.0.dev3/tests/fakes.py +40 -0
  58. outerloop_science-0.1.0.dev3/tests/helpers.py +21 -0
  59. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_attempt.py +174 -18
  60. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_bot_login.py +4 -4
  61. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_compute.py +56 -17
  62. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_dispatch.py +73 -0
  63. outerloop_science-0.1.0.dev3/tests/test_evalcache.py +92 -0
  64. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_followup.py +4 -5
  65. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_github.py +21 -0
  66. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_harness.py +8 -9
  67. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_housekeeping.py +0 -4
  68. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_init.py +24 -0
  69. outerloop_science-0.1.0.dev3/tests/test_launchlog.py +154 -0
  70. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_local_compute.py +34 -9
  71. outerloop_science-0.1.0.dev3/tests/test_maintain.py +432 -0
  72. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_orchestrator.py +221 -13
  73. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_review_summarize.py +2 -2
  74. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_start.py +73 -0
  75. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_sweep_git_locks.py +23 -5
  76. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_syscall.py +269 -6
  77. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_syscall_cli.py +239 -3
  78. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_tick.py +115 -163
  79. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_tick_resident.py +201 -0
  80. outerloop_science-0.1.0.dev3/tests/test_watcher.py +267 -0
  81. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/uv.lock +311 -240
  82. outerloop_science-0.1.0.dev2/scripts/tick_deploy.sh +0 -152
  83. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/.gitignore +0 -0
  84. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/.python-version +0 -0
  85. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/CLAUDE.md +0 -0
  86. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/CONTRIBUTING.md +0 -0
  87. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/LICENSE +0 -0
  88. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/NOTICE +0 -0
  89. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/SECURITY.md +0 -0
  90. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/containers/README.md +0 -0
  91. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/containers/agent-py312.def +0 -0
  92. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/assets/icon-dark.svg +0 -0
  93. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/assets/icon-light.svg +0 -0
  94. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/assets/icon.svg +0 -0
  95. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/compute.md +0 -0
  96. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/agent-substrate.md +0 -0
  97. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/consolidation.md +0 -0
  98. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/external.md +0 -0
  99. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/github-app-auth.md +0 -0
  100. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/headline.md +0 -0
  101. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/judge-placement.md +0 -0
  102. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/meta.md +0 -0
  103. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/onboarding.md +0 -0
  104. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/orchestrator-verify.md +0 -0
  105. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/public-surface.md +0 -0
  106. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/research-lines.md +0 -0
  107. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/research-loop-buildout.md +0 -0
  108. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/research-loop.md +0 -0
  109. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/resident-tick.md +0 -0
  110. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/review-placement.md +0 -0
  111. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/role-cli.md +0 -0
  112. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/roles.md +0 -0
  113. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/design/scaling.md +0 -0
  114. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/reviewer.md +0 -0
  115. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/docs/validation/author-syscalls.md +0 -0
  116. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/examples/review.yml +0 -0
  117. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/install_codex.sh +0 -0
  118. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/install_hermes.sh +0 -0
  119. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/requeue_moved_successors.sh +0 -0
  120. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/setup_branch_protection.sh +0 -0
  121. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/sweep_git_locks.sh +0 -0
  122. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/scripts/tick_resident.sh +0 -0
  123. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/__main__.py +0 -0
  124. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/appauth.py +0 -0
  125. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/appmanifest.py +0 -0
  126. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/contract_cli.py +0 -0
  127. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/disk.py +0 -0
  128. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/limits.py +0 -0
  129. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/markers.py +0 -0
  130. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/paths.py +0 -0
  131. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/posting.py +0 -0
  132. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/progress.py +0 -0
  133. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/py.typed +0 -0
  134. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/role_runner.py +0 -0
  135. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/runstate.py +0 -0
  136. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/style.py +0 -0
  137. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/verifier.py +0 -0
  138. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/src/outerloop/verify_agent_cli.py +0 -0
  139. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_appauth.py +0 -0
  140. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_appmanifest.py +0 -0
  141. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_bot_aliases.py +0 -0
  142. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_brief.py +0 -0
  143. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_channel_dir.py +0 -0
  144. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_climbboard.py +0 -0
  145. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_codex_harness.py +0 -0
  146. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_contract.py +0 -0
  147. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_contract_cli.py +0 -0
  148. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_contract_names.py +0 -0
  149. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_disk.py +0 -0
  150. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_env_bridge.py +0 -0
  151. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_hardening.py +0 -0
  152. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_hermes_harness.py +0 -0
  153. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_image.py +0 -0
  154. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_import.py +0 -0
  155. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_intake.py +0 -0
  156. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_limits.py +0 -0
  157. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_markers.py +0 -0
  158. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_measure.py +0 -0
  159. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_measure_and_decide.py +0 -0
  160. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_packaging.py +0 -0
  161. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_panel.py +0 -0
  162. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_paths.py +0 -0
  163. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_posting.py +0 -0
  164. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_progress.py +0 -0
  165. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_requeue_moved_successors.py +0 -0
  166. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_review.py +0 -0
  167. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_review_agent.py +0 -0
  168. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_review_agent_cli.py +0 -0
  169. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_review_hardening.py +0 -0
  170. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_review_policy.py +0 -0
  171. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_role_runner.py +0 -0
  172. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_rolespec.py +0 -0
  173. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_runstate.py +0 -0
  174. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_steward.py +0 -0
  175. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_tick_chain_successors.py +0 -0
  176. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_tiers.py +0 -0
  177. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_verifier.py +0 -0
  178. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_verify_agent.py +0 -0
  179. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_verify_agent_cli.py +0 -0
  180. {outerloop_science-0.1.0.dev2 → outerloop_science-0.1.0.dev3}/tests/test_version.py +0 -0
@@ -11,13 +11,13 @@ repos:
11
11
  - id: check-toml
12
12
 
13
13
  - repo: https://github.com/astral-sh/ruff-pre-commit
14
- rev: v0.16.1
14
+ rev: v0.16.6
15
15
  hooks:
16
16
  - id: ruff-check
17
17
  args: [--fix]
18
18
  - id: ruff-format
19
19
 
20
20
  - repo: https://github.com/gitleaks/gitleaks
21
- rev: v8.24.3
21
+ rev: v8.30.1
22
22
  hooks:
23
23
  - id: gitleaks