code-mower 1.3.1__tar.gz → 1.4.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 (668) hide show
  1. {code_mower-1.3.1 → code_mower-1.4.1}/MANIFEST.in +1 -0
  2. code_mower-1.4.1/PKG-INFO +343 -0
  3. code_mower-1.4.1/README.md +307 -0
  4. code_mower-1.4.1/docs/acp-bridge-spike.md +48 -0
  5. code_mower-1.4.1/docs/architecture.md +205 -0
  6. code_mower-1.4.1/docs/archive/README.md +11 -0
  7. code_mower-1.4.1/docs/archive/first-user-install-rehearsal-alpha4.md +106 -0
  8. code_mower-1.4.1/docs/archive/first-user-install-rehearsal-alpha5.md +131 -0
  9. code_mower-1.4.1/docs/archive/first-user-install-rehearsal-alpha6.md +195 -0
  10. code_mower-1.4.1/docs/archive/first-user-install-rehearsal-alpha8.md +111 -0
  11. code_mower-1.4.1/docs/archive/first-user-install-rehearsal-alpha9.md +135 -0
  12. code_mower-1.4.1/docs/authoring-intelligence.md +170 -0
  13. code_mower-1.4.1/docs/board-data-contract.md +495 -0
  14. code_mower-1.4.1/docs/build-loop-in-30-minutes.md +530 -0
  15. code_mower-1.4.1/docs/build-loop.md +204 -0
  16. code_mower-1.4.1/docs/builder-experiments.md +225 -0
  17. code_mower-1.4.1/docs/builders-grok-cursor.md +135 -0
  18. code_mower-1.4.1/docs/calibration-notes.md +474 -0
  19. code_mower-1.4.1/docs/calibration-pilot.md +325 -0
  20. code_mower-1.4.1/docs/cloud-benchmarking.md +133 -0
  21. code_mower-1.4.1/docs/cloud-contributor-runbook.md +229 -0
  22. code_mower-1.4.1/docs/cloud-data-contract.md +776 -0
  23. code_mower-1.4.1/docs/cloud-sharing.md +592 -0
  24. code_mower-1.4.1/docs/code-structure-roadmap.md +110 -0
  25. code_mower-1.4.1/docs/commercial-boundary.md +53 -0
  26. code_mower-1.4.1/docs/context-connections.md +175 -0
  27. code_mower-1.4.1/docs/context-delivery.md +304 -0
  28. code_mower-1.4.1/docs/context-graph-lifecycle.md +726 -0
  29. code_mower-1.4.1/docs/context-graph-queries.md +460 -0
  30. code_mower-1.4.1/docs/context-packet-schema.md +131 -0
  31. code_mower-1.4.1/docs/context-provider-contract.md +234 -0
  32. code_mower-1.4.1/docs/context-setup.md +137 -0
  33. code_mower-1.4.1/docs/current-state-and-roadmap.md +275 -0
  34. code_mower-1.4.1/docs/devin-peer-support-qualification.md +349 -0
  35. code_mower-1.4.1/docs/devin-review-parity.md +76 -0
  36. code_mower-1.4.1/docs/devin-work-orders.md +163 -0
  37. code_mower-1.4.1/docs/doctrine-lens-proof-v2.md +66 -0
  38. code_mower-1.4.1/docs/early-adopter-invite-runbook.md +104 -0
  39. code_mower-1.4.1/docs/early-adopter-v05.md +154 -0
  40. code_mower-1.4.1/docs/first-run-transcript.md +113 -0
  41. code_mower-1.4.1/docs/first-user-demo-transcript.md +78 -0
  42. code_mower-1.4.1/docs/first-user-install-rehearsal.md +407 -0
  43. code_mower-1.4.1/docs/friendly-user-rollout-v05.md +134 -0
  44. code_mower-1.4.1/docs/github-setup.md +854 -0
  45. code_mower-1.4.1/docs/graphify-evaluation.md +197 -0
  46. code_mower-1.4.1/docs/graphify-setup.md +95 -0
  47. code_mower-1.4.1/docs/install.md +349 -0
  48. code_mower-1.4.1/docs/jira-adoption-rehearsal.md +271 -0
  49. code_mower-1.4.1/docs/jira-cloud-setup.md +315 -0
  50. code_mower-1.4.1/docs/lane-promotion-policy.md +304 -0
  51. code_mower-1.4.1/docs/lanes/README.md +42 -0
  52. code_mower-1.4.1/docs/lanes/claude.md +22 -0
  53. code_mower-1.4.1/docs/lanes/codex.md +22 -0
  54. code_mower-1.4.1/docs/lanes/cursor.md +22 -0
  55. code_mower-1.4.1/docs/lanes/devin.md +41 -0
  56. code_mower-1.4.1/docs/launch-command-surface.md +102 -0
  57. code_mower-1.4.1/docs/lens-calibration-report.md +686 -0
  58. code_mower-1.4.1/docs/local-audit-runner.md +166 -0
  59. code_mower-1.4.1/docs/mirror-removal-runbook.md +213 -0
  60. code_mower-1.4.1/docs/operational-evidence.md +111 -0
  61. code_mower-1.4.1/docs/orchestrator-prompt-pack.md +274 -0
  62. code_mower-1.4.1/docs/oss-v1-checklist.md +502 -0
  63. code_mower-1.4.1/docs/package-customization.md +566 -0
  64. code_mower-1.4.1/docs/participant-qualification.md +94 -0
  65. code_mower-1.4.1/docs/planning-work-orders.md +262 -0
  66. code_mower-1.4.1/docs/post-v08-effectiveness-assessment.md +74 -0
  67. code_mower-1.4.1/docs/prd-addendum-v05-beta.md +57 -0
  68. code_mower-1.4.1/docs/privacy-threat-model.md +66 -0
  69. code_mower-1.4.1/docs/provider-calibration-scorecard.md +137 -0
  70. code_mower-1.4.1/docs/provider-diversity-provenance.md +166 -0
  71. code_mower-1.4.1/docs/provider-matrix.md +333 -0
  72. code_mower-1.4.1/docs/public-release-checklist.md +216 -0
  73. code_mower-1.4.1/docs/pypi-release.md +2068 -0
  74. code_mower-1.4.1/docs/quickstart.md +650 -0
  75. code_mower-1.4.1/docs/release-history.md +70 -0
  76. code_mower-1.4.1/docs/release-qualification.md +817 -0
  77. code_mower-1.4.1/docs/repo-strategy.md +185 -0
  78. code_mower-1.4.1/docs/reviewer-value-report.md +90 -0
  79. code_mower-1.4.1/docs/sample-doctor-output.md +103 -0
  80. code_mower-1.4.1/docs/self-hosted-mac-runner.md +439 -0
  81. code_mower-1.4.1/docs/sessions.md +566 -0
  82. code_mower-1.4.1/docs/slack-contract.md +193 -0
  83. code_mower-1.4.1/docs/slack-ingress.md +138 -0
  84. code_mower-1.4.1/docs/supervised-pilot-contract.md +145 -0
  85. code_mower-1.4.1/docs/tracker-data-contract.md +457 -0
  86. code_mower-1.4.1/docs/troubleshooting.md +347 -0
  87. code_mower-1.4.1/docs/try-in-10-minutes.md +261 -0
  88. code_mower-1.4.1/docs/upgrade-existing-repo.md +306 -0
  89. code_mower-1.4.1/docs/v06-release-notes.md +95 -0
  90. code_mower-1.4.1/docs/v06-truth-baseline.md +108 -0
  91. code_mower-1.4.1/docs/v08-release-notes.md +57 -0
  92. code_mower-1.4.1/docs/v09-release-notes.md +51 -0
  93. code_mower-1.4.1/docs/v10-release-notes.md +64 -0
  94. code_mower-1.4.1/docs/v101-effectiveness-assessment.md +75 -0
  95. code_mower-1.4.1/docs/v101-release-notes.md +74 -0
  96. code_mower-1.4.1/docs/v1010-release-notes.md +156 -0
  97. code_mower-1.4.1/docs/v1011-release-notes.md +166 -0
  98. code_mower-1.4.1/docs/v1012-release-notes.md +162 -0
  99. code_mower-1.4.1/docs/v1013-release-notes.md +175 -0
  100. code_mower-1.4.1/docs/v1014-release-notes.md +176 -0
  101. code_mower-1.4.1/docs/v1015-release-notes.md +145 -0
  102. code_mower-1.4.1/docs/v102-release-notes.md +73 -0
  103. code_mower-1.4.1/docs/v103-installation-documentation-audit.md +170 -0
  104. code_mower-1.4.1/docs/v103-release-notes.md +85 -0
  105. code_mower-1.4.1/docs/v104-installation-documentation-audit.md +6 -0
  106. code_mower-1.4.1/docs/v104-release-notes.md +88 -0
  107. code_mower-1.4.1/docs/v105-release-notes.md +90 -0
  108. code_mower-1.4.1/docs/v106-release-notes.md +100 -0
  109. code_mower-1.4.1/docs/v107-release-notes.md +116 -0
  110. code_mower-1.4.1/docs/v108-release-notes.md +124 -0
  111. code_mower-1.4.1/docs/v109-release-notes.md +119 -0
  112. code_mower-1.4.1/docs/v11-release-notes.md +124 -0
  113. code_mower-1.4.1/docs/v111-release-notes.md +73 -0
  114. code_mower-1.4.1/docs/v112-release-notes.md +49 -0
  115. code_mower-1.4.1/docs/v12-release-notes.md +63 -0
  116. code_mower-1.4.1/docs/v121-release-notes.md +52 -0
  117. code_mower-1.4.1/docs/v122-release-notes.md +61 -0
  118. code_mower-1.4.1/docs/v130-context-qualification.md +103 -0
  119. code_mower-1.4.1/docs/v130-release-notes.md +77 -0
  120. code_mower-1.4.1/docs/v131-guided-context-qualification.md +55 -0
  121. code_mower-1.4.1/docs/v131-release-notes.md +76 -0
  122. code_mower-1.4.1/docs/v140-release-notes.md +105 -0
  123. code_mower-1.4.1/docs/v140-release-runbook.md +2164 -0
  124. code_mower-1.4.1/docs/v141-qualification.md +69 -0
  125. code_mower-1.4.1/docs/v141-release-notes.md +58 -0
  126. {code_mower-1.3.1 → code_mower-1.4.1}/pyproject.toml +2 -2
  127. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/__init__.py +1 -1
  128. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/audit_labeler_lib.py +131 -22
  129. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/board.py +32 -0
  130. code_mower-1.4.1/src/code_mower/branch_policy.py +229 -0
  131. code_mower-1.4.1/src/code_mower/builder_lineage.py +495 -0
  132. code_mower-1.4.1/src/code_mower/builder_lineage_producer.py +386 -0
  133. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/builder_runs.py +40 -53
  134. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/campaign_adapters.py +11 -8
  135. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/claude_audit_pr.py +116 -3
  136. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cli.py +18 -3
  137. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud.py +36 -1
  138. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/__init__.py +18 -0
  139. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/events.py +11 -0
  140. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/export.py +8 -4
  141. code_mower-1.4.1/src/code_mower/cloud_client/git_metadata.py +344 -0
  142. code_mower-1.4.1/src/code_mower/cloud_client/manifest.py +90 -0
  143. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/operations.py +98 -6
  144. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/tokens.py +61 -2
  145. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/upload.py +29 -1
  146. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/codex_audit_pr.py +103 -2
  147. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/config.py +53 -2
  148. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_audit.py +10 -2
  149. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_command.py +20 -9
  150. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_contract.py +55 -2
  151. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_delivery.py +90 -17
  152. code_mower-1.4.1/src/code_mower/context_graph.py +279 -0
  153. code_mower-1.4.1/src/code_mower/context_graph_command.py +301 -0
  154. code_mower-1.4.1/src/code_mower/context_graph_connection.py +308 -0
  155. code_mower-1.4.1/src/code_mower/context_graph_lifecycle.py +4698 -0
  156. code_mower-1.4.1/src/code_mower/context_graph_query.py +1545 -0
  157. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_guided.py +170 -38
  158. code_mower-1.4.1/src/code_mower/context_packets.py +364 -0
  159. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_prepare.py +28 -19
  160. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_session.py +44 -6
  161. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_store.py +17 -2
  162. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/controller.py +17 -6
  163. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/coworker_mcp.py +48 -19
  164. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/coworker_retrieval.py +45 -6
  165. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/devin_api.py +32 -121
  166. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/devin_cli_audit_pr.py +72 -7
  167. code_mower-1.4.1/src/code_mower/devin_readiness.py +1189 -0
  168. code_mower-1.4.1/src/code_mower/devin_review.py +196 -0
  169. code_mower-1.4.1/src/code_mower/devin_sessions.py +444 -0
  170. code_mower-1.4.1/src/code_mower/devin_work_orders.py +661 -0
  171. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor.py +109 -3
  172. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/__init__.py +5 -1
  173. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/adoption.py +44 -1
  174. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/campaign_auth.py +249 -3
  175. code_mower-1.4.1/src/code_mower/doctor_checks/devin.py +191 -0
  176. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/output.py +74 -0
  177. code_mower-1.4.1/src/code_mower/doctor_checks/provider_local_cli_commands.py +30 -0
  178. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/providers.py +50 -0
  179. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/registry.py +8 -0
  180. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/runner.py +49 -1
  181. code_mower-1.4.1/src/code_mower/github_builder_evidence.py +131 -0
  182. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/init.py +216 -18
  183. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_delivery.py +436 -33
  184. code_mower-1.4.1/src/code_mower/lane_handoff.py +277 -0
  185. code_mower-1.4.1/src/code_mower/lane_runtime.py +102 -0
  186. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_status.py +70 -3
  187. code_mower-1.4.1/src/code_mower/local_cli_commands.py +39 -0
  188. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/migration.py +95 -0
  189. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/migration_install.py +88 -24
  190. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/migration_readiness.py +84 -2
  191. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/migration_rehearsal.py +34 -4
  192. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/next_steps.py +32 -0
  193. code_mower-1.4.1/src/code_mower/operational_evidence.py +377 -0
  194. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/package.py +190 -1
  195. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/package_content.py +1 -1
  196. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/package_manifest.py +78 -0
  197. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/package_static.py +1 -0
  198. code_mower-1.4.1/src/code_mower/participants.py +385 -0
  199. code_mower-1.4.1/src/code_mower/provider_capabilities.py +201 -0
  200. code_mower-1.4.1/src/code_mower/provider_capabilities.schema.json +93 -0
  201. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_registry.py +12 -3
  202. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/github_pr.py +16 -19
  203. code_mower-1.4.1/src/code_mower/provider_runners/lineage.py +106 -0
  204. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/release_campaigns.py +58 -14
  205. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/release_qualify.py +24 -8
  206. code_mower-1.4.1/src/code_mower/release_readiness.py +1929 -0
  207. code_mower-1.4.1/src/code_mower/remote_session.py +409 -0
  208. code_mower-1.4.1/src/code_mower/remote_session.schema.json +130 -0
  209. code_mower-1.4.1/src/code_mower/remote_session_cli.py +93 -0
  210. code_mower-1.4.1/src/code_mower/review_authority.py +305 -0
  211. code_mower-1.4.1/src/code_mower/role_eligibility.py +203 -0
  212. code_mower-1.4.1/src/code_mower/role_eligibility.schema.json +119 -0
  213. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/saas_reviewer_labeler.py +52 -6
  214. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/session.py +149 -20
  215. code_mower-1.4.1/src/code_mower/session_current.py +321 -0
  216. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/session_lease.py +46 -14
  217. code_mower-1.4.1/src/code_mower/slack_contract.py +154 -0
  218. code_mower-1.4.1/src/code_mower/slack_contract.schema.json +552 -0
  219. code_mower-1.4.1/src/code_mower/slack_ingress.py +440 -0
  220. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/code-mower.example.yml +6 -0
  221. code_mower-1.4.1/src/code_mower/templates/lanes/lineage-producer.sh +15 -0
  222. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lanes/run_mac_lane.sh +568 -105
  223. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/providers.yml +23 -3
  224. code_mower-1.4.1/src/code_mower/templates/slack/app-manifest.json +36 -0
  225. code_mower-1.4.1/src/code_mower/templates/workflows/builder-lineage-producer.yml.j2 +49 -0
  226. code_mower-1.4.1/src/code_mower/templates/workflows/builder-provenance.yml.j2 +39 -0
  227. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +31 -17
  228. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/trailer_comment_labeler.py +20 -5
  229. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/work_orders.py +1 -1
  230. code_mower-1.4.1/src/code_mower.egg-info/PKG-INFO +343 -0
  231. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower.egg-info/SOURCES.txt +192 -0
  232. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower.egg-info/requires.txt +1 -0
  233. code_mower-1.4.1/templates/lanes/lineage-producer.sh +15 -0
  234. {code_mower-1.3.1 → code_mower-1.4.1}/templates/lanes/run_mac_lane.sh +568 -105
  235. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/devin.yml +13 -3
  236. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/devin_cli.yml +10 -0
  237. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers.yml +23 -3
  238. code_mower-1.4.1/templates/slack/app-manifest.json +36 -0
  239. code_mower-1.4.1/templates/workflows/builder-lineage-producer.yml.j2 +49 -0
  240. code_mower-1.4.1/templates/workflows/builder-provenance.yml.j2 +39 -0
  241. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/code-mower-gate.yml.j2 +31 -17
  242. code_mower-1.4.1/tests/test_adoption_polish_955.py +1373 -0
  243. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_audit_comment_posture.py +6 -1
  244. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_board.py +3 -1
  245. code_mower-1.4.1/tests/test_branch_policy.py +1007 -0
  246. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_builder_identity.py +5 -5
  247. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_builder_runs.py +78 -206
  248. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_campaign_adapters.py +11 -4
  249. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_claude_audit_pr.py +25 -0
  250. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_cloud_client.py +1052 -1
  251. code_mower-1.4.1/tests/test_cloud_git_metadata.py +211 -0
  252. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_codex_audit_pr.py +9 -0
  253. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_audit.py +80 -5
  254. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_command.py +137 -0
  255. code_mower-1.4.1/tests/test_context_delivery.py +347 -0
  256. code_mower-1.4.1/tests/test_context_graph.py +389 -0
  257. code_mower-1.4.1/tests/test_context_graph_connection.py +721 -0
  258. code_mower-1.4.1/tests/test_context_graph_lifecycle.py +4604 -0
  259. code_mower-1.4.1/tests/test_context_graph_query.py +2032 -0
  260. code_mower-1.4.1/tests/test_context_guided.py +1152 -0
  261. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_packets.py +89 -3
  262. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_prepare.py +104 -2
  263. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_session.py +110 -0
  264. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_controller.py +6 -2
  265. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_coworker_retrieval.py +130 -3
  266. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_decision_audit_integration.py +4 -0
  267. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_devin_api.py +28 -1
  268. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_devin_builder_lane.py +249 -56
  269. code_mower-1.4.1/tests/test_devin_capabilities.py +355 -0
  270. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_devin_cli_audit_pr.py +285 -0
  271. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_devin_provider_contract.py +4 -1
  272. code_mower-1.4.1/tests/test_devin_review.py +581 -0
  273. code_mower-1.4.1/tests/test_devin_sessions.py +388 -0
  274. code_mower-1.4.1/tests/test_devin_setup_readiness.py +1896 -0
  275. code_mower-1.4.1/tests/test_devin_work_orders.py +1042 -0
  276. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_campaign_auth.py +228 -2
  277. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_registry.py +42 -0
  278. code_mower-1.4.1/tests/test_documentation.py +147 -0
  279. code_mower-1.4.1/tests/test_documented_commands.py +200 -0
  280. code_mower-1.4.1/tests/test_github_builder_evidence.py +80 -0
  281. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_init_build_loop.py +66 -34
  282. code_mower-1.4.1/tests/test_init_builders_cold_start.py +166 -0
  283. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_lane_delivery_contract.py +231 -21
  284. code_mower-1.4.1/tests/test_lane_handoff.py +359 -0
  285. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_lane_status.py +26 -0
  286. code_mower-1.4.1/tests/test_lineage_consumer_activation.py +229 -0
  287. code_mower-1.4.1/tests/test_lineage_consumer_admission.py +77 -0
  288. code_mower-1.4.1/tests/test_lineage_consumer_labels.py +233 -0
  289. code_mower-1.4.1/tests/test_lineage_consumer_projection.py +184 -0
  290. code_mower-1.4.1/tests/test_lineage_producer_artifacts.py +387 -0
  291. code_mower-1.4.1/tests/test_lineage_producer_publication.py +231 -0
  292. code_mower-1.4.1/tests/test_lineage_producer_state.py +159 -0
  293. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_migration_rehearsal.py +67 -4
  294. code_mower-1.4.1/tests/test_minimal_lineage_contract.py +246 -0
  295. code_mower-1.4.1/tests/test_minimal_lineage_packaging.py +98 -0
  296. code_mower-1.4.1/tests/test_minimal_lineage_transport.py +185 -0
  297. code_mower-1.4.1/tests/test_operational_evidence.py +317 -0
  298. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_participant_sessions.py +61 -2
  299. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_release_campaigns.py +97 -4
  300. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_release_hygiene.py +3113 -157
  301. code_mower-1.4.1/tests/test_release_v141.py +294 -0
  302. code_mower-1.4.1/tests/test_remote_session.py +354 -0
  303. code_mower-1.4.1/tests/test_role_eligibility.py +451 -0
  304. code_mower-1.4.1/tests/test_session_current.py +493 -0
  305. code_mower-1.4.1/tests/test_slack_contract.py +174 -0
  306. code_mower-1.4.1/tests/test_slack_ingress.py +487 -0
  307. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_work_orders.py +34 -1
  308. code_mower-1.3.1/PKG-INFO +0 -708
  309. code_mower-1.3.1/README.md +0 -673
  310. code_mower-1.3.1/src/code_mower/cloud_client/git_metadata.py +0 -46
  311. code_mower-1.3.1/src/code_mower/cloud_client/manifest.py +0 -39
  312. code_mower-1.3.1/src/code_mower/context_packets.py +0 -215
  313. code_mower-1.3.1/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -47
  314. code_mower-1.3.1/src/code_mower/participants.py +0 -179
  315. code_mower-1.3.1/src/code_mower/release_readiness.py +0 -567
  316. code_mower-1.3.1/src/code_mower/templates/workflows/builder-provenance.yml.j2 +0 -64
  317. code_mower-1.3.1/src/code_mower.egg-info/PKG-INFO +0 -708
  318. code_mower-1.3.1/templates/workflows/builder-provenance.yml.j2 +0 -64
  319. code_mower-1.3.1/tests/test_cloud_git_metadata.py +0 -60
  320. code_mower-1.3.1/tests/test_context_delivery.py +0 -125
  321. code_mower-1.3.1/tests/test_context_guided.py +0 -396
  322. {code_mower-1.3.1 → code_mower-1.4.1}/CODE_OF_CONDUCT.md +0 -0
  323. {code_mower-1.3.1 → code_mower-1.4.1}/LICENSE +0 -0
  324. {code_mower-1.3.1 → code_mower-1.4.1}/NOTICE +0 -0
  325. {code_mower-1.3.1 → code_mower-1.4.1}/SUPPORT.md +0 -0
  326. {code_mower-1.3.1 → code_mower-1.4.1}/requirements/requirements.txt +0 -0
  327. {code_mower-1.3.1 → code_mower-1.4.1}/setup.cfg +0 -0
  328. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/adapters/__init__.py +0 -0
  329. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/adapters/_base.py +0 -0
  330. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  331. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/adapters/gitar.py +0 -0
  332. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/adapters/greptile.py +0 -0
  333. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/adapters/qodo.py +0 -0
  334. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  335. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/antigravity_sdk_probe.py +0 -0
  336. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/audit_handoff_log.py +0 -0
  337. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/audit_limits.py +0 -0
  338. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/audit_progress.py +0 -0
  339. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/blind_review_artifacts.py +0 -0
  340. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/blind_review_coordinator.py +0 -0
  341. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/board_store.py +0 -0
  342. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/bootstrap.py +0 -0
  343. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/builder_experiment.py +0 -0
  344. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/__init__.py +0 -0
  345. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/arms.py +0 -0
  346. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/auto_discovery.py +0 -0
  347. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/commands.py +0 -0
  348. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/context_inputs.py +0 -0
  349. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/corpus.py +0 -0
  350. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/effect_report.py +0 -0
  351. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/evidence.py +0 -0
  352. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/evidence_report.py +0 -0
  353. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/identity.py +0 -0
  354. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/metrics.py +0 -0
  355. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/overlap.py +0 -0
  356. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/planning.py +0 -0
  357. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/policy.py +0 -0
  358. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/results.py +0 -0
  359. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/run_results.py +0 -0
  360. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/run_status.py +0 -0
  361. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/runner.py +0 -0
  362. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/truth.py +0 -0
  363. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/calibration/value_report.py +0 -0
  364. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/campaign_discovery.py +0 -0
  365. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/checks.py +0 -0
  366. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/claude_cli_bounce.py +0 -0
  367. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/claude_cli_environment.py +0 -0
  368. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/clear_stale.py +0 -0
  369. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/adoption_runs.py +0 -0
  370. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/bundle.py +0 -0
  371. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/doctor.py +0 -0
  372. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/dogfood.py +0 -0
  373. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/endpoints.py +0 -0
  374. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/errors.py +0 -0
  375. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/finding_outcomes.py +0 -0
  376. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
  377. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/productivity.py +0 -0
  378. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/productivity_windows.py +0 -0
  379. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/reports.py +0 -0
  380. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/setup.py +0 -0
  381. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/cloud_client/work_types.py +0 -0
  382. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/code_mower_calibration.py +0 -0
  383. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/code_mower_context_packs.py +0 -0
  384. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/code_mower_merge.py +0 -0
  385. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/code_mower_telemetry.py +0 -0
  386. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  387. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/codex_audit_env_preflight.py +0 -0
  388. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  389. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  390. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_connections.py +0 -0
  391. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_readiness.py +0 -0
  392. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/context_review.py +0 -0
  393. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/decisions.py +0 -0
  394. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/audit_limits.py +0 -0
  395. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/cloud.py +0 -0
  396. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/common.py +0 -0
  397. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github.py +0 -0
  398. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions.py +0 -0
  399. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  400. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  401. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  402. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  403. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  404. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  405. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  406. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  407. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_api.py +0 -0
  408. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_branch.py +0 -0
  409. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_config.py +0 -0
  410. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_human_token.py +0 -0
  411. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_provider.py +0 -0
  412. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_repo.py +0 -0
  413. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
  414. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/groups.py +0 -0
  415. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/jira.py +0 -0
  416. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/models.py +0 -0
  417. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/presets.py +0 -0
  418. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/privacy.py +0 -0
  419. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  420. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  421. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  422. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_env.py +0 -0
  423. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  424. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  425. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
  426. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  427. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  428. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  429. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  430. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  431. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  432. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  433. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  434. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/runtime.py +0 -0
  435. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  436. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
  437. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
  438. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/file_locks.py +0 -0
  439. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/gate_health.py +0 -0
  440. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  441. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/git_identity.py +0 -0
  442. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/grok_build_audit_pr.py +0 -0
  443. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  444. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/jira_cloud.py +0 -0
  445. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/jira_mutations.py +0 -0
  446. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/jira_pr_sync.py +0 -0
  447. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/__init__.py +0 -0
  448. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/aider.py +0 -0
  449. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  450. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/claude.py +0 -0
  451. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/codex.py +0 -0
  452. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/devin.py +0 -0
  453. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/devin_cli.py +0 -0
  454. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  455. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/grok_build.py +0 -0
  456. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  457. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/local_llm.py +0 -0
  458. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/lane_configs/muse_cli.py +0 -0
  459. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/local_llm_audit_pr.py +0 -0
  460. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/local_llm_bakeoff.py +0 -0
  461. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/local_llm_calibration.py +0 -0
  462. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/local_llm_profiles.py +0 -0
  463. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/migration_mirror.py +0 -0
  464. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/muse_cli_audit_pr.py +0 -0
  465. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/package_paths.py +0 -0
  466. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/package_rendering.py +0 -0
  467. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/plan_context.py +0 -0
  468. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/productivity_report.py +0 -0
  469. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/prompts.py +0 -0
  470. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_credentials.py +0 -0
  471. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/__init__.py +0 -0
  472. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/comments.py +0 -0
  473. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/exit_codes.py +0 -0
  474. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/git.py +0 -0
  475. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/github_auth.py +0 -0
  476. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  477. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/process.py +0 -0
  478. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/repo_paths.py +0 -0
  479. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/text_schema.py +0 -0
  480. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  481. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/provider_runners/workspace.py +0 -0
  482. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/providers/__init__.py +0 -0
  483. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/providers/local_cli.py +0 -0
  484. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/providers/provenance.py +0 -0
  485. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/reviewer_metrics.py +0 -0
  486. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/reviewer_spend.py +0 -0
  487. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/secrets.py +0 -0
  488. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/builder-experiment.example.json +0 -0
  489. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  490. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/calibration-corpus.json +0 -0
  491. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/context-packs.example.json +0 -0
  492. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
  493. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  494. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  495. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  496. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  497. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  498. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  499. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
  500. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  501. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lanes/README.md +0 -0
  502. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lanes/claude.md +0 -0
  503. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lanes/codex.md +0 -0
  504. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lanes/cursor.md +0 -0
  505. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lanes/devin.md +0 -0
  506. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/lanes/generic.md +0 -0
  507. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/code_mower +0 -0
  508. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  509. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  510. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  511. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  512. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
  513. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  514. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/product-support/status_report.py +0 -0
  515. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  516. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  517. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  518. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  519. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  520. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  521. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  522. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
  523. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  524. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  525. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
  526. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  527. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  528. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  529. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  530. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  531. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
  532. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/tracker_contract.py +0 -0
  533. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/tracker_queue.py +0 -0
  534. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/versioning.py +0 -0
  535. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/workflow_actionlint.py +0 -0
  536. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower/yaml_subset.py +0 -0
  537. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower.egg-info/dependency_links.txt +0 -0
  538. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower.egg-info/entry_points.txt +0 -0
  539. {code_mower-1.3.1 → code_mower-1.4.1}/src/code_mower.egg-info/top_level.txt +0 -0
  540. {code_mower-1.3.1 → code_mower-1.4.1}/templates/builder-experiment.example.json +0 -0
  541. {code_mower-1.3.1 → code_mower-1.4.1}/templates/calibration-corpus.example.json +0 -0
  542. {code_mower-1.3.1 → code_mower-1.4.1}/templates/calibration-corpus.json +0 -0
  543. {code_mower-1.3.1 → code_mower-1.4.1}/templates/code-mower.yml.j2 +0 -0
  544. {code_mower-1.3.1 → code_mower-1.4.1}/templates/context-packs.example.json +0 -0
  545. {code_mower-1.3.1 → code_mower-1.4.1}/templates/cursor/BUGBOT.md +0 -0
  546. {code_mower-1.3.1 → code_mower-1.4.1}/templates/lanes/README.md +0 -0
  547. {code_mower-1.3.1 → code_mower-1.4.1}/templates/lanes/claude.md +0 -0
  548. {code_mower-1.3.1 → code_mower-1.4.1}/templates/lanes/codex.md +0 -0
  549. {code_mower-1.3.1 → code_mower-1.4.1}/templates/lanes/cursor.md +0 -0
  550. {code_mower-1.3.1 → code_mower-1.4.1}/templates/lanes/devin.md +0 -0
  551. {code_mower-1.3.1 → code_mower-1.4.1}/templates/lanes/generic.md +0 -0
  552. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/acp_bridge.yml +0 -0
  553. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/aider.yml +0 -0
  554. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/antigravity_cli.yml +0 -0
  555. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/claude_audit.yml +0 -0
  556. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/claude_review.yml +0 -0
  557. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/coderabbit_cli.yml +0 -0
  558. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/codex.yml +0 -0
  559. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/cursor_bugbot.yml +0 -0
  560. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/cursor_cloud_agent.yml +0 -0
  561. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/gemini_cli.yml +0 -0
  562. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/gitar.yml +0 -0
  563. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/greptile.yml +0 -0
  564. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/hermes_cli.yml +0 -0
  565. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/local_llm.yml +0 -0
  566. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/muse_cli.yml +0 -0
  567. {code_mower-1.3.1 → code_mower-1.4.1}/templates/providers/qodo.yml +0 -0
  568. {code_mower-1.3.1 → code_mower-1.4.1}/templates/reviewer-spend.example.json +0 -0
  569. {code_mower-1.3.1 → code_mower-1.4.1}/templates/reviewer-value-report.example.md +0 -0
  570. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  571. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  572. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  573. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  574. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  575. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  576. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/hosted-bridge.yml.j2 +0 -0
  577. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  578. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  579. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  580. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  581. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  582. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  583. {code_mower-1.3.1 → code_mower-1.4.1}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  584. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_adoption_diagnostics.py +0 -0
  585. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_adoption_result_semantics.py +0 -0
  586. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_adoption_run_contract.py +0 -0
  587. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_antigravity_cli_audit_pr.py +0 -0
  588. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_antigravity_sdk_probe.py +0 -0
  589. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_audit_limits.py +0 -0
  590. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_board_lease.py +0 -0
  591. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_builder_experiment.py +0 -0
  592. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_calibration_effect_report.py +0 -0
  593. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_calibration_truth.py +0 -0
  594. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_campaign_discovery.py +0 -0
  595. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_campaign_gh_auth_and_issue_binding_817.py +0 -0
  596. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_campaign_retry_evidence_711.py +0 -0
  597. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_checks.py +0 -0
  598. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_claude_cli_bounce.py +0 -0
  599. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_clear_stale.py +0 -0
  600. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_cloud_manifest.py +0 -0
  601. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_cloud_reports.py +0 -0
  602. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  603. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_codex_audit_env_preflight.py +0 -0
  604. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_connections.py +0 -0
  605. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_contract.py +0 -0
  606. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_readiness.py +0 -0
  607. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_context_review.py +0 -0
  608. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_coworker_mcp.py +0 -0
  609. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_decisions.py +0 -0
  610. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_actions_cost_summary.py +0 -0
  611. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_actions_failure_selection.py +0 -0
  612. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_boundaries.py +0 -0
  613. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_campaign_readiness.py +0 -0
  614. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_github_checks.py +0 -0
  615. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_output.py +0 -0
  616. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_privacy.py +0 -0
  617. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_provider_env_required.py +0 -0
  618. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_provider_env_tokens.py +0 -0
  619. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_provider_local_audit_setup.py +0 -0
  620. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_provider_probe.py +0 -0
  621. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_provider_review_hygiene.py +0 -0
  622. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_runtime.py +0 -0
  623. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_self_hosted_runner.py +0 -0
  624. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_doctor_supervised_pilot.py +0 -0
  625. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_file_locks.py +0 -0
  626. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_fork_pr_guard.py +0 -0
  627. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_gate_automerge.py +0 -0
  628. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_gate_health.py +0 -0
  629. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_hosted_dispatch_profile.py +0 -0
  630. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_init_actionlint.py +0 -0
  631. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_jira_adoption.py +0 -0
  632. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_jira_cloud.py +0 -0
  633. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_jira_mutations.py +0 -0
  634. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_jira_pr_sync.py +0 -0
  635. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_local_llm_github_helpers.py +0 -0
  636. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_migration_setup_drift.py +0 -0
  637. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_next_steps.py +0 -0
  638. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_package_install_failure_taxonomy.py +0 -0
  639. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_plan_context.py +0 -0
  640. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_pr_outcome_contract.py +0 -0
  641. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_pr_outcome_coverage.py +0 -0
  642. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_productivity_metrics_contract.py +0 -0
  643. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_productivity_report.py +0 -0
  644. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_productivity_windows.py +0 -0
  645. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_prompts.py +0 -0
  646. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_credentials.py +0 -0
  647. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_fixture_contracts.py +0 -0
  648. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_local_cli.py +0 -0
  649. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_comments.py +0 -0
  650. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_git.py +0 -0
  651. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_github_pr.py +0 -0
  652. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_pr_worktree.py +0 -0
  653. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_process.py +0 -0
  654. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_repo_paths.py +0 -0
  655. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_text_schema.py +0 -0
  656. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_provider_runners_workspace.py +0 -0
  657. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_release_qualify.py +0 -0
  658. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_remote_qualification_failure_reason_819.py +0 -0
  659. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_reviewer_finding_outcome_contract.py +0 -0
  660. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_reviewer_metrics_core.py +0 -0
  661. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_reviewer_spend.py +0 -0
  662. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_session_lease.py +0 -0
  663. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_supervised_pilot_contract.py +0 -0
  664. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_tracker_config.py +0 -0
  665. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_tracker_contract.py +0 -0
  666. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_tracker_queue.py +0 -0
  667. {code_mower-1.3.1 → code_mower-1.4.1}/tests/test_trailer_comment_labeler.py +0 -0
  668. {code_mower-1.3.1 → code_mower-1.4.1}/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
