code-mower 0.5.0b33__tar.gz → 0.5.0b34__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 (272) hide show
  1. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/PKG-INFO +6 -6
  2. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/README.md +5 -5
  3. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/pyproject.toml +1 -1
  4. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/__init__.py +1 -1
  5. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cli.py +1 -1
  6. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/work_orders.py +13 -10
  7. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower.egg-info/PKG-INFO +6 -6
  8. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_cloud_client.py +1 -1
  9. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_local_cli.py +2 -2
  10. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_release_hygiene.py +34 -34
  11. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_work_orders.py +32 -0
  12. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/CODE_OF_CONDUCT.md +0 -0
  13. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/LICENSE +0 -0
  14. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/MANIFEST.in +0 -0
  15. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/NOTICE +0 -0
  16. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/SUPPORT.md +0 -0
  17. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/requirements/requirements.txt +0 -0
  18. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/setup.cfg +0 -0
  19. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/adapters/__init__.py +0 -0
  20. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/adapters/_base.py +0 -0
  21. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  22. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/adapters/gitar.py +0 -0
  23. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/adapters/greptile.py +0 -0
  24. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/adapters/qodo.py +0 -0
  25. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  26. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/audit_handoff_log.py +0 -0
  27. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/audit_labeler_lib.py +0 -0
  28. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/audit_progress.py +0 -0
  29. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/blind_review_artifacts.py +0 -0
  30. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/blind_review_coordinator.py +0 -0
  31. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/bootstrap.py +0 -0
  32. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/builder_experiment.py +0 -0
  33. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/__init__.py +0 -0
  34. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/arms.py +0 -0
  35. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/auto_discovery.py +0 -0
  36. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/commands.py +0 -0
  37. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/context_inputs.py +0 -0
  38. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/corpus.py +0 -0
  39. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/effect_report.py +0 -0
  40. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/evidence.py +0 -0
  41. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/evidence_report.py +0 -0
  42. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/identity.py +0 -0
  43. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/metrics.py +0 -0
  44. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/overlap.py +0 -0
  45. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/planning.py +0 -0
  46. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/policy.py +0 -0
  47. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/results.py +0 -0
  48. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/run_results.py +0 -0
  49. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/run_status.py +0 -0
  50. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/runner.py +0 -0
  51. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/truth.py +0 -0
  52. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/calibration/value_report.py +0 -0
  53. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/checks.py +0 -0
  54. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/claude_audit_pr.py +0 -0
  55. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/claude_cli_bounce.py +0 -0
  56. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/claude_cli_environment.py +0 -0
  57. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/clear_stale.py +0 -0
  58. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud.py +0 -0
  59. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/__init__.py +0 -0
  60. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/bundle.py +0 -0
  61. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/doctor.py +0 -0
  62. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/dogfood.py +0 -0
  63. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/endpoints.py +0 -0
  64. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/errors.py +0 -0
  65. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/events.py +0 -0
  66. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/export.py +0 -0
  67. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/git_metadata.py +0 -0
  68. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/manifest.py +0 -0
  69. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/operations.py +0 -0
  70. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/reports.py +0 -0
  71. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/setup.py +0 -0
  72. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/cloud_client/upload.py +0 -0
  73. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/code_mower_calibration.py +0 -0
  74. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/code_mower_context_packs.py +0 -0
  75. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/code_mower_merge.py +0 -0
  76. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/code_mower_telemetry.py +0 -0
  77. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  78. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/codex_audit_env_preflight.py +0 -0
  79. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/codex_audit_pr.py +0 -0
  80. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  81. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  82. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/config.py +0 -0
  83. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor.py +0 -0
  84. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/__init__.py +0 -0
  85. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/cloud.py +0 -0
  86. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/common.py +0 -0
  87. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github.py +0 -0
  88. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions.py +0 -0
  89. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  90. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  91. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  92. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  93. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  94. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  95. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  96. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  97. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_api.py +0 -0
  98. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_branch.py +0 -0
  99. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_config.py +0 -0
  100. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_provider.py +0 -0
  101. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/github_repo.py +0 -0
  102. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/groups.py +0 -0
  103. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/models.py +0 -0
  104. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/output.py +0 -0
  105. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/presets.py +0 -0
  106. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/privacy.py +0 -0
  107. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  108. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  109. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  110. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_env.py +0 -0
  111. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  112. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  113. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  114. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
  115. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  116. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  117. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  118. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  119. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  120. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  121. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  122. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/providers.py +0 -0
  123. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/registry.py +0 -0
  124. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/runner.py +0 -0
  125. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/runtime.py +0 -0
  126. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  127. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  128. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  129. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/init.py +0 -0
  130. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/__init__.py +0 -0
  131. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/aider.py +0 -0
  132. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  133. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/claude.py +0 -0
  134. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/codex.py +0 -0
  135. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/devin.py +0 -0
  136. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  137. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  138. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/lane_configs/local_llm.py +0 -0
  139. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/local_llm_audit_pr.py +0 -0
  140. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/local_llm_bakeoff.py +0 -0
  141. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/local_llm_calibration.py +0 -0
  142. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/local_llm_profiles.py +0 -0
  143. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/migration.py +0 -0
  144. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/migration_install.py +0 -0
  145. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/migration_mirror.py +0 -0
  146. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/migration_readiness.py +0 -0
  147. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/migration_rehearsal.py +0 -0
  148. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/next_steps.py +0 -0
  149. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/package.py +0 -0
  150. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/package_content.py +0 -0
  151. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/package_manifest.py +0 -0
  152. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/package_paths.py +0 -0
  153. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/package_rendering.py +0 -0
  154. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/package_static.py +0 -0
  155. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/prompts.py +0 -0
  156. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_registry.py +0 -0
  157. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/__init__.py +0 -0
  158. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/comments.py +0 -0
  159. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/git.py +0 -0
  160. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/github_auth.py +0 -0
  161. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/github_pr.py +0 -0
  162. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  163. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/process.py +0 -0
  164. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/repo_paths.py +0 -0
  165. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/text_schema.py +0 -0
  166. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  167. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/provider_runners/workspace.py +0 -0
  168. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/providers/__init__.py +0 -0
  169. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/providers/local_cli.py +0 -0
  170. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/providers/provenance.py +0 -0
  171. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/release_readiness.py +0 -0
  172. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/reviewer_metrics.py +0 -0
  173. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/saas_reviewer_labeler.py +0 -0
  174. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/secrets.py +0 -0
  175. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/builder-experiment.example.json +0 -0
  176. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  177. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/calibration-corpus.json +0 -0
  178. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/code-mower.example.yml +0 -0
  179. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/context-packs.example.json +0 -0
  180. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
  181. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  182. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  183. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  184. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  185. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  186. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  187. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  188. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/product-support/code_mower +0 -0
  189. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  190. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  191. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  192. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  193. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  194. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/providers.yml +0 -0
  195. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  196. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  197. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  198. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
  199. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  200. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  201. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  202. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  203. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  204. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/trailer_comment_labeler.py +0 -0
  205. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower/versioning.py +0 -0
  206. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower.egg-info/SOURCES.txt +0 -0
  207. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower.egg-info/dependency_links.txt +0 -0
  208. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower.egg-info/entry_points.txt +0 -0
  209. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower.egg-info/requires.txt +0 -0
  210. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/src/code_mower.egg-info/top_level.txt +0 -0
  211. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/builder-experiment.example.json +0 -0
  212. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/calibration-corpus.example.json +0 -0
  213. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/calibration-corpus.json +0 -0
  214. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/code-mower.yml.j2 +0 -0
  215. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/context-packs.example.json +0 -0
  216. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/cursor/BUGBOT.md +0 -0
  217. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/acp_bridge.yml +0 -0
  218. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/aider.yml +0 -0
  219. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/antigravity_cli.yml +0 -0
  220. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/claude_audit.yml +0 -0
  221. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/claude_review.yml +0 -0
  222. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/coderabbit_cli.yml +0 -0
  223. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/codex.yml +0 -0
  224. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/cursor_bugbot.yml +0 -0
  225. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/devin.yml +0 -0
  226. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/gemini_cli.yml +0 -0
  227. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/gitar.yml +0 -0
  228. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/greptile.yml +0 -0
  229. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/hermes_cli.yml +0 -0
  230. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/local_llm.yml +0 -0
  231. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers/qodo.yml +0 -0
  232. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/providers.yml +0 -0
  233. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/reviewer-spend.example.json +0 -0
  234. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/reviewer-value-report.example.md +0 -0
  235. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  236. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  237. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/hosted-bridge.yml.j2 +0 -0
  238. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  239. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  240. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  241. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  242. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  243. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_calibration_effect_report.py +0 -0
  244. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_calibration_truth.py +0 -0
  245. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_checks.py +0 -0
  246. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_claude_cli_bounce.py +0 -0
  247. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_clear_stale.py +0 -0
  248. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_cloud_git_metadata.py +0 -0
  249. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_cloud_manifest.py +0 -0
  250. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_cloud_reports.py +0 -0
  251. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  252. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_actions_cost_summary.py +0 -0
  253. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_actions_failure_selection.py +0 -0
  254. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_boundaries.py +0 -0
  255. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_github_checks.py +0 -0
  256. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_output.py +0 -0
  257. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_privacy.py +0 -0
  258. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_provider_env_required.py +0 -0
  259. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_provider_env_tokens.py +0 -0
  260. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_provider_probe.py +0 -0
  261. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_provider_review_hygiene.py +0 -0
  262. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_doctor_registry.py +0 -0
  263. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_local_llm_github_helpers.py +0 -0
  264. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_comments.py +0 -0
  265. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_git.py +0 -0
  266. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_github_pr.py +0 -0
  267. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_pr_worktree.py +0 -0
  268. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_process.py +0 -0
  269. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_repo_paths.py +0 -0
  270. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_text_schema.py +0 -0
  271. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_provider_runners_workspace.py +0 -0
  272. {code_mower-0.5.0b33 → code_mower-0.5.0b34}/tests/test_reviewer_metrics_core.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 0.5.0b33
