code-mower 1.3.0__tar.gz → 1.3.1__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 (462) hide show
  1. {code_mower-1.3.0 → code_mower-1.3.1}/PKG-INFO +9 -7
  2. {code_mower-1.3.0 → code_mower-1.3.1}/README.md +8 -6
  3. {code_mower-1.3.0 → code_mower-1.3.1}/pyproject.toml +1 -1
  4. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/__init__.py +1 -1
  5. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_delivery.py +106 -20
  6. code_mower-1.3.1/src/code_mower/context_guided.py +454 -0
  7. code_mower-1.3.1/src/code_mower/context_prepare.py +461 -0
  8. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_readiness.py +3 -3
  9. code_mower-1.3.1/src/code_mower/context_session.py +481 -0
  10. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_manifest.py +9 -0
  11. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/session.py +226 -6
  12. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
  13. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/work_orders.py +3 -0
  14. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/PKG-INFO +9 -7
  15. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/SOURCES.txt +6 -0
  16. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/builder-provenance.yml.j2 +1 -1
  17. code_mower-1.3.1/tests/test_context_guided.py +396 -0
  18. code_mower-1.3.1/tests/test_context_prepare.py +357 -0
  19. code_mower-1.3.1/tests/test_context_session.py +321 -0
  20. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_participant_sessions.py +1 -1
  21. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_release_hygiene.py +47 -47
  22. {code_mower-1.3.0 → code_mower-1.3.1}/CODE_OF_CONDUCT.md +0 -0
  23. {code_mower-1.3.0 → code_mower-1.3.1}/LICENSE +0 -0
  24. {code_mower-1.3.0 → code_mower-1.3.1}/MANIFEST.in +0 -0
  25. {code_mower-1.3.0 → code_mower-1.3.1}/NOTICE +0 -0
  26. {code_mower-1.3.0 → code_mower-1.3.1}/SUPPORT.md +0 -0
  27. {code_mower-1.3.0 → code_mower-1.3.1}/requirements/requirements.txt +0 -0
  28. {code_mower-1.3.0 → code_mower-1.3.1}/setup.cfg +0 -0
  29. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/__init__.py +0 -0
  30. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/_base.py +0 -0
  31. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  32. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/gitar.py +0 -0
  33. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/greptile.py +0 -0
  34. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/qodo.py +0 -0
  35. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  36. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/antigravity_sdk_probe.py +0 -0
  37. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_handoff_log.py +0 -0
  38. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_labeler_lib.py +0 -0
  39. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_limits.py +0 -0
  40. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_progress.py +0 -0
  41. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/blind_review_artifacts.py +0 -0
  42. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/blind_review_coordinator.py +0 -0
  43. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/board.py +0 -0
  44. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/board_store.py +0 -0
  45. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/bootstrap.py +0 -0
  46. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/builder_experiment.py +0 -0
  47. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/builder_runs.py +0 -0
  48. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/__init__.py +0 -0
  49. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/arms.py +0 -0
  50. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/auto_discovery.py +0 -0
  51. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/commands.py +0 -0
  52. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/context_inputs.py +0 -0
  53. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/corpus.py +0 -0
  54. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/effect_report.py +0 -0
  55. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/evidence.py +0 -0
  56. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/evidence_report.py +0 -0
  57. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/identity.py +0 -0
  58. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/metrics.py +0 -0
  59. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/overlap.py +0 -0
  60. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/planning.py +0 -0
  61. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/policy.py +0 -0
  62. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/results.py +0 -0
  63. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/run_results.py +0 -0
  64. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/run_status.py +0 -0
  65. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/runner.py +0 -0
  66. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/truth.py +0 -0
  67. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/value_report.py +0 -0
  68. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/campaign_adapters.py +0 -0
  69. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/campaign_discovery.py +0 -0
  70. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/checks.py +0 -0
  71. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/claude_audit_pr.py +0 -0
  72. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/claude_cli_bounce.py +0 -0
  73. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/claude_cli_environment.py +0 -0
  74. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/clear_stale.py +0 -0
  75. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cli.py +0 -0
  76. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud.py +0 -0
  77. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/__init__.py +0 -0
  78. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/adoption_runs.py +0 -0
  79. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/bundle.py +0 -0
  80. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/doctor.py +0 -0
  81. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/dogfood.py +0 -0
  82. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/endpoints.py +0 -0
  83. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/errors.py +0 -0
  84. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/events.py +0 -0
  85. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/export.py +0 -0
  86. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/finding_outcomes.py +0 -0
  87. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/git_metadata.py +0 -0
  88. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/manifest.py +0 -0
  89. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/operations.py +0 -0
  90. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
  91. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/productivity.py +0 -0
  92. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/productivity_windows.py +0 -0
  93. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/reports.py +0 -0
  94. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/setup.py +0 -0
  95. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/tokens.py +0 -0
  96. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/upload.py +0 -0
  97. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/work_types.py +0 -0
  98. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_calibration.py +0 -0
  99. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_context_packs.py +0 -0
  100. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_merge.py +0 -0
  101. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_telemetry.py +0 -0
  102. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  103. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_env_preflight.py +0 -0
  104. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_pr.py +0 -0
  105. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  106. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  107. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/config.py +0 -0
  108. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_audit.py +0 -0
  109. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_command.py +0 -0
  110. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_connections.py +0 -0
  111. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_contract.py +0 -0
  112. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_packets.py +0 -0
  113. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_review.py +0 -0
  114. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_store.py +0 -0
  115. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/controller.py +0 -0
  116. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/coworker_mcp.py +0 -0
  117. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/coworker_retrieval.py +0 -0
  118. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/decisions.py +0 -0
  119. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/devin_api.py +0 -0
  120. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/devin_cli_audit_pr.py +0 -0
  121. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor.py +0 -0
  122. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/__init__.py +0 -0
  123. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/adoption.py +0 -0
  124. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/audit_limits.py +0 -0
  125. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/campaign_auth.py +0 -0
  126. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/cloud.py +0 -0
  127. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/common.py +0 -0
  128. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github.py +0 -0
  129. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions.py +0 -0
  130. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  131. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  132. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  133. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  134. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  135. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  136. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  137. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  138. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_api.py +0 -0
  139. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_branch.py +0 -0
  140. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_config.py +0 -0
  141. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_human_token.py +0 -0
  142. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_provider.py +0 -0
  143. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_repo.py +0 -0
  144. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
  145. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/groups.py +0 -0
  146. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/jira.py +0 -0
  147. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/models.py +0 -0
  148. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/output.py +0 -0
  149. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/presets.py +0 -0
  150. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/privacy.py +0 -0
  151. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  152. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  153. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  154. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_env.py +0 -0
  155. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  156. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  157. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
  158. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  159. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
  160. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  161. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  162. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  163. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  164. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  165. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  166. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  167. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/providers.py +0 -0
  168. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/registry.py +0 -0
  169. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/runner.py +0 -0
  170. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/runtime.py +0 -0
  171. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  172. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
  173. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
  174. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/file_locks.py +0 -0
  175. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/gate_health.py +0 -0
  176. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  177. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/git_identity.py +0 -0
  178. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/grok_build_audit_pr.py +0 -0
  179. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  180. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/init.py +0 -0
  181. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/jira_cloud.py +0 -0
  182. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/jira_mutations.py +0 -0
  183. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/jira_pr_sync.py +0 -0
  184. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/__init__.py +0 -0
  185. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/aider.py +0 -0
  186. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  187. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/claude.py +0 -0
  188. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/codex.py +0 -0
  189. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/devin.py +0 -0
  190. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/devin_cli.py +0 -0
  191. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  192. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/grok_build.py +0 -0
  193. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  194. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/local_llm.py +0 -0
  195. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/muse_cli.py +0 -0
  196. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_delivery.py +0 -0
  197. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_status.py +0 -0
  198. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_audit_pr.py +0 -0
  199. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_bakeoff.py +0 -0
  200. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_calibration.py +0 -0
  201. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_profiles.py +0 -0
  202. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration.py +0 -0
  203. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_install.py +0 -0
  204. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_mirror.py +0 -0
  205. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_readiness.py +0 -0
  206. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_rehearsal.py +0 -0
  207. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/muse_cli_audit_pr.py +0 -0
  208. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/next_steps.py +0 -0
  209. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package.py +0 -0
  210. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_content.py +0 -0
  211. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_paths.py +0 -0
  212. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_rendering.py +0 -0
  213. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_static.py +0 -0
  214. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/participants.py +0 -0
  215. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/plan_context.py +0 -0
  216. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/productivity_report.py +0 -0
  217. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/prompts.py +0 -0
  218. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_credentials.py +0 -0
  219. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_registry.py +0 -0
  220. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/__init__.py +0 -0
  221. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/comments.py +0 -0
  222. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/exit_codes.py +0 -0
  223. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/git.py +0 -0
  224. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/github_auth.py +0 -0
  225. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/github_pr.py +0 -0
  226. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  227. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/process.py +0 -0
  228. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/repo_paths.py +0 -0
  229. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/text_schema.py +0 -0
  230. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  231. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/workspace.py +0 -0
  232. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/providers/__init__.py +0 -0
  233. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/providers/local_cli.py +0 -0
  234. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/providers/provenance.py +0 -0
  235. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/release_campaigns.py +0 -0
  236. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/release_qualify.py +0 -0
  237. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/release_readiness.py +0 -0
  238. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/reviewer_metrics.py +0 -0
  239. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/reviewer_spend.py +0 -0
  240. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/saas_reviewer_labeler.py +0 -0
  241. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/secrets.py +0 -0
  242. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/session_lease.py +0 -0
  243. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/builder-experiment.example.json +0 -0
  244. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  245. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/calibration-corpus.json +0 -0
  246. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/code-mower.example.yml +0 -0
  247. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/context-packs.example.json +0 -0
  248. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
  249. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  250. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  251. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  252. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  253. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  254. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  255. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
  256. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  257. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/README.md +0 -0
  258. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/claude.md +0 -0
  259. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/codex.md +0 -0
  260. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/cursor.md +0 -0
  261. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/devin.md +0 -0
  262. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/generic.md +0 -0
  263. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
  264. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/code_mower +0 -0
  265. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  266. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  267. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  268. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  269. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
  270. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  271. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/status_report.py +0 -0
  272. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/providers.yml +0 -0
  273. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  274. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  275. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  276. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  277. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  278. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  279. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +0 -0
  280. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  281. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
  282. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  283. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  284. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
  285. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  286. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  287. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  288. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  289. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  290. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
  291. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/tracker_contract.py +0 -0
  292. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/tracker_queue.py +0 -0
  293. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/trailer_comment_labeler.py +0 -0
  294. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/versioning.py +0 -0
  295. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/workflow_actionlint.py +0 -0
  296. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/yaml_subset.py +0 -0
  297. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/dependency_links.txt +0 -0
  298. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/entry_points.txt +0 -0
  299. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/requires.txt +0 -0
  300. {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/top_level.txt +0 -0
  301. {code_mower-1.3.0 → code_mower-1.3.1}/templates/builder-experiment.example.json +0 -0
  302. {code_mower-1.3.0 → code_mower-1.3.1}/templates/calibration-corpus.example.json +0 -0
  303. {code_mower-1.3.0 → code_mower-1.3.1}/templates/calibration-corpus.json +0 -0
  304. {code_mower-1.3.0 → code_mower-1.3.1}/templates/code-mower.yml.j2 +0 -0
  305. {code_mower-1.3.0 → code_mower-1.3.1}/templates/context-packs.example.json +0 -0
  306. {code_mower-1.3.0 → code_mower-1.3.1}/templates/cursor/BUGBOT.md +0 -0
  307. {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/README.md +0 -0
  308. {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/claude.md +0 -0
  309. {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/codex.md +0 -0
  310. {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/cursor.md +0 -0
  311. {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/devin.md +0 -0
  312. {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/generic.md +0 -0
  313. {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/run_mac_lane.sh +0 -0
  314. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/acp_bridge.yml +0 -0
  315. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/aider.yml +0 -0
  316. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/antigravity_cli.yml +0 -0
  317. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/claude_audit.yml +0 -0
  318. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/claude_review.yml +0 -0
  319. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/coderabbit_cli.yml +0 -0
  320. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/codex.yml +0 -0
  321. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/cursor_bugbot.yml +0 -0
  322. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/cursor_cloud_agent.yml +0 -0
  323. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/devin.yml +0 -0
  324. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/devin_cli.yml +0 -0
  325. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/gemini_cli.yml +0 -0
  326. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/gitar.yml +0 -0
  327. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/greptile.yml +0 -0
  328. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/hermes_cli.yml +0 -0
  329. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/local_llm.yml +0 -0
  330. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/muse_cli.yml +0 -0
  331. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/qodo.yml +0 -0
  332. {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers.yml +0 -0
  333. {code_mower-1.3.0 → code_mower-1.3.1}/templates/reviewer-spend.example.json +0 -0
  334. {code_mower-1.3.0 → code_mower-1.3.1}/templates/reviewer-value-report.example.md +0 -0
  335. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  336. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  337. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  338. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  339. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  340. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-gate.yml.j2 +0 -0
  341. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  342. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/hosted-bridge.yml.j2 +0 -0
  343. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  344. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  345. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  346. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  347. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  348. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  349. {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  350. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_adoption_diagnostics.py +0 -0
  351. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_adoption_result_semantics.py +0 -0
  352. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_adoption_run_contract.py +0 -0
  353. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_antigravity_cli_audit_pr.py +0 -0
  354. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_antigravity_sdk_probe.py +0 -0
  355. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_audit_comment_posture.py +0 -0
  356. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_audit_limits.py +0 -0
  357. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_board.py +0 -0
  358. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_board_lease.py +0 -0
  359. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_builder_experiment.py +0 -0
  360. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_builder_identity.py +0 -0
  361. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_builder_runs.py +0 -0
  362. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_calibration_effect_report.py +0 -0
  363. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_calibration_truth.py +0 -0
  364. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_adapters.py +0 -0
  365. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_discovery.py +0 -0
  366. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_gh_auth_and_issue_binding_817.py +0 -0
  367. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_retry_evidence_711.py +0 -0
  368. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_checks.py +0 -0
  369. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_claude_audit_pr.py +0 -0
  370. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_claude_cli_bounce.py +0 -0
  371. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_clear_stale.py +0 -0
  372. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_client.py +0 -0
  373. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_git_metadata.py +0 -0
  374. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_manifest.py +0 -0
  375. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_reports.py +0 -0
  376. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  377. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_codex_audit_env_preflight.py +0 -0
  378. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_codex_audit_pr.py +0 -0
  379. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_audit.py +0 -0
  380. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_command.py +0 -0
  381. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_connections.py +0 -0
  382. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_contract.py +0 -0
  383. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_delivery.py +0 -0
  384. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_packets.py +0 -0
  385. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_readiness.py +0 -0
  386. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_review.py +0 -0
  387. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_controller.py +0 -0
  388. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_coworker_mcp.py +0 -0
  389. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_coworker_retrieval.py +0 -0
  390. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_decision_audit_integration.py +0 -0
  391. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_decisions.py +0 -0
  392. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_api.py +0 -0
  393. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_builder_lane.py +0 -0
  394. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_cli_audit_pr.py +0 -0
  395. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_provider_contract.py +0 -0
  396. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_actions_cost_summary.py +0 -0
  397. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_actions_failure_selection.py +0 -0
  398. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_boundaries.py +0 -0
  399. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_campaign_auth.py +0 -0
  400. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_campaign_readiness.py +0 -0
  401. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_github_checks.py +0 -0
  402. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_output.py +0 -0
  403. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_privacy.py +0 -0
  404. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_env_required.py +0 -0
  405. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_env_tokens.py +0 -0
  406. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_local_audit_setup.py +0 -0
  407. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_probe.py +0 -0
  408. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_review_hygiene.py +0 -0
  409. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_registry.py +0 -0
  410. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_runtime.py +0 -0
  411. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_self_hosted_runner.py +0 -0
  412. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_supervised_pilot.py +0 -0
  413. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_file_locks.py +0 -0
  414. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_fork_pr_guard.py +0 -0
  415. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_gate_automerge.py +0 -0
  416. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_gate_health.py +0 -0
  417. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_hosted_dispatch_profile.py +0 -0
  418. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_init_actionlint.py +0 -0
  419. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_init_build_loop.py +0 -0
  420. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_adoption.py +0 -0
  421. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_cloud.py +0 -0
  422. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_mutations.py +0 -0
  423. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_pr_sync.py +0 -0
  424. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_lane_delivery_contract.py +0 -0
  425. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_lane_status.py +0 -0
  426. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_local_llm_github_helpers.py +0 -0
  427. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_migration_rehearsal.py +0 -0
  428. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_migration_setup_drift.py +0 -0
  429. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_next_steps.py +0 -0
  430. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_package_install_failure_taxonomy.py +0 -0
  431. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_plan_context.py +0 -0
  432. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_pr_outcome_contract.py +0 -0
  433. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_pr_outcome_coverage.py +0 -0
  434. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_productivity_metrics_contract.py +0 -0
  435. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_productivity_report.py +0 -0
  436. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_productivity_windows.py +0 -0
  437. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_prompts.py +0 -0
  438. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_credentials.py +0 -0
  439. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_fixture_contracts.py +0 -0
  440. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_local_cli.py +0 -0
  441. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_comments.py +0 -0
  442. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_git.py +0 -0
  443. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_github_pr.py +0 -0
  444. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_pr_worktree.py +0 -0
  445. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_process.py +0 -0
  446. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_repo_paths.py +0 -0
  447. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_text_schema.py +0 -0
  448. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_workspace.py +0 -0
  449. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_release_campaigns.py +0 -0
  450. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_release_qualify.py +0 -0
  451. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_remote_qualification_failure_reason_819.py +0 -0
  452. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_reviewer_finding_outcome_contract.py +0 -0
  453. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_reviewer_metrics_core.py +0 -0
  454. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_reviewer_spend.py +0 -0
  455. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_session_lease.py +0 -0
  456. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_supervised_pilot_contract.py +0 -0
  457. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_tracker_config.py +0 -0
  458. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_tracker_contract.py +0 -0
  459. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_tracker_queue.py +0 -0
  460. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_trailer_comment_labeler.py +0 -0
  461. {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_work_orders.py +0 -0
  462. {code_mower-1.3.0 → code_mower-1.3.1}/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.3.0
3
+ Version: 1.3.1
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
@@ -63,8 +63,8 @@ Default cloud bundles exclude source code, raw diffs, raw model transcripts,
63
63
  raw stdout/stderr, auth output, and secrets.
64
64
 
65
65
  Documentation on `main` follows the source on `main`. If you install the
66
- published `code-mower==1.3.0` package, use the documentation from the matching
67
- [`v1.3.0` tag](https://github.com/codemower-ai/code-mower/tree/v1.3.0) so the
66
+ published `code-mower==1.3.1` package, use the documentation from the matching
67
+ [`v1.3.1` tag](https://github.com/codemower-ai/code-mower/tree/v1.3.1) so the
68
68
  commands and package stay aligned as development continues.
69
69
 
70
70
  ## Design Principles
@@ -259,7 +259,7 @@ agent report its actual host posture, exact installed version, doctor result,
259
259
  Board URL, and any owner-only click-list before it mutates the repo.
260
260
 
261
261
  The current package-index announcement entry point is the tagged
262
- [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.0/docs/try-in-10-minutes.md)
262
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.1/docs/try-in-10-minutes.md)
263
263
  guide. The v1.0 supervised-pilot release includes the native Board, the
264
264
  controller dry-run and policy contract, adoption and upgrade hardening from
265
265
  recent install rehearsals, package-index release checks, provider-diversity
@@ -374,7 +374,7 @@ Provider-contract baseline for the next release train:
374
374
 
375
375
  For release verification,
376
376
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
377
- the package-index procedure for `v1.3.0` / `code-mower==1.3.0`. The
377
+ the package-index procedure for `v1.3.1` / `code-mower==1.3.1`. The
378
378
  GitHub release records the workflow and rehearsal evidence for the exact tag.
379
379
  After publication, [Release Qualification](docs/release-qualification.md)
380
380
  coordinates provider-specific install and operational checks without treating
@@ -568,8 +568,8 @@ measurement work.
568
568
 
569
569
  ## Installation Status
570
570
 
571
- The current package-index release baseline is `v1.3.0`, with pinned package
572
- install spec `code-mower==1.3.0`. Release evidence is recorded on the GitHub
571
+ The current package-index release baseline is `v1.3.1`, with pinned package
572
+ install spec `code-mower==1.3.1`. Release evidence is recorded on the GitHub
573
573
  release and in the first-user install rehearsal. The public repository is
574
574
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
575
575
  GitHub releases remain the auditable source for tags, build artifacts, and
@@ -687,6 +687,8 @@ first so local work exercises the same package entrypoint users install.
687
687
  - [v1.3.0 Release Notes](docs/v130-release-notes.md)
688
688
  - [Optional Coworker Setup](docs/context-setup.md)
689
689
  - [Context Qualification and Limits](docs/v130-context-qualification.md)
690
+ - [v1.3.1 Guided Context Release Notes](docs/v131-release-notes.md)
691
+ - [v1.3.1 Guided Context Qualification](docs/v131-guided-context-qualification.md)
690
692
  - [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
691
693
  - [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
692
694
 
@@ -28,8 +28,8 @@ Default cloud bundles exclude source code, raw diffs, raw model transcripts,
28
28
  raw stdout/stderr, auth output, and secrets.
29
29
 
30
30
  Documentation on `main` follows the source on `main`. If you install the
31
- published `code-mower==1.3.0` package, use the documentation from the matching
32
- [`v1.3.0` tag](https://github.com/codemower-ai/code-mower/tree/v1.3.0) so the
31
+ published `code-mower==1.3.1` package, use the documentation from the matching
32
+ [`v1.3.1` tag](https://github.com/codemower-ai/code-mower/tree/v1.3.1) so the
33
33
  commands and package stay aligned as development continues.
34
34
 
35
35
  ## Design Principles
@@ -224,7 +224,7 @@ agent report its actual host posture, exact installed version, doctor result,
224
224
  Board URL, and any owner-only click-list before it mutates the repo.
225
225
 
226
226
  The current package-index announcement entry point is the tagged
227
- [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.0/docs/try-in-10-minutes.md)
227
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.1/docs/try-in-10-minutes.md)
228
228
  guide. The v1.0 supervised-pilot release includes the native Board, the
229
229
  controller dry-run and policy contract, adoption and upgrade hardening from
230
230
  recent install rehearsals, package-index release checks, provider-diversity
@@ -339,7 +339,7 @@ Provider-contract baseline for the next release train:
339
339
 
340
340
  For release verification,
341
341
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
342
- the package-index procedure for `v1.3.0` / `code-mower==1.3.0`. The
342
+ the package-index procedure for `v1.3.1` / `code-mower==1.3.1`. The
343
343
  GitHub release records the workflow and rehearsal evidence for the exact tag.
344
344
  After publication, [Release Qualification](docs/release-qualification.md)
345
345
  coordinates provider-specific install and operational checks without treating
@@ -533,8 +533,8 @@ measurement work.
533
533
 
534
534
  ## Installation Status
535
535
 
536
- The current package-index release baseline is `v1.3.0`, with pinned package
537
- install spec `code-mower==1.3.0`. Release evidence is recorded on the GitHub
536
+ The current package-index release baseline is `v1.3.1`, with pinned package
537
+ install spec `code-mower==1.3.1`. Release evidence is recorded on the GitHub
538
538
  release and in the first-user install rehearsal. The public repository is
539
539
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
540
540
  GitHub releases remain the auditable source for tags, build artifacts, and
@@ -652,6 +652,8 @@ first so local work exercises the same package entrypoint users install.
652
652
  - [v1.3.0 Release Notes](docs/v130-release-notes.md)
653
653
  - [Optional Coworker Setup](docs/context-setup.md)
654
654
  - [Context Qualification and Limits](docs/v130-context-qualification.md)
655
+ - [v1.3.1 Guided Context Release Notes](docs/v131-release-notes.md)
656
+ - [v1.3.1 Guided Context Qualification](docs/v131-guided-context-qualification.md)
655
657
  - [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
656
658
  - [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
657
659
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-mower"
7
- version = "1.3.0"
7
+ version = "1.3.1"
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.3.0"
3
+ __version__ = "1.3.1"
@@ -83,18 +83,31 @@ def _packet_for_binding(store, binding, recipient, *, backend=None):
83
83
  return packet
84
84
 
85
85
 
86
- def attach(store, name, handle, policy, request: ContextRequest, *, pr, head, publish, backend=None):
87
- """Publish a new input revision before any participant can use that binding.
86
+ def reserve_attachment(
87
+ store,
88
+ name,
89
+ handle,
90
+ policy,
91
+ request: ContextRequest,
92
+ *,
93
+ pr,
94
+ head,
95
+ revision=None,
96
+ backend=None,
97
+ ):
98
+ """Reserve one unpublished binding before any remote publication.
88
99
 
89
- ``publish`` is a trusted runtime callback for the selected repository/PR,
90
- never provider code. A failed publication leaves the local binding unusable.
100
+ A caller-supplied revision lets a guided session persist its intent before
101
+ touching GitHub and resume that exact intent after a crash. Repeating the
102
+ same reservation is idempotent; a conflicting reuse fails closed.
91
103
  """
92
104
  if request.recipient not in SUPPORTED_RECIPIENTS or not request.recipient.endswith(":orchestrator"):
93
105
  raise ContextError("an approved orchestrator must attach context")
94
106
  policy = normalize_policy(policy)
95
107
  packet = load_authorized(store, name, handle, policy, request, backend=backend)
96
108
  payload = packet.private_payload()
97
- revision = uuid.uuid4().hex
109
+ revision = revision or uuid.uuid4().hex
110
+ _handle(revision)
98
111
  metadata = context_review.validate({"revision": revision, "head": head, "required": policy["required"],
99
112
  "state": "available", "expires_at": payload["binding"]["expires_at"]})
100
113
  render_evidence(packet, handle)
@@ -107,30 +120,99 @@ def attach(store, name, handle, policy, request: ContextRequest, *, pr, head, pu
107
120
  if entry is None or entry["reference"] is None or entry["reference"]["sha256"] != packet.sha256:
108
121
  raise ContextError("context packet was replaced before attachment")
109
122
  deliveries = entry.setdefault("deliveries", [])
110
- if len(deliveries) >= 8:
111
- raise ContextError("context packet delivery limit reached; refresh the work item")
112
123
  binding = _binding({"schema": SCHEMA, "revision": revision, "connection": name,
113
124
  "repository": request.repository, "work_item": request.work_item, "pr": pr, "handle": handle,
114
125
  "policy": policy, "packet_sha256": packet.sha256, "metadata": metadata,
115
126
  "published": False, "feedback": {}})
116
127
  artifact = locked.artifact("d-" + revision)
117
- deliveries.append(revision)
118
- index_file.write(index)
119
- artifact.write(binding)
120
- try:
121
- publish(metadata)
122
- except Exception:
123
- # Even an uncertain remote post must not enable delivery. Reclaim
124
- # the unpublished local slot so a transient outage cannot exhaust
125
- # the packet's bounded handoff capacity.
126
- deliveries.remove(revision)
128
+ existing = artifact.read()
129
+ if existing is not None:
130
+ saved = _binding(existing)
131
+ comparable = {**saved, "published": False, "feedback": {}}
132
+ if comparable != binding:
133
+ raise ContextError("context attachment revision is already bound to different input")
134
+ if revision not in deliveries:
135
+ if len(deliveries) >= 8:
136
+ raise ContextError("context packet delivery limit reached; refresh the work item")
137
+ deliveries.append(revision)
138
+ index_file.write(index)
139
+ return saved["metadata"]
140
+ if revision not in deliveries:
141
+ if len(deliveries) >= 8:
142
+ raise ContextError("context packet delivery limit reached; refresh the work item")
143
+ deliveries.append(revision)
127
144
  index_file.write(index)
128
- artifact.delete()
129
- raise
130
- artifact.write({**binding, "published": True})
145
+ artifact.write(binding)
131
146
  return metadata
132
147
 
133
148
 
149
+ def mark_published(store, name, revision):
150
+ """Enable a reserved binding only after its exact metadata is public."""
151
+ _handle(revision)
152
+ with store.locked(name) as locked:
153
+ artifact = locked.artifact("d-" + revision)
154
+ binding = _binding(artifact.read())
155
+ if binding["connection"] != name:
156
+ raise ContextError("context attachment connection does not match its binding")
157
+ if not binding["published"]:
158
+ artifact.write({**binding, "published": True})
159
+ return binding["metadata"]
160
+
161
+
162
+ def _remove_attachment(store, name, handle, revision, *, published):
163
+ _handle(handle)
164
+ _handle(revision)
165
+ with store.locked(name) as locked:
166
+ index_file, index = _index(locked)
167
+ entry = next((item for item in index["entries"] if item["handle"] == handle), None)
168
+ artifact = locked.artifact("d-" + revision)
169
+ saved = artifact.read()
170
+ if saved is None:
171
+ if entry is not None and revision in entry.setdefault("deliveries", []):
172
+ entry["deliveries"].remove(revision)
173
+ index_file.write(index)
174
+ return
175
+ binding = _binding(saved)
176
+ if binding["published"] and not published:
177
+ raise ContextError("published context attachment cannot be abandoned")
178
+ if entry is None or revision not in entry.setdefault("deliveries", []):
179
+ raise ContextError("context attachment index is inconsistent")
180
+ entry["deliveries"].remove(revision)
181
+ index_file.write(index)
182
+ artifact.delete()
183
+
184
+
185
+ def abandon_attachment(store, name, handle, revision):
186
+ """Remove an unpublished reservation after a known pre-publication failure."""
187
+ _remove_attachment(store, name, handle, revision, published=False)
188
+
189
+
190
+ def retire_attachment(store, name, handle, revision):
191
+ """Remove a binding after its PR head is authoritatively no longer current."""
192
+ _remove_attachment(store, name, handle, revision, published=True)
193
+
194
+
195
+ def attach(store, name, handle, policy, request: ContextRequest, *, pr, head, publish, backend=None):
196
+ """Publish a new input revision before any participant can use that binding.
197
+
198
+ ``publish`` is a trusted runtime callback for the selected repository/PR,
199
+ never provider code. A failed publication leaves the local binding unusable.
200
+ """
201
+ metadata = reserve_attachment(
202
+ store, name, handle, policy, request, pr=pr, head=head, backend=backend,
203
+ )
204
+ revision = metadata["revision"]
205
+ try:
206
+ publish(metadata)
207
+ except Exception:
208
+ # Even an uncertain remote post must not enable delivery. Preserve the
209
+ # expert command's historical retry behavior; guided sessions use the
210
+ # lower-level primitives and retain their fixed intent for reconciliation.
211
+ abandon_attachment(store, name, handle, revision)
212
+ raise
213
+ return mark_published(store, name, revision)
214
+
215
+
134
216
  @dataclass(frozen=True)
135
217
  class Delivery:
136
218
  metadata: dict
@@ -140,6 +222,10 @@ class Delivery:
140
222
 
141
223
  def deliver(store, revision, *, repository, pr, head, recipient, current, backend=None):
142
224
  binding = read_binding(store, revision)
225
+ try:
226
+ current = context_review.validate(dict(current))
227
+ except (TypeError, ValueError):
228
+ raise ContextError("no trusted current context input is declared") from None
143
229
  if (not binding["published"] or binding["repository"] != repository or binding["pr"] != pr
144
230
  or binding["metadata"] != current or current["head"] != head):
145
231
  raise ContextError("context input is missing, unpublished, or no longer current")