code-mower 1.0.11__tar.gz → 1.0.12__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 (408) hide show
  1. {code_mower-1.0.11 → code_mower-1.0.12}/PKG-INFO +11 -5
  2. {code_mower-1.0.11 → code_mower-1.0.12}/README.md +10 -4
  3. {code_mower-1.0.11 → code_mower-1.0.12}/pyproject.toml +1 -1
  4. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/__init__.py +1 -1
  5. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/campaign_adapters.py +5 -3
  6. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
  7. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/PKG-INFO +11 -5
  8. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/builder-provenance.yml.j2 +1 -1
  9. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_campaign_adapters.py +8 -0
  10. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_release_hygiene.py +47 -46
  11. {code_mower-1.0.11 → code_mower-1.0.12}/CODE_OF_CONDUCT.md +0 -0
  12. {code_mower-1.0.11 → code_mower-1.0.12}/LICENSE +0 -0
  13. {code_mower-1.0.11 → code_mower-1.0.12}/MANIFEST.in +0 -0
  14. {code_mower-1.0.11 → code_mower-1.0.12}/NOTICE +0 -0
  15. {code_mower-1.0.11 → code_mower-1.0.12}/SUPPORT.md +0 -0
  16. {code_mower-1.0.11 → code_mower-1.0.12}/requirements/requirements.txt +0 -0
  17. {code_mower-1.0.11 → code_mower-1.0.12}/setup.cfg +0 -0
  18. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/__init__.py +0 -0
  19. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/_base.py +0 -0
  20. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  21. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/gitar.py +0 -0
  22. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/greptile.py +0 -0
  23. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/qodo.py +0 -0
  24. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  25. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/antigravity_sdk_probe.py +0 -0
  26. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_handoff_log.py +0 -0
  27. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_labeler_lib.py +0 -0
  28. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_limits.py +0 -0
  29. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_progress.py +0 -0
  30. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/blind_review_artifacts.py +0 -0
  31. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/blind_review_coordinator.py +0 -0
  32. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/board.py +0 -0
  33. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/board_store.py +0 -0
  34. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/bootstrap.py +0 -0
  35. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/builder_experiment.py +0 -0
  36. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/builder_runs.py +0 -0
  37. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/__init__.py +0 -0
  38. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/arms.py +0 -0
  39. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/auto_discovery.py +0 -0
  40. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/commands.py +0 -0
  41. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/context_inputs.py +0 -0
  42. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/corpus.py +0 -0
  43. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/effect_report.py +0 -0
  44. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/evidence.py +0 -0
  45. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/evidence_report.py +0 -0
  46. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/identity.py +0 -0
  47. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/metrics.py +0 -0
  48. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/overlap.py +0 -0
  49. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/planning.py +0 -0
  50. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/policy.py +0 -0
  51. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/results.py +0 -0
  52. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/run_results.py +0 -0
  53. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/run_status.py +0 -0
  54. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/runner.py +0 -0
  55. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/truth.py +0 -0
  56. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/value_report.py +0 -0
  57. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/campaign_discovery.py +0 -0
  58. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/checks.py +0 -0
  59. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/claude_audit_pr.py +0 -0
  60. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/claude_cli_bounce.py +0 -0
  61. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/claude_cli_environment.py +0 -0
  62. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/clear_stale.py +0 -0
  63. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cli.py +0 -0
  64. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud.py +0 -0
  65. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/__init__.py +0 -0
  66. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/adoption_runs.py +0 -0
  67. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/bundle.py +0 -0
  68. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/doctor.py +0 -0
  69. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/dogfood.py +0 -0
  70. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/endpoints.py +0 -0
  71. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/errors.py +0 -0
  72. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/events.py +0 -0
  73. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/export.py +0 -0
  74. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/git_metadata.py +0 -0
  75. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/manifest.py +0 -0
  76. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/operations.py +0 -0
  77. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
  78. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/productivity.py +0 -0
  79. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/reports.py +0 -0
  80. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/setup.py +0 -0
  81. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/tokens.py +0 -0
  82. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/upload.py +0 -0
  83. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/work_types.py +0 -0
  84. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_calibration.py +0 -0
  85. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_context_packs.py +0 -0
  86. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_merge.py +0 -0
  87. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_telemetry.py +0 -0
  88. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  89. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_env_preflight.py +0 -0
  90. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_pr.py +0 -0
  91. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  92. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  93. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/config.py +0 -0
  94. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/controller.py +0 -0
  95. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/decisions.py +0 -0
  96. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/devin_api.py +0 -0
  97. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/devin_cli_audit_pr.py +0 -0
  98. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor.py +0 -0
  99. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/__init__.py +0 -0
  100. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/adoption.py +0 -0
  101. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/audit_limits.py +0 -0
  102. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/campaign_auth.py +0 -0
  103. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/cloud.py +0 -0
  104. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/common.py +0 -0
  105. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github.py +0 -0
  106. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions.py +0 -0
  107. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  108. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  109. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  110. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  111. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  112. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  113. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  114. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  115. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_api.py +0 -0
  116. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_branch.py +0 -0
  117. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_config.py +0 -0
  118. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_human_token.py +0 -0
  119. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_provider.py +0 -0
  120. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_repo.py +0 -0
  121. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
  122. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/groups.py +0 -0
  123. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/models.py +0 -0
  124. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/output.py +0 -0
  125. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/presets.py +0 -0
  126. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/privacy.py +0 -0
  127. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  128. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  129. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  130. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_env.py +0 -0
  131. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  132. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  133. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
  134. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  135. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
  136. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  137. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  138. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  139. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  140. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  141. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  142. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  143. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/providers.py +0 -0
  144. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/registry.py +0 -0
  145. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/runner.py +0 -0
  146. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/runtime.py +0 -0
  147. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  148. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
  149. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
  150. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/file_locks.py +0 -0
  151. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/gate_health.py +0 -0
  152. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  153. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/git_identity.py +0 -0
  154. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/grok_build_audit_pr.py +0 -0
  155. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  156. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/init.py +0 -0
  157. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/__init__.py +0 -0
  158. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/aider.py +0 -0
  159. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  160. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/claude.py +0 -0
  161. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/codex.py +0 -0
  162. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/devin.py +0 -0
  163. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/devin_cli.py +0 -0
  164. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  165. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/grok_build.py +0 -0
  166. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  167. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/local_llm.py +0 -0
  168. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/muse_cli.py +0 -0
  169. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_delivery.py +0 -0
  170. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_status.py +0 -0
  171. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_audit_pr.py +0 -0
  172. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_bakeoff.py +0 -0
  173. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_calibration.py +0 -0
  174. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_profiles.py +0 -0
  175. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration.py +0 -0
  176. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_install.py +0 -0
  177. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_mirror.py +0 -0
  178. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_readiness.py +0 -0
  179. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_rehearsal.py +0 -0
  180. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/muse_cli_audit_pr.py +0 -0
  181. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/next_steps.py +0 -0
  182. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package.py +0 -0
  183. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_content.py +0 -0
  184. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_manifest.py +0 -0
  185. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_paths.py +0 -0
  186. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_rendering.py +0 -0
  187. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_static.py +0 -0
  188. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/participants.py +0 -0
  189. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/plan_context.py +0 -0
  190. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/productivity_report.py +0 -0
  191. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/prompts.py +0 -0
  192. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_registry.py +0 -0
  193. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/__init__.py +0 -0
  194. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/comments.py +0 -0
  195. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/exit_codes.py +0 -0
  196. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/git.py +0 -0
  197. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/github_auth.py +0 -0
  198. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/github_pr.py +0 -0
  199. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  200. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/process.py +0 -0
  201. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/repo_paths.py +0 -0
  202. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/text_schema.py +0 -0
  203. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  204. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/workspace.py +0 -0
  205. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/providers/__init__.py +0 -0
  206. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/providers/local_cli.py +0 -0
  207. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/providers/provenance.py +0 -0
  208. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/release_campaigns.py +0 -0
  209. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/release_qualify.py +0 -0
  210. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/release_readiness.py +0 -0
  211. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/reviewer_metrics.py +0 -0
  212. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/reviewer_spend.py +0 -0
  213. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/saas_reviewer_labeler.py +0 -0
  214. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/secrets.py +0 -0
  215. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/session.py +0 -0
  216. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/builder-experiment.example.json +0 -0
  217. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  218. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/calibration-corpus.json +0 -0
  219. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/code-mower.example.yml +0 -0
  220. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/context-packs.example.json +0 -0
  221. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
  222. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  223. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  224. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  225. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  226. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  227. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  228. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
  229. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  230. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/README.md +0 -0
  231. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/claude.md +0 -0
  232. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/codex.md +0 -0
  233. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/cursor.md +0 -0
  234. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/devin.md +0 -0
  235. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/generic.md +0 -0
  236. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
  237. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/code_mower +0 -0
  238. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  239. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  240. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  241. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  242. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
  243. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  244. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/status_report.py +0 -0
  245. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/providers.yml +0 -0
  246. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  247. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  248. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  249. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  250. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  251. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  252. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +0 -0
  253. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  254. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
  255. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  256. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  257. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
  258. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  259. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  260. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  261. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  262. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  263. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
  264. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/trailer_comment_labeler.py +0 -0
  265. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/versioning.py +0 -0
  266. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/work_orders.py +0 -0
  267. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/workflow_actionlint.py +0 -0
  268. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/SOURCES.txt +0 -0
  269. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/dependency_links.txt +0 -0
  270. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/entry_points.txt +0 -0
  271. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/requires.txt +0 -0
  272. {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/top_level.txt +0 -0
  273. {code_mower-1.0.11 → code_mower-1.0.12}/templates/builder-experiment.example.json +0 -0
  274. {code_mower-1.0.11 → code_mower-1.0.12}/templates/calibration-corpus.example.json +0 -0
  275. {code_mower-1.0.11 → code_mower-1.0.12}/templates/calibration-corpus.json +0 -0
  276. {code_mower-1.0.11 → code_mower-1.0.12}/templates/code-mower.yml.j2 +0 -0
  277. {code_mower-1.0.11 → code_mower-1.0.12}/templates/context-packs.example.json +0 -0
  278. {code_mower-1.0.11 → code_mower-1.0.12}/templates/cursor/BUGBOT.md +0 -0
  279. {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/README.md +0 -0
  280. {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/claude.md +0 -0
  281. {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/codex.md +0 -0
  282. {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/cursor.md +0 -0
  283. {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/devin.md +0 -0
  284. {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/generic.md +0 -0
  285. {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/run_mac_lane.sh +0 -0
  286. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/acp_bridge.yml +0 -0
  287. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/aider.yml +0 -0
  288. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/antigravity_cli.yml +0 -0
  289. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/claude_audit.yml +0 -0
  290. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/claude_review.yml +0 -0
  291. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/coderabbit_cli.yml +0 -0
  292. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/codex.yml +0 -0
  293. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/cursor_bugbot.yml +0 -0
  294. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/cursor_cloud_agent.yml +0 -0
  295. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/devin.yml +0 -0
  296. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/devin_cli.yml +0 -0
  297. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/gemini_cli.yml +0 -0
  298. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/gitar.yml +0 -0
  299. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/greptile.yml +0 -0
  300. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/hermes_cli.yml +0 -0
  301. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/local_llm.yml +0 -0
  302. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/muse_cli.yml +0 -0
  303. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/qodo.yml +0 -0
  304. {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers.yml +0 -0
  305. {code_mower-1.0.11 → code_mower-1.0.12}/templates/reviewer-spend.example.json +0 -0
  306. {code_mower-1.0.11 → code_mower-1.0.12}/templates/reviewer-value-report.example.md +0 -0
  307. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  308. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  309. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  310. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  311. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  312. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-gate.yml.j2 +0 -0
  313. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  314. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/hosted-bridge.yml.j2 +0 -0
  315. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  316. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  317. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  318. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  319. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  320. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  321. {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  322. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_adoption_diagnostics.py +0 -0
  323. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_adoption_result_semantics.py +0 -0
  324. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_adoption_run_contract.py +0 -0
  325. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_antigravity_sdk_probe.py +0 -0
  326. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_audit_comment_posture.py +0 -0
  327. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_audit_limits.py +0 -0
  328. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_board.py +0 -0
  329. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_builder_experiment.py +0 -0
  330. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_builder_identity.py +0 -0
  331. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_builder_runs.py +0 -0
  332. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_calibration_effect_report.py +0 -0
  333. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_calibration_truth.py +0 -0
  334. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_campaign_discovery.py +0 -0
  335. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_campaign_retry_evidence_711.py +0 -0
  336. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_checks.py +0 -0
  337. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_claude_audit_pr.py +0 -0
  338. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_claude_cli_bounce.py +0 -0
  339. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_clear_stale.py +0 -0
  340. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_client.py +0 -0
  341. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_git_metadata.py +0 -0
  342. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_manifest.py +0 -0
  343. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_reports.py +0 -0
  344. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  345. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_codex_audit_env_preflight.py +0 -0
  346. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_codex_audit_pr.py +0 -0
  347. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_controller.py +0 -0
  348. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_decision_audit_integration.py +0 -0
  349. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_decisions.py +0 -0
  350. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_api.py +0 -0
  351. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_builder_lane.py +0 -0
  352. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_cli_audit_pr.py +0 -0
  353. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_provider_contract.py +0 -0
  354. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_actions_cost_summary.py +0 -0
  355. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_actions_failure_selection.py +0 -0
  356. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_boundaries.py +0 -0
  357. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_campaign_auth.py +0 -0
  358. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_campaign_readiness.py +0 -0
  359. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_github_checks.py +0 -0
  360. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_output.py +0 -0
  361. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_privacy.py +0 -0
  362. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_env_required.py +0 -0
  363. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_env_tokens.py +0 -0
  364. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_local_audit_setup.py +0 -0
  365. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_probe.py +0 -0
  366. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_review_hygiene.py +0 -0
  367. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_registry.py +0 -0
  368. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_runtime.py +0 -0
  369. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_self_hosted_runner.py +0 -0
  370. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_supervised_pilot.py +0 -0
  371. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_file_locks.py +0 -0
  372. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_fork_pr_guard.py +0 -0
  373. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_gate_automerge.py +0 -0
  374. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_gate_health.py +0 -0
  375. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_hosted_dispatch_profile.py +0 -0
  376. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_init_actionlint.py +0 -0
  377. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_init_build_loop.py +0 -0
  378. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_lane_delivery_contract.py +0 -0
  379. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_lane_status.py +0 -0
  380. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_local_llm_github_helpers.py +0 -0
  381. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_migration_rehearsal.py +0 -0
  382. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_migration_setup_drift.py +0 -0
  383. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_next_steps.py +0 -0
  384. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_package_install_failure_taxonomy.py +0 -0
  385. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_participant_sessions.py +0 -0
  386. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_plan_context.py +0 -0
  387. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_pr_outcome_contract.py +0 -0
  388. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_productivity_metrics_contract.py +0 -0
  389. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_productivity_report.py +0 -0
  390. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_prompts.py +0 -0
  391. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_fixture_contracts.py +0 -0
  392. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_local_cli.py +0 -0
  393. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_comments.py +0 -0
  394. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_git.py +0 -0
  395. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_github_pr.py +0 -0
  396. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_pr_worktree.py +0 -0
  397. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_process.py +0 -0
  398. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_repo_paths.py +0 -0
  399. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_text_schema.py +0 -0
  400. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_workspace.py +0 -0
  401. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_release_campaigns.py +0 -0
  402. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_release_qualify.py +0 -0
  403. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_reviewer_metrics_core.py +0 -0
  404. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_reviewer_spend.py +0 -0
  405. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_supervised_pilot_contract.py +0 -0
  406. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_trailer_comment_labeler.py +0 -0
  407. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_work_orders.py +0 -0
  408. {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_work_type_contract.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 1.0.11
3
+ Version: 1.0.12
4
4
  Summary: Multi-reviewer AI code audit orchestration
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/codemower-ai/code-mower
@@ -241,7 +241,7 @@ agent report its actual host posture, exact installed version, doctor result,
241
241
  Board URL, and any owner-only click-list before it mutates the repo.
242
242
 
243
243
  The current package-index announcement entry point is the tagged
244
- [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.11/docs/try-in-10-minutes.md)
244
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.12/docs/try-in-10-minutes.md)
245
245
  guide. The v1.0 supervised-pilot release includes the native Board, the
246
246
  controller dry-run and policy contract, adoption and upgrade hardening from
247
247
  recent install rehearsals, package-index release checks, provider-diversity
@@ -289,6 +289,11 @@ The v1.0.11 patch moves canonical hosted Devin release campaigns onto the
289
289
  bounded, pollable Sessions API transport and keeps macOS Claude release
290
290
  qualification inside the maintained strict sandbox by using pip's
291
291
  TLS-verifying certifi certificate path.
292
+ The v1.0.12 patch completes that Claude qualification fix: the maintained
293
+ provider qualification prompt no longer tells the agent to create its own
294
+ temporary directory, so it stays in the disposable workspace Code Mower
295
+ already created, and it states the existing contract that a result's total
296
+ `elapsed_seconds` is the sum of its step values.
292
297
  Package-only users can start from the public package rather than a source
293
298
  checkout.
294
299
 
@@ -321,7 +326,7 @@ Provider-contract baseline for the next release train:
321
326
 
322
327
  For release verification,
323
328
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
324
- the package-index procedure for `v1.0.11` / `code-mower==1.0.11`. The
329
+ the package-index procedure for `v1.0.12` / `code-mower==1.0.12`. The
325
330
  GitHub release records the workflow and rehearsal evidence for the exact tag.
326
331
  After publication, [Release Qualification](docs/release-qualification.md)
327
332
  coordinates provider-specific install and operational checks without treating
@@ -515,8 +520,8 @@ measurement work.
515
520
 
516
521
  ## Installation Status
517
522
 
518
- The current package-index release baseline is `v1.0.11`, with pinned package
519
- install spec `code-mower==1.0.11`. Release evidence is recorded on the GitHub
523
+ The current package-index release baseline is `v1.0.12`, with pinned package
524
+ install spec `code-mower==1.0.12`. Release evidence is recorded on the GitHub
520
525
  release and in the first-user install rehearsal. The public repository is
521
526
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
522
527
  GitHub releases remain the auditable source for tags, build artifacts, and
@@ -596,6 +601,7 @@ first so local work exercises the same package entrypoint users install.
596
601
  - [v1.0.9 Release Notes](docs/v109-release-notes.md)
597
602
  - [v1.0.10 Release Notes](docs/v1010-release-notes.md)
598
603
  - [v1.0.11 Release Notes](docs/v1011-release-notes.md)
604
+ - [v1.0.12 Release Notes](docs/v1012-release-notes.md)
599
605
  - [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
600
606
  - [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
601
607
  - [Demo Calibration Example](examples/demo-calibration/README.md)
@@ -211,7 +211,7 @@ agent report its actual host posture, exact installed version, doctor result,
211
211
  Board URL, and any owner-only click-list before it mutates the repo.
212
212
 
213
213
  The current package-index announcement entry point is the tagged
214
- [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.11/docs/try-in-10-minutes.md)
214
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.12/docs/try-in-10-minutes.md)
215
215
  guide. The v1.0 supervised-pilot release includes the native Board, the
216
216
  controller dry-run and policy contract, adoption and upgrade hardening from
217
217
  recent install rehearsals, package-index release checks, provider-diversity
@@ -259,6 +259,11 @@ The v1.0.11 patch moves canonical hosted Devin release campaigns onto the
259
259
  bounded, pollable Sessions API transport and keeps macOS Claude release
260
260
  qualification inside the maintained strict sandbox by using pip's
261
261
  TLS-verifying certifi certificate path.
262
+ The v1.0.12 patch completes that Claude qualification fix: the maintained
263
+ provider qualification prompt no longer tells the agent to create its own
264
+ temporary directory, so it stays in the disposable workspace Code Mower
265
+ already created, and it states the existing contract that a result's total
266
+ `elapsed_seconds` is the sum of its step values.
262
267
  Package-only users can start from the public package rather than a source
263
268
  checkout.
264
269
 
@@ -291,7 +296,7 @@ Provider-contract baseline for the next release train:
291
296
 
292
297
  For release verification,
293
298
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
294
- the package-index procedure for `v1.0.11` / `code-mower==1.0.11`. The
299
+ the package-index procedure for `v1.0.12` / `code-mower==1.0.12`. The
295
300
  GitHub release records the workflow and rehearsal evidence for the exact tag.
296
301
  After publication, [Release Qualification](docs/release-qualification.md)
297
302
  coordinates provider-specific install and operational checks without treating
@@ -485,8 +490,8 @@ measurement work.
485
490
 
486
491
  ## Installation Status
487
492
 
488
- The current package-index release baseline is `v1.0.11`, with pinned package
489
- install spec `code-mower==1.0.11`. Release evidence is recorded on the GitHub
493
+ The current package-index release baseline is `v1.0.12`, with pinned package
494
+ install spec `code-mower==1.0.12`. Release evidence is recorded on the GitHub
490
495
  release and in the first-user install rehearsal. The public repository is
491
496
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
492
497
  GitHub releases remain the auditable source for tags, build artifacts, and
@@ -566,6 +571,7 @@ first so local work exercises the same package entrypoint users install.
566
571
  - [v1.0.9 Release Notes](docs/v109-release-notes.md)
567
572
  - [v1.0.10 Release Notes](docs/v1010-release-notes.md)
568
573
  - [v1.0.11 Release Notes](docs/v1011-release-notes.md)
574
+ - [v1.0.12 Release Notes](docs/v1012-release-notes.md)
569
575
  - [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
570
576
  - [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
571
577
  - [Demo Calibration Example](examples/demo-calibration/README.md)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-mower"
7
- version = "1.0.11"
7
+ version = "1.0.12"
8
8
  description = "Multi-reviewer AI code audit orchestration"
9
9
  requires-python = ">=3.12"
10
10
  readme = "README.md"
@@ -1,3 +1,3 @@
1
1
  """Code Mower package."""
2
2
 
3
- __version__ = "1.0.11"
3
+ __version__ = "1.0.12"
@@ -515,8 +515,9 @@ def build_qualification_prompt(
515
515
  verification_step = 4
516
516
  lines = [
517
517
  f"You are the {provider} release-qualification agent for Code Mower.",
518
- "Qualify exactly one release in a disposable environment you create.",
519
- "Do all work inside a fresh temporary directory; do not read or modify",
518
+ "Qualify exactly one release in the current disposable workspace.",
519
+ "Code Mower already created this workspace; do not create or change into",
520
+ "another temporary directory. Do not read or modify",
520
521
  "any existing checkout, home directory, credential file, or environment",
521
522
  "variable holding a secret. Never print secrets, tokens, file paths,",
522
523
  "commands you ran, or raw logs in your final answer.",
@@ -612,7 +613,8 @@ def build_qualification_prompt(
612
613
  "the step status strings: fail if any status is fail;",
613
614
  "pass_with_warnings if any status is warn or unavailable; otherwise",
614
615
  "pass. In particular, all-pass steps require outcome pass. No extra",
615
- "fields, no prose, no fences.",
616
+ "fields, no prose, no fences. Set total elapsed_seconds to the sum of",
617
+ "the step elapsed_seconds values (within one second for rounding).",
616
618
  ])
617
619
  return "\n".join(lines) + "\n"
618
620
 
@@ -8,7 +8,7 @@ permissions:
8
8
  contents: read
9
9
 
10
10
  env:
11
- CODE_MOWER_PACKAGE_SPEC: code-mower==1.0.11
11
+ CODE_MOWER_PACKAGE_SPEC: code-mower==1.0.12
12
12
 
13
13
  jobs:
14
14
  auto-record:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 1.0.11
3
+ Version: 1.0.12
4
4
  Summary: Multi-reviewer AI code audit orchestration
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/codemower-ai/code-mower
@@ -241,7 +241,7 @@ agent report its actual host posture, exact installed version, doctor result,
241
241
  Board URL, and any owner-only click-list before it mutates the repo.
242
242
 
243
243
  The current package-index announcement entry point is the tagged
244
- [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.11/docs/try-in-10-minutes.md)
244
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.12/docs/try-in-10-minutes.md)
245
245
  guide. The v1.0 supervised-pilot release includes the native Board, the
246
246
  controller dry-run and policy contract, adoption and upgrade hardening from
247
247
  recent install rehearsals, package-index release checks, provider-diversity
@@ -289,6 +289,11 @@ The v1.0.11 patch moves canonical hosted Devin release campaigns onto the
289
289
  bounded, pollable Sessions API transport and keeps macOS Claude release
290
290
  qualification inside the maintained strict sandbox by using pip's
291
291
  TLS-verifying certifi certificate path.
292
+ The v1.0.12 patch completes that Claude qualification fix: the maintained
293
+ provider qualification prompt no longer tells the agent to create its own
294
+ temporary directory, so it stays in the disposable workspace Code Mower
295
+ already created, and it states the existing contract that a result's total
296
+ `elapsed_seconds` is the sum of its step values.
292
297
  Package-only users can start from the public package rather than a source
293
298
  checkout.
294
299
 
@@ -321,7 +326,7 @@ Provider-contract baseline for the next release train:
321
326
 
322
327
  For release verification,
323
328
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
324
- the package-index procedure for `v1.0.11` / `code-mower==1.0.11`. The
329
+ the package-index procedure for `v1.0.12` / `code-mower==1.0.12`. The
325
330
  GitHub release records the workflow and rehearsal evidence for the exact tag.
326
331
  After publication, [Release Qualification](docs/release-qualification.md)
327
332
  coordinates provider-specific install and operational checks without treating
@@ -515,8 +520,8 @@ measurement work.
515
520
 
516
521
  ## Installation Status
517
522
 
518
- The current package-index release baseline is `v1.0.11`, with pinned package
519
- install spec `code-mower==1.0.11`. Release evidence is recorded on the GitHub
523
+ The current package-index release baseline is `v1.0.12`, with pinned package
524
+ install spec `code-mower==1.0.12`. Release evidence is recorded on the GitHub
520
525
  release and in the first-user install rehearsal. The public repository is
521
526
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
522
527
  GitHub releases remain the auditable source for tags, build artifacts, and
@@ -596,6 +601,7 @@ first so local work exercises the same package entrypoint users install.
596
601
  - [v1.0.9 Release Notes](docs/v109-release-notes.md)
597
602
  - [v1.0.10 Release Notes](docs/v1010-release-notes.md)
598
603
  - [v1.0.11 Release Notes](docs/v1011-release-notes.md)
604
+ - [v1.0.12 Release Notes](docs/v1012-release-notes.md)
599
605
  - [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
600
606
  - [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
601
607
  - [Demo Calibration Example](examples/demo-calibration/README.md)
@@ -8,7 +8,7 @@ permissions:
8
8
  contents: read
9
9
 
10
10
  env:
11
- CODE_MOWER_PACKAGE_SPEC: code-mower==1.0.11
11
+ CODE_MOWER_PACKAGE_SPEC: code-mower==1.0.12
12
12
 
13
13
  jobs:
14
14
  auto-record:
@@ -393,6 +393,10 @@ class ArgvBuilderTests(unittest.TestCase):
393
393
  for step_id in ("board", "doctor", "lanes_status", "overhead", "package_install"):
394
394
  self.assertIn(step_id, prompt)
395
395
  self.assertIn("<namespace>__<name>", prompt)
396
+ self.assertIn(
397
+ "total elapsed_seconds to the sum of\nthe step elapsed_seconds values",
398
+ prompt,
399
+ )
396
400
 
397
401
  def test_guidance_schema_enforces_step_id_taxonomy(self) -> None:
398
402
  step_id_schema = campaign_adapters.ADOPTION_RESULT_JSON_SCHEMA[
@@ -1917,6 +1921,10 @@ class ClaudeMacosCertificatePathTests(unittest.TestCase):
1917
1921
 
1918
1922
  def test_macos_claude_cold_install_uses_legacy_certs_without_ambient_pip_config(self) -> None:
1919
1923
  prompt = self._prompt("claude", "Darwin")
1924
+ self.assertIn("Code Mower already created this workspace", prompt)
1925
+ self.assertIn("do not create or change into\nanother temporary directory", prompt)
1926
+ self.assertNotIn("a disposable environment you create", prompt)
1927
+ self.assertNotIn("inside a fresh temporary directory", prompt)
1920
1928
  self.assertIn(
1921
1929
  "env -u PIP_INDEX_URL -u PIP_EXTRA_INDEX_URL PIP_CONFIG_FILE=/dev/null "
1922
1930
  ".venv/bin/python -m pip --isolated --use-deprecated=legacy-certs install",
@@ -65,7 +65,7 @@ from scripts import guard_package_workflows, privacy_scan
65
65
 
66
66
  class ReleaseHygieneTests(unittest.TestCase):
67
67
  def test_version_is_current_supervised_pilot_release(self) -> None:
68
- self.assertEqual(__version__, "1.0.11")
68
+ self.assertEqual(__version__, "1.0.12")
69
69
 
70
70
  def test_dogfood_repo_has_real_root_config(self) -> None:
71
71
  config_path = ROOT / "code-mower.yml"
@@ -216,7 +216,7 @@ class ReleaseHygieneTests(unittest.TestCase):
216
216
  self.assertIn("Cold Install Vs Upgrade", install)
217
217
  self.assertIn("Switching Between pipx And uv", install)
218
218
  self.assertIn("uv tool install --python 3.12 --reinstall --refresh-package", install)
219
- self.assertIn("code-mower==1.0.11", troubleshooting)
219
+ self.assertIn("code-mower==1.0.12", troubleshooting)
220
220
  self.assertNotIn("code-mower==0.8.0b1", troubleshooting)
221
221
  self.assertIn("pipx uninstall code-mower", install)
222
222
  for env_name in ("PIPX_HOME", "PIPX_BIN_DIR", "PIPX_LOG_DIR"):
@@ -1099,7 +1099,7 @@ exit 1
1099
1099
  )
1100
1100
 
1101
1101
  self.assertNotEqual(completed.returncode, 0)
1102
- self.assertIn("pipx install code-mower==1.0.11", completed.stderr)
1102
+ self.assertIn("pipx install code-mower==1.0.12", completed.stderr)
1103
1103
  self.assertIn("scripts/dev-python -m venv .venv", completed.stderr)
1104
1104
  self.assertIn(".venv/bin/code-mower", completed.stderr)
1105
1105
  self.assertNotIn("PYTHONPATH=src", completed.stderr)
@@ -3237,10 +3237,10 @@ jobs:
3237
3237
 
3238
3238
  cases = (
3239
3239
  (
3240
- 'CODE_MOWER_STANDALONE_REF="v1.0.11"\n',
3240
+ 'CODE_MOWER_STANDALONE_REF="v1.0.12"\n',
3241
3241
  "pass",
3242
3242
  "matches_running_package",
3243
- "v1.0.11",
3243
+ "v1.0.12",
3244
3244
  ),
3245
3245
  (
3246
3246
  'CODE_MOWER_STANDALONE_REF="v0.9.1-beta.1"\n',
@@ -3271,12 +3271,12 @@ jobs:
3271
3271
 
3272
3272
  payload = migration._standalone_pin_drift_summary(
3273
3273
  repo,
3274
- package_version="1.0.11",
3274
+ package_version="1.0.12",
3275
3275
  )
3276
3276
 
3277
3277
  self.assertEqual(payload["status"], status)
3278
3278
  self.assertEqual(payload["reason"], reason)
3279
- self.assertEqual(payload["expected_ref"], "v1.0.11")
3279
+ self.assertEqual(payload["expected_ref"], "v1.0.12")
3280
3280
  if current_ref is None:
3281
3281
  self.assertNotIn("current_ref", payload)
3282
3282
  else:
@@ -3297,7 +3297,7 @@ jobs:
3297
3297
 
3298
3298
  payload = migration._standalone_pin_drift_summary(
3299
3299
  repo,
3300
- package_version="1.0.11",
3300
+ package_version="1.0.12",
3301
3301
  )
3302
3302
 
3303
3303
  self.assertEqual(payload["status"], "warn")
@@ -3360,7 +3360,7 @@ jobs:
3360
3360
  "standalone_pin": {
3361
3361
  "status": "skip",
3362
3362
  "reason": "pin_file_absent",
3363
- "expected_ref": "v1.0.11",
3363
+ "expected_ref": "v1.0.12",
3364
3364
  },
3365
3365
  "builder_hint": {
3366
3366
  "status": "skip",
@@ -3372,7 +3372,7 @@ jobs:
3372
3372
 
3373
3373
  rendered = migration.render_setup_drift_text(payload)
3374
3374
 
3375
- self.assertIn("Standalone pin: SKIP pin_file_absent expected=v1.0.11", rendered)
3375
+ self.assertIn("Standalone pin: SKIP pin_file_absent expected=v1.0.12", rendered)
3376
3376
 
3377
3377
  def test_setup_drift_reports_builder_hint_when_builders_omitted(self) -> None:
3378
3378
  from code_mower import migration
@@ -5552,11 +5552,11 @@ printf 'repo:%s:%s:%s\\n' "${lane}" "${stdin_flag}" "${token}"
5552
5552
  (output_dir / "src/code_mower/cloud_client/dogfood.py").is_file()
5553
5553
  )
5554
5554
  self.assertIn(
5555
- 'version = "1.0.11"',
5555
+ 'version = "1.0.12"',
5556
5556
  (output_dir / "pyproject.toml").read_text(encoding="utf-8"),
5557
5557
  )
5558
5558
  self.assertIn(
5559
- '__version__ = "1.0.11"',
5559
+ '__version__ = "1.0.12"',
5560
5560
  (output_dir / "src/code_mower/__init__.py").read_text(
5561
5561
  encoding="utf-8"
5562
5562
  ),
@@ -7561,7 +7561,7 @@ def main():
7561
7561
  "pip",
7562
7562
  "install",
7563
7563
  "--no-cache-dir",
7564
- "code-mower==1.0.11",
7564
+ "code-mower==1.0.12",
7565
7565
  ]
7566
7566
 
7567
7567
  def fake_run_step(*args: object, **kwargs: object) -> subprocess.CompletedProcess[str]:
@@ -7628,7 +7628,7 @@ def main():
7628
7628
  self.assertTrue(code_mower_migration._package_spec_uses_package_index("code-mower"))
7629
7629
  self.assertTrue(
7630
7630
  code_mower_migration._package_spec_uses_package_index(
7631
- "code-mower==1.0.11"
7631
+ "code-mower==1.0.12"
7632
7632
  )
7633
7633
  )
7634
7634
  self.assertFalse(code_mower_migration._package_spec_uses_package_index("."))
@@ -7637,7 +7637,7 @@ def main():
7637
7637
  )
7638
7638
  self.assertFalse(
7639
7639
  code_mower_migration._package_spec_uses_package_index(
7640
- "git+https://github.com/codemower-ai/code-mower.git@v1.0.11"
7640
+ "git+https://github.com/codemower-ai/code-mower.git@v1.0.12"
7641
7641
  )
7642
7642
  )
7643
7643
 
@@ -7647,7 +7647,7 @@ def main():
7647
7647
 
7648
7648
  with self.assertRaisesRegex(ValueError, "--allow-package-index"):
7649
7649
  code_mower_migration.run_package_install_rehearsal(
7650
- package_spec="code-mower==1.0.11",
7650
+ package_spec="code-mower==1.0.12",
7651
7651
  work_dir=work_dir,
7652
7652
  )
7653
7653
 
@@ -7675,7 +7675,7 @@ def main():
7675
7675
  [
7676
7676
  "package-install-rehearsal",
7677
7677
  "--package-spec",
7678
- "code-mower==1.0.11",
7678
+ "code-mower==1.0.12",
7679
7679
  "--allow-package-index",
7680
7680
  "--upgrade-pip",
7681
7681
  "--pip-no-cache",
@@ -7731,10 +7731,10 @@ def main():
7731
7731
  payload = release_readiness.render_release_readiness(ROOT)
7732
7732
 
7733
7733
  self.assertEqual(payload["status"], "pass")
7734
- self.assertEqual(payload["version"], "1.0.11")
7735
- self.assertEqual(payload["release_tag"], "v1.0.11")
7736
- self.assertEqual(payload["alpha_tag"], "v1.0.11")
7737
- self.assertEqual(payload["package_index_spec"], "code-mower==1.0.11")
7734
+ self.assertEqual(payload["version"], "1.0.12")
7735
+ self.assertEqual(payload["release_tag"], "v1.0.12")
7736
+ self.assertEqual(payload["alpha_tag"], "v1.0.12")
7737
+ self.assertEqual(payload["package_index_spec"], "code-mower==1.0.12")
7738
7738
  check_ids = {check["id"]: check for check in payload["checks"]}
7739
7739
  self.assertEqual(check_ids["package-version-consistency"]["status"], "pass")
7740
7740
  self.assertEqual(
@@ -7750,9 +7750,9 @@ def main():
7750
7750
  self.assertEqual(check_ids["public-support-redaction-guidance"]["status"], "pass")
7751
7751
  commands = {action["id"]: action["command"] for action in payload["next_actions"]}
7752
7752
  urls = {action["id"]: action.get("url", "") for action in payload["next_actions"]}
7753
- self.assertIn("--ref v1.0.11", commands["dry-run-release-workflow"])
7753
+ self.assertIn("--ref v1.0.12", commands["dry-run-release-workflow"])
7754
7754
  self.assertNotIn("--ref main", commands["dry-run-release-workflow"])
7755
- self.assertIn("--ref v1.0.11", commands["publish-testpypi-candidate"])
7755
+ self.assertIn("--ref v1.0.12", commands["publish-testpypi-candidate"])
7756
7756
  self.assertNotIn("--ref main", commands["publish-testpypi-candidate"])
7757
7757
  self.assertIn("publish_testpypi=true", commands["publish-testpypi-candidate"])
7758
7758
  self.assertIn("publish_pypi=false", commands["publish-testpypi-candidate"])
@@ -7789,7 +7789,7 @@ def main():
7789
7789
  check_ids = {check["id"]: check for check in payload["checks"]}
7790
7790
  check = check_ids["materialized-package-version-consistency"]
7791
7791
  self.assertEqual(check["status"], "fail")
7792
- self.assertEqual(check["detail"]["source_version"], "1.0.11")
7792
+ self.assertEqual(check["detail"]["source_version"], "1.0.12")
7793
7793
  self.assertEqual(check["detail"]["generated_init_version"], "0.0.0")
7794
7794
 
7795
7795
  def test_public_support_docs_are_packaged_and_privacy_forward(self) -> None:
@@ -7893,20 +7893,20 @@ def main():
7893
7893
  "v1.0.0-rc.1",
7894
7894
  )
7895
7895
  self.assertEqual(
7896
- release_readiness._release_tag_for_version("1.0.11"),
7897
- "v1.0.11",
7896
+ release_readiness._release_tag_for_version("1.0.12"),
7897
+ "v1.0.12",
7898
7898
  )
7899
7899
  self.assertEqual(
7900
- code_mower_versioning.release_tag_for_version("1.0.11"),
7901
- "v1.0.11",
7900
+ code_mower_versioning.release_tag_for_version("1.0.12"),
7901
+ "v1.0.12",
7902
7902
  )
7903
7903
 
7904
7904
  def test_public_release_baseline_helpers_derive_announcement_links(self) -> None:
7905
7905
  self.assertEqual(
7906
7906
  code_mower_versioning.public_baseline_sentence(__version__),
7907
7907
  (
7908
- "The current package-index release baseline is `v1.0.11`, "
7909
- "with pinned package install spec `code-mower==1.0.11`. "
7908
+ "The current package-index release baseline is `v1.0.12`, "
7909
+ "with pinned package install spec `code-mower==1.0.12`. "
7910
7910
  "Release evidence is recorded on the GitHub release and in the "
7911
7911
  "first-user install rehearsal."
7912
7912
  ),
@@ -7915,7 +7915,7 @@ def main():
7915
7915
  code_mower_versioning.tagged_doc_url(__version__),
7916
7916
  (
7917
7917
  "https://github.com/codemower-ai/code-mower/blob/"
7918
- "v1.0.11/docs/try-in-10-minutes.md"
7918
+ "v1.0.12/docs/try-in-10-minutes.md"
7919
7919
  ),
7920
7920
  )
7921
7921
 
@@ -7968,15 +7968,15 @@ def main():
7968
7968
  )
7969
7969
 
7970
7970
  current_status = (
7971
- "The current package-index release baseline is `v1.0.11`, with "
7972
- "pinned package install spec `code-mower==1.0.11`. Release "
7971
+ "The current package-index release baseline is `v1.0.12`, with "
7972
+ "pinned package install spec `code-mower==1.0.12`. Release "
7973
7973
  "evidence is recorded on the GitHub release and in the first-user "
7974
7974
  "install rehearsal."
7975
7975
  )
7976
7976
  for text in (readme, current_state, rollout):
7977
7977
  self.assertIn(current_status, " ".join(text.split()))
7978
7978
  self.assertIn(
7979
- "The current package-index release entrypoint is `code-mower==1.0.11`",
7979
+ "The current package-index release entrypoint is `code-mower==1.0.12`",
7980
7980
  public_release,
7981
7981
  )
7982
7982
  self.assertIn("The v1.0 supervised-pilot release includes", public_release)
@@ -7986,7 +7986,7 @@ def main():
7986
7986
  )
7987
7987
 
7988
7988
  self.assertIn(
7989
- "The current public-release baseline is `v1.0.11`",
7989
+ "The current public-release baseline is `v1.0.12`",
7990
7990
  oss_checklist,
7991
7991
  )
7992
7992
  self.assertIn(
@@ -8017,7 +8017,7 @@ def main():
8017
8017
  " ".join(first_user.split()),
8018
8018
  )
8019
8019
  self.assertIn("never substitute mutable `main`", first_user)
8020
- self.assertEqual(first_user.count(" --ref v1.0.11 \\"), 2)
8020
+ self.assertEqual(first_user.count(" --ref v1.0.12 \\"), 2)
8021
8021
  self.assertNotIn(" --ref main \\", first_user)
8022
8022
  self.assertIn("-f publish_testpypi=true", first_user)
8023
8023
  self.assertIn("-f publish_pypi=false", first_user)
@@ -8029,23 +8029,23 @@ def main():
8029
8029
  first_user,
8030
8030
  )
8031
8031
  self.assertNotIn(
8032
- "The latest public-package rehearsal for `v1.0.11` was run",
8032
+ "The latest public-package rehearsal for `v1.0.12` was run",
8033
8033
  first_user,
8034
8034
  )
8035
- self.assertNotIn("TestPyPI is not\npublished for `1.0.11`", first_user)
8035
+ self.assertNotIn("TestPyPI is not\npublished for `1.0.12`", first_user)
8036
8036
  for text in (readme, current_state, rollout):
8037
8037
  self.assertNotIn(
8038
- "published on PyPI as `code-mower==1.0.11`",
8038
+ "published on PyPI as `code-mower==1.0.12`",
8039
8039
  text,
8040
8040
  )
8041
8041
  self.assertNotIn(
8042
8042
  "latest 10/10 public-package readiness proof for "
8043
- "`code-mower==1.0.11`",
8043
+ "`code-mower==1.0.12`",
8044
8044
  text,
8045
8045
  )
8046
8046
  self.assertNotIn(
8047
8047
  "public PyPI package-install rehearsal from "
8048
- "`code-mower==1.0.11`",
8048
+ "`code-mower==1.0.12`",
8049
8049
  text,
8050
8050
  )
8051
8051
  self.assertNotIn("beta.52: 10/10 first-user readiness", text)
@@ -8345,7 +8345,7 @@ def main():
8345
8345
 
8346
8346
  self.assertIn("Python 3.12 or newer", install)
8347
8347
  self.assertIn('pipx install --python "$CODE_MOWER_PYTHON"', install)
8348
- self.assertIn("uv tool install --python 3.12 code-mower==1.0.11", install)
8348
+ self.assertIn("uv tool install --python 3.12 code-mower==1.0.12", install)
8349
8349
  self.assertIn(
8350
8350
  'PIP_NO_CACHE_DIR=1 pipx install --force --python "$CODE_MOWER_PYTHON"',
8351
8351
  install,
@@ -8439,7 +8439,7 @@ def main():
8439
8439
  / "v101-effectiveness-assessment.md",
8440
8440
  }
8441
8441
  stale_phrases = (
8442
- "pipx install --python python3.12 code-mower==1.0.11",
8442
+ "pipx install --python python3.12 code-mower==1.0.12",
8443
8443
  "Use only after TestPyPI passes.",
8444
8444
  "future newest betas until 1.0",
8445
8445
  "during v0.7 adoption",
@@ -8492,7 +8492,7 @@ def main():
8492
8492
  troubleshooting = (ROOT / "docs" / "troubleshooting.md").read_text(
8493
8493
  encoding="utf-8",
8494
8494
  )
8495
- release_notes = (ROOT / "docs" / "v1011-release-notes.md").read_text(
8495
+ release_notes = (ROOT / "docs" / "v1012-release-notes.md").read_text(
8496
8496
  encoding="utf-8",
8497
8497
  )
8498
8498
 
@@ -8512,6 +8512,7 @@ def main():
8512
8512
  self.assertIn("[v1.0.9 Release Notes](docs/v109-release-notes.md)", readme)
8513
8513
  self.assertIn("[v1.0.10 Release Notes](docs/v1010-release-notes.md)", readme)
8514
8514
  self.assertIn("[v1.0.11 Release Notes](docs/v1011-release-notes.md)", readme)
8515
+ self.assertIn("[v1.0.12 Release Notes](docs/v1012-release-notes.md)", readme)
8515
8516
  self.assertIn(
8516
8517
  "[v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)",
8517
8518
  readme,
@@ -8523,7 +8524,7 @@ def main():
8523
8524
  self.assertIn("Manual Audit Wrapper Fails Before Reviewing", troubleshooting)
8524
8525
  self.assertIn("OWNER/REPO:/absolute/path/to/pr-head-checkout", troubleshooting)
8525
8526
  self.assertIn("structured output", " ".join(troubleshooting.split()))
8526
- self.assertIn("Code Mower v1.0.11 Release Notes", release_notes)
8527
+ self.assertIn("Code Mower v1.0.12 Release Notes", release_notes)
8527
8528
  self.assertIn("code-mower release qualify", release_notes)
8528
8529
  self.assertIn("code-mower release campaign", release_notes)
8529
8530
  self.assertIn("code_mower.adoptionResult.v1", release_notes)
@@ -8730,7 +8731,7 @@ def main():
8730
8731
  "doctor --adoption --repo codemower-ai/code-mower",
8731
8732
  doctor_step["command"],
8732
8733
  )
8733
- self.assertIn("code-mower==1.0.11", package_step["command"])
8734
+ self.assertIn("code-mower==1.0.12", package_step["command"])
8734
8735
  self.assertIn("--allow-package-index", package_step["command"])
8735
8736
  self.assertIn("current published PyPI package", package_step["why"])
8736
8737
  self.assertIn("first_user_readiness", package_step["why"])
File without changes
File without changes
File without changes
File without changes
File without changes