3
+ Version: 0.5.0b34
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.0b33
106
+ pipx install --python python3.12 code-mower==0.5.0b34
107
107
  code-mower --version
108
108
  ```
109
109
 
110
- `0.5.0b33` is a beta release. Until Code Mower publishes a stable `1.0`
110
+ `0.5.0b34` 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
@@ -150,7 +150,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
150
150
 
151
151
  The current PyPI beta has been rehearsed end-to-end from a clean install:
152
152
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
153
- the latest 10/10 public-package readiness proof for `code-mower==0.5.0b33`.
153
+ the latest 10/10 public-package readiness proof for `code-mower==0.5.0b34`.
154
154
 
155
155
  ## Optional: Plan Before Coding
156
156
 
@@ -291,9 +291,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
291
291
 
292
292
  ## Installation Status
293
293
 
294
- The current public beta is `v0.5.0-beta.33` from
294
+ The current public beta is `v0.5.0-beta.34` from
295
295
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
296
- as `code-mower==0.5.0b33` on [PyPI](https://pypi.org/project/code-mower/).
296
+ as `code-mower==0.5.0b34` on [PyPI](https://pypi.org/project/code-mower/).
297
297
  GitHub releases remain the auditable source for tags, build artifacts, and
298
298
  release notes.
299
299
 
@@ -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.0b33
91
+ pipx install --python python3.12 code-mower==0.5.0b34
92
92
  code-mower --version
93
93
  ```
