code-mower 0.5.0b48__tar.gz → 0.5.0b49__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 (302) hide show
  1. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/PKG-INFO +6 -6
  2. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/README.md +5 -5
  3. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/pyproject.toml +1 -1
  4. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/__init__.py +1 -1
  5. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cli.py +1 -1
  6. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
  7. {code_mower-0.5.0b48 → code_mower-0.5.0b49/src/code_mower}/templates/workflows/code-mower-gate.yml.j2 +4 -3
  8. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower.egg-info/PKG-INFO +6 -6
  9. {code_mower-0.5.0b48/src/code_mower → code_mower-0.5.0b49}/templates/workflows/code-mower-gate.yml.j2 +4 -3
  10. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_release_hygiene.py +37 -34
  11. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/CODE_OF_CONDUCT.md +0 -0
  12. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/LICENSE +0 -0
  13. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/MANIFEST.in +0 -0
  14. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/NOTICE +0 -0
  15. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/SUPPORT.md +0 -0
  16. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/requirements/requirements.txt +0 -0
  17. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/setup.cfg +0 -0
  18. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/adapters/__init__.py +0 -0
  19. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/adapters/_base.py +0 -0
  20. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  21. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/adapters/gitar.py +0 -0
  22. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/adapters/greptile.py +0 -0
  23. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/adapters/qodo.py +0 -0
  24. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  25. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/audit_handoff_log.py +0 -0
  26. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/audit_labeler_lib.py +0 -0
  27. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/audit_progress.py +0 -0
  28. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/blind_review_artifacts.py +0 -0
  29. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/blind_review_coordinator.py +0 -0
  30. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/bootstrap.py +0 -0
  31. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/builder_experiment.py +0 -0
  32. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/builder_runs.py +0 -0
  33. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/__init__.py +0 -0
  34. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/arms.py +0 -0
  35. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/auto_discovery.py +0 -0
  36. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/commands.py +0 -0
  37. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/context_inputs.py +0 -0
  38. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/corpus.py +0 -0
  39. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/effect_report.py +0 -0
  40. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/evidence.py +0 -0
  41. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/evidence_report.py +0 -0
  42. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/identity.py +0 -0
  43. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/metrics.py +0 -0
  44. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/overlap.py +0 -0
  45. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/planning.py +0 -0
  46. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/policy.py +0 -0
  47. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/results.py +0 -0
  48. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/run_results.py +0 -0
  49. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/run_status.py +0 -0
  50. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/runner.py +0 -0
  51. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/truth.py +0 -0
  52. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/calibration/value_report.py +0 -0
  53. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/checks.py +0 -0
  54. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/claude_audit_pr.py +0 -0
  55. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/claude_cli_bounce.py +0 -0
  56. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/claude_cli_environment.py +0 -0
  57. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/clear_stale.py +0 -0
  58. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud.py +0 -0
  59. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/__init__.py +0 -0
  60. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/bundle.py +0 -0
  61. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/doctor.py +0 -0
  62. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/dogfood.py +0 -0
  63. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/endpoints.py +0 -0
  64. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/errors.py +0 -0
  65. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/events.py +0 -0
  66. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/export.py +0 -0
  67. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/git_metadata.py +0 -0
  68. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/manifest.py +0 -0
  69. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/operations.py +0 -0
  70. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/reports.py +0 -0
  71. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/setup.py +0 -0
  72. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/cloud_client/upload.py +0 -0
  73. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/code_mower_calibration.py +0 -0
  74. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/code_mower_context_packs.py +0 -0
  75. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/code_mower_merge.py +0 -0
  76. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/code_mower_telemetry.py +0 -0
  77. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  78. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/codex_audit_env_preflight.py +0 -0
  79. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/codex_audit_pr.py +0 -0
  80. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  81. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  82. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/config.py +0 -0
  83. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor.py +0 -0
  84. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/__init__.py +0 -0
  85. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/cloud.py +0 -0
  86. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/common.py +0 -0
  87. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github.py +0 -0
  88. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions.py +0 -0
  89. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  90. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  91. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  92. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  93. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  94. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  95. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  96. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  97. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_api.py +0 -0
  98. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_branch.py +0 -0
  99. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_config.py +0 -0
  100. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_provider.py +0 -0
  101. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/github_repo.py +0 -0
  102. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/groups.py +0 -0
  103. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/models.py +0 -0
  104. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/output.py +0 -0
  105. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/presets.py +0 -0
  106. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/privacy.py +0 -0
  107. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  108. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  109. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  110. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_env.py +0 -0
  111. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  112. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  113. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  114. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
  115. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  116. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  117. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  118. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  119. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  120. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  121. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  122. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/providers.py +0 -0
  123. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/registry.py +0 -0
  124. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/runner.py +0 -0
  125. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/runtime.py +0 -0
  126. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  127. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/gate_health.py +0 -0
  128. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  129. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/grok_build_audit_pr.py +0 -0
  130. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  131. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/init.py +0 -0
  132. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/__init__.py +0 -0
  133. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/aider.py +0 -0
  134. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  135. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/claude.py +0 -0
  136. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/codex.py +0 -0
  137. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/devin.py +0 -0
  138. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  139. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/grok_build.py +0 -0
  140. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  141. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/lane_configs/local_llm.py +0 -0
  142. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/local_llm_audit_pr.py +0 -0
  143. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/local_llm_bakeoff.py +0 -0
  144. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/local_llm_calibration.py +0 -0
  145. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/local_llm_profiles.py +0 -0
  146. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/migration.py +0 -0
  147. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/migration_install.py +0 -0
  148. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/migration_mirror.py +0 -0
  149. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/migration_readiness.py +0 -0
  150. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/migration_rehearsal.py +0 -0
  151. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/next_steps.py +0 -0
  152. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/package.py +0 -0
  153. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/package_content.py +0 -0
  154. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/package_manifest.py +0 -0
  155. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/package_paths.py +0 -0
  156. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/package_rendering.py +0 -0
  157. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/package_static.py +0 -0
  158. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/plan_context.py +0 -0
  159. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/prompts.py +0 -0
  160. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_registry.py +0 -0
  161. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/__init__.py +0 -0
  162. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/comments.py +0 -0
  163. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/git.py +0 -0
  164. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/github_auth.py +0 -0
  165. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/github_pr.py +0 -0
  166. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  167. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/process.py +0 -0
  168. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/repo_paths.py +0 -0
  169. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/text_schema.py +0 -0
  170. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  171. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/provider_runners/workspace.py +0 -0
  172. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/providers/__init__.py +0 -0
  173. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/providers/local_cli.py +0 -0
  174. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/providers/provenance.py +0 -0
  175. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/release_readiness.py +0 -0
  176. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/reviewer_metrics.py +0 -0
  177. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/reviewer_spend.py +0 -0
  178. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/saas_reviewer_labeler.py +0 -0
  179. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/secrets.py +0 -0
  180. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/builder-experiment.example.json +0 -0
  181. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  182. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/calibration-corpus.json +0 -0
  183. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/code-mower.example.yml +0 -0
  184. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/context-packs.example.json +0 -0
  185. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
  186. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  187. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  188. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  189. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  190. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  191. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  192. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
  193. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  194. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/product-support/code_mower +0 -0
  195. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  196. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  197. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  198. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  199. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  200. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/product-support/status_report.py +0 -0
  201. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/providers.yml +0 -0
  202. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  203. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  204. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  205. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  206. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
  207. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  208. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
  209. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  210. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  211. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  212. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  213. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  214. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
  215. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/trailer_comment_labeler.py +0 -0
  216. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/versioning.py +0 -0
  217. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower/work_orders.py +0 -0
  218. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower.egg-info/SOURCES.txt +0 -0
  219. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower.egg-info/dependency_links.txt +0 -0
  220. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower.egg-info/entry_points.txt +0 -0
  221. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower.egg-info/requires.txt +0 -0
  222. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/src/code_mower.egg-info/top_level.txt +0 -0
  223. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/builder-experiment.example.json +0 -0
  224. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/calibration-corpus.example.json +0 -0
  225. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/calibration-corpus.json +0 -0
  226. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/code-mower.yml.j2 +0 -0
  227. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/context-packs.example.json +0 -0
  228. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/cursor/BUGBOT.md +0 -0
  229. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/acp_bridge.yml +0 -0
  230. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/aider.yml +0 -0
  231. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/antigravity_cli.yml +0 -0
  232. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/claude_audit.yml +0 -0
  233. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/claude_review.yml +0 -0
  234. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/coderabbit_cli.yml +0 -0
  235. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/codex.yml +0 -0
  236. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/cursor_bugbot.yml +0 -0
  237. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/devin.yml +0 -0
  238. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/gemini_cli.yml +0 -0
  239. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/gitar.yml +0 -0
  240. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/greptile.yml +0 -0
  241. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/hermes_cli.yml +0 -0
  242. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/local_llm.yml +0 -0
  243. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers/qodo.yml +0 -0
  244. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/providers.yml +0 -0
  245. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/reviewer-spend.example.json +0 -0
  246. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/reviewer-value-report.example.md +0 -0
  247. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  248. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  249. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/builder-provenance.yml.j2 +0 -0
  250. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  251. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/hosted-bridge.yml.j2 +0 -0
  252. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  253. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  254. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  255. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  256. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  257. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  258. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_audit_comment_posture.py +0 -0
  259. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_builder_identity.py +0 -0
  260. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_builder_runs.py +0 -0
  261. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_calibration_effect_report.py +0 -0
  262. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_calibration_truth.py +0 -0
  263. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_checks.py +0 -0
  264. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_claude_audit_pr.py +0 -0
  265. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_claude_cli_bounce.py +0 -0
  266. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_clear_stale.py +0 -0
  267. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_cloud_client.py +0 -0
  268. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_cloud_git_metadata.py +0 -0
  269. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_cloud_manifest.py +0 -0
  270. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_cloud_reports.py +0 -0
  271. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  272. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_codex_audit_env_preflight.py +0 -0
  273. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_codex_audit_pr.py +0 -0
  274. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_actions_cost_summary.py +0 -0
  275. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_actions_failure_selection.py +0 -0
  276. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_boundaries.py +0 -0
  277. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_github_checks.py +0 -0
  278. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_output.py +0 -0
  279. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_privacy.py +0 -0
  280. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_provider_env_required.py +0 -0
  281. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_provider_env_tokens.py +0 -0
  282. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_provider_probe.py +0 -0
  283. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_provider_review_hygiene.py +0 -0
  284. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_registry.py +0 -0
  285. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_doctor_runtime.py +0 -0
  286. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_gate_health.py +0 -0
  287. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_local_llm_github_helpers.py +0 -0
  288. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_plan_context.py +0 -0
  289. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_prompts.py +0 -0
  290. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_local_cli.py +0 -0
  291. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_comments.py +0 -0
  292. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_git.py +0 -0
  293. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_github_pr.py +0 -0
  294. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_pr_worktree.py +0 -0
  295. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_process.py +0 -0
  296. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_repo_paths.py +0 -0
  297. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_text_schema.py +0 -0
  298. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_provider_runners_workspace.py +0 -0
  299. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_reviewer_metrics_core.py +0 -0
  300. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_reviewer_spend.py +0 -0
  301. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_trailer_comment_labeler.py +0 -0
  302. {code_mower-0.5.0b48 → code_mower-0.5.0b49}/tests/test_work_orders.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 0.5.0b48
