code-mower 0.5.0b51__tar.gz → 0.5.0b53__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 (341) hide show
  1. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/MANIFEST.in +2 -0
  2. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/PKG-INFO +56 -48
  3. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/README.md +55 -47
  4. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/pyproject.toml +2 -1
  5. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/__init__.py +1 -1
  6. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/audit_labeler_lib.py +222 -17
  7. code_mower-0.5.0b53/src/code_mower/audit_limits.py +141 -0
  8. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/claude_audit_pr.py +386 -86
  9. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cli.py +4 -1
  10. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_pr.py +640 -76
  11. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/config.py +270 -3
  12. code_mower-0.5.0b53/src/code_mower/decisions.py +717 -0
  13. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor.py +12 -0
  14. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/__init__.py +18 -0
  15. code_mower-0.5.0b53/src/code_mower/doctor_checks/audit_limits.py +186 -0
  16. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github.py +10 -0
  17. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_branch.py +17 -5
  18. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_human_token.py +10 -7
  19. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_repo.py +2 -2
  20. code_mower-0.5.0b53/src/code_mower/doctor_checks/provider_local_audit_setup.py +162 -0
  21. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/providers.py +8 -0
  22. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/registry.py +13 -2
  23. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/runner.py +27 -1
  24. code_mower-0.5.0b53/src/code_mower/doctor_checks/self_hosted_runner.py +964 -0
  25. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/init.py +1167 -77
  26. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/claude.py +1 -0
  27. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/codex.py +1 -0
  28. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_mirror.py +1 -0
  29. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package.py +5 -0
  30. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_content.py +24 -1
  31. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_manifest.py +31 -0
  32. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/__init__.py +9 -1
  33. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/github_pr.py +31 -1
  34. code_mower-0.5.0b53/src/code_mower/provider_runners/repo_paths.py +87 -0
  35. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/release_readiness.py +5 -2
  36. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/code-mower.example.yml +28 -5
  37. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/base-audit.md +10 -0
  38. code_mower-0.5.0b53/src/code_mower/templates/lanes/README.md +39 -0
  39. code_mower-0.5.0b53/src/code_mower/templates/lanes/claude.md +22 -0
  40. code_mower-0.5.0b53/src/code_mower/templates/lanes/codex.md +22 -0
  41. code_mower-0.5.0b53/src/code_mower/templates/lanes/cursor.md +22 -0
  42. code_mower-0.5.0b53/src/code_mower/templates/lanes/generic.md +20 -0
  43. code_mower-0.5.0b53/src/code_mower/templates/lanes/run_mac_lane.sh +529 -0
  44. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
  45. {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +81 -27
  46. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +8 -6
  47. {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/code-mower-gate-health.yml.j2 +6 -7
  48. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +44 -17
  49. code_mower-0.5.0b53/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +550 -0
  50. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +1 -1
  51. code_mower-0.5.0b53/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +125 -0
  52. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +5 -5
  53. {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/saas-reviewer-labeler.yml.j2 +1 -2
  54. {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/self-hosted-local-audit.yml.j2 +6 -0
  55. {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/trailer-comment-labeler.yml.j2 +2 -2
  56. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/weekly-status.yml.j2 +9 -9
  57. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/trailer_comment_labeler.py +40 -3
  58. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/versioning.py +24 -0
  59. code_mower-0.5.0b53/src/code_mower/workflow_actionlint.py +231 -0
  60. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/PKG-INFO +56 -48
  61. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/SOURCES.txt +29 -0
  62. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/code-mower.yml.j2 +6 -0
  63. code_mower-0.5.0b53/templates/lanes/README.md +39 -0
  64. code_mower-0.5.0b53/templates/lanes/claude.md +22 -0
  65. code_mower-0.5.0b53/templates/lanes/codex.md +22 -0
  66. code_mower-0.5.0b53/templates/lanes/cursor.md +22 -0
  67. code_mower-0.5.0b53/templates/lanes/generic.md +20 -0
  68. code_mower-0.5.0b53/templates/lanes/run_mac_lane.sh +529 -0
  69. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/builder-provenance.yml.j2 +1 -1
  70. {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +81 -27
  71. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +8 -6
  72. {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/code-mower-gate-health.yml.j2 +6 -7
  73. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/code-mower-gate.yml.j2 +44 -17
  74. code_mower-0.5.0b53/templates/workflows/dispatch-lanes.yml.j2 +550 -0
  75. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/hosted-bridge.yml.j2 +1 -1
  76. code_mower-0.5.0b53/templates/workflows/lane-mac-runner.yml.j2 +125 -0
  77. {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/saas-reviewer-labeler.yml.j2 +1 -2
  78. {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/self-hosted-local-audit.yml.j2 +6 -0
  79. {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/trailer-comment-labeler.yml.j2 +2 -2
  80. code_mower-0.5.0b53/tests/test_audit_limits.py +71 -0
  81. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_builder_identity.py +47 -2
  82. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_claude_audit_pr.py +339 -0
  83. code_mower-0.5.0b53/tests/test_codex_audit_pr.py +715 -0
  84. code_mower-0.5.0b53/tests/test_decision_audit_integration.py +218 -0
  85. code_mower-0.5.0b53/tests/test_decisions.py +478 -0
  86. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_github_checks.py +95 -4
  87. code_mower-0.5.0b53/tests/test_doctor_provider_local_audit_setup.py +90 -0
  88. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_registry.py +35 -0
  89. code_mower-0.5.0b53/tests/test_doctor_self_hosted_runner.py +302 -0
  90. code_mower-0.5.0b53/tests/test_init_actionlint.py +134 -0
  91. code_mower-0.5.0b53/tests/test_init_build_loop.py +1730 -0
  92. code_mower-0.5.0b53/tests/test_plan_context.py +448 -0
  93. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_prompts.py +3 -0
  94. code_mower-0.5.0b53/tests/test_provider_runners_github_pr.py +166 -0
  95. code_mower-0.5.0b53/tests/test_provider_runners_repo_paths.py +59 -0
  96. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_release_hygiene.py +1175 -72
  97. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_trailer_comment_labeler.py +133 -1
  98. code_mower-0.5.0b51/src/code_mower/provider_runners/repo_paths.py +0 -23
  99. code_mower-0.5.0b51/tests/test_codex_audit_pr.py +0 -243
  100. code_mower-0.5.0b51/tests/test_plan_context.py +0 -241
  101. code_mower-0.5.0b51/tests/test_provider_runners_github_pr.py +0 -65
  102. code_mower-0.5.0b51/tests/test_provider_runners_repo_paths.py +0 -26
  103. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/CODE_OF_CONDUCT.md +0 -0
  104. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/LICENSE +0 -0
  105. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/NOTICE +0 -0
  106. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/SUPPORT.md +0 -0
  107. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/requirements/requirements.txt +0 -0
  108. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/setup.cfg +0 -0
  109. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/__init__.py +0 -0
  110. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/_base.py +0 -0
  111. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  112. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/gitar.py +0 -0
  113. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/greptile.py +0 -0
  114. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/qodo.py +0 -0
  115. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  116. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/audit_handoff_log.py +0 -0
  117. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/audit_progress.py +0 -0
  118. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/blind_review_artifacts.py +0 -0
  119. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/blind_review_coordinator.py +0 -0
  120. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/bootstrap.py +0 -0
  121. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/builder_experiment.py +0 -0
  122. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/builder_runs.py +0 -0
  123. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/__init__.py +0 -0
  124. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/arms.py +0 -0
  125. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/auto_discovery.py +0 -0
  126. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/commands.py +0 -0
  127. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/context_inputs.py +0 -0
  128. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/corpus.py +0 -0
  129. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/effect_report.py +0 -0
  130. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/evidence.py +0 -0
  131. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/evidence_report.py +0 -0
  132. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/identity.py +0 -0
  133. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/metrics.py +0 -0
  134. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/overlap.py +0 -0
  135. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/planning.py +0 -0
  136. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/policy.py +0 -0
  137. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/results.py +0 -0
  138. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/run_results.py +0 -0
  139. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/run_status.py +0 -0
  140. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/runner.py +0 -0
  141. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/truth.py +0 -0
  142. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/value_report.py +0 -0
  143. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/checks.py +0 -0
  144. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/claude_cli_bounce.py +0 -0
  145. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/claude_cli_environment.py +0 -0
  146. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/clear_stale.py +0 -0
  147. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud.py +0 -0
  148. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/__init__.py +0 -0
  149. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/bundle.py +0 -0
  150. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/doctor.py +0 -0
  151. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/dogfood.py +0 -0
  152. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/endpoints.py +0 -0
  153. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/errors.py +0 -0
  154. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/events.py +0 -0
  155. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/export.py +0 -0
  156. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/git_metadata.py +0 -0
  157. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/manifest.py +0 -0
  158. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/operations.py +0 -0
  159. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/reports.py +0 -0
  160. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/setup.py +0 -0
  161. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/upload.py +0 -0
  162. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_calibration.py +0 -0
  163. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_context_packs.py +0 -0
  164. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_merge.py +0 -0
  165. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_telemetry.py +0 -0
  166. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  167. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_env_preflight.py +0 -0
  168. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  169. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  170. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/cloud.py +0 -0
  171. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/common.py +0 -0
  172. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions.py +0 -0
  173. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  174. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  175. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  176. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  177. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  178. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  179. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  180. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  181. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_api.py +0 -0
  182. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_config.py +0 -0
  183. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_provider.py +0 -0
  184. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/groups.py +0 -0
  185. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/models.py +0 -0
  186. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/output.py +0 -0
  187. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/presets.py +0 -0
  188. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/privacy.py +0 -0
  189. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  190. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  191. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  192. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_env.py +0 -0
  193. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  194. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  195. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  196. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
  197. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  198. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  199. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  200. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  201. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  202. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  203. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  204. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/runtime.py +0 -0
  205. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  206. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/gate_health.py +0 -0
  207. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  208. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/grok_build_audit_pr.py +0 -0
  209. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  210. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/__init__.py +0 -0
  211. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/aider.py +0 -0
  212. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  213. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/devin.py +0 -0
  214. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  215. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/grok_build.py +0 -0
  216. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  217. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/local_llm.py +0 -0
  218. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_audit_pr.py +0 -0
  219. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_bakeoff.py +0 -0
  220. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_calibration.py +0 -0
  221. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_profiles.py +0 -0
  222. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration.py +0 -0
  223. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_install.py +0 -0
  224. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_readiness.py +0 -0
  225. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_rehearsal.py +0 -0
  226. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/next_steps.py +0 -0
  227. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_paths.py +0 -0
  228. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_rendering.py +0 -0
  229. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_static.py +0 -0
  230. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/plan_context.py +0 -0
  231. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/prompts.py +0 -0
  232. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_registry.py +0 -0
  233. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/comments.py +0 -0
  234. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/git.py +0 -0
  235. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/github_auth.py +0 -0
  236. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  237. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/process.py +0 -0
  238. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/text_schema.py +0 -0
  239. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  240. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/workspace.py +0 -0
  241. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/providers/__init__.py +0 -0
  242. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/providers/local_cli.py +0 -0
  243. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/providers/provenance.py +0 -0
  244. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/reviewer_metrics.py +0 -0
  245. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/reviewer_spend.py +0 -0
  246. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/saas_reviewer_labeler.py +0 -0
  247. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/secrets.py +0 -0
  248. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/builder-experiment.example.json +0 -0
  249. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  250. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/calibration-corpus.json +0 -0
  251. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/context-packs.example.json +0 -0
  252. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  253. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  254. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  255. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  256. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  257. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  258. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
  259. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  260. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/code_mower +0 -0
  261. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  262. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  263. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  264. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  265. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  266. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/status_report.py +0 -0
  267. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/providers.yml +0 -0
  268. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  269. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  270. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  271. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  272. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  273. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  274. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/work_orders.py +0 -0
  275. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/dependency_links.txt +0 -0
  276. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/entry_points.txt +0 -0
  277. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/requires.txt +0 -0
  278. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/top_level.txt +0 -0
  279. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/builder-experiment.example.json +0 -0
  280. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/calibration-corpus.example.json +0 -0
  281. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/calibration-corpus.json +0 -0
  282. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/context-packs.example.json +0 -0
  283. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/cursor/BUGBOT.md +0 -0
  284. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/acp_bridge.yml +0 -0
  285. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/aider.yml +0 -0
  286. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/antigravity_cli.yml +0 -0
  287. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/claude_audit.yml +0 -0
  288. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/claude_review.yml +0 -0
  289. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/coderabbit_cli.yml +0 -0
  290. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/codex.yml +0 -0
  291. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/cursor_bugbot.yml +0 -0
  292. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/devin.yml +0 -0
  293. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/gemini_cli.yml +0 -0
  294. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/gitar.yml +0 -0
  295. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/greptile.yml +0 -0
  296. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/hermes_cli.yml +0 -0
  297. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/local_llm.yml +0 -0
  298. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/qodo.yml +0 -0
  299. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers.yml +0 -0
  300. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/reviewer-spend.example.json +0 -0
  301. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/reviewer-value-report.example.md +0 -0
  302. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  303. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  304. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  305. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  306. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  307. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_audit_comment_posture.py +0 -0
  308. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_builder_runs.py +0 -0
  309. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_calibration_effect_report.py +0 -0
  310. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_calibration_truth.py +0 -0
  311. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_checks.py +0 -0
  312. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_claude_cli_bounce.py +0 -0
  313. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_clear_stale.py +0 -0
  314. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_client.py +0 -0
  315. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_git_metadata.py +0 -0
  316. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_manifest.py +0 -0
  317. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_reports.py +0 -0
  318. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  319. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_codex_audit_env_preflight.py +0 -0
  320. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_actions_cost_summary.py +0 -0
  321. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_actions_failure_selection.py +0 -0
  322. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_boundaries.py +0 -0
  323. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_output.py +0 -0
  324. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_privacy.py +0 -0
  325. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_env_required.py +0 -0
  326. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_env_tokens.py +0 -0
  327. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_probe.py +0 -0
  328. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_review_hygiene.py +0 -0
  329. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_runtime.py +0 -0
  330. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_gate_health.py +0 -0
  331. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_local_llm_github_helpers.py +0 -0
  332. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_local_cli.py +0 -0
  333. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_comments.py +0 -0
  334. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_git.py +0 -0
  335. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_pr_worktree.py +0 -0
  336. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_process.py +0 -0
  337. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_text_schema.py +0 -0
  338. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_workspace.py +0 -0
  339. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_reviewer_metrics_core.py +0 -0
  340. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_reviewer_spend.py +0 -0
  341. {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_work_orders.py +0 -0
@@ -1,9 +1,11 @@
1
1
  recursive-include src/code_mower/templates *.yml *.yaml *.json
2
2
  recursive-include src/code_mower/templates *.md
3
3
  recursive-include src/code_mower/templates *.j2
4
+ recursive-include src/code_mower/templates/lanes *
4
5
  recursive-include src/code_mower/templates/product-support *
5
6
  include src/code_mower/*.json
6
7
  recursive-include templates *.j2 *.json *.md *.yml *.yaml
8
+ recursive-include templates/lanes *
7
9
  include requirements/*.txt
8
10
  include LICENSE
9
11
  include NOTICE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 0.5.0b51
3
+ Version: 0.5.0b53
4
4
  Summary: Multi-reviewer AI code audit orchestration
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.11
@@ -19,6 +19,9 @@ Code Mower helps teams set up AI peer-programmer and reviewer lanes on real
19
19
  GitHub pull requests, then measure which builders and reviewers are useful on
20
20
  their actual codebase.
21
21
 
22
+ Code Mower is beta, bring-your-own-agent-loop software for teams willing to
23
+ calibrate reviewers. It is not a drop-in autonomous merge gate.
24
+
22
25
  The short version:
23
26
 
24
27
  - create safe, manual-first reviewer lanes for Codex, Claude, Gitar, and other
@@ -97,46 +100,26 @@ known-blocked control, and three reviewer lanes. It shows the decision Code
97
100
  Mower is built to support: which AI reviewers are useful, noisy, expensive,
98
101
  fast, or eligible for stronger merge policy on your actual codebase.
99
102
 
100
- ## Try It First
101
-
102
- Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
103
-
104
- ```bash
105
- python3.12 --version
106
- pipx install --python python3.12 code-mower==0.5.0b51
107
- code-mower --version
108
- ```
109
-
110
- `0.5.0b51` is a beta release. Until Code Mower publishes a stable `1.0`
111
- line, use the explicit beta version above or allow prereleases with:
103
+ ## Start Here
112
104
 
113
- ```bash
114
- pipx install --python python3.12 --pip-args="--pre" code-mower
115
- ```
105
+ Choose one path. Each path has one guide and gets to one visible outcome.
116
106
 
117
- From the repository you want to pilot:
118
-
119
- ```bash
120
- code-mower init --easy
121
- code-mower doctor --preflight
122
- code-mower checks detect --json
123
- ```
107
+ | Path | Use When | Route | Guide |
108
+ | --- | --- | --- | --- |
109
+ | A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --preflight`, open a small setup PR, run Codex and Claude audits, then merge manually when the audit evidence is clean. | [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md) |
110
+ | B. Build loop in 30 minutes | You want builders plus an orchestrator pattern after the reviewer gate works. | Complete path A, then add the automation token, require `code-mower/gate` from Any source, enable repository auto-merge, prove the self-hosted Mac lane runner with `doctor --runner`, run `init --builders`, and dispatch the first issue. | [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md) |
124
111
 
125
- In Git worktrees, `checks detect` also offers `code-mower.pr-size`, a local
126
- PR-size lint that defaults to 300 changed lines and flags large batches of
127
- near-identical files.
112
+ The beta.53 announcement entry point is the tagged
113
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.5.0-beta.53/docs/try-in-10-minutes.md)
114
+ guide.
128
115
 
129
- When those look sane, write the generated setup to a reviewable folder and
130
- produce the starter local report:
116
+ ## What Calibration Does And Does Not Prove
131
117
 
132
- ```bash
133
- code-mower init --easy --apply --output-dir .code-mower.generated
134
- code-mower calibration value-report .code-mower.generated/calibration-corpus.json \
135
- --output .code-mower/reviewer-value-report.md
136
- ```
118
+ The generated starter corpus proves that the commands run and the report path
119
+ works. It does not prove that a reviewer should gate merges. Promote reviewer
120
+ lanes only after repository-specific known-clean and known-blocked evidence
121
+ meets the [lane promotion policy](docs/lane-promotion-policy.md).
137
122
 
138
- The generated setup also includes the configurable owner escalation and weekly
139
- status digest templates. The generated starter corpus proves the command path.
140
123
  To bootstrap a draft from your repository history:
141
124
 
142
125
  ```bash
@@ -153,9 +136,12 @@ every disposition before using it for lane promotion or merge policy.
153
136
  Full walkthrough: [docs/try-in-10-minutes.md](docs/try-in-10-minutes.md).
154
137
  First-time command map: [docs/launch-command-surface.md](docs/launch-command-surface.md).
155
138
 
156
- The current PyPI beta has been rehearsed end-to-end from a clean install:
139
+ The beta.53 package-index release is prepared:
157
140
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
158
- the latest 10/10 public-package readiness proof for `code-mower==0.5.0b51`.
141
+ the release procedure. It is to be published and rehearsed as part of the
142
+ `v0.5.0-beta.53` release execution, with evidence recorded on the release after
143
+ the workflow runs complete. The latest completed public-package rehearsal
144
+ remains beta.52: 10/10 first-user readiness for `code-mower==0.5.0b52`.
159
145
 
160
146
  ## Optional: Plan Before Coding
161
147
 
@@ -205,6 +191,15 @@ That lets CodeMower.com show `issue -> plan -> work order -> builder run -> PR
205
191
  transcripts, prompts, or issue body text. See
206
192
  [docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
207
193
 
194
+ ## Roles
195
+
196
+ Code Mower records builder provenance for Claude Code, Codex, Cursor-style
197
+ hosted builders, and similar authoring lanes, then runs reviewer lanes against
198
+ the resulting pull requests. The orchestrator is a workflow convention: issue,
199
+ optional work order, single-writer branch, reviewer lanes, and fix rounds. Code
200
+ Mower's templates now support that loop end to end; humans still own
201
+ credentials, branch protection, calibration, and owner decisions.
202
+
208
203
  ## Why Not Just Run Codex Or Claude Yourself?
209
204
 
210
205
  You should, at first. Code Mower is not a replacement for a good local agent or
@@ -301,18 +296,20 @@ engineer can:
301
296
  7. optionally upload sanitized metadata to CodeMower.com and see useful team
302
297
  dashboard signal.
303
298
 
304
- Future builder/orchestrator experiments extend the same loop from "who reviews
305
- best?" to "which AI builder plus reviewer loop ships best on this product?" See
299
+ Build-loop templates extend the same loop from "who reviews best?" to "which AI
300
+ builder plus reviewer loop ships best on this product?" Start with
301
+ [docs/build-loop-in-30-minutes.md](docs/build-loop-in-30-minutes.md), then use
306
302
  [docs/builder-experiments.md](docs/builder-experiments.md) and
307
- [docs/authoring-intelligence.md](docs/authoring-intelligence.md). For hosted
308
- builder provenance, start with
309
- [docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
303
+ [docs/authoring-intelligence.md](docs/authoring-intelligence.md) for deeper
304
+ measurement work.
310
305
 
311
306
  ## Installation Status
312
307
 
313
- The current public beta is `v0.5.0-beta.51` from
314
- [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
315
- as `code-mower==0.5.0b51` on [PyPI](https://pypi.org/project/code-mower/).
308
+ The prepared public beta is `v0.5.0-beta.53` from
309
+ [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower). It is to
310
+ be published and rehearsed as part of the `v0.5.0-beta.53` release execution,
311
+ with evidence recorded on the release after the workflow runs complete. The
312
+ pinned package-index install spec is `code-mower==0.5.0b53`.
316
313
  GitHub releases remain the auditable source for tags, build artifacts, and
317
314
  release notes.
318
315
 
@@ -349,7 +346,19 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
349
346
  ## Docs Map
350
347
 
351
348
  - [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
352
- - [Quickstart](docs/quickstart.md)
349
+ - [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
350
+ - [Quickstart Reference](docs/quickstart.md)
351
+ - [Planning And Work Orders](docs/planning-work-orders.md)
352
+ - [Builder Providers: Grok And Cursor](docs/builders-grok-cursor.md)
353
+ - [Build Loop Operations](docs/build-loop.md)
354
+ - [Self-Hosted Mac Runner](docs/self-hosted-mac-runner.md)
355
+ - [Local Audit Runner](docs/local-audit-runner.md)
356
+ - [Lane Standing Instructions](docs/lanes/README.md)
357
+ - [Codex Lane Standing Instructions](docs/lanes/codex.md)
358
+ - [Claude Lane Standing Instructions](docs/lanes/claude.md)
359
+ - [Cursor Hosted Lane Standing Instructions](docs/lanes/cursor.md)
360
+ - [Provider Matrix](docs/provider-matrix.md)
361
+ - [GitHub Setup](docs/github-setup.md)
353
362
  - [First Run Transcript](docs/first-run-transcript.md)
354
363
  - [First-User Demo Transcript](docs/first-user-demo-transcript.md)
355
364
  - [First-User Install Rehearsal](docs/first-user-install-rehearsal.md)
@@ -358,8 +367,7 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
358
367
  - [PyPI Release Runbook](docs/pypi-release.md)
359
368
  - [Sample Doctor Output](docs/sample-doctor-output.md)
360
369
  - [Architecture](docs/architecture.md)
361
- - [Provider Matrix](docs/provider-matrix.md)
362
- - [GitHub Setup](docs/github-setup.md)
370
+ - [Lane Promotion Policy](docs/lane-promotion-policy.md)
363
371
  - [Cloud Sharing](docs/cloud-sharing.md)
364
372
  - [Cloud Data Contract](docs/cloud-data-contract.md)
365
373
  - [Privacy And Threat Model](docs/privacy-threat-model.md)
@@ -4,6 +4,9 @@ Code Mower helps teams set up AI peer-programmer and reviewer lanes on real
4
4
  GitHub pull requests, then measure which builders and reviewers are useful on
5
5
  their actual codebase.
6
6
 
7
+ Code Mower is beta, bring-your-own-agent-loop software for teams willing to
8
+ calibrate reviewers. It is not a drop-in autonomous merge gate.
9
+
7
10
  The short version:
8
11
 
9
12
  - create safe, manual-first reviewer lanes for Codex, Claude, Gitar, and other
@@ -82,46 +85,26 @@ known-blocked control, and three reviewer lanes. It shows the decision Code
82
85
  Mower is built to support: which AI reviewers are useful, noisy, expensive,
83
86
  fast, or eligible for stronger merge policy on your actual codebase.
84
87
 
85
- ## Try It First
86
-
87
- Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
88
-
89
- ```bash
90
- python3.12 --version
91
- pipx install --python python3.12 code-mower==0.5.0b51
92
- code-mower --version
93
- ```
94
-
95
- `0.5.0b51` is a beta release. Until Code Mower publishes a stable `1.0`
96
- line, use the explicit beta version above or allow prereleases with:
88
+ ## Start Here
97
89
 
98
- ```bash
99
- pipx install --python python3.12 --pip-args="--pre" code-mower
100
- ```
90
+ Choose one path. Each path has one guide and gets to one visible outcome.
101
91
 
102
- From the repository you want to pilot:
103
-
104
- ```bash
105
- code-mower init --easy
106
- code-mower doctor --preflight
107
- code-mower checks detect --json
108
- ```
92
+ | Path | Use When | Route | Guide |
93
+ | --- | --- | --- | --- |
94
+ | A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --preflight`, open a small setup PR, run Codex and Claude audits, then merge manually when the audit evidence is clean. | [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md) |
95
+ | B. Build loop in 30 minutes | You want builders plus an orchestrator pattern after the reviewer gate works. | Complete path A, then add the automation token, require `code-mower/gate` from Any source, enable repository auto-merge, prove the self-hosted Mac lane runner with `doctor --runner`, run `init --builders`, and dispatch the first issue. | [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md) |
109
96
 
110
- In Git worktrees, `checks detect` also offers `code-mower.pr-size`, a local
111
- PR-size lint that defaults to 300 changed lines and flags large batches of
112
- near-identical files.
97
+ The beta.53 announcement entry point is the tagged
98
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.5.0-beta.53/docs/try-in-10-minutes.md)
99
+ guide.
113
100
 
114
- When those look sane, write the generated setup to a reviewable folder and
115
- produce the starter local report:
101
+ ## What Calibration Does And Does Not Prove
116
102
 
117
- ```bash
118
- code-mower init --easy --apply --output-dir .code-mower.generated
119
- code-mower calibration value-report .code-mower.generated/calibration-corpus.json \
120
- --output .code-mower/reviewer-value-report.md
121
- ```
103
+ The generated starter corpus proves that the commands run and the report path
104
+ works. It does not prove that a reviewer should gate merges. Promote reviewer
105
+ lanes only after repository-specific known-clean and known-blocked evidence
106
+ meets the [lane promotion policy](docs/lane-promotion-policy.md).
122
107
 
123
- The generated setup also includes the configurable owner escalation and weekly
124
- status digest templates. The generated starter corpus proves the command path.
125
108
  To bootstrap a draft from your repository history:
126
109
 
127
110
  ```bash
@@ -138,9 +121,12 @@ every disposition before using it for lane promotion or merge policy.
138
121
  Full walkthrough: [docs/try-in-10-minutes.md](docs/try-in-10-minutes.md).
139
122
  First-time command map: [docs/launch-command-surface.md](docs/launch-command-surface.md).
140
123
 
141
- The current PyPI beta has been rehearsed end-to-end from a clean install:
124
+ The beta.53 package-index release is prepared:
142
125
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
143
- the latest 10/10 public-package readiness proof for `code-mower==0.5.0b51`.
126
+ the release procedure. It is to be published and rehearsed as part of the
127
+ `v0.5.0-beta.53` release execution, with evidence recorded on the release after
128
+ the workflow runs complete. The latest completed public-package rehearsal
129
+ remains beta.52: 10/10 first-user readiness for `code-mower==0.5.0b52`.
144
130
 
145
131
  ## Optional: Plan Before Coding
146
132
 
@@ -190,6 +176,15 @@ That lets CodeMower.com show `issue -> plan -> work order -> builder run -> PR
190
176
  transcripts, prompts, or issue body text. See
191
177
  [docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
192
178
 
179
+ ## Roles
180
+
181
+ Code Mower records builder provenance for Claude Code, Codex, Cursor-style
182
+ hosted builders, and similar authoring lanes, then runs reviewer lanes against
183
+ the resulting pull requests. The orchestrator is a workflow convention: issue,
184
+ optional work order, single-writer branch, reviewer lanes, and fix rounds. Code
185
+ Mower's templates now support that loop end to end; humans still own
186
+ credentials, branch protection, calibration, and owner decisions.
187
+
193
188
  ## Why Not Just Run Codex Or Claude Yourself?
194
189
 
195
190
  You should, at first. Code Mower is not a replacement for a good local agent or
@@ -286,18 +281,20 @@ engineer can:
286
281
  7. optionally upload sanitized metadata to CodeMower.com and see useful team
287
282
  dashboard signal.
288
283
 
289
- Future builder/orchestrator experiments extend the same loop from "who reviews
290
- best?" to "which AI builder plus reviewer loop ships best on this product?" See
284
+ Build-loop templates extend the same loop from "who reviews best?" to "which AI
285
+ builder plus reviewer loop ships best on this product?" Start with
286
+ [docs/build-loop-in-30-minutes.md](docs/build-loop-in-30-minutes.md), then use
291
287
  [docs/builder-experiments.md](docs/builder-experiments.md) and
292
- [docs/authoring-intelligence.md](docs/authoring-intelligence.md). For hosted
293
- builder provenance, start with
294
- [docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
288
+ [docs/authoring-intelligence.md](docs/authoring-intelligence.md) for deeper
289
+ measurement work.
295
290
 
296
291
  ## Installation Status
297
292
 
298
- The current public beta is `v0.5.0-beta.51` from
299
- [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
300
- as `code-mower==0.5.0b51` on [PyPI](https://pypi.org/project/code-mower/).
293
+ The prepared public beta is `v0.5.0-beta.53` from
294
+ [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower). It is to
295
+ be published and rehearsed as part of the `v0.5.0-beta.53` release execution,
296
+ with evidence recorded on the release after the workflow runs complete. The
297
+ pinned package-index install spec is `code-mower==0.5.0b53`.
301
298
  GitHub releases remain the auditable source for tags, build artifacts, and
302
299
  release notes.
303
300
 
@@ -334,7 +331,19 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
334
331
  ## Docs Map
335
332
 
336
333
  - [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
337
- - [Quickstart](docs/quickstart.md)
334
+ - [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
335
+ - [Quickstart Reference](docs/quickstart.md)
336
+ - [Planning And Work Orders](docs/planning-work-orders.md)
337
+ - [Builder Providers: Grok And Cursor](docs/builders-grok-cursor.md)
338
+ - [Build Loop Operations](docs/build-loop.md)
339
+ - [Self-Hosted Mac Runner](docs/self-hosted-mac-runner.md)
340
+ - [Local Audit Runner](docs/local-audit-runner.md)
341
+ - [Lane Standing Instructions](docs/lanes/README.md)
342
+ - [Codex Lane Standing Instructions](docs/lanes/codex.md)
343
+ - [Claude Lane Standing Instructions](docs/lanes/claude.md)
344
+ - [Cursor Hosted Lane Standing Instructions](docs/lanes/cursor.md)
345
+ - [Provider Matrix](docs/provider-matrix.md)
346
+ - [GitHub Setup](docs/github-setup.md)
338
347
  - [First Run Transcript](docs/first-run-transcript.md)
339
348
  - [First-User Demo Transcript](docs/first-user-demo-transcript.md)
340
349
  - [First-User Install Rehearsal](docs/first-user-install-rehearsal.md)
@@ -343,8 +352,7 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
343
352
  - [PyPI Release Runbook](docs/pypi-release.md)
344
353
  - [Sample Doctor Output](docs/sample-doctor-output.md)
345
354
  - [Architecture](docs/architecture.md)
346
- - [Provider Matrix](docs/provider-matrix.md)
347
- - [GitHub Setup](docs/github-setup.md)
355
+ - [Lane Promotion Policy](docs/lane-promotion-policy.md)
348
356
  - [Cloud Sharing](docs/cloud-sharing.md)
349
357
  - [Cloud Data Contract](docs/cloud-data-contract.md)
350
358
  - [Privacy And Threat Model](docs/privacy-threat-model.md)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-mower"
7
- version = "0.5.0b51"
7
+ version = "0.5.0b53"
8
8
  description = "Multi-reviewer AI code audit orchestration"
9
9
  requires-python = ">=3.11"
10
10
  readme = "README.md"
@@ -31,6 +31,7 @@ code_mower = [
31
31
  "templates/**/*.yml",
32
32
  "templates/**/*.yaml",
33
33
  "templates/**/*.j2",
34
+ "templates/lanes/*",
34
35
  "templates/product-support/*",
35
36
  ]
36
37
 
@@ -1,3 +1,3 @@
1
1
  """Code Mower package."""
2
2
 
3
- __version__ = "0.5.0b51"
3
+ __version__ = "0.5.0b53"