94
94
 
95
- `0.5.0b33` is a beta release. Until Code Mower publishes a stable `1.0`
95
+ `0.5.0b34` 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
@@ -135,7 +135,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
135
135
 
136
136
  The current PyPI beta has been rehearsed end-to-end from a clean install:
137
137
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
138
- the latest 10/10 public-package readiness proof for `code-mower==0.5.0b33`.
138
+ the latest 10/10 public-package readiness proof for `code-mower==0.5.0b34`.
139
139
 
140
140
  ## Optional: Plan Before Coding
141
141
 
@@ -276,9 +276,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
276
276
 
277
277
  ## Installation Status
278
278
 
279
- The current public beta is `v0.5.0-beta.33` from
279
+ The current public beta is `v0.5.0-beta.34` from
280
280
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
281
- as `code-mower==0.5.0b33` on [PyPI](https://pypi.org/project/code-mower/).
281
+ as `code-mower==0.5.0b34` on [PyPI](https://pypi.org/project/code-mower/).
282
282
  GitHub releases remain the auditable source for tags, build artifacts, and
283
283
  release notes.
284
284
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-mower"
7
- version = "0.5.0b33"
7
+ version = "0.5.0b34"
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.0b33"
3
+ __version__ = "0.5.0b34"
@@ -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.0b33`, or run source checkouts with "
17
+ "`pipx install code-mower==0.5.0b34`, or run source checkouts with "
18
18
  "`PYTHONPATH=src python -m code_mower.cli`."
19
19
  )
20
20
 
@@ -1157,16 +1157,19 @@ def attach_delivery_to_work_order_event(
1157
1157
  updated["dimensions"] = dimensions
1158
1158
  updated["metrics"] = metrics
1159
1159
  _write_json(event_path, updated, force=force)
1160
- return {
1161
- "mode": "work-order-attach-delivery",
1162
- "event_path": str(event_path),
1163
- "status": updated.get("status"),
1164
- "pr_repo": dimensions.get("pr_repo", ""),
1165
- "pr_url": dimensions.get("pr_url", ""),
1166
- "pr_number": dimensions.get("pr_number", ""),
1167
- "merge_sha": dimensions.get("merge_sha", ""),
1168
- "reviewer_check_count": metrics.get("reviewer_check_count", 0),
1169
- }
1160
+ response = dict(updated)
1161
+ response.update(
1162
+ {
1163
+ "mode": "work-order-attach-delivery",
1164
+ "event_path": str(event_path),
1165
+ "pr_repo": dimensions.get("pr_repo", ""),
1166
+ "pr_url": dimensions.get("pr_url", ""),
1167
+ "pr_number": dimensions.get("pr_number", ""),
1168
+ "merge_sha": dimensions.get("merge_sha", ""),
1169
+ "reviewer_check_count": metrics.get("reviewer_check_count", 0),
1170
+ }
1171
+ )
1172
+ return response
1170
1173
 
1171
1174
 
1172
1175
  def render_work_order(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 0.5.0b33
3
+ Version: 0.5.0b34
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.0b33
106
+ pipx install --python python3.12 code-mower==0.5.0b34
107
107
  code-mower --version
108
108
  ```
109
109
 
110
- `0.5.0b33` is a beta release. Until Code Mower publishes a stable `1.0`
110
+ `0.5.0b34` 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
@@ -150,7 +150,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
150
150
 
151
151
  The current PyPI beta has been rehearsed end-to-end from a clean install:
152
152
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
153
- the latest 10/10 public-package readiness proof for `code-mower==0.5.0b33`.
153
+ the latest 10/10 public-package readiness proof for `code-mower==0.5.0b34`.
154
154
 
155
155
  ## Optional: Plan Before Coding
156
156
 
@@ -291,9 +291,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
291
291
 
292
292
  ## Installation Status
293
293
 
294
- The current public beta is `v0.5.0-beta.33` from
294
+ The current public beta is `v0.5.0-beta.34` from
295
295
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
296
- as `code-mower==0.5.0b33` on [PyPI](https://pypi.org/project/code-mower/).
296
+ as `code-mower==0.5.0b34` on [PyPI](https://pypi.org/project/code-mower/).
297
297
  GitHub releases remain the auditable source for tags, build artifacts, and
298
298
  release notes.
299
299
 
@@ -361,7 +361,7 @@ def test_provenance_summary_preserves_source_quality_fields() -> None:
361
361
  "tool": {
362
362
  "role": "reporter",
363
363
  "tool_name": "code-mower",
364
- "tool_version": "0.5.0b33",
364
+ "tool_version": "0.5.0b34",
365
365
  "provider": "code-mower",
366
366
  "model": "",
367
367
  "model_source": "not_applicable",
@@ -436,11 +436,11 @@ def test_provider_lane_tool_provenance_reads_model_from_selected_profile(
436
436
  def test_code_mower_reporter_provenance_marks_model_not_applicable() -> None:
437
437
  tool = build_code_mower_tool_provenance(
438
438
  source="unit-test",
439
- version="0.5.0b33",
439
+ version="0.5.0b34",
440
440
  )
441
441
 
442
442
  assert tool["tool_name"] == "code-mower"
443
- assert tool["tool_version"] == "0.5.0b33"
443
+ assert tool["tool_version"] == "0.5.0b34"
444
444
  assert tool["provider"] == "code-mower"
445
445
  assert tool["model"] == ""
446
446
  assert tool["model_source"] == "not_applicable"
@@ -49,7 +49,7 @@ from scripts import privacy_scan
49
49
 
50
50
  class ReleaseHygieneTests(unittest.TestCase):
51
51
  def test_version_is_current_v05_prerelease(self) -> None:
52
- self.assertEqual(__version__, "0.5.0b33")
52
+ self.assertEqual(__version__, "0.5.0b34")
53
53
 
54
54
  def test_release_workflow_verifies_downloaded_distributions_before_publish(self) -> None:
55
55
  workflow = (ROOT / ".github/workflows/release.yml").read_text(encoding="utf-8")
@@ -203,7 +203,7 @@ class ReleaseHygieneTests(unittest.TestCase):
203
203
  self.assertIn(
204
204
  (
205
205
  "code-mower migration package-install-rehearsal --package-spec "
206
- "code-mower==0.5.0b33 --json"
206
+ "code-mower==0.5.0b34 --json"
207
207
  ),
208
208
  help_text,
209
209
  )
@@ -1622,8 +1622,8 @@ printf '%s\\n' "${lane}"
1622
1622
  fromlist=["current_alpha_package_spec"],
1623
1623
  )
1624
1624
  self.assertEqual(
1625
- legacy_module.current_alpha_package_spec("0.5.0b33"),
1626
- "code-mower==0.5.0b33",
1625
+ legacy_module.current_alpha_package_spec("0.5.0b34"),
1626
+ "code-mower==0.5.0b34",
1627
1627
  )
1628
1628
  finally:
1629
1629
  sys.path[:] = original_path
@@ -1660,7 +1660,7 @@ printf '%s\\n' "${lane}"
1660
1660
  "-c",
1661
1661
  (
1662
1662
  "from tools import code_mower_package_content as c; "
1663
- "print(c.current_alpha_package_spec('0.5.0b33'))"
1663
+ "print(c.current_alpha_package_spec('0.5.0b34'))"
1664
1664
  ),
1665
1665
  ],
1666
1666
  cwd=tmp_path,
@@ -1673,7 +1673,7 @@ printf '%s\\n' "${lane}"
1673
1673
  self.assertEqual(completed.returncode, 0, completed.stderr)
1674
1674
  self.assertEqual(
1675
1675
  completed.stdout.strip(),
1676
- "code-mower==0.5.0b33",
1676
+ "code-mower==0.5.0b34",
1677
1677
  )
1678
1678
 
1679
1679
  def test_package_rendering_legacy_fallback_stays_valid_yaml_subset(self) -> None:
@@ -1749,11 +1749,11 @@ printf '%s\\n' "${lane}"
1749
1749
  (output_dir / "src/code_mower/cloud_client/dogfood.py").is_file()
1750
1750
  )
1751
1751
  self.assertIn(
1752
- 'version = "0.5.0b33"',
1752
+ 'version = "0.5.0b34"',
1753
1753
  (output_dir / "pyproject.toml").read_text(encoding="utf-8"),
1754
1754
  )
1755
1755
  self.assertIn(
1756
- '__version__ = "0.5.0b33"',
1756
+ '__version__ = "0.5.0b34"',
1757
1757
  (output_dir / "src/code_mower/__init__.py").read_text(
1758
1758
  encoding="utf-8"
1759
1759
  ),
@@ -3288,7 +3288,7 @@ def main():
3288
3288
  {
3289
3289
  "status": "pass",
3290
3290
  "package_spec": "code-mower",
3291
- "version": "code-mower 0.5.0b33",
3291
+ "version": "code-mower 0.5.0b34",
3292
3292
  "work_dir": "/tmp/code-mower-rehearsal",
3293
3293
  "toy_repo": "/tmp/code-mower-rehearsal/toy-repo",
3294
3294
  "step_count": 1,
@@ -3400,7 +3400,7 @@ def main():
3400
3400
  scorecard = code_mower_migration._first_user_readiness_scorecard(
3401
3401
  toy_repo=toy_repo,
3402
3402
  outputs=outputs,
3403
- version="code-mower 0.5.0b33",
3403
+ version="code-mower 0.5.0b34",
3404
3404
  steps=[
3405
3405
  {
3406
3406
  "command": ["code-mower", "doctor", "--easy", "--json"],
@@ -3479,7 +3479,7 @@ def main():
3479
3479
  scorecard = code_mower_migration._first_user_readiness_scorecard(
3480
3480
  toy_repo=toy_repo,
3481
3481
  outputs=outputs,
3482
- version="code-mower 0.5.0b33",
3482
+ version="code-mower 0.5.0b34",
3483
3483
  steps=[
3484
3484
  {
3485
3485
  "command": ["code-mower", "doctor", "--easy", "--json"],
@@ -3541,7 +3541,7 @@ def main():
3541
3541
  scorecard = code_mower_migration._first_user_readiness_scorecard(
3542
3542
  toy_repo=toy_repo,
3543
3543
  outputs=outputs,
3544
- version="code-mower 0.5.0b33",
3544
+ version="code-mower 0.5.0b34",
3545
3545
  steps=[
3546
3546
  {
3547
3547
  "command": ["code-mower", "doctor", "--easy", "--json"],
@@ -3607,24 +3607,24 @@ def main():
3607
3607
  )
3608
3608
  self.assertEqual(
3609
3609
  code_mower_migration._resolve_install_package_spec(
3610
- "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.33",
3610
+ "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.34",
3611
3611
  base_dir=package,
3612
3612
  ),
3613
- "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.33",
3613
+ "git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.34",
3614
3614
  )
3615
3615
  self.assertEqual(
3616
3616
  code_mower_migration._resolve_install_package_spec(
3617
- "code-mower==0.5.0b33",
3617
+ "code-mower==0.5.0b34",
3618
3618
  base_dir=package,
3619
3619
  ),
3620
- "code-mower==0.5.0b33",
3620
+ "code-mower==0.5.0b34",
3621
3621
  )
3622
3622
 
3623
3623
  def test_package_install_rehearsal_supports_index_aware_pip_install(self) -> None:
3624
3624
  self.assertEqual(
3625
3625
  code_mower_migration._pip_install_command(
3626
3626
  Path("/tmp/venv/bin/python"),
3627
- "code-mower==0.5.0b33",
3627
+ "code-mower==0.5.0b34",
3628
3628
  pip_index_url="https://test.pypi.org/simple/",
3629
3629
  pip_extra_index_urls=["https://pypi.org/simple/"],
3630
3630
  ),
@@ -3637,7 +3637,7 @@ def main():
3637
3637
  "https://test.pypi.org/simple/",
3638
3638
  "--extra-index-url",
3639
3639
  "https://pypi.org/simple/",
3640
- "code-mower==0.5.0b33",
3640
+ "code-mower==0.5.0b34",
3641
3641
  ],
3642
3642
  )
3643
3643
 
@@ -3657,10 +3657,10 @@ def main():
3657
3657
  payload = release_readiness.render_release_readiness(ROOT)
3658
3658
 
3659
3659
  self.assertEqual(payload["status"], "pass")
3660
- self.assertEqual(payload["version"], "0.5.0b33")
3661
- self.assertEqual(payload["release_tag"], "v0.5.0-beta.33")
3662
- self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.33")
3663
- self.assertEqual(payload["package_index_spec"], "code-mower==0.5.0b33")
3660
+ self.assertEqual(payload["version"], "0.5.0b34")
3661
+ self.assertEqual(payload["release_tag"], "v0.5.0-beta.34")
3662
+ self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.34")
3663
+ self.assertEqual(payload["package_index_spec"], "code-mower==0.5.0b34")
3664
3664
  check_ids = {check["id"]: check for check in payload["checks"]}
3665
3665
  self.assertEqual(check_ids["package-version-consistency"]["status"], "pass")
3666
3666
  self.assertEqual(
@@ -3709,7 +3709,7 @@ def main():
3709
3709
  check_ids = {check["id"]: check for check in payload["checks"]}
3710
3710
  check = check_ids["materialized-package-version-consistency"]
3711
3711
  self.assertEqual(check["status"], "fail")
3712
- self.assertEqual(check["detail"]["source_version"], "0.5.0b33")
3712
+ self.assertEqual(check["detail"]["source_version"], "0.5.0b34")
3713
3713
  self.assertEqual(check["detail"]["generated_init_version"], "0.0.0")
3714
3714
 
3715
3715
  def test_public_support_docs_are_packaged_and_privacy_forward(self) -> None:
@@ -3789,20 +3789,20 @@ def main():
3789
3789
 
3790
3790
  def test_release_readiness_tag_derivation_supports_release_stages(self) -> None:
3791
3791
  self.assertEqual(
3792
- release_readiness._release_tag_for_version("0.5.0b33"),
3793
- "v0.5.0-beta.33",
3792
+ release_readiness._release_tag_for_version("0.5.0b34"),
3793
+ "v0.5.0-beta.34",
3794
3794
  )
3795
3795
  self.assertEqual(
3796
- code_mower_versioning.release_tag_for_version("0.5.0b33"),
3797
- "v0.5.0-beta.33",
3796
+ code_mower_versioning.release_tag_for_version("0.5.0b34"),
3797
+ "v0.5.0-beta.34",
3798
3798
  )
3799
3799
  self.assertEqual(
3800
- release_readiness._release_tag_for_version("0.5.0b33"),
3801
- "v0.5.0-beta.33",
3800
+ release_readiness._release_tag_for_version("0.5.0b34"),
3801
+ "v0.5.0-beta.34",
3802
3802
  )
3803
3803
  self.assertEqual(
3804
- code_mower_versioning.release_tag_for_version("0.5.0b33"),
3805
- "v0.5.0-beta.33",
3804
+ code_mower_versioning.release_tag_for_version("0.5.0b34"),
3805
+ "v0.5.0-beta.34",
3806
3806
  )
3807
3807
  self.assertEqual(
3808
3808
  release_readiness._release_tag_for_version("1.0.0rc1"),
@@ -3831,8 +3831,8 @@ def main():
3831
3831
  next_steps.current_alpha_package_spec(),
3832
3832
  )
3833
3833
  self.assertEqual(
3834
- code_mower_package_content.current_alpha_package_spec("0.5.0b33"),
3835
- "code-mower==0.5.0b33",
3834
+ code_mower_package_content.current_alpha_package_spec("0.5.0b34"),
3835
+ "code-mower==0.5.0b34",
3836
3836
  )
3837
3837
  self.assertNotIn(next_steps.current_public_tag(), package_content_text)
3838
3838
  self.assertNotIn("v0.0.0", package_content_text)
@@ -4004,7 +4004,7 @@ def main():
4004
4004
  step for step in plan["steps"] if step["id"] == "package-install-rehearsal"
4005
4005
  )
4006
4006
  self.assertIn("doctor --v05", doctor_step["command"])
4007
- self.assertIn("code-mower==0.5.0b33", package_step["command"])
4007
+ self.assertIn("code-mower==0.5.0b34", package_step["command"])
4008
4008
  self.assertIn("current published PyPI prerelease", package_step["why"])
4009
4009
  self.assertIn("first_user_readiness", package_step["why"])
4010
4010
  self.assertEqual(
@@ -420,6 +420,13 @@ class WorkOrderTests(unittest.TestCase):
420
420
  title="Full lineage capture",
421
421
  source_text="Tie issue planning to PR delivery evidence.",
422
422
  repo="owner/repo",
423
+ source={
424
+ "type": "issue_plan",
425
+ "repo": "owner/repo",
426
+ "issue_number": "274",
427
+ "issue_url": "https://github.com/owner/repo/issues/274",
428
+ "issue_plan_file": "issue-plan.json",
429
+ },
423
430
  output=root / "work-order.md",
424
431
  )
425
432
  event_path = Path(work_order["cloud_event_path"])
@@ -435,8 +442,21 @@ class WorkOrderTests(unittest.TestCase):
435
442
  )
436
443
 
437
444
  self.assertEqual(payload["status"], "merged")
445
+ self.assertEqual(payload["schema"], work_orders.BENCHMARK_EVENT_SCHEMA)
446
+ self.assertEqual(payload["event_type"], "work_order")
447
+ self.assertEqual(payload["dimensions"]["issue_number"], "274")
448
+ self.assertEqual(
449
+ payload["dimensions"]["issue_url"], "https://github.com/owner/repo/issues/274"
450
+ )
451
+ self.assertEqual(payload["dimensions"]["work_order_slug"], "full-lineage-capture")
452
+ self.assertEqual(payload["dimensions"]["pr_repo"], "owner/repo")
453
+ self.assertEqual(payload["dimensions"]["pr_url"], "https://github.com/owner/repo/pull/12")
454
+ self.assertEqual(payload["metrics"]["reviewer_check_count"], 2)
455
+ self.assertEqual(payload["reviewer_check_count"], 2)
438
456
  event = json.loads(event_path.read_text(encoding="utf-8"))
439
457
  self.assertEqual(event["status"], "merged")
458
+ self.assertEqual(event, {key: payload[key] for key in event.keys()})
459
+ self.assertEqual(event["dimensions"]["issue_number"], "274")
440
460
  self.assertEqual(event["dimensions"]["pr_repo"], "owner/repo")
441
461
  self.assertEqual(event["dimensions"]["pr_url"], "https://github.com/owner/repo/pull/12")
442
462
  self.assertEqual(event["dimensions"]["pull_request_number"], "12")
@@ -493,7 +513,10 @@ class WorkOrderTests(unittest.TestCase):
493
513
 
494
514
  self.assertEqual(exit_code, 0)
495
515
  payload = json.loads(out.getvalue())
516
+ self.assertEqual(payload["event_type"], "work_order")
496
517
  self.assertEqual(payload["reviewer_check_count"], 2)
518
+ self.assertEqual(payload["dimensions"]["pr_state"], "MERGED")
519
+ self.assertEqual(payload["dimensions"]["merge_commit"], "abc123def456")
497
520
  event = json.loads(event_path.read_text(encoding="utf-8"))
498
521
  self.assertEqual(event["dimensions"]["pr_state"], "MERGED")
499
522
  self.assertEqual(event["dimensions"]["merge_commit"], "abc123def456")
@@ -532,9 +555,12 @@ class WorkOrderTests(unittest.TestCase):
532
555
 
533
556
  self.assertEqual(exit_code, 0)
534
557
  payload = json.loads(out.getvalue())
558
+ self.assertEqual(payload["event_type"], "work_order")
535
559
  self.assertEqual(payload["pr_repo"], "owner/repo")
536
560
  self.assertEqual(payload["pr_url"], "https://github.com/owner/repo/pull/12")
537
561
  self.assertEqual(payload["pr_number"], "12")
562
+ self.assertEqual(payload["dimensions"]["pr_repo"], "owner/repo")
563
+ self.assertEqual(payload["dimensions"]["pr_url"], "https://github.com/owner/repo/pull/12")
538
564
  event = json.loads(event_path.read_text(encoding="utf-8"))
539
565
  self.assertEqual(event["status"], "pr-linked")
540
566
  self.assertEqual(event["dimensions"]["pr_repo"], "owner/repo")
@@ -571,8 +597,14 @@ class WorkOrderTests(unittest.TestCase):
571
597
 
572
598
  self.assertEqual(exit_code, 0)
573
599
  payload = json.loads(out.getvalue())
600
+ self.assertEqual(payload["event_type"], "work_order")
574
601
  self.assertEqual(payload["pr_repo"], "github.example.com/owner/repo")
575
602
  self.assertEqual(payload["pr_url"], "https://github.example.com/owner/repo/pull/12")
603
+ self.assertEqual(payload["dimensions"]["pr_repo"], "github.example.com/owner/repo")
604
+ self.assertEqual(
605
+ payload["dimensions"]["pr_url"],
606
+ "https://github.example.com/owner/repo/pull/12",
607
+ )
576
608
  event = json.loads(event_path.read_text(encoding="utf-8"))
577
609
  self.assertEqual(event["dimensions"]["pr_repo"], "github.example.com/owner/repo")
578
610
  self.assertEqual(event["dimensions"]["pr_url"], "https://github.example.com/owner/repo/pull/12")
File without changes
File without changes
File without changes
File without changes
File without changes