3
+ Version: 0.5.0b49
4
4
  Summary: Multi-reviewer AI code audit orchestration
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.11
@@ -103,11 +103,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
103
103
 
104
104
  ```bash
105
105
  python3.12 --version
106
- pipx install --python python3.12 code-mower==0.5.0b48
106
+ pipx install --python python3.12 code-mower==0.5.0b49
107
107
  code-mower --version
108
108
  ```
109
109
 
110
- `0.5.0b48` is a beta release. Until Code Mower publishes a stable `1.0`
110
+ `0.5.0b49` is a beta release. Until Code Mower publishes a stable `1.0`
111
111
  line, use the explicit beta version above or allow prereleases with:
112
112
 
113
113
  ```bash
@@ -155,7 +155,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
155
155
 
156
156
  The current PyPI beta has been rehearsed end-to-end from a clean install:
157
157
  [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.0b48`.
158
+ the latest 10/10 public-package readiness proof for `code-mower==0.5.0b49`.
159
159
 
160
160
  ## Optional: Plan Before Coding
161
161
 
@@ -310,9 +310,9 @@ builder provenance, start with
310
310
 
311
311
  ## Installation Status
312
312
 
313
- The current public beta is `v0.5.0-beta.48` from
313
+ The current public beta is `v0.5.0-beta.49` from
314
314
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
315
- as `code-mower==0.5.0b48` on [PyPI](https://pypi.org/project/code-mower/).
315
+ as `code-mower==0.5.0b49` on [PyPI](https://pypi.org/project/code-mower/).
316
316
  GitHub releases remain the auditable source for tags, build artifacts, and
317
317
  release notes.
318
318
 
@@ -88,11 +88,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
88
88
 
89
89
  ```bash
90
90
  python3.12 --version
91
- pipx install --python python3.12 code-mower==0.5.0b48
91
+ pipx install --python python3.12 code-mower==0.5.0b49
92
92
  code-mower --version
93
93
  ```
94
94
 
95
- `0.5.0b48` is a beta release. Until Code Mower publishes a stable `1.0`
95
+ `0.5.0b49` is a beta release. Until Code Mower publishes a stable `1.0`
96
96
  line, use the explicit beta version above or allow prereleases with:
97
97
 
98
98
  ```bash
@@ -140,7 +140,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
140
140
 
141
141
  The current PyPI beta has been rehearsed end-to-end from a clean install:
142
142
  [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.0b48`.
143
+ the latest 10/10 public-package readiness proof for `code-mower==0.5.0b49`.
144
144
 
145
145
  ## Optional: Plan Before Coding
146
146
 
@@ -295,9 +295,9 @@ builder provenance, start with
295
295
 
296
296
  ## Installation Status
297
297
 
298
- The current public beta is `v0.5.0-beta.48` from
298
+ The current public beta is `v0.5.0-beta.49` from
299
299
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
300
- as `code-mower==0.5.0b48` on [PyPI](https://pypi.org/project/code-mower/).
300
+ as `code-mower==0.5.0b49` on [PyPI](https://pypi.org/project/code-mower/).
301
301
  GitHub releases remain the auditable source for tags, build artifacts, and
302
302
  release notes.
303
303
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-mower"
7
- version = "0.5.0b48"
7
+ version = "0.5.0b49"
8
8
  description = "Multi-reviewer AI code audit orchestration"
9
9
  requires-python = ">=3.11"
10
10
  readme = "README.md"
@@ -1,3 +1,3 @@
1
1
  """Code Mower package."""
2
2
 
3
- __version__ = "0.5.0b48"
3
+ __version__ = "0.5.0b49"
@@ -14,7 +14,7 @@ from pathlib import Path
14
14
  if __package__ in {None, ""}:
15
15
  raise SystemExit(
16
16
  "code_mower.cli is a packaged entrypoint. Install Code Mower with "
17
- "`pipx install code-mower==0.5.0b48`, or run source checkouts with "
17
+ "`pipx install code-mower==0.5.0b49`, or run source checkouts with "
18
18
  "`PYTHONPATH=src python -m code_mower.cli`."
19
19
  )
20
20
 
@@ -8,7 +8,7 @@ permissions:
8
8
  contents: read
9
9
 
10
10
  env:
11
- CODE_MOWER_PACKAGE_SPEC: code-mower==0.5.0b48
11
+ CODE_MOWER_PACKAGE_SPEC: code-mower==0.5.0b49
12
12
 
13
13
  jobs:
14
14
  auto-record:
@@ -37,6 +37,7 @@ env:
37
37
 
38
38
  jobs:
39
39
  gate:
40
+ name: code-mower/gate
40
41
  runs-on: ubuntu-latest
41
42
  timeout-minutes: 5
42
43
  steps:
@@ -605,8 +606,8 @@ __GATE_AUTHOR_ENV_ASSIGNMENTS__
605
606
  exit 0
606
607
  fi
607
608
 
608
- gh api graphql \
609
+ if ! gh api graphql \
609
610
  -f pullRequestId="${pr_node_id}" \
610
- -f query='mutation($pullRequestId:ID!){enablePullRequestAutoMerge(input:{pullRequestId:$pullRequestId,mergeMethod:SQUASH}){pullRequest{id}}}' >/dev/null || {
611
+ -f query='mutation($pullRequestId:ID!){enablePullRequestAutoMerge(input:{pullRequestId:$pullRequestId,mergeMethod:SQUASH}){pullRequest{id}}}' >/dev/null; then
611
612
  echo "::notice::Code Mower gate is green, but GitHub could not enable auto-merge. Confirm allow_auto_merge and token permissions."
612
- }
613
+ fi
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 0.5.0b48
3
+ Version: 0.5.0b49
4
4
  Summary: Multi-reviewer AI code audit orchestration
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.11
@@ -103,11 +103,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
103
103
 
104
104
  ```bash
105
105
  python3.12 --version
106
- pipx install --python python3.12 code-mower==0.5.0b48
106
+ pipx install --python python3.12 code-mower==0.5.0b49
107
107
  code-mower --version
108
108
  ```
109
109
 
110
- `0.5.0b48` is a beta release. Until Code Mower publishes a stable `1.0`
110
+ `0.5.0b49` is a beta release. Until Code Mower publishes a stable `1.0`
111
111
  line, use the explicit beta version above or allow prereleases with:
112
112
 
113
113
  ```bash
@@ -155,7 +155,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
155
155
 
156
156
  The current PyPI beta has been rehearsed end-to-end from a clean install:
157
157
  [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.0b48`.
158
+ the latest 10/10 public-package readiness proof for `code-mower==0.5.0b49`.
159
159
 
160
160
  ## Optional: Plan Before Coding
161
161
 
@@ -310,9 +310,9 @@ builder provenance, start with
310
310
 
311
311
  ## Installation Status
312
312
 
313
- The current public beta is `v0.5.0-beta.48` from
313
+ The current public beta is `v0.5.0-beta.49` from
314
314
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
315
- as `code-mower==0.5.0b48` on [PyPI](https://pypi.org/project/code-mower/).
315
+ as `code-mower==0.5.0b49` on [PyPI](https://pypi.org/project/code-mower/).
316
316
  GitHub releases remain the auditable source for tags, build artifacts, and
317
317
  release notes.
318
318
 
@@ -37,6 +37,7 @@ env:
37
37
 
38
38
  jobs:
39
39
  gate:
40
+ name: code-mower/gate
40
41
  runs-on: ubuntu-latest
41
42
  timeout-minutes: 5
42
43
  steps:
@@ -605,8 +606,8 @@ __GATE_AUTHOR_ENV_ASSIGNMENTS__
605
606
  exit 0
606
607
  fi
607
608
 
608
- gh api graphql \
609
+ if ! gh api graphql \
609
610
  -f pullRequestId="${pr_node_id}" \
610
- -f query='mutation($pullRequestId:ID!){enablePullRequestAutoMerge(input:{pullRequestId:$pullRequestId,mergeMethod:SQUASH}){pullRequest{id}}}' >/dev/null || {
611
+ -f query='mutation($pullRequestId:ID!){enablePullRequestAutoMerge(input:{pullRequestId:$pullRequestId,mergeMethod:SQUASH}){pullRequest{id}}}' >/dev/null; then
611
612
  echo "::notice::Code Mower gate is green, but GitHub could not enable auto-merge. Confirm allow_auto_merge and token permissions."
612
- }
613
+ fi
@@ -55,7 +55,7 @@ from scripts import guard_package_workflows, privacy_scan
55
55
 
56
56
  class ReleaseHygieneTests(unittest.TestCase):
57
57
  def test_version_is_current_v05_prerelease(self) -> None:
58
- self.assertEqual(__version__, "0.5.0b48")
58
+ self.assertEqual(__version__, "0.5.0b49")
59
59
 
60
60
  def test_release_workflow_verifies_downloaded_distributions_before_publish(self) -> None:
61
61
  workflow = (ROOT / ".github/workflows/release.yml").read_text(encoding="utf-8")
@@ -226,7 +226,7 @@ class ReleaseHygieneTests(unittest.TestCase):
226
226
  self.assertIn(
227
227
  (
228
228
  "code-mower migration package-install-rehearsal --package-spec "
229
- "code-mower==0.5.0b48 --json"
229
+ "code-mower==0.5.0b49 --json"
230
230
  ),
231
231
  help_text,
232
232
  )
@@ -2235,13 +2235,16 @@ jobs:
2235
2235
  ".github/workflows/code-mower-gate.yml"
2236
2236
  ).read_text(encoding="utf-8")
2237
2237
  self.assertIn("CODE_MOWER_GATE_CONTEXT: code-mower/gate", gate)
2238
+ self.assertIn("name: code-mower/gate", gate)
2238
2239
  self.assertIn("Check out Code Mower support files", gate)
2239
2240
  self.assertIn('CODE_MOWER_OWNER_LABEL: "needs-owner"', gate)
2240
2241
  self.assertIn("codex-audit-done", gate)
2241
2242
  self.assertIn("claude-audit-done", gate)
2242
2243
  self.assertIn("builder:codex", gate)
2243
2244
  self.assertIn("builder:claude", gate)
2245
+ self.assertIn("if ! gh api graphql", gate)
2244
2246
  self.assertIn("enablePullRequestAutoMerge", gate)
2247
+ self.assertNotIn("enablePullRequestAutoMerge(input:{pullRequestId:$pullRequestId,mergeMethod:SQUASH}){pullRequest{id}}}' >/dev/null || {", gate)
2245
2248
  self.assertIn("gh api -X POST", gate)
2246
2249
  self.assertIn("CODE_MOWER_AUDIT_RUN", gate)
2247
2250
  self.assertIn("comment_id", gate)
@@ -3402,8 +3405,8 @@ printf '%s\\n' "${lane}"
3402
3405
  fromlist=["current_alpha_package_spec"],
3403
3406
  )
3404
3407
  self.assertEqual(
3405
- legacy_module.current_alpha_package_spec("0.5.0b48"),
3406
- "code-mower==0.5.0b48",
3408
+ legacy_module.current_alpha_package_spec("0.5.0b49"),
3409
+ "code-mower==0.5.0b49",
3407
3410
  )
3408
3411
  finally:
3409
3412
  sys.path[:] = original_path
@@ -3440,7 +3443,7 @@ printf '%s\\n' "${lane}"
3440
3443
  "-c",
3441
3444
  (
3442
3445
  "from tools import code_mower_package_content as c; "
3443
- "print(c.current_alpha_package_spec('0.5.0b48'))"
3446
+ "print(c.current_alpha_package_spec('0.5.0b49'))"
3444
3447
  ),
3445
3448
  ],
3446
3449
  cwd=tmp_path,
@@ -3453,7 +3456,7 @@ printf '%s\\n' "${lane}"
3453
3456
  self.assertEqual(completed.returncode, 0, completed.stderr)
3454
3457
  self.assertEqual(
3455
3458
  completed.stdout.strip(),
3456
- "code-mower==0.5.0b48",
3459
+ "code-mower==0.5.0b49",
3457
3460
  )
3458
3461
 
3459
3462
  def test_package_rendering_legacy_fallback_stays_valid_yaml_subset(self) -> None:
@@ -3529,11 +3532,11 @@ printf '%s\\n' "${lane}"
3529
3532
  (output_dir / "src/code_mower/cloud_client/dogfood.py").is_file()
3530
3533
  )
3531
3534
  self.assertIn(
3532
- 'version = "0.5.0b48"',
3535
+ 'version = "0.5.0b49"',
3533
3536
  (output_dir / "pyproject.toml").read_text(encoding="utf-8"),
3534
3537
  )
3535
3538
  self.assertIn(
3536
- '__version__ = "0.5.0b48"',
3539
+ '__version__ = "0.5.0b49"',
3537
3540
  (output_dir / "src/code_mower/__init__.py").read_text(
3538
3541
  encoding="utf-8"
3539
3542
  ),
@@ -5069,7 +5072,7 @@ def main():
5069
5072
  {
5070
5073
  "status": "pass",
5071
5074
  "package_spec": "code-mower",
5072
- "version": "code-mower 0.5.0b48",
5075
+ "version": "code-mower 0.5.0b49",
5073
5076
  "work_dir": "/tmp/code-mower-rehearsal",
5074
5077
  "toy_repo": "/tmp/code-mower-rehearsal/toy-repo",
5075
5078
  "step_count": 1,
@@ -5181,7 +5184,7 @@ def main():
5181
5184
  scorecard = code_mower_migration._first_user_readiness_scorecard(
5182
5185
  toy_repo=toy_repo,
5183
5186
  outputs=outputs,
5184
- version="code-mower 0.5.0b48",
5187
+ version="code-mower 0.5.0b49",
5185
5188
  steps=[
5186
5189
  {
5187
5190
  "command": ["code-mower", "doctor", "--easy", "--json"],
@@ -5260,7 +5263,7 @@ def main():
5260
5263
  scorecard = code_mower_migration._first_user_readiness_scorecard(
5261
5264
  toy_repo=toy_repo,
5262
5265
  outputs=outputs,
5263
- version="code-mower 0.5.0b48",
5266
+ version="code-mower 0.5.0b49",
5264
5267
  steps=[
5265
5268
  {
5266
5269
  "command": ["code-mower", "doctor", "--easy", "--json"],
@@ -5322,7 +5325,7 @@ def main():
5322
5325
  scorecard = code_mower_migration._first_user_readiness_scorecard(
5323
5326
  toy_repo=toy_repo,
5324
5327
  outputs=outputs,
5325
- version="code-mower 0.5.0b48",
5328
+ version="code-mower 0.5.0b49",
5326
5329
  steps=[
5327
5330
  {
5328
5331
  "command": ["code-mower", "doctor", "--easy", "--json"],
@@ -5388,17 +5391,17 @@ def main():
5388
5391
  )
5389
5392
  self.assertEqual(
5390
5393
  code_mower_migration._resolve_install_package_spec(
5391
- "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.48",
5394
+ "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.49",
5392
5395
  base_dir=package,
5393
5396
  ),
5394
- "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.48",
5397
+ "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.49",
5395
5398
  )
5396
5399
  self.assertEqual(
5397
5400
  code_mower_migration._resolve_install_package_spec(
5398
- "code-mower==0.5.0b48",
5401
+ "code-mower==0.5.0b49",
5399
5402
  base_dir=package,
5400
5403
  ),
5401
- "code-mower==0.5.0b48",
5404
+ "code-mower==0.5.0b49",
5402
5405
  )
5403
5406
 
5404
5407
  def test_wrapper_rehearsal_command_parser_preserves_quoted_spaces(self) -> None:
@@ -5422,7 +5425,7 @@ def main():
5422
5425
  self.assertEqual(
5423
5426
  code_mower_migration._pip_install_command(
5424
5427
  Path("/tmp/venv/bin/python"),
5425
- "code-mower==0.5.0b48",
5428
+ "code-mower==0.5.0b49",
5426
5429
  pip_index_url="https://test.pypi.org/simple/",
5427
5430
  pip_extra_index_urls=["https://pypi.org/simple/"],
5428
5431
  ),
@@ -5435,7 +5438,7 @@ def main():
5435
5438
  "https://test.pypi.org/simple/",
5436
5439
  "--extra-index-url",
5437
5440
  "https://pypi.org/simple/",
5438
- "code-mower==0.5.0b48",
5441
+ "code-mower==0.5.0b49",
5439
5442
  ],
5440
5443
  )
5441
5444
 
@@ -5455,10 +5458,10 @@ def main():
5455
5458
  payload = release_readiness.render_release_readiness(ROOT)
5456
5459
 
5457
5460
  self.assertEqual(payload["status"], "pass")
5458
- self.assertEqual(payload["version"], "0.5.0b48")
5459
- self.assertEqual(payload["release_tag"], "v0.5.0-beta.48")
5460
- self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.48")
5461
- self.assertEqual(payload["package_index_spec"], "code-mower==0.5.0b48")
5461
+ self.assertEqual(payload["version"], "0.5.0b49")
5462
+ self.assertEqual(payload["release_tag"], "v0.5.0-beta.49")
5463
+ self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.49")
5464
+ self.assertEqual(payload["package_index_spec"], "code-mower==0.5.0b49")
5462
5465
  check_ids = {check["id"]: check for check in payload["checks"]}
5463
5466
  self.assertEqual(check_ids["package-version-consistency"]["status"], "pass")
5464
5467
  self.assertEqual(
@@ -5507,7 +5510,7 @@ def main():
5507
5510
  check_ids = {check["id"]: check for check in payload["checks"]}
5508
5511
  check = check_ids["materialized-package-version-consistency"]
5509
5512
  self.assertEqual(check["status"], "fail")
5510
- self.assertEqual(check["detail"]["source_version"], "0.5.0b48")
5513
+ self.assertEqual(check["detail"]["source_version"], "0.5.0b49")
5511
5514
  self.assertEqual(check["detail"]["generated_init_version"], "0.0.0")
5512
5515
 
5513
5516
  def test_public_support_docs_are_packaged_and_privacy_forward(self) -> None:
@@ -5587,20 +5590,20 @@ def main():
5587
5590
 
5588
5591
  def test_release_readiness_tag_derivation_supports_release_stages(self) -> None:
5589
5592
  self.assertEqual(
5590
- release_readiness._release_tag_for_version("0.5.0b48"),
5591
- "v0.5.0-beta.48",
5593
+ release_readiness._release_tag_for_version("0.5.0b49"),
5594
+ "v0.5.0-beta.49",
5592
5595
  )
5593
5596
  self.assertEqual(
5594
- code_mower_versioning.release_tag_for_version("0.5.0b48"),
5595
- "v0.5.0-beta.48",
5597
+ code_mower_versioning.release_tag_for_version("0.5.0b49"),
5598
+ "v0.5.0-beta.49",
5596
5599
  )
5597
5600
  self.assertEqual(
5598
- release_readiness._release_tag_for_version("0.5.0b48"),
5599
- "v0.5.0-beta.48",
5601
+ release_readiness._release_tag_for_version("0.5.0b49"),
5602
+ "v0.5.0-beta.49",
5600
5603
  )
5601
5604
  self.assertEqual(
5602
- code_mower_versioning.release_tag_for_version("0.5.0b48"),
5603
- "v0.5.0-beta.48",
5605
+ code_mower_versioning.release_tag_for_version("0.5.0b49"),
5606
+ "v0.5.0-beta.49",
5604
5607
  )
5605
5608
  self.assertEqual(
5606
5609
  release_readiness._release_tag_for_version("1.0.0rc1"),
@@ -5629,8 +5632,8 @@ def main():
5629
5632
  next_steps.current_alpha_package_spec(),
5630
5633
  )
5631
5634
  self.assertEqual(
5632
- code_mower_package_content.current_alpha_package_spec("0.5.0b48"),
5633
- "code-mower==0.5.0b48",
5635
+ code_mower_package_content.current_alpha_package_spec("0.5.0b49"),
5636
+ "code-mower==0.5.0b49",
5634
5637
  )
5635
5638
  self.assertNotIn(next_steps.current_public_tag(), package_content_text)
5636
5639
  self.assertNotIn("v0.0.0", package_content_text)
@@ -5811,7 +5814,7 @@ def main():
5811
5814
  step for step in plan["steps"] if step["id"] == "package-install-rehearsal"
5812
5815
  )
5813
5816
  self.assertIn("doctor --v05", doctor_step["command"])
5814
- self.assertIn("code-mower==0.5.0b48", package_step["command"])
5817
+ self.assertIn("code-mower==0.5.0b49", package_step["command"])
5815
5818
  self.assertIn("current published PyPI prerelease", package_step["why"])
5816
5819
  self.assertIn("first_user_readiness", package_step["why"])
5817
5820
  self.assertEqual(
File without changes
File without changes
File without changes
File without changes
File without changes