@@ -0,0 +1,343 @@
1
+ Metadata-Version: 2.4
2
+ Name: code-mower
3
+ Version: 1.4.1
4
+ Summary: Multi-reviewer AI code audit orchestration
5
+ License-Expression: Apache-2.0
6
+ Project-URL: Homepage, https://github.com/codemower-ai/code-mower
7
+ Project-URL: Documentation, https://github.com/codemower-ai/code-mower#readme
8
+ Project-URL: Repository, https://github.com/codemower-ai/code-mower
9
+ Project-URL: Issues, https://github.com/codemower-ai/code-mower/issues
10
+ Project-URL: Changelog, https://github.com/codemower-ai/code-mower/blob/main/CHANGELOG.md
11
+ Keywords: ai,code-review,github-actions,developer-tools
12
+ Classifier: Environment :: Console
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Classifier: Topic :: Software Development :: Quality Assurance
19
+ Requires-Python: >=3.12
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ License-File: NOTICE
23
+ Requires-Dist: PyYAML>=6.0
24
+ Requires-Dist: packaging>=23.2
25
+ Provides-Extra: coworker
26
+ Requires-Dist: mcp<2.3,>=2.2.0; extra == "coworker"
27
+ Requires-Dist: httpx2<3,>=2.12; extra == "coworker"
28
+ Requires-Dist: PyJWT[crypto]<3,>=2.10; extra == "coworker"
29
+ Requires-Dist: keyring<26,>=25; extra == "coworker"
30
+ Provides-Extra: test
31
+ Requires-Dist: build>=1.2; extra == "test"
32
+ Requires-Dist: pytest>=8.0; extra == "test"
33
+ Requires-Dist: ruff>=0.8; extra == "test"
34
+ Requires-Dist: twine>=5.0; extra == "test"
35
+ Dynamic: license-file
36
+
37
+ # Code Mower
38
+
39
+ Code Mower adds a supervised operating layer around AI coding agents. It helps
40
+ teams give one builder ownership of a change, obtain independent reviews on the
41
+ current pull-request head, recover stalled work, and measure which builder and
42
+ reviewer combinations are useful on their own codebase.
43
+
44
+ The current release is supervised-pilot, bring-your-own-agent-loop software.
45
+ It is not a drop-in unattended merge gate. Humans still own credentials,
46
+ repository policy, reviewer promotion, and exceptional decisions.
47
+
48
+ The current source candidate is `v1.4.1`, with target install spec
49
+ `code-mower==1.4.1`. Publication and installed-package qualification are pending
50
+ [#915](https://github.com/codemower-ai/code-mower/issues/915). The published
51
+ `v1.4.0` artifacts remain unchanged. Install commands below target v1.4.1 after
52
+ publication; candidate rehearsals use the exact verified artifact.
53
+
54
+ Documentation on `main` follows the source on `main`. After v1.4.1 publication, start with the
55
+ [`v1.4.1` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.1/docs/try-in-10-minutes.md).
56
+
57
+ ## What Code Mower Adds
58
+
59
+ You can run Claude Code, Codex, Devin, or another coding agent directly. Code
60
+ Mower supplies the shared workflow around them:
61
+
62
+ - one orchestrator and one writer per branch;
63
+ - provider-neutral work orders, handoffs, status, and recovery;
64
+ - independent, structured reviews bound to the current PR head;
65
+ - repository-specific calibration before a reviewer gains merge authority;
66
+ - local reports for quality, latency, cost, interventions, and outcomes;
67
+ - setup diagnostics for provider auth, GitHub permissions, and private-repo
68
+ Actions cost; and
69
+ - optional, explicitly authorized organizational context and metadata sharing.
70
+
71
+ The default setup is deliberately small: Claude Code and Codex. Additional
72
+ participants are opt-in and keep their own execution, privacy, cost, and
73
+ promotion requirements.
74
+
75
+ ## Start Here
76
+
77
+ Code Mower requires Python 3.12 or newer. A laptop or workstation should use
78
+ one stable `pipx` installation:
79
+
80
+ ```bash
81
+ python3.12 --version
82
+ export CODE_MOWER_PYTHON="$(command -v python3.12)"
83
+ pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.1
84
+ command -v code-mower
85
+ code-mower --version
86
+ ```
87
+
88
+ Hosted agents and CI machines can use `uv tool install`; contributors should
89
+ use `scripts/dev-python` and an editable virtual environment. The
90
+ [Install And Bootstrap](docs/install.md) guide gives the exact cold-install,
91
+ upgrade, optional Coworker, and contributor commands.
92
+
93
+ From the repository you want to pilot:
94
+
95
+ ```bash
96
+ code-mower init --easy
97
+ code-mower init --easy --apply --output-dir .code-mower.generated
98
+ code-mower doctor --adoption --repo OWNER/REPO
99
+ code-mower lanes status --repo OWNER/REPO
100
+ ```
101
+
102
+ `init --easy` previews the Claude + Codex setup and changes nothing. `--apply`
103
+ writes a reviewable generated tree; it does not copy those files into your
104
+ repository, start a provider, enable auto-merge, or upload data. Review and
105
+ edit the generated configuration before opening the setup PR.
106
+
107
+ To inspect representative output first, use the
108
+ [synthetic calibration example](examples/demo-calibration/README.md) and
109
+ [Board demo](examples/board-demo/README.md).
110
+
111
+ Follow [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md) to run Codex
112
+ and Claude manually against that first PR. Automation tokens, recurring
113
+ dispatch, branch-protection changes, and auto-merge are not prerequisites for
114
+ the manual reviewer-gate pilot.
115
+
116
+ After the first peer-review loop works, follow
117
+ [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md) to add automated
118
+ builder dispatch and the stricter promoted-pilot repository settings.
119
+
120
+ ## Participants And Sessions
121
+
122
+ Choose participants interactively or explicitly:
123
+
124
+ ```bash
125
+ code-mower init --interactive
126
+ code-mower init --with claude,codex,devin
127
+ ```
128
+
129
+ Both commands preview by default. Add `--apply` only when you are ready to
130
+ write the generated setup.
131
+
132
+ The agent that starts a session is the implicit orchestrator:
133
+
134
+ ```bash
135
+ code-mower session start \
136
+ --repo OWNER/REPO \
137
+ --with claude,codex,devin \
138
+ --host codex
139
+ ```
140
+
141
+ `session start` saves an operating brief and takes the local single-orchestrator
142
+ lease. It does not launch every selected product. The host uses the execution
143
+ paths available for each participant and records explicit handoffs where Code
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.
151
+
152
+ Codex, Claude Code, and Cursor are qualified for the shared session, telemetry,
153
+ lease, and Jira-authority contract in v1.4.1. Devin, Grok Bot, Antigravity,
154
+ Muse, and custom hosts are recognized for briefs and provenance, while their
155
+ execution remains an explicit handoff or provider-specific transport. See
156
+ [Participants And Sessions](docs/sessions.md) and the
157
+ [Provider Matrix](docs/provider-matrix.md).
158
+
159
+ ## Optional Organizational Context
160
+
161
+ The base installation works without an organizational-memory provider. The
162
+ optional Coworker integration gives approved Claude, Codex, and Devin roles the same
163
+ bounded, cited evidence through an explicitly selected private account. Account
164
+ identity and credentials stay outside the repository.
165
+
166
+ After installing the optional dependencies and connecting an approved account,
167
+ the guided path carries one work item through retrieval, builder delivery,
168
+ current-head attachment, independent review, and private feedback:
169
+
170
+ ```bash
171
+ code-mower session start --repo OWNER/REPO --host codex --work-item EXAMPLE-123
172
+ code-mower session context prepare .code-mower/sessions/SESSION.json
173
+ code-mower session context deliver .code-mower/sessions/SESSION.json
174
+ code-mower session context attach .code-mower/sessions/SESSION.json --pr 42
175
+ code-mower session context feedback .code-mower/sessions/SESSION.json \
176
+ --reviewer claude
177
+ ```
178
+
179
+ Every delivery and feedback read reauthorizes online. Private evidence and
180
+ private review findings must not be copied into tracked files or public logs.
181
+ Start with [Optional Organizational Context Setup](docs/context-setup.md).
182
+
183
+ ## Roles
184
+
185
+ - **Orchestrator:** the hosting agent by default; coordinates the work item,
186
+ assignments, evidence, reviews, recovery, and owner actions.
187
+ - **Builder:** the only writer for its PR branch.
188
+ - **Reviewer:** an independent current-head audit. A builder's own review does
189
+ not satisfy the peer-review requirement.
190
+ - **Merge authority:** repository policy. Selecting a participant never grants
191
+ it.
192
+ - **Context provider:** supplies approved evidence; it cannot build, review,
193
+ orchestrate, write to the tracker, or merge.
194
+
195
+ Code Mower records builder provenance for Claude Code, Codex, Cursor-style
196
+ hosted builders, Devin, and other authoring lanes. Its generated templates now
197
+ support the supervised issue-to-merge loop end to end, with provider-specific
198
+ adapters handling product differences.
199
+
200
+ ## What Calibration Does And Does Not Prove
201
+
202
+ The generated starter corpus proves that the command and report paths work. It
203
+ does not prove that a reviewer should gate merges.
204
+
205
+ Bootstrap a draft from recent repository history:
206
+
207
+ ```bash
208
+ code-mower calibration auto-discover \
209
+ --repo OWNER/REPO \
210
+ --last-n 20 \
211
+ --output .code-mower/draft-calibration-corpus.json
212
+ ```
213
+
214
+ Review every proposed disposition. Promote a lane only after known-clean and
215
+ known-blocked evidence satisfies the
216
+ [lane promotion policy](docs/lane-promotion-policy.md).
217
+
218
+ ## Local Status And Board
219
+
220
+ `lanes status` is the concise terminal view. The optional Board serves the same
221
+ redacted metadata on loopback:
222
+
223
+ ```bash
224
+ code-mower lanes status --repo OWNER/REPO
225
+ code-mower productivity report --repo OWNER/REPO
226
+ code-mower board serve --repo OWNER/REPO
227
+ ```
228
+
229
+ Plain `board serve` is read-only. Add `--record-events` to append throttled,
230
+ metadata-only local history:
231
+
232
+ ```bash
233
+ code-mower board serve --repo OWNER/REPO --record-events
234
+ code-mower board record --repo OWNER/REPO
235
+ code-mower board events
236
+ code-mower board doctor --repo OWNER/REPO
237
+ code-mower board reset --repo OWNER/REPO --yes
238
+ ```
239
+
240
+ The Board includes the owner queue, reviewer verdict history and spend/latency
241
+ when those local inputs exist. Local paths are redacted by default. The Board
242
+ does not upload data.
243
+
244
+ ## Optional Cloud Sharing
245
+
246
+ The OSS package works without CodeMower.com. Cloud sharing is an explicit,
247
+ dry-run-first path for sanitized metadata and selected reports:
248
+
249
+ ```bash
250
+ code-mower cloud dogfood --json
251
+ code-mower cloud board-snapshot --repo-slug OWNER/REPO --json
252
+ ```
253
+
254
+ Neither command uploads without `--yes`. Default bundles exclude source code,
255
+ raw diffs, model transcripts, raw stdout/stderr, auth output, issue body text,
256
+ local secret values, and secrets. See [Cloud Sharing](docs/cloud-sharing.md)
257
+ and the [Cloud Data Contract](docs/cloud-data-contract.md).
258
+
259
+ ## Current Capabilities And Limits
260
+
261
+ | Area | v1.4.1 posture |
262
+ | --- | --- |
263
+ | Default builders and reviewers | Claude Code + Codex |
264
+ | Session hosts | Codex, Claude Code, and Cursor qualified; other identities recognized but require explicit handoff/provider transport |
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 |
266
+ | Organizational context | Optional Coworker delivery to approved Claude/Codex/Devin roles |
267
+ | Work trackers | GitHub Issues by default; Jira Cloud is optional and guarded |
268
+ | Forge and merge gate | GitHub |
269
+ | Cloud | Optional metadata/report upload; no upload by default |
270
+ | Graphify | Optional bounded local repository-graph provider behind the packet contract; no default dependency and no network access for the provider |
271
+ | Slack | Command and authenticated bounded ingress foundation only; no Slack worker delivery, results, or orchestration authority |
272
+
273
+ GitLab, Bitbucket, broad unattended rollout, uncalibrated merge gates, Devin
274
+ peer-orchestrator/reviewer parity, a hosted work-order CLI, a required Graphify
275
+ dependency, and Slack worker delivery are outside the v1.4.1 candidate. The current priorities and
276
+ boundaries are recorded in
277
+ [Current State And Roadmap](docs/current-state-and-roadmap.md).
278
+
279
+ ## Documentation
280
+
281
+ ### Install And First Use
282
+
283
+ - [Install And Bootstrap](docs/install.md)
284
+ - [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
285
+ - [Upgrade An Existing Repository](docs/upgrade-existing-repo.md)
286
+ - [Quickstart Reference](docs/quickstart.md)
287
+ - [Troubleshooting](docs/troubleshooting.md)
288
+ - [First Run Transcript](docs/first-run-transcript.md)
289
+
290
+ ### Sessions, Builders, And Reviewers
291
+
292
+ - [Participants And Sessions](docs/sessions.md)
293
+ - [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
294
+ - [Build Loop Operations](docs/build-loop.md)
295
+ - [Planning And Work Orders](docs/planning-work-orders.md)
296
+ - [Builder Experiments](docs/builder-experiments.md)
297
+ - [Orchestrator Prompt Pack](docs/orchestrator-prompt-pack.md)
298
+ - [Provider Matrix](docs/provider-matrix.md)
299
+ - [Provider Calibration Scorecard](docs/provider-calibration-scorecard.md)
300
+ - [Devin Peer-Support Qualification](docs/devin-peer-support-qualification.md)
301
+ - [Lane Standing Instructions](docs/lanes/README.md)
302
+ - [Codex Lane](docs/lanes/codex.md)
303
+ - [Claude Lane](docs/lanes/claude.md)
304
+ - [Cursor Lane](docs/lanes/cursor.md)
305
+ - [Devin Lane](docs/lanes/devin.md)
306
+ - [Self-Hosted Mac Runner](docs/self-hosted-mac-runner.md)
307
+ - [Local Audit Runner](docs/local-audit-runner.md)
308
+
309
+ ### Context And Trackers
310
+
311
+ - [Optional Organizational Context Setup](docs/context-setup.md)
312
+ - [Coworker Connections](docs/context-connections.md)
313
+ - [Context Delivery And Private Review](docs/context-delivery.md)
314
+ - [Context Provider Contract](docs/context-provider-contract.md)
315
+ - [Context Packet Schema](docs/context-packet-schema.md)
316
+ - [Jira Cloud Setup](docs/jira-cloud-setup.md)
317
+ - [Jira Adoption Rehearsal](docs/jira-adoption-rehearsal.md)
318
+ - [Work Tracker Data Contract](docs/tracker-data-contract.md)
319
+
320
+ ### Trust, Operations, And Project Records
321
+
322
+ - [Architecture](docs/architecture.md)
323
+ - [Current State And Roadmap](docs/current-state-and-roadmap.md)
324
+ - [Lane Promotion Policy](docs/lane-promotion-policy.md)
325
+ - [Privacy And Threat Model](docs/privacy-threat-model.md)
326
+ - [Board Data Contract](docs/board-data-contract.md)
327
+ - [Cloud Data Contract](docs/cloud-data-contract.md)
328
+ - [Release Qualification](docs/release-qualification.md)
329
+ - [Public Release Checklist](docs/public-release-checklist.md)
330
+ - [v1.4.1 Release Notes](docs/v141-release-notes.md)
331
+ - [Release History And Archived Plans](docs/release-history.md)
332
+ - [Changelog](CHANGELOG.md)
333
+ - [Contributing](CONTRIBUTING.md)
334
+ - [Support](SUPPORT.md)
335
+ - [Security Policy](SECURITY.md)
336
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
337
+
338
+ ## License
339
+
340
+ The Code Mower open-source core is licensed under Apache-2.0. Hosted reporting,
341
+ managed integrations, private telemetry and benchmark products, enterprise
342
+ controls, and support are separate commercial surfaces unless licensed
343
+ otherwise.
@@ -0,0 +1,307 @@
1
+ # Code Mower
2
+
3
+ Code Mower adds a supervised operating layer around AI coding agents. It helps
4
+ teams give one builder ownership of a change, obtain independent reviews on the
5
+ current pull-request head, recover stalled work, and measure which builder and
6
+ reviewer combinations are useful on their own codebase.
7
+
8
+ The current release is supervised-pilot, bring-your-own-agent-loop software.
9
+ It is not a drop-in unattended merge gate. Humans still own credentials,
10
+ repository policy, reviewer promotion, and exceptional decisions.
11
+
12
+ The current source candidate is `v1.4.1`, with target install spec
13
+ `code-mower==1.4.1`. Publication and installed-package qualification are pending
14
+ [#915](https://github.com/codemower-ai/code-mower/issues/915). The published
15
+ `v1.4.0` artifacts remain unchanged. Install commands below target v1.4.1 after
16
+ publication; candidate rehearsals use the exact verified artifact.
17
+
18
+ Documentation on `main` follows the source on `main`. After v1.4.1 publication, start with the
19
+ [`v1.4.1` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.1/docs/try-in-10-minutes.md).
20
+
21
+ ## What Code Mower Adds
22
+
23
+ You can run Claude Code, Codex, Devin, or another coding agent directly. Code
24
+ Mower supplies the shared workflow around them:
25
+
26
+ - one orchestrator and one writer per branch;
27
+ - provider-neutral work orders, handoffs, status, and recovery;
28
+ - independent, structured reviews bound to the current PR head;
29
+ - repository-specific calibration before a reviewer gains merge authority;
30
+ - local reports for quality, latency, cost, interventions, and outcomes;
31
+ - setup diagnostics for provider auth, GitHub permissions, and private-repo
32
+ Actions cost; and
33
+ - optional, explicitly authorized organizational context and metadata sharing.
34
+
35
+ The default setup is deliberately small: Claude Code and Codex. Additional
36
+ participants are opt-in and keep their own execution, privacy, cost, and
37
+ promotion requirements.
38
+
39
+ ## Start Here
40
+
41
+ Code Mower requires Python 3.12 or newer. A laptop or workstation should use
42
+ one stable `pipx` installation:
43
+
44
+ ```bash
45
+ python3.12 --version
46
+ export CODE_MOWER_PYTHON="$(command -v python3.12)"
47
+ pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.1
48
+ command -v code-mower
49
+ code-mower --version
50
+ ```
51
+
52
+ Hosted agents and CI machines can use `uv tool install`; contributors should
53
+ use `scripts/dev-python` and an editable virtual environment. The
54
+ [Install And Bootstrap](docs/install.md) guide gives the exact cold-install,
55
+ upgrade, optional Coworker, and contributor commands.
56
+
57
+ From the repository you want to pilot:
58
+
59
+ ```bash
60
+ code-mower init --easy
61
+ code-mower init --easy --apply --output-dir .code-mower.generated
62
+ code-mower doctor --adoption --repo OWNER/REPO
63
+ code-mower lanes status --repo OWNER/REPO
64
+ ```
65
+
66
+ `init --easy` previews the Claude + Codex setup and changes nothing. `--apply`
67
+ writes a reviewable generated tree; it does not copy those files into your
68
+ repository, start a provider, enable auto-merge, or upload data. Review and
69
+ edit the generated configuration before opening the setup PR.
70
+
71
+ To inspect representative output first, use the
72
+ [synthetic calibration example](examples/demo-calibration/README.md) and
73
+ [Board demo](examples/board-demo/README.md).
74
+
75
+ Follow [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md) to run Codex
76
+ and Claude manually against that first PR. Automation tokens, recurring
77
+ dispatch, branch-protection changes, and auto-merge are not prerequisites for
78
+ the manual reviewer-gate pilot.
79
+
80
+ After the first peer-review loop works, follow
81
+ [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md) to add automated
82
+ builder dispatch and the stricter promoted-pilot repository settings.
83
+
84
+ ## Participants And Sessions
85
+
86
+ Choose participants interactively or explicitly:
87
+
88
+ ```bash
89
+ code-mower init --interactive
90
+ code-mower init --with claude,codex,devin
91
+ ```
92
+
93
+ Both commands preview by default. Add `--apply` only when you are ready to
94
+ write the generated setup.
95
+
96
+ The agent that starts a session is the implicit orchestrator:
97
+
98
+ ```bash
99
+ code-mower session start \
100
+ --repo OWNER/REPO \
101
+ --with claude,codex,devin \
102
+ --host codex
103
+ ```
104
+
105
+ `session start` saves an operating brief and takes the local single-orchestrator
106
+ lease. It does not launch every selected product. The host uses the execution
107
+ paths available for each participant and records explicit handoffs where Code
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.
115
+
116
+ Codex, Claude Code, and Cursor are qualified for the shared session, telemetry,
117
+ lease, and Jira-authority contract in v1.4.1. Devin, Grok Bot, Antigravity,
118
+ Muse, and custom hosts are recognized for briefs and provenance, while their
119
+ execution remains an explicit handoff or provider-specific transport. See
120
+ [Participants And Sessions](docs/sessions.md) and the
121
+ [Provider Matrix](docs/provider-matrix.md).
122
+
123
+ ## Optional Organizational Context
124
+
125
+ The base installation works without an organizational-memory provider. The
126
+ optional Coworker integration gives approved Claude, Codex, and Devin roles the same
127
+ bounded, cited evidence through an explicitly selected private account. Account
128
+ identity and credentials stay outside the repository.
129
+
130
+ After installing the optional dependencies and connecting an approved account,
131
+ the guided path carries one work item through retrieval, builder delivery,
132
+ current-head attachment, independent review, and private feedback:
133
+
134
+ ```bash
135
+ code-mower session start --repo OWNER/REPO --host codex --work-item EXAMPLE-123
136
+ code-mower session context prepare .code-mower/sessions/SESSION.json
137
+ code-mower session context deliver .code-mower/sessions/SESSION.json
138
+ code-mower session context attach .code-mower/sessions/SESSION.json --pr 42
139
+ code-mower session context feedback .code-mower/sessions/SESSION.json \
140
+ --reviewer claude
141
+ ```
142
+
143
+ Every delivery and feedback read reauthorizes online. Private evidence and
144
+ private review findings must not be copied into tracked files or public logs.
145
+ Start with [Optional Organizational Context Setup](docs/context-setup.md).
146
+
147
+ ## Roles
148
+
149
+ - **Orchestrator:** the hosting agent by default; coordinates the work item,
150
+ assignments, evidence, reviews, recovery, and owner actions.
151
+ - **Builder:** the only writer for its PR branch.
152
+ - **Reviewer:** an independent current-head audit. A builder's own review does
153
+ not satisfy the peer-review requirement.
154
+ - **Merge authority:** repository policy. Selecting a participant never grants
155
+ it.
156
+ - **Context provider:** supplies approved evidence; it cannot build, review,
157
+ orchestrate, write to the tracker, or merge.
158
+
159
+ Code Mower records builder provenance for Claude Code, Codex, Cursor-style
160
+ hosted builders, Devin, and other authoring lanes. Its generated templates now
161
+ support the supervised issue-to-merge loop end to end, with provider-specific
162
+ adapters handling product differences.
163
+
164
+ ## What Calibration Does And Does Not Prove
165
+
166
+ The generated starter corpus proves that the command and report paths work. It
167
+ does not prove that a reviewer should gate merges.
168
+
169
+ Bootstrap a draft from recent repository history:
170
+
171
+ ```bash
172
+ code-mower calibration auto-discover \
173
+ --repo OWNER/REPO \
174
+ --last-n 20 \
175
+ --output .code-mower/draft-calibration-corpus.json
176
+ ```
177
+
178
+ Review every proposed disposition. Promote a lane only after known-clean and
179
+ known-blocked evidence satisfies the
180
+ [lane promotion policy](docs/lane-promotion-policy.md).
181
+
182
+ ## Local Status And Board
183
+
184
+ `lanes status` is the concise terminal view. The optional Board serves the same
185
+ redacted metadata on loopback:
186
+
187
+ ```bash
188
+ code-mower lanes status --repo OWNER/REPO
189
+ code-mower productivity report --repo OWNER/REPO
190
+ code-mower board serve --repo OWNER/REPO
191
+ ```
192
+
193
+ Plain `board serve` is read-only. Add `--record-events` to append throttled,
194
+ metadata-only local history:
195
+
196
+ ```bash
197
+ code-mower board serve --repo OWNER/REPO --record-events
198
+ code-mower board record --repo OWNER/REPO
199
+ code-mower board events
200
+ code-mower board doctor --repo OWNER/REPO
201
+ code-mower board reset --repo OWNER/REPO --yes
202
+ ```
203
+
204
+ The Board includes the owner queue, reviewer verdict history and spend/latency
205
+ when those local inputs exist. Local paths are redacted by default. The Board
206
+ does not upload data.
207
+
208
+ ## Optional Cloud Sharing
209
+
210
+ The OSS package works without CodeMower.com. Cloud sharing is an explicit,
211
+ dry-run-first path for sanitized metadata and selected reports:
212
+
213
+ ```bash
214
+ code-mower cloud dogfood --json
215
+ code-mower cloud board-snapshot --repo-slug OWNER/REPO --json
216
+ ```
217
+
218
+ Neither command uploads without `--yes`. Default bundles exclude source code,
219
+ raw diffs, model transcripts, raw stdout/stderr, auth output, issue body text,
220
+ local secret values, and secrets. See [Cloud Sharing](docs/cloud-sharing.md)
221
+ and the [Cloud Data Contract](docs/cloud-data-contract.md).
222
+
223
+ ## Current Capabilities And Limits
224
+
225
+ | Area | v1.4.1 posture |
226
+ | --- | --- |
227
+ | Default builders and reviewers | Claude Code + Codex |
228
+ | Session hosts | Codex, Claude Code, and Cursor qualified; other identities recognized but require explicit handoff/provider transport |
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 |
230
+ | Organizational context | Optional Coworker delivery to approved Claude/Codex/Devin roles |
231
+ | Work trackers | GitHub Issues by default; Jira Cloud is optional and guarded |
232
+ | Forge and merge gate | GitHub |
233
+ | Cloud | Optional metadata/report upload; no upload by default |
234
+ | Graphify | Optional bounded local repository-graph provider behind the packet contract; no default dependency and no network access for the provider |
235
+ | Slack | Command and authenticated bounded ingress foundation only; no Slack worker delivery, results, or orchestration authority |
236
+
237
+ GitLab, Bitbucket, broad unattended rollout, uncalibrated merge gates, Devin
238
+ peer-orchestrator/reviewer parity, a hosted work-order CLI, a required Graphify
239
+ dependency, and Slack worker delivery are outside the v1.4.1 candidate. The current priorities and
240
+ boundaries are recorded in
241
+ [Current State And Roadmap](docs/current-state-and-roadmap.md).
242
+
243
+ ## Documentation
244
+
245
+ ### Install And First Use
246
+
247
+ - [Install And Bootstrap](docs/install.md)
248
+ - [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
249
+ - [Upgrade An Existing Repository](docs/upgrade-existing-repo.md)
250
+ - [Quickstart Reference](docs/quickstart.md)
251
+ - [Troubleshooting](docs/troubleshooting.md)
252
+ - [First Run Transcript](docs/first-run-transcript.md)
253
+
254
+ ### Sessions, Builders, And Reviewers
255
+
256
+ - [Participants And Sessions](docs/sessions.md)
257
+ - [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
258
+ - [Build Loop Operations](docs/build-loop.md)
259
+ - [Planning And Work Orders](docs/planning-work-orders.md)
260
+ - [Builder Experiments](docs/builder-experiments.md)
261
+ - [Orchestrator Prompt Pack](docs/orchestrator-prompt-pack.md)
262
+ - [Provider Matrix](docs/provider-matrix.md)
263
+ - [Provider Calibration Scorecard](docs/provider-calibration-scorecard.md)
264
+ - [Devin Peer-Support Qualification](docs/devin-peer-support-qualification.md)
265
+ - [Lane Standing Instructions](docs/lanes/README.md)
266
+ - [Codex Lane](docs/lanes/codex.md)
267
+ - [Claude Lane](docs/lanes/claude.md)
268
+ - [Cursor Lane](docs/lanes/cursor.md)
269
+ - [Devin Lane](docs/lanes/devin.md)
270
+ - [Self-Hosted Mac Runner](docs/self-hosted-mac-runner.md)
271
+ - [Local Audit Runner](docs/local-audit-runner.md)
272
+
273
+ ### Context And Trackers
274
+
275
+ - [Optional Organizational Context Setup](docs/context-setup.md)
276
+ - [Coworker Connections](docs/context-connections.md)
277
+ - [Context Delivery And Private Review](docs/context-delivery.md)
278
+ - [Context Provider Contract](docs/context-provider-contract.md)
279
+ - [Context Packet Schema](docs/context-packet-schema.md)
280
+ - [Jira Cloud Setup](docs/jira-cloud-setup.md)
281
+ - [Jira Adoption Rehearsal](docs/jira-adoption-rehearsal.md)
282
+ - [Work Tracker Data Contract](docs/tracker-data-contract.md)
283
+
284
+ ### Trust, Operations, And Project Records
285
+
286
+ - [Architecture](docs/architecture.md)
287
+ - [Current State And Roadmap](docs/current-state-and-roadmap.md)
288
+ - [Lane Promotion Policy](docs/lane-promotion-policy.md)
289
+ - [Privacy And Threat Model](docs/privacy-threat-model.md)
290
+ - [Board Data Contract](docs/board-data-contract.md)
291
+ - [Cloud Data Contract](docs/cloud-data-contract.md)
292
+ - [Release Qualification](docs/release-qualification.md)
293
+ - [Public Release Checklist](docs/public-release-checklist.md)
294
+ - [v1.4.1 Release Notes](docs/v141-release-notes.md)
295
+ - [Release History And Archived Plans](docs/release-history.md)
296
+ - [Changelog](CHANGELOG.md)
297
+ - [Contributing](CONTRIBUTING.md)
298
+ - [Support](SUPPORT.md)
299
+ - [Security Policy](SECURITY.md)
300
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
301
+
302
+ ## License
303
+
304
+ The Code Mower open-source core is licensed under Apache-2.0. Hosted reporting,
305
+ managed integrations, private telemetry and benchmark products, enterprise
306
+ controls, and support are separate commercial surfaces unless licensed
307
+ otherwise.