code-mower 1.4.0__tar.gz → 1.4.2__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 (677) hide show
  1. {code_mower-1.4.0 → code_mower-1.4.2}/MANIFEST.in +1 -0
  2. {code_mower-1.4.0 → code_mower-1.4.2}/PKG-INFO +23 -16
  3. {code_mower-1.4.0 → code_mower-1.4.2}/README.md +22 -15
  4. code_mower-1.4.2/docs/acp-bridge-spike.md +48 -0
  5. code_mower-1.4.2/docs/architecture.md +205 -0
  6. code_mower-1.4.2/docs/archive/README.md +11 -0
  7. code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha4.md +106 -0
  8. code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha5.md +131 -0
  9. code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha6.md +195 -0
  10. code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha8.md +111 -0
  11. code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha9.md +135 -0
  12. code_mower-1.4.2/docs/authoring-intelligence.md +170 -0
  13. code_mower-1.4.2/docs/board-data-contract.md +958 -0
  14. code_mower-1.4.2/docs/board-qualification.md +129 -0
  15. code_mower-1.4.2/docs/board-service-lifecycle.md +324 -0
  16. code_mower-1.4.2/docs/build-loop-in-30-minutes.md +530 -0
  17. code_mower-1.4.2/docs/build-loop.md +204 -0
  18. code_mower-1.4.2/docs/builder-experiments.md +225 -0
  19. code_mower-1.4.2/docs/builders-grok-cursor.md +135 -0
  20. code_mower-1.4.2/docs/calibration-notes.md +474 -0
  21. code_mower-1.4.2/docs/calibration-pilot.md +325 -0
  22. code_mower-1.4.2/docs/cloud-benchmarking.md +133 -0
  23. code_mower-1.4.2/docs/cloud-contributor-runbook.md +229 -0
  24. code_mower-1.4.2/docs/cloud-data-contract.md +776 -0
  25. code_mower-1.4.2/docs/cloud-sharing.md +592 -0
  26. code_mower-1.4.2/docs/code-structure-roadmap.md +110 -0
  27. code_mower-1.4.2/docs/commercial-boundary.md +53 -0
  28. code_mower-1.4.2/docs/context-connections.md +175 -0
  29. code_mower-1.4.2/docs/context-delivery.md +304 -0
  30. code_mower-1.4.2/docs/context-graph-lifecycle.md +726 -0
  31. code_mower-1.4.2/docs/context-graph-queries.md +460 -0
  32. code_mower-1.4.2/docs/context-packet-schema.md +131 -0
  33. code_mower-1.4.2/docs/context-provider-contract.md +234 -0
  34. code_mower-1.4.2/docs/context-setup.md +137 -0
  35. code_mower-1.4.2/docs/current-state-and-roadmap.md +288 -0
  36. code_mower-1.4.2/docs/devin-peer-support-qualification.md +349 -0
  37. code_mower-1.4.2/docs/devin-review-parity.md +76 -0
  38. code_mower-1.4.2/docs/devin-work-orders.md +163 -0
  39. code_mower-1.4.2/docs/doctrine-lens-proof-v2.md +66 -0
  40. code_mower-1.4.2/docs/early-adopter-invite-runbook.md +104 -0
  41. code_mower-1.4.2/docs/early-adopter-v05.md +154 -0
  42. code_mower-1.4.2/docs/first-run-transcript.md +118 -0
  43. code_mower-1.4.2/docs/first-user-demo-transcript.md +83 -0
  44. code_mower-1.4.2/docs/first-user-install-rehearsal.md +407 -0
  45. code_mower-1.4.2/docs/friendly-user-rollout-v05.md +134 -0
  46. code_mower-1.4.2/docs/github-setup.md +854 -0
  47. code_mower-1.4.2/docs/graphify-evaluation.md +197 -0
  48. code_mower-1.4.2/docs/graphify-setup.md +95 -0
  49. code_mower-1.4.2/docs/install.md +349 -0
  50. code_mower-1.4.2/docs/jira-adoption-rehearsal.md +271 -0
  51. code_mower-1.4.2/docs/jira-cloud-setup.md +315 -0
  52. code_mower-1.4.2/docs/lane-promotion-policy.md +304 -0
  53. code_mower-1.4.2/docs/lanes/README.md +42 -0
  54. code_mower-1.4.2/docs/lanes/claude.md +22 -0
  55. code_mower-1.4.2/docs/lanes/codex.md +22 -0
  56. code_mower-1.4.2/docs/lanes/cursor.md +22 -0
  57. code_mower-1.4.2/docs/lanes/devin.md +41 -0
  58. code_mower-1.4.2/docs/launch-command-surface.md +103 -0
  59. code_mower-1.4.2/docs/lens-calibration-report.md +686 -0
  60. code_mower-1.4.2/docs/local-audit-runner.md +166 -0
  61. code_mower-1.4.2/docs/mirror-removal-runbook.md +213 -0
  62. code_mower-1.4.2/docs/operational-evidence.md +111 -0
  63. code_mower-1.4.2/docs/orchestrator-prompt-pack.md +274 -0
  64. code_mower-1.4.2/docs/oss-v1-checklist.md +502 -0
  65. code_mower-1.4.2/docs/package-customization.md +566 -0
  66. code_mower-1.4.2/docs/participant-qualification.md +94 -0
  67. code_mower-1.4.2/docs/planning-work-orders.md +262 -0
  68. code_mower-1.4.2/docs/post-v08-effectiveness-assessment.md +74 -0
  69. code_mower-1.4.2/docs/prd-addendum-v05-beta.md +57 -0
  70. code_mower-1.4.2/docs/privacy-threat-model.md +66 -0
  71. code_mower-1.4.2/docs/provider-calibration-scorecard.md +137 -0
  72. code_mower-1.4.2/docs/provider-diversity-provenance.md +166 -0
  73. code_mower-1.4.2/docs/provider-matrix.md +333 -0
  74. code_mower-1.4.2/docs/public-release-checklist.md +219 -0
  75. code_mower-1.4.2/docs/pypi-release.md +2223 -0
  76. code_mower-1.4.2/docs/quickstart.md +651 -0
  77. code_mower-1.4.2/docs/release-history.md +71 -0
  78. code_mower-1.4.2/docs/release-qualification.md +817 -0
  79. code_mower-1.4.2/docs/repo-strategy.md +185 -0
  80. code_mower-1.4.2/docs/reviewer-value-report.md +90 -0
  81. code_mower-1.4.2/docs/sample-doctor-output.md +103 -0
  82. code_mower-1.4.2/docs/self-hosted-mac-runner.md +439 -0
  83. code_mower-1.4.2/docs/sessions.md +566 -0
  84. code_mower-1.4.2/docs/slack-contract.md +193 -0
  85. code_mower-1.4.2/docs/slack-ingress.md +138 -0
  86. code_mower-1.4.2/docs/supervised-pilot-contract.md +145 -0
  87. code_mower-1.4.2/docs/tracker-data-contract.md +457 -0
  88. code_mower-1.4.2/docs/troubleshooting.md +347 -0
  89. code_mower-1.4.2/docs/try-in-10-minutes.md +263 -0
  90. code_mower-1.4.2/docs/upgrade-existing-repo.md +306 -0
  91. code_mower-1.4.2/docs/v06-release-notes.md +95 -0
  92. code_mower-1.4.2/docs/v06-truth-baseline.md +108 -0
  93. code_mower-1.4.2/docs/v08-release-notes.md +57 -0
  94. code_mower-1.4.2/docs/v09-release-notes.md +51 -0
  95. code_mower-1.4.2/docs/v10-release-notes.md +64 -0
  96. code_mower-1.4.2/docs/v101-effectiveness-assessment.md +75 -0
  97. code_mower-1.4.2/docs/v101-release-notes.md +74 -0
  98. code_mower-1.4.2/docs/v1010-release-notes.md +156 -0
  99. code_mower-1.4.2/docs/v1011-release-notes.md +166 -0
  100. code_mower-1.4.2/docs/v1012-release-notes.md +162 -0
  101. code_mower-1.4.2/docs/v1013-release-notes.md +175 -0
  102. code_mower-1.4.2/docs/v1014-release-notes.md +176 -0
  103. code_mower-1.4.2/docs/v1015-release-notes.md +145 -0
  104. code_mower-1.4.2/docs/v102-release-notes.md +73 -0
  105. code_mower-1.4.2/docs/v103-installation-documentation-audit.md +170 -0
  106. code_mower-1.4.2/docs/v103-release-notes.md +85 -0
  107. code_mower-1.4.2/docs/v104-installation-documentation-audit.md +6 -0
  108. code_mower-1.4.2/docs/v104-release-notes.md +88 -0
  109. code_mower-1.4.2/docs/v105-release-notes.md +90 -0
  110. code_mower-1.4.2/docs/v106-release-notes.md +100 -0
  111. code_mower-1.4.2/docs/v107-release-notes.md +116 -0
  112. code_mower-1.4.2/docs/v108-release-notes.md +124 -0
  113. code_mower-1.4.2/docs/v109-release-notes.md +119 -0
  114. code_mower-1.4.2/docs/v11-release-notes.md +124 -0
  115. code_mower-1.4.2/docs/v111-release-notes.md +73 -0
  116. code_mower-1.4.2/docs/v112-release-notes.md +49 -0
  117. code_mower-1.4.2/docs/v12-release-notes.md +63 -0
  118. code_mower-1.4.2/docs/v121-release-notes.md +52 -0
  119. code_mower-1.4.2/docs/v122-release-notes.md +61 -0
  120. code_mower-1.4.2/docs/v130-context-qualification.md +103 -0
  121. code_mower-1.4.2/docs/v130-release-notes.md +77 -0
  122. code_mower-1.4.2/docs/v131-guided-context-qualification.md +55 -0
  123. code_mower-1.4.2/docs/v131-release-notes.md +76 -0
  124. code_mower-1.4.2/docs/v140-release-notes.md +105 -0
  125. code_mower-1.4.2/docs/v140-release-runbook.md +2262 -0
  126. code_mower-1.4.2/docs/v141-qualification.md +69 -0
  127. code_mower-1.4.2/docs/v141-release-notes.md +58 -0
  128. code_mower-1.4.2/docs/v142-qualification.md +67 -0
  129. code_mower-1.4.2/docs/v142-release-notes.md +64 -0
  130. {code_mower-1.4.0 → code_mower-1.4.2}/pyproject.toml +1 -1
  131. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/__init__.py +1 -1
  132. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_labeler_lib.py +131 -22
  133. code_mower-1.4.2/src/code_mower/board.py +6488 -0
  134. code_mower-1.4.2/src/code_mower/board_local_observation.py +1030 -0
  135. code_mower-1.4.2/src/code_mower/board_observation.py +459 -0
  136. code_mower-1.4.2/src/code_mower/board_observation.schema.json +278 -0
  137. code_mower-1.4.2/src/code_mower/board_remote_observation.py +180 -0
  138. code_mower-1.4.2/src/code_mower/board_service.py +2757 -0
  139. code_mower-1.4.2/src/code_mower/branch_policy.py +229 -0
  140. code_mower-1.4.2/src/code_mower/builder_lineage.py +495 -0
  141. code_mower-1.4.2/src/code_mower/builder_lineage_producer.py +386 -0
  142. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/builder_runs.py +40 -53
  143. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/campaign_adapters.py +11 -8
  144. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/claude_audit_pr.py +116 -3
  145. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cli.py +15 -3
  146. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_pr.py +103 -2
  147. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/config.py +30 -3
  148. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_audit.py +10 -2
  149. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_command.py +15 -4
  150. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_contract.py +55 -2
  151. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_delivery.py +81 -12
  152. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_graph.py +1 -1
  153. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_graph_command.py +137 -3
  154. code_mower-1.4.2/src/code_mower/context_graph_connection.py +308 -0
  155. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_graph_lifecycle.py +1304 -130
  156. code_mower-1.4.2/src/code_mower/context_graph_query.py +1545 -0
  157. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_guided.py +164 -33
  158. code_mower-1.4.2/src/code_mower/context_packets.py +364 -0
  159. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_prepare.py +25 -17
  160. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_session.py +44 -6
  161. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_store.py +26 -0
  162. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/controller.py +17 -6
  163. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/coworker_mcp.py +48 -19
  164. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/coworker_retrieval.py +45 -6
  165. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_cli_audit_pr.py +72 -7
  166. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_readiness.py +142 -14
  167. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_review.py +27 -0
  168. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_sessions.py +14 -1
  169. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_work_orders.py +196 -19
  170. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor.py +100 -3
  171. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/__init__.py +2 -1
  172. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/adoption.py +44 -1
  173. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/campaign_auth.py +249 -3
  174. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/devin.py +2 -0
  175. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/output.py +74 -0
  176. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/runner.py +3 -0
  177. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/init.py +172 -17
  178. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_delivery.py +436 -33
  179. code_mower-1.4.2/src/code_mower/lane_handoff.py +277 -0
  180. code_mower-1.4.2/src/code_mower/lane_runtime.py +102 -0
  181. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_status.py +206 -13
  182. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration.py +95 -0
  183. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_install.py +17 -2
  184. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_rehearsal.py +10 -3
  185. code_mower-1.4.2/src/code_mower/operational_evidence.py +377 -0
  186. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package.py +26 -0
  187. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_manifest.py +39 -0
  188. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_static.py +1 -0
  189. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/participants.py +2 -0
  190. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_capabilities.py +14 -4
  191. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_registry.py +3 -0
  192. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/github_pr.py +16 -19
  193. code_mower-1.4.2/src/code_mower/provider_runners/lineage.py +106 -0
  194. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/release_campaigns.py +4 -3
  195. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/release_qualify.py +20 -5
  196. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/release_readiness.py +97 -57
  197. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/remote_session.py +158 -4
  198. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/remote_session_cli.py +17 -0
  199. code_mower-1.4.2/src/code_mower/review_authority.py +305 -0
  200. code_mower-1.4.2/src/code_mower/role_eligibility.py +203 -0
  201. code_mower-1.4.2/src/code_mower/role_eligibility.schema.json +119 -0
  202. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/saas_reviewer_labeler.py +52 -6
  203. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/session.py +106 -17
  204. code_mower-1.4.2/src/code_mower/session_current.py +321 -0
  205. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/session_lease.py +46 -14
  206. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/code-mower.example.yml +6 -0
  207. code_mower-1.4.2/src/code_mower/templates/lanes/lineage-producer.sh +15 -0
  208. {code_mower-1.4.0 → code_mower-1.4.2/src/code_mower}/templates/lanes/run_mac_lane.sh +568 -105
  209. code_mower-1.4.2/src/code_mower/templates/workflows/builder-lineage-producer.yml.j2 +49 -0
  210. code_mower-1.4.2/src/code_mower/templates/workflows/builder-provenance.yml.j2 +39 -0
  211. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +31 -17
  212. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/trailer_comment_labeler.py +20 -5
  213. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/work_orders.py +1 -1
  214. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/PKG-INFO +23 -16
  215. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/SOURCES.txt +176 -0
  216. code_mower-1.4.2/templates/lanes/lineage-producer.sh +15 -0
  217. {code_mower-1.4.0/src/code_mower → code_mower-1.4.2}/templates/lanes/run_mac_lane.sh +568 -105
  218. code_mower-1.4.2/templates/workflows/builder-lineage-producer.yml.j2 +49 -0
  219. code_mower-1.4.2/templates/workflows/builder-provenance.yml.j2 +39 -0
  220. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-gate.yml.j2 +31 -17
  221. code_mower-1.4.2/tests/test_adoption_polish_955.py +1373 -0
  222. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_audit_comment_posture.py +6 -1
  223. code_mower-1.4.2/tests/test_audit_labeler_identity.py +192 -0
  224. code_mower-1.4.2/tests/test_board.py +11907 -0
  225. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_board_lease.py +8 -3
  226. code_mower-1.4.2/tests/test_board_local_observation.py +700 -0
  227. code_mower-1.4.2/tests/test_board_observation.py +282 -0
  228. code_mower-1.4.2/tests/test_board_qualification.py +272 -0
  229. code_mower-1.4.2/tests/test_board_remote_observation.py +485 -0
  230. code_mower-1.4.2/tests/test_board_service.py +2562 -0
  231. code_mower-1.4.2/tests/test_branch_policy.py +1007 -0
  232. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_builder_identity.py +5 -5
  233. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_builder_runs.py +78 -206
  234. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_adapters.py +11 -4
  235. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_claude_audit_pr.py +25 -0
  236. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_codex_audit_pr.py +9 -0
  237. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_audit.py +80 -5
  238. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_command.py +137 -0
  239. code_mower-1.4.2/tests/test_context_delivery.py +347 -0
  240. code_mower-1.4.2/tests/test_context_graph_connection.py +721 -0
  241. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_graph_lifecycle.py +1486 -68
  242. code_mower-1.4.2/tests/test_context_graph_query.py +2032 -0
  243. code_mower-1.4.2/tests/test_context_guided.py +1152 -0
  244. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_packets.py +89 -3
  245. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_prepare.py +104 -2
  246. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_session.py +110 -0
  247. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_controller.py +6 -2
  248. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_coworker_retrieval.py +130 -3
  249. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_decision_audit_integration.py +4 -0
  250. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_builder_lane.py +249 -56
  251. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_capabilities.py +6 -7
  252. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_cli_audit_pr.py +285 -0
  253. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_review.py +193 -1
  254. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_setup_readiness.py +1 -0
  255. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_work_orders.py +53 -10
  256. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_campaign_auth.py +228 -2
  257. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_campaign_readiness.py +10 -0
  258. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_registry.py +42 -0
  259. code_mower-1.4.2/tests/test_documented_commands.py +200 -0
  260. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_init_build_loop.py +66 -34
  261. code_mower-1.4.2/tests/test_init_builders_cold_start.py +166 -0
  262. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_lane_delivery_contract.py +231 -21
  263. code_mower-1.4.2/tests/test_lane_handoff.py +359 -0
  264. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_lane_status.py +132 -0
  265. code_mower-1.4.2/tests/test_lineage_consumer_activation.py +229 -0
  266. code_mower-1.4.2/tests/test_lineage_consumer_admission.py +77 -0
  267. code_mower-1.4.2/tests/test_lineage_consumer_labels.py +233 -0
  268. code_mower-1.4.2/tests/test_lineage_consumer_projection.py +184 -0
  269. code_mower-1.4.2/tests/test_lineage_producer_artifacts.py +393 -0
  270. code_mower-1.4.2/tests/test_lineage_producer_publication.py +231 -0
  271. code_mower-1.4.2/tests/test_lineage_producer_state.py +159 -0
  272. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_migration_rehearsal.py +50 -3
  273. code_mower-1.4.2/tests/test_minimal_lineage_contract.py +246 -0
  274. code_mower-1.4.2/tests/test_minimal_lineage_packaging.py +98 -0
  275. code_mower-1.4.2/tests/test_minimal_lineage_transport.py +185 -0
  276. code_mower-1.4.2/tests/test_operational_evidence.py +317 -0
  277. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_participant_sessions.py +2 -2
  278. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_release_campaigns.py +6 -2
  279. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_release_hygiene.py +465 -249
  280. code_mower-1.4.2/tests/test_release_v141.py +296 -0
  281. code_mower-1.4.2/tests/test_release_v142.py +330 -0
  282. code_mower-1.4.2/tests/test_role_eligibility.py +451 -0
  283. code_mower-1.4.2/tests/test_session_current.py +493 -0
  284. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_work_orders.py +34 -1
  285. code_mower-1.4.0/src/code_mower/board.py +0 -2542
  286. code_mower-1.4.0/src/code_mower/context_packets.py +0 -215
  287. code_mower-1.4.0/src/code_mower/templates/workflows/builder-provenance.yml.j2 +0 -64
  288. code_mower-1.4.0/templates/workflows/builder-provenance.yml.j2 +0 -64
  289. code_mower-1.4.0/tests/test_board.py +0 -2735
  290. code_mower-1.4.0/tests/test_context_delivery.py +0 -164
  291. code_mower-1.4.0/tests/test_context_guided.py +0 -465
  292. {code_mower-1.4.0 → code_mower-1.4.2}/CODE_OF_CONDUCT.md +0 -0
  293. {code_mower-1.4.0 → code_mower-1.4.2}/LICENSE +0 -0
  294. {code_mower-1.4.0 → code_mower-1.4.2}/NOTICE +0 -0
  295. {code_mower-1.4.0 → code_mower-1.4.2}/SUPPORT.md +0 -0
  296. {code_mower-1.4.0 → code_mower-1.4.2}/requirements/requirements.txt +0 -0
  297. {code_mower-1.4.0 → code_mower-1.4.2}/setup.cfg +0 -0
  298. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/__init__.py +0 -0
  299. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/_base.py +0 -0
  300. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  301. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/gitar.py +0 -0
  302. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/greptile.py +0 -0
  303. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/qodo.py +0 -0
  304. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  305. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/antigravity_sdk_probe.py +0 -0
  306. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_handoff_log.py +0 -0
  307. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_limits.py +0 -0
  308. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_progress.py +0 -0
  309. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/blind_review_artifacts.py +0 -0
  310. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/blind_review_coordinator.py +0 -0
  311. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/board_store.py +0 -0
  312. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/bootstrap.py +0 -0
  313. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/builder_experiment.py +0 -0
  314. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/__init__.py +0 -0
  315. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/arms.py +0 -0
  316. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/auto_discovery.py +0 -0
  317. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/commands.py +0 -0
  318. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/context_inputs.py +0 -0
  319. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/corpus.py +0 -0
  320. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/effect_report.py +0 -0
  321. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/evidence.py +0 -0
  322. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/evidence_report.py +0 -0
  323. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/identity.py +0 -0
  324. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/metrics.py +0 -0
  325. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/overlap.py +0 -0
  326. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/planning.py +0 -0
  327. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/policy.py +0 -0
  328. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/results.py +0 -0
  329. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/run_results.py +0 -0
  330. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/run_status.py +0 -0
  331. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/runner.py +0 -0
  332. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/truth.py +0 -0
  333. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/value_report.py +0 -0
  334. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/campaign_discovery.py +0 -0
  335. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/checks.py +0 -0
  336. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/claude_cli_bounce.py +0 -0
  337. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/claude_cli_environment.py +0 -0
  338. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/clear_stale.py +0 -0
  339. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud.py +0 -0
  340. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/__init__.py +0 -0
  341. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/adoption_runs.py +0 -0
  342. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/bundle.py +0 -0
  343. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/doctor.py +0 -0
  344. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/dogfood.py +0 -0
  345. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/endpoints.py +0 -0
  346. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/errors.py +0 -0
  347. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/events.py +0 -0
  348. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/export.py +0 -0
  349. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/finding_outcomes.py +0 -0
  350. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/git_metadata.py +0 -0
  351. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/manifest.py +0 -0
  352. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/operations.py +0 -0
  353. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
  354. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/productivity.py +0 -0
  355. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/productivity_windows.py +0 -0
  356. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/reports.py +0 -0
  357. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/setup.py +0 -0
  358. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/tokens.py +0 -0
  359. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/upload.py +0 -0
  360. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/work_types.py +0 -0
  361. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_calibration.py +0 -0
  362. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_context_packs.py +0 -0
  363. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_merge.py +0 -0
  364. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_telemetry.py +0 -0
  365. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  366. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_env_preflight.py +0 -0
  367. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  368. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  369. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_connections.py +0 -0
  370. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_readiness.py +0 -0
  371. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_review.py +0 -0
  372. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/decisions.py +0 -0
  373. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_api.py +0 -0
  374. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/audit_limits.py +0 -0
  375. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/cloud.py +0 -0
  376. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/common.py +0 -0
  377. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github.py +0 -0
  378. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions.py +0 -0
  379. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  380. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  381. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  382. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  383. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  384. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  385. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  386. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  387. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_api.py +0 -0
  388. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_branch.py +0 -0
  389. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_config.py +0 -0
  390. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_human_token.py +0 -0
  391. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_provider.py +0 -0
  392. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_repo.py +0 -0
  393. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
  394. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/groups.py +0 -0
  395. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/jira.py +0 -0
  396. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/models.py +0 -0
  397. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/presets.py +0 -0
  398. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/privacy.py +0 -0
  399. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  400. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  401. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  402. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_env.py +0 -0
  403. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  404. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  405. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
  406. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  407. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
  408. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  409. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  410. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  411. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  412. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  413. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  414. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  415. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/providers.py +0 -0
  416. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/registry.py +0 -0
  417. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/runtime.py +0 -0
  418. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  419. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
  420. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
  421. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/file_locks.py +0 -0
  422. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/gate_health.py +0 -0
  423. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  424. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/git_identity.py +0 -0
  425. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/github_builder_evidence.py +0 -0
  426. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/grok_build_audit_pr.py +0 -0
  427. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  428. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/jira_cloud.py +0 -0
  429. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/jira_mutations.py +0 -0
  430. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/jira_pr_sync.py +0 -0
  431. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/__init__.py +0 -0
  432. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/aider.py +0 -0
  433. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  434. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/claude.py +0 -0
  435. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/codex.py +0 -0
  436. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/devin.py +0 -0
  437. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/devin_cli.py +0 -0
  438. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  439. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/grok_build.py +0 -0
  440. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  441. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/local_llm.py +0 -0
  442. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/muse_cli.py +0 -0
  443. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_cli_commands.py +0 -0
  444. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_audit_pr.py +0 -0
  445. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_bakeoff.py +0 -0
  446. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_calibration.py +0 -0
  447. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_profiles.py +0 -0
  448. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_mirror.py +0 -0
  449. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_readiness.py +0 -0
  450. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/muse_cli_audit_pr.py +0 -0
  451. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/next_steps.py +0 -0
  452. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_content.py +0 -0
  453. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_paths.py +0 -0
  454. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_rendering.py +0 -0
  455. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/plan_context.py +0 -0
  456. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/productivity_report.py +0 -0
  457. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/prompts.py +0 -0
  458. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_capabilities.schema.json +0 -0
  459. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_credentials.py +0 -0
  460. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/__init__.py +0 -0
  461. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/comments.py +0 -0
  462. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/exit_codes.py +0 -0
  463. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/git.py +0 -0
  464. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/github_auth.py +0 -0
  465. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  466. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/process.py +0 -0
  467. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/repo_paths.py +0 -0
  468. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/text_schema.py +0 -0
  469. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  470. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/workspace.py +0 -0
  471. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/providers/__init__.py +0 -0
  472. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/providers/local_cli.py +0 -0
  473. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/providers/provenance.py +0 -0
  474. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/remote_session.schema.json +0 -0
  475. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/reviewer_metrics.py +0 -0
  476. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/reviewer_spend.py +0 -0
  477. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/secrets.py +0 -0
  478. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/slack_contract.py +0 -0
  479. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/slack_contract.schema.json +0 -0
  480. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/slack_ingress.py +0 -0
  481. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/builder-experiment.example.json +0 -0
  482. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  483. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/calibration-corpus.json +0 -0
  484. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/context-packs.example.json +0 -0
  485. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
  486. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  487. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  488. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  489. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  490. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  491. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  492. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
  493. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  494. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/README.md +0 -0
  495. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/claude.md +0 -0
  496. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/codex.md +0 -0
  497. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/cursor.md +0 -0
  498. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/devin.md +0 -0
  499. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/generic.md +0 -0
  500. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/code_mower +0 -0
  501. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  502. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  503. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  504. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  505. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
  506. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  507. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/status_report.py +0 -0
  508. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/providers.yml +0 -0
  509. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  510. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  511. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/slack/app-manifest.json +0 -0
  512. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  513. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  514. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  515. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  516. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  517. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
  518. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  519. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  520. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
  521. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  522. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  523. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  524. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  525. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  526. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
  527. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/tracker_contract.py +0 -0
  528. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/tracker_queue.py +0 -0
  529. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/versioning.py +0 -0
  530. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/workflow_actionlint.py +0 -0
  531. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/yaml_subset.py +0 -0
  532. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/dependency_links.txt +0 -0
  533. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/entry_points.txt +0 -0
  534. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/requires.txt +0 -0
  535. {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/top_level.txt +0 -0
  536. {code_mower-1.4.0 → code_mower-1.4.2}/templates/builder-experiment.example.json +0 -0
  537. {code_mower-1.4.0 → code_mower-1.4.2}/templates/calibration-corpus.example.json +0 -0
  538. {code_mower-1.4.0 → code_mower-1.4.2}/templates/calibration-corpus.json +0 -0
  539. {code_mower-1.4.0 → code_mower-1.4.2}/templates/code-mower.yml.j2 +0 -0
  540. {code_mower-1.4.0 → code_mower-1.4.2}/templates/context-packs.example.json +0 -0
  541. {code_mower-1.4.0 → code_mower-1.4.2}/templates/cursor/BUGBOT.md +0 -0
  542. {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/README.md +0 -0
  543. {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/claude.md +0 -0
  544. {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/codex.md +0 -0
  545. {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/cursor.md +0 -0
  546. {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/devin.md +0 -0
  547. {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/generic.md +0 -0
  548. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/acp_bridge.yml +0 -0
  549. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/aider.yml +0 -0
  550. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/antigravity_cli.yml +0 -0
  551. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/claude_audit.yml +0 -0
  552. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/claude_review.yml +0 -0
  553. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/coderabbit_cli.yml +0 -0
  554. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/codex.yml +0 -0
  555. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/cursor_bugbot.yml +0 -0
  556. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/cursor_cloud_agent.yml +0 -0
  557. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/devin.yml +0 -0
  558. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/devin_cli.yml +0 -0
  559. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/gemini_cli.yml +0 -0
  560. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/gitar.yml +0 -0
  561. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/greptile.yml +0 -0
  562. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/hermes_cli.yml +0 -0
  563. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/local_llm.yml +0 -0
  564. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/muse_cli.yml +0 -0
  565. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/qodo.yml +0 -0
  566. {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers.yml +0 -0
  567. {code_mower-1.4.0 → code_mower-1.4.2}/templates/reviewer-spend.example.json +0 -0
  568. {code_mower-1.4.0 → code_mower-1.4.2}/templates/reviewer-value-report.example.md +0 -0
  569. {code_mower-1.4.0 → code_mower-1.4.2}/templates/slack/app-manifest.json +0 -0
  570. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  571. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  572. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  573. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  574. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  575. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  576. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/hosted-bridge.yml.j2 +0 -0
  577. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  578. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  579. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  580. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  581. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  582. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  583. {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  584. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_adoption_diagnostics.py +0 -0
  585. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_adoption_result_semantics.py +0 -0
  586. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_adoption_run_contract.py +0 -0
  587. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_antigravity_cli_audit_pr.py +0 -0
  588. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_antigravity_sdk_probe.py +0 -0
  589. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_audit_limits.py +0 -0
  590. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_builder_experiment.py +0 -0
  591. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_calibration_effect_report.py +0 -0
  592. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_calibration_truth.py +0 -0
  593. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_discovery.py +0 -0
  594. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_gh_auth_and_issue_binding_817.py +0 -0
  595. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_retry_evidence_711.py +0 -0
  596. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_checks.py +0 -0
  597. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_claude_cli_bounce.py +0 -0
  598. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_clear_stale.py +0 -0
  599. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_client.py +0 -0
  600. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_git_metadata.py +0 -0
  601. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_manifest.py +0 -0
  602. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_reports.py +0 -0
  603. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  604. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_codex_audit_env_preflight.py +0 -0
  605. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_connections.py +0 -0
  606. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_contract.py +0 -0
  607. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_graph.py +0 -0
  608. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_readiness.py +0 -0
  609. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_review.py +0 -0
  610. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_coworker_mcp.py +0 -0
  611. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_decisions.py +0 -0
  612. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_api.py +0 -0
  613. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_provider_contract.py +0 -0
  614. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_sessions.py +0 -0
  615. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_actions_cost_summary.py +0 -0
  616. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_actions_failure_selection.py +0 -0
  617. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_boundaries.py +0 -0
  618. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_github_checks.py +0 -0
  619. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_output.py +0 -0
  620. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_privacy.py +0 -0
  621. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_env_required.py +0 -0
  622. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_env_tokens.py +0 -0
  623. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_local_audit_setup.py +0 -0
  624. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_probe.py +0 -0
  625. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_review_hygiene.py +0 -0
  626. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_runtime.py +0 -0
  627. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_self_hosted_runner.py +0 -0
  628. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_supervised_pilot.py +0 -0
  629. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_documentation.py +0 -0
  630. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_file_locks.py +0 -0
  631. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_fork_pr_guard.py +0 -0
  632. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_gate_automerge.py +0 -0
  633. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_gate_health.py +0 -0
  634. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_github_builder_evidence.py +0 -0
  635. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_hosted_dispatch_profile.py +0 -0
  636. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_init_actionlint.py +0 -0
  637. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_adoption.py +0 -0
  638. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_cloud.py +0 -0
  639. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_mutations.py +0 -0
  640. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_pr_sync.py +0 -0
  641. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_local_llm_github_helpers.py +0 -0
  642. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_migration_setup_drift.py +0 -0
  643. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_next_steps.py +0 -0
  644. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_package_install_failure_taxonomy.py +0 -0
  645. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_plan_context.py +0 -0
  646. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_pr_outcome_contract.py +0 -0
  647. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_pr_outcome_coverage.py +0 -0
  648. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_productivity_metrics_contract.py +0 -0
  649. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_productivity_report.py +0 -0
  650. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_productivity_windows.py +0 -0
  651. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_prompts.py +0 -0
  652. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_credentials.py +0 -0
  653. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_fixture_contracts.py +0 -0
  654. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_local_cli.py +0 -0
  655. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_comments.py +0 -0
  656. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_git.py +0 -0
  657. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_github_pr.py +0 -0
  658. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_pr_worktree.py +0 -0
  659. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_process.py +0 -0
  660. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_repo_paths.py +0 -0
  661. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_text_schema.py +0 -0
  662. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_workspace.py +0 -0
  663. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_release_qualify.py +0 -0
  664. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_remote_qualification_failure_reason_819.py +0 -0
  665. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_remote_session.py +0 -0
  666. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_reviewer_finding_outcome_contract.py +0 -0
  667. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_reviewer_metrics_core.py +0 -0
  668. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_reviewer_spend.py +0 -0
  669. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_session_lease.py +0 -0
  670. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_slack_contract.py +0 -0
  671. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_slack_ingress.py +0 -0
  672. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_supervised_pilot_contract.py +0 -0
  673. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_tracker_config.py +0 -0
  674. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_tracker_contract.py +0 -0
  675. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_tracker_queue.py +0 -0
  676. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_trailer_comment_labeler.py +0 -0
  677. {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_work_type_contract.py +0 -0
@@ -6,6 +6,7 @@ recursive-include src/code_mower/templates/product-support *
6
6
  include src/code_mower/*.json
7
7
  recursive-include templates *.j2 *.json *.md *.yml *.yaml
8
8
  recursive-include templates/lanes *
9
+ recursive-include docs *.md
9
10
  include requirements/*.txt
10
11
  include LICENSE
11
12
  include NOTICE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 1.4.0
3
+ Version: 1.4.2
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
@@ -45,13 +45,14 @@ The current release is supervised-pilot, bring-your-own-agent-loop software.
45
45
  It is not a drop-in unattended merge gate. Humans still own credentials,
46
46
  repository policy, reviewer promotion, and exceptional decisions.
47
47
 
48
- The current package-index release baseline is `v1.4.0`, with pinned package
49
- install spec `code-mower==1.4.0`. Release evidence is recorded on the GitHub
50
- release and in the first-user install rehearsal.
48
+ The current source candidate is `v1.4.2`, with target install spec
49
+ `code-mower==1.4.2`. Publication and installed-package qualification are pending
50
+ [#952](https://github.com/codemower-ai/code-mower/issues/952). The published
51
+ `v1.4.0` and `v1.4.1` artifacts remain unchanged. Install commands below target
52
+ v1.4.2 after publication; candidate rehearsals use the exact verified artifact.
51
53
 
52
- Documentation on `main` follows the source on `main`. When using the published
53
- package, start with the
54
- [`v1.4.0` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.0/docs/try-in-10-minutes.md).
54
+ Documentation on `main` follows the source on `main`. After v1.4.2 publication, start with the
55
+ [`v1.4.2` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.2/docs/try-in-10-minutes.md).
55
56
 
56
57
  ## What Code Mower Adds
57
58
 
@@ -79,7 +80,7 @@ one stable `pipx` installation:
79
80
  ```bash
80
81
  python3.12 --version
81
82
  export CODE_MOWER_PYTHON="$(command -v python3.12)"
82
- pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.0
83
+ pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.2
83
84
  command -v code-mower
84
85
  code-mower --version
85
86
  ```
@@ -140,10 +141,16 @@ code-mower session start \
140
141
  `session start` saves an operating brief and takes the local single-orchestrator
141
142
  lease. It does not launch every selected product. The host uses the execution
142
143
  paths available for each participant and records explicit handoffs where Code
143
- Mower has no automatic transport.
144
+ Mower has no automatic transport. Later, from anywhere in the checkout,
145
+ `code-mower session show --current` finds the brief the live lease names and
146
+ `code-mower session lease show` reports the lease itself; neither changes state.
147
+ The default is 12 hours. A later process can renew or release the same session
148
+ ID with `session lease renew --session-id SESSION_ID` or `session lease release
149
+ --session-id SESSION_ID`; stop its writers before release. Use `session start
150
+ --dry-run` or `--no-lease` for read-only work.
144
151
 
145
152
  Codex, Claude Code, and Cursor are qualified for the shared session, telemetry,
146
- lease, and Jira-authority contract in v1.4.0. Devin, Grok Bot, Antigravity,
153
+ lease, and Jira-authority contract in v1.4.2. Devin, Grok Bot, Antigravity,
147
154
  Muse, and custom hosts are recognized for briefs and provenance, while their
148
155
  execution remains an explicit handoff or provider-specific transport. See
149
156
  [Participants And Sessions](docs/sessions.md) and the
@@ -251,11 +258,11 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
251
258
 
252
259
  ## Current Capabilities And Limits
253
260
 
254
- | Area | v1.4.0 posture |
261
+ | Area | v1.4.2 posture |
255
262
  | --- | --- |
256
263
  | Default builders and reviewers | Claude Code + Codex |
257
264
  | Session hosts | Codex, Claude Code, and Cursor qualified; other identities recognized but require explicit handoff/provider transport |
258
- | Devin | Maintained local builder and hosted release-qualification transport; local review remains informational and Devin is not yet a qualified peer orchestrator |
265
+ | Devin | Maintained local builder lane and an exact PR-bound hosted work-order library seam (`code_mower.devin_work_orders`, no packaged CLI command); local review remains informational and Devin is not yet a qualified peer orchestrator |
259
266
  | Organizational context | Optional Coworker delivery to approved Claude/Codex/Devin roles |
260
267
  | Work trackers | GitHub Issues by default; Jira Cloud is optional and guarded |
261
268
  | Forge and merge gate | GitHub |
@@ -264,8 +271,8 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
264
271
  | Slack | Command and authenticated bounded ingress foundation only; no Slack worker delivery, results, or orchestration authority |
265
272
 
266
273
  GitLab, Bitbucket, broad unattended rollout, uncalibrated merge gates, Devin
267
- peer-orchestrator/reviewer parity, a required Graphify dependency, and Slack
268
- worker delivery are not shipped in v1.4.0. The current priorities and
274
+ peer-orchestrator/reviewer parity, a hosted work-order CLI, a required Graphify
275
+ dependency, and Slack worker delivery are outside the v1.4.2 candidate. The current priorities and
269
276
  boundaries are recorded in
270
277
  [Current State And Roadmap](docs/current-state-and-roadmap.md).
271
278
 
@@ -278,7 +285,7 @@ boundaries are recorded in
278
285
  - [Upgrade An Existing Repository](docs/upgrade-existing-repo.md)
279
286
  - [Quickstart Reference](docs/quickstart.md)
280
287
  - [Troubleshooting](docs/troubleshooting.md)
281
- - [First Run Transcript](docs/first-run-transcript.md)
288
+ - [First Run Transcript](docs/first-run-transcript.md) (v1.4.0 illustrative shape, not the current v1.4.2 pin)
282
289
 
283
290
  ### Sessions, Builders, And Reviewers
284
291
 
@@ -320,7 +327,7 @@ boundaries are recorded in
320
327
  - [Cloud Data Contract](docs/cloud-data-contract.md)
321
328
  - [Release Qualification](docs/release-qualification.md)
322
329
  - [Public Release Checklist](docs/public-release-checklist.md)
323
- - [v1.4.0 Release Notes](docs/v140-release-notes.md)
330
+ - [v1.4.2 Release Notes](docs/v142-release-notes.md)
324
331
  - [Release History And Archived Plans](docs/release-history.md)
325
332
  - [Changelog](CHANGELOG.md)
326
333
  - [Contributing](CONTRIBUTING.md)
@@ -9,13 +9,14 @@ The current release is supervised-pilot, bring-your-own-agent-loop software.
9
9
  It is not a drop-in unattended merge gate. Humans still own credentials,
10
10
  repository policy, reviewer promotion, and exceptional decisions.
11
11
 
12
- The current package-index release baseline is `v1.4.0`, with pinned package
13
- install spec `code-mower==1.4.0`. Release evidence is recorded on the GitHub
14
- release and in the first-user install rehearsal.
12
+ The current source candidate is `v1.4.2`, with target install spec
13
+ `code-mower==1.4.2`. Publication and installed-package qualification are pending
14
+ [#952](https://github.com/codemower-ai/code-mower/issues/952). The published
15
+ `v1.4.0` and `v1.4.1` artifacts remain unchanged. Install commands below target
16
+ v1.4.2 after publication; candidate rehearsals use the exact verified artifact.
15
17
 
16
- Documentation on `main` follows the source on `main`. When using the published
17
- package, start with the
18
- [`v1.4.0` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.0/docs/try-in-10-minutes.md).
18
+ Documentation on `main` follows the source on `main`. After v1.4.2 publication, start with the
19
+ [`v1.4.2` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.2/docs/try-in-10-minutes.md).
19
20
 
20
21
  ## What Code Mower Adds
21
22
 
@@ -43,7 +44,7 @@ one stable `pipx` installation:
43
44
  ```bash
44
45
  python3.12 --version
45
46
  export CODE_MOWER_PYTHON="$(command -v python3.12)"
46
- pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.0
47
+ pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.2
47
48
  command -v code-mower
48
49
  code-mower --version
49
50
  ```
@@ -104,10 +105,16 @@ code-mower session start \
104
105
  `session start` saves an operating brief and takes the local single-orchestrator
105
106
  lease. It does not launch every selected product. The host uses the execution
106
107
  paths available for each participant and records explicit handoffs where Code
107
- Mower has no automatic transport.
108
+ Mower has no automatic transport. Later, from anywhere in the checkout,
109
+ `code-mower session show --current` finds the brief the live lease names and
110
+ `code-mower session lease show` reports the lease itself; neither changes state.
111
+ The default is 12 hours. A later process can renew or release the same session
112
+ ID with `session lease renew --session-id SESSION_ID` or `session lease release
113
+ --session-id SESSION_ID`; stop its writers before release. Use `session start
114
+ --dry-run` or `--no-lease` for read-only work.
108
115
 
109
116
  Codex, Claude Code, and Cursor are qualified for the shared session, telemetry,
110
- lease, and Jira-authority contract in v1.4.0. Devin, Grok Bot, Antigravity,
117
+ lease, and Jira-authority contract in v1.4.2. Devin, Grok Bot, Antigravity,
111
118
  Muse, and custom hosts are recognized for briefs and provenance, while their
112
119
  execution remains an explicit handoff or provider-specific transport. See
113
120
  [Participants And Sessions](docs/sessions.md) and the
@@ -215,11 +222,11 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
215
222
 
216
223
  ## Current Capabilities And Limits
217
224
 
218
- | Area | v1.4.0 posture |
225
+ | Area | v1.4.2 posture |
219
226
  | --- | --- |
220
227
  | Default builders and reviewers | Claude Code + Codex |
221
228
  | Session hosts | Codex, Claude Code, and Cursor qualified; other identities recognized but require explicit handoff/provider transport |
222
- | Devin | Maintained local builder and hosted release-qualification transport; local review remains informational and Devin is not yet a qualified peer orchestrator |
229
+ | Devin | Maintained local builder lane and an exact PR-bound hosted work-order library seam (`code_mower.devin_work_orders`, no packaged CLI command); local review remains informational and Devin is not yet a qualified peer orchestrator |
223
230
  | Organizational context | Optional Coworker delivery to approved Claude/Codex/Devin roles |
224
231
  | Work trackers | GitHub Issues by default; Jira Cloud is optional and guarded |
225
232
  | Forge and merge gate | GitHub |
@@ -228,8 +235,8 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
228
235
  | Slack | Command and authenticated bounded ingress foundation only; no Slack worker delivery, results, or orchestration authority |
229
236
 
230
237
  GitLab, Bitbucket, broad unattended rollout, uncalibrated merge gates, Devin
231
- peer-orchestrator/reviewer parity, a required Graphify dependency, and Slack
232
- worker delivery are not shipped in v1.4.0. The current priorities and
238
+ peer-orchestrator/reviewer parity, a hosted work-order CLI, a required Graphify
239
+ dependency, and Slack worker delivery are outside the v1.4.2 candidate. The current priorities and
233
240
  boundaries are recorded in
234
241
  [Current State And Roadmap](docs/current-state-and-roadmap.md).
235
242
 
@@ -242,7 +249,7 @@ boundaries are recorded in
242
249
  - [Upgrade An Existing Repository](docs/upgrade-existing-repo.md)
243
250
  - [Quickstart Reference](docs/quickstart.md)
244
251
  - [Troubleshooting](docs/troubleshooting.md)
245
- - [First Run Transcript](docs/first-run-transcript.md)
252
+ - [First Run Transcript](docs/first-run-transcript.md) (v1.4.0 illustrative shape, not the current v1.4.2 pin)
246
253
 
247
254
  ### Sessions, Builders, And Reviewers
248
255
 
@@ -284,7 +291,7 @@ boundaries are recorded in
284
291
  - [Cloud Data Contract](docs/cloud-data-contract.md)
285
292
  - [Release Qualification](docs/release-qualification.md)
286
293
  - [Public Release Checklist](docs/public-release-checklist.md)
287
- - [v1.4.0 Release Notes](docs/v140-release-notes.md)
294
+ - [v1.4.2 Release Notes](docs/v142-release-notes.md)
288
295
  - [Release History And Archived Plans](docs/release-history.md)
289
296
  - [Changelog](CHANGELOG.md)
290
297
  - [Contributing](CONTRIBUTING.md)
@@ -0,0 +1,48 @@
1
+ # Code Mower ACP Bridge Spike
2
+
3
+ Agent Client Protocol is a JSON-RPC-over-stdio protocol for driving coding-agent CLIs through a provider-neutral client. Code Mower should treat it as a research lane until one provider can run a full head-bound audit through it without weakening the existing audit invariants.
4
+
5
+ ## Goal
6
+
7
+ Replace per-provider shell-and-parse glue with one client primitive where the underlying CLI supports ACP.
8
+
9
+ The first useful proof is an informational audit lane that:
10
+
11
+ - accepts repo, PR number, head SHA, prompt lenses, and artifact output path;
12
+ - starts the configured ACP command from `CODE_MOWER_ACP_COMMAND`;
13
+ - sends the same trusted review doctrine used by other audit wrappers;
14
+ - records stdout/stderr/session metadata in a held blind-review artifact;
15
+ - emits a normal trailer-bearing audit comment only after schema validation.
16
+
17
+ Hermes Agent is a good future candidate because its documentation exposes
18
+ ACP-related surfaces. The first plain `hermes-cli` one-shot calibration now
19
+ exists and showed useful #347 signal, but also a known-clean blocker, an
20
+ infra/parse failure, and audit-input gaps on large historical diffs. That moves
21
+ Hermes from "unknown" to "interesting but not boring." ACP should reduce adapter
22
+ churn only after the provider runtime, auth, prompt, head-SHA, context-pack,
23
+ parser, and artifact contracts are already boring.
24
+
25
+ ## Non-goals
26
+
27
+ - Do not make ACP a merge-authority lane during the spike.
28
+ - Do not import long-lived conversational state into Code Mower. Audits stay stateless and head-bound.
29
+ - Do not bypass existing wrappers for providers that already have reliable structured lanes.
30
+ - Do not use ACP as a dashboard, IDE, browser, or human cockpit surface.
31
+
32
+ ## Acceptance Criteria
33
+
34
+ 1. `code-mower doctor --profile cli_research` reports the configured ACP command and protocol.
35
+ 2. A fixture-backed client test proves request/response framing without requiring a live provider.
36
+ 3. A dry-run audit can generate a held artifact without posting a merge signal.
37
+ 4. The bridge refuses to produce a done/blocked trailer when the response is missing the expected schema or head SHA.
38
+ 5. The provider catalog continues to mark `acp_bridge` as manual and informational.
39
+
40
+ ## Open Questions
41
+
42
+ - Which provider should be the first proof case?
43
+ - Does Hermes' ACP surface preserve the same stateless, head-bound audit
44
+ invariants as its one-shot CLI path?
45
+ - Can an ACP-backed Hermes proof resolve the #390 context/input gap better than
46
+ the one-shot CLI without importing long-lived session state?
47
+ - Should ACP responses use the provider's native schema, or should Code Mower require a normalized audit schema at the bridge boundary?
48
+ - Can the client capture enough token, model, and elapsed-time metadata for spend/value analytics without provider-specific code?
@@ -0,0 +1,205 @@
1
+ # Architecture
2
+
3
+ Code Mower is a local-first Python CLI plus generated GitHub support files. It
4
+ coordinates supervised AI builder and reviewer lanes, records bounded evidence,
5
+ and can optionally upload sanitized metadata to CodeMower.com.
6
+
7
+ ## Product Boundaries
8
+
9
+ Code Mower owns:
10
+
11
+ - participant and role selection;
12
+ - operating briefs, work orders, local session leases, and recovery state;
13
+ - builder provenance and delivery outcomes;
14
+ - reviewer invocation, structured verdicts, and current-head validity;
15
+ - calibration, lane-promotion evidence, and local reports;
16
+ - generated GitHub labels, workflows, gates, and support wrappers;
17
+ - guarded tracker operations; and
18
+ - explicit context and cloud-data boundaries.
19
+
20
+ Provider products still own their models, authentication, execution sandboxes,
21
+ usage charges, and product-specific sessions. GitHub remains authoritative for
22
+ pull requests, checks, and merge state. Selecting a provider does not grant it
23
+ review or merge authority.
24
+
25
+ ## Core Concepts
26
+
27
+ - **Participant:** a selected product identity such as Claude, Codex, or Devin.
28
+ - **Provider transport:** the CLI, API, GitHub app, or manual handoff used for a
29
+ participant's specific job.
30
+ - **Orchestrator:** the hosting agent by default; coordinates assignments,
31
+ evidence, reviews, and recovery.
32
+ - **Builder:** the single writer for one branch.
33
+ - **Reviewer lane:** a provider plus trigger, prompt/lens, verdict contract, and
34
+ merge posture.
35
+ - **Context provider:** a source of approved bounded evidence. It is separate
36
+ from participant roles.
37
+ - **Session:** a local operating brief, selected participants, optional work
38
+ item/context association, and single-orchestrator lease.
39
+ - **Calibration corpus:** known-clean, known-blocked, or subtle-risk cases used
40
+ to measure reviewer usefulness.
41
+ - **Builder experiment:** a source-free measurement record for an authoring
42
+ attempt and its review/merge outcome.
43
+ - **Cloud bundle:** an inspectable export that uploads only after an explicit
44
+ command.
45
+
46
+ ## Runtime Shape
47
+
48
+ ```mermaid
49
+ flowchart LR
50
+ U["CLI / hosting agent"] --> S["Session and work order"]
51
+ S --> P["Participant/provider transports"]
52
+ P --> B["Builder: one branch writer"]
53
+ P --> R["Independent reviewers"]
54
+ C["Optional context provider"] --> S
55
+ B --> G["GitHub pull request"]
56
+ R --> G
57
+ G --> M["Gate and repository merge policy"]
58
+ S --> L["Local Board, calibration, reports"]
59
+ L --> X{"Explicit cloud upload?"}
60
+ X -->|No| K["Keep local"]
61
+ X -->|Yes| H["CodeMower.com metadata"]
62
+ ```
63
+
64
+ `code-mower session start` creates the operating state and lease. It does not
65
+ act as a universal process launcher. The host invokes a maintained local or
66
+ hosted transport where one exists and otherwise records an explicit handoff.
67
+
68
+ ## Package Layout
69
+
70
+ ```text
71
+ src/code_mower/
72
+ cli.py top-level command routing
73
+ init.py, next_steps.py setup and first-run guidance
74
+ session.py participant brief and orchestrator lease
75
+ context_session.py protected guided context state
76
+ context_guided.py prepare/deliver/attach/feedback workflow
77
+ context_*.py connection, packet, delivery, and review contracts
78
+ doctor.py thin doctor CLI adapter
79
+ doctor_checks/ runtime, provider, GitHub, tracker, cloud checks
80
+ participants.py participant identity and role mapping
81
+ provider_registry.py reviewer lane metadata and posture
82
+ providers/ shared provider metadata helpers
83
+ provider_runners/ checkout, process, verdict, and GitHub primitives
84
+ lane_configs/ provider-specific lane declarations
85
+ *_audit_pr.py provider-specific audit adapters
86
+ work_orders.py planning and implementation contracts
87
+ builder_runs.py source-free builder provenance
88
+ calibration/ corpus, evidence, policy, metrics, reports
89
+ tracker_*.py, jira_*.py work-item contracts and guarded Jira operations
90
+ cloud.py, cloud_client/ export, upload, setup, and metadata operations
91
+ package_*.py, migration_*.py generated package and rehearsal support
92
+ templates/ generated config, workflows, prompts, wrappers
93
+ tests/ behavior, privacy, and release-hygiene tests
94
+ scripts/ smoke, privacy, fresh-clone, and Python helpers
95
+ docs/ current guides and historical release records
96
+ ```
97
+
98
+ Shared provider-runner modules implement stable mechanics such as isolated PR
99
+ checkouts, subprocess cleanup, verdict artifacts, and GitHub posting. Provider
100
+ adapters retain authentication, sandbox, prompt, parser, and API differences.
101
+ The goal is one role contract, not identical vendor mechanics.
102
+
103
+ ## Session And Participant Contract
104
+
105
+ Participant selection is independent from role and merge authority. A session
106
+ stores normalized participants and host identity. Repository configuration and
107
+ the reviewer registry decide which transports and review policies apply.
108
+
109
+ One local working copy can have one mutating orchestrator lease. One PR branch
110
+ can have one writer. These are different controls: the session lease prevents
111
+ two orchestrators from coordinating the same working copy, while the branch
112
+ rule prevents a reviewer or second builder from changing the owner's branch.
113
+
114
+ Codex, Claude Code, and Cursor are qualified session hosts in v1.4.0. Other host
115
+ identities can receive the same brief and telemetry shape, but Code Mower does
116
+ not claim execution parity until the relevant transport and recovery behavior
117
+ are qualified. See [Participants And Sessions](sessions.md).
118
+
119
+ ## Review And Merge Contract
120
+
121
+ Reviewers consume the PR diff and task/context contract, not the builder's raw
122
+ transcript. Structured verdicts bind to the exact PR head. When required
123
+ context is selected, they also bind to the current context input revision.
124
+
125
+ Generated workflows clear stale terminal audit labels after the head changes.
126
+ The repository gate combines current trusted verdict evidence with configured
127
+ policy. A reviewer starts informational unless its repository-specific
128
+ known-clean and known-blocked evidence supports promotion.
129
+
130
+ The private [Devin review adapters](devin-review-parity.md) normalize local CLI
131
+ and hosted v3 evidence over the existing remote lifecycle. Both remain
132
+ informational and revalidate the current head and context before consumption.
133
+
134
+ ## Context Contract
135
+
136
+ Context connections are private machine state. Repository configuration stores
137
+ only a generic connection alias and policy. Packets retain bounded evidence,
138
+ citations, provenance, expiry, and integrity metadata in a protected local
139
+ store.
140
+
141
+ The provider adapter may fetch or authorize evidence, but the common Code Mower
142
+ packet, delivery, attachment, and review contracts decide how it enters a work
143
+ order or review. Every delivery reauthorizes. Context providers gain no role or
144
+ tracker authority. See [Context Provider Contract](context-provider-contract.md).
145
+
146
+ ## Tracker Contract
147
+
148
+ `code_mower.trackerWorkItem.v1` normalizes a bounded work item. GitHub Issues is
149
+ the default. Jira Cloud is opt-in; queue reads and all writes use Code Mower's
150
+ REST transport. Writes require both repository configuration and an explicit
151
+ apply command and are revalidated against live scope. Connected Atlassian MCP
152
+ can enrich local reading but cannot authorize a mutation. See
153
+ [Work Tracker Data Contract](tracker-data-contract.md).
154
+
155
+ ## Local And Cloud Boundary
156
+
157
+ Local runners hold source, diffs, credentials, worktrees, prompts, raw provider
158
+ output, and private context. The Board reads redacted local/GitHub metadata and
159
+ serves on loopback. It does not upload data.
160
+
161
+ Cloud export is a separate explicit operation. Default uploads exclude source,
162
+ raw diffs, raw model transcripts, raw stdout/stderr, auth output, issue body
163
+ text, credentials, and private context. Provider verdict artifacts and cloud
164
+ events pass Code Mower-owned schema and privacy validation before posting or
165
+ upload. See [Cloud Data Contract](cloud-data-contract.md).
166
+
167
+ ## First-Run Flow
168
+
169
+ ```mermaid
170
+ flowchart TD
171
+ A["Install pinned package"] --> B["Preview init --easy"]
172
+ B --> C["Generate reviewable setup"]
173
+ C --> D["doctor --adoption"]
174
+ D --> E["Open setup PR"]
175
+ E --> F["Run manual Codex and Claude audits"]
176
+ F --> G["Inspect lane status and local reports"]
177
+ G --> H{"Add automation?"}
178
+ H -->|No| I["Continue manual supervised pilot"]
179
+ H -->|Yes| J["Configure dispatch, gate, and runner"]
180
+ ```
181
+
182
+ Automation credentials and auto-merge configuration follow the first manual
183
+ audit. Optional Coworker context, additional participants, Jira, and cloud
184
+ sharing are independent additions.
185
+
186
+ ## Release Validation
187
+
188
+ From a contributor checkout:
189
+
190
+ ```bash
191
+ scripts/dev-python -m venv .venv
192
+ .venv/bin/python -m pip install -e ".[test]"
193
+ .venv/bin/python -m ruff check .
194
+ .venv/bin/python -m unittest discover -s tests
195
+ .venv/bin/python scripts/privacy_scan.py
196
+ .venv/bin/python scripts/smoke_easy_mode.py \
197
+ --code-mower-bin .venv/bin/code-mower --json
198
+ .venv/bin/python scripts/fresh_clone_rehearsal.py \
199
+ --repo-url . --ref HEAD --python .venv/bin/python --json
200
+ git diff --check
201
+ ```
202
+
203
+ Package-index publication and live provider campaigns are separate release
204
+ checks. See [Public Release Checklist](public-release-checklist.md) and
205
+ [Release Qualification](release-qualification.md).
@@ -0,0 +1,11 @@
1
+ # Archived Release Rehearsals
2
+
3
+ These notes are historical release-gate evidence from the alpha line. They are
4
+ kept for maintainers who need to reconstruct how the package path evolved, but
5
+ they are not first-user documentation.
6
+
7
+ For the current install rehearsal, use
8
+ [`../first-user-install-rehearsal.md`](../first-user-install-rehearsal.md).
9
+ For the current quickstart, use [`../quickstart.md`](../quickstart.md) or
10
+ [`../try-in-10-minutes.md`](../try-in-10-minutes.md).
11
+
@@ -0,0 +1,106 @@
1
+ # v0.5.0-alpha.4 First-User Install Rehearsal
2
+
3
+ This is the recorded release-gate shape for `v0.5.0-alpha.4`. It proves the
4
+ source checkout can install, run easy mode, generate a starter value report, and
5
+ create a metadata-only cloud dry-run bundle from a fresh toy repository.
6
+
7
+ The exact temporary paths and cache output vary by machine; the important signal
8
+ is the command sequence and `status: pass` results.
9
+
10
+ ## Local Source Install
11
+
12
+ ```bash
13
+ scripts/dev-python -m venv .venv
14
+ .venv/bin/python -m pip install --upgrade pip
15
+ .venv/bin/python -m pip install -e . ruff build
16
+ .venv/bin/code-mower --version
17
+ ```
18
+
19
+ Expected output:
20
+
21
+ ```text
22
+ code-mower 0.5.0a4
23
+ ```
24
+
25
+ ## Release Gate
26
+
27
+ ```bash
28
+ .venv/bin/python -m ruff check .
29
+ .venv/bin/python scripts/privacy_scan.py
30
+ .venv/bin/python -m unittest discover -s tests
31
+ .venv/bin/python -m compileall -q src scripts
32
+ .venv/bin/python -m build
33
+ ```
34
+
35
+ Observed summary:
36
+
37
+ ```text
38
+ All checks passed!
39
+ privacy scan passed
40
+ Ran 54 tests ... OK
41
+ Successfully built code_mower-0.5.0a4.tar.gz and code_mower-0.5.0a4-py3-none-any.whl
42
+ ```
43
+
44
+ `python -m build` currently emits non-blocking warnings about the deprecated
45
+ `project.license` table form and broad YAML include patterns. The alpha.4 build
46
+ also verifies bytecode caches are excluded from the wheel even after
47
+ `compileall` runs.
48
+
49
+ ## Easy-Mode Smoke
50
+
51
+ ```bash
52
+ .venv/bin/python scripts/smoke_easy_mode.py \
53
+ --code-mower-bin .venv/bin/code-mower \
54
+ --json
55
+ ```
56
+
57
+ Observed summary:
58
+
59
+ ```json
60
+ {
61
+ "mode": "code-mower-easy-mode-smoke",
62
+ "status": "pass"
63
+ }
64
+ ```
65
+
66
+ The smoke covers:
67
+
68
+ - `code-mower providers list`
69
+ - `code-mower init --easy --apply`
70
+ - generated `smoke-tests.sh`
71
+ - `code-mower doctor --easy --json`
72
+ - wrapper rehearsal
73
+ - calibration plan/evidence/metrics/policy/value-report
74
+ - cloud export
75
+ - cloud upload dry run
76
+
77
+ ## Fresh-Clone Rehearsal
78
+
79
+ After committing the alpha.4 changes, run:
80
+
81
+ ```bash
82
+ .venv/bin/python scripts/fresh_clone_rehearsal.py \
83
+ --repo-url /absolute/path/to/code-mower \
84
+ --ref HEAD \
85
+ --python .venv/bin/python \
86
+ --work-dir /tmp/code-mower-alpha4-fresh-clone \
87
+ --json
88
+ ```
89
+
90
+ Expected summary:
91
+
92
+ ```json
93
+ {
94
+ "mode": "code-mower-fresh-clone-rehearsal",
95
+ "status": "pass"
96
+ }
97
+ ```
98
+
99
+ Observed alpha.4 summary:
100
+
101
+ ```text
102
+ Successfully installed PyYAML-6.0.3 code-mower-0.5.0a4
103
+ No broken requirements found.
104
+ code-mower 0.5.0a4
105
+ status: pass
106
+ ```