code-mower 0.6.0b3__tar.gz → 0.8.0b1__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 (351) hide show
  1. {code_mower-0.6.0b3/src/code_mower.egg-info → code_mower-0.8.0b1}/PKG-INFO +59 -13
  2. code_mower-0.6.0b3/PKG-INFO → code_mower-0.8.0b1/README.md +55 -26
  3. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/pyproject.toml +5 -3
  4. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/__init__.py +1 -1
  5. code_mower-0.8.0b1/src/code_mower/board.py +1217 -0
  6. code_mower-0.8.0b1/src/code_mower/board_store.py +269 -0
  7. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/bootstrap.py +5 -5
  8. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cli.py +8 -3
  9. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud.py +90 -0
  10. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/__init__.py +4 -0
  11. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/bundle.py +1 -0
  12. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/events.py +233 -1
  13. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/operations.py +124 -0
  14. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor.py +33 -0
  15. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_human_token.py +39 -3
  16. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/providers.py +67 -0
  17. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/runner.py +5 -0
  18. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/runtime.py +5 -5
  19. code_mower-0.8.0b1/src/code_mower/git_identity.py +15 -0
  20. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/init.py +3 -3
  21. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_status.py +30 -1
  22. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/migration.py +1 -1
  23. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/migration_install.py +4 -21
  24. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/package_content.py +2 -1
  25. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/package_manifest.py +3 -0
  26. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/package_static.py +19 -2
  27. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/providers/provenance.py +1 -1
  28. {code_mower-0.6.0b3 → code_mower-0.8.0b1/src/code_mower}/templates/lanes/README.md +2 -1
  29. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/code_mower +4 -4
  30. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +2 -2
  31. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/versioning.py +2 -2
  32. code_mower-0.6.0b3/README.md → code_mower-0.8.0b1/src/code_mower.egg-info/PKG-INFO +72 -11
  33. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower.egg-info/SOURCES.txt +4 -0
  34. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower.egg-info/requires.txt +2 -0
  35. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/builder-provenance.yml.j2 +2 -2
  36. code_mower-0.8.0b1/tests/test_board.py +968 -0
  37. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_cloud_client.py +226 -0
  38. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_github_checks.py +35 -0
  39. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_registry.py +110 -0
  40. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_lane_status.py +37 -1
  41. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_release_hygiene.py +345 -35
  42. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/CODE_OF_CONDUCT.md +0 -0
  43. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/LICENSE +0 -0
  44. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/MANIFEST.in +0 -0
  45. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/NOTICE +0 -0
  46. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/SUPPORT.md +0 -0
  47. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/requirements/requirements.txt +0 -0
  48. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/setup.cfg +0 -0
  49. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/adapters/__init__.py +0 -0
  50. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/adapters/_base.py +0 -0
  51. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/adapters/cursor_bugbot.py +0 -0
  52. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/adapters/gitar.py +0 -0
  53. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/adapters/greptile.py +0 -0
  54. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/adapters/qodo.py +0 -0
  55. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
  56. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/antigravity_sdk_probe.py +0 -0
  57. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/audit_handoff_log.py +0 -0
  58. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/audit_labeler_lib.py +0 -0
  59. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/audit_limits.py +0 -0
  60. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/audit_progress.py +0 -0
  61. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/blind_review_artifacts.py +0 -0
  62. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/blind_review_coordinator.py +0 -0
  63. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/builder_experiment.py +0 -0
  64. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/builder_runs.py +0 -0
  65. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/__init__.py +0 -0
  66. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/arms.py +0 -0
  67. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/auto_discovery.py +0 -0
  68. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/commands.py +0 -0
  69. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/context_inputs.py +0 -0
  70. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/corpus.py +0 -0
  71. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/effect_report.py +0 -0
  72. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/evidence.py +0 -0
  73. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/evidence_report.py +0 -0
  74. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/identity.py +0 -0
  75. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/metrics.py +0 -0
  76. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/overlap.py +0 -0
  77. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/planning.py +0 -0
  78. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/policy.py +0 -0
  79. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/results.py +0 -0
  80. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/run_results.py +0 -0
  81. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/run_status.py +0 -0
  82. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/runner.py +0 -0
  83. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/truth.py +0 -0
  84. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/calibration/value_report.py +0 -0
  85. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/checks.py +0 -0
  86. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/claude_audit_pr.py +0 -0
  87. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/claude_cli_bounce.py +0 -0
  88. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/claude_cli_environment.py +0 -0
  89. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/clear_stale.py +0 -0
  90. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/doctor.py +0 -0
  91. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/dogfood.py +0 -0
  92. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/endpoints.py +0 -0
  93. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/errors.py +0 -0
  94. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/export.py +0 -0
  95. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/git_metadata.py +0 -0
  96. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/manifest.py +0 -0
  97. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/reports.py +0 -0
  98. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/setup.py +0 -0
  99. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/tokens.py +0 -0
  100. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/cloud_client/upload.py +0 -0
  101. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/code_mower_calibration.py +0 -0
  102. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/code_mower_context_packs.py +0 -0
  103. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/code_mower_merge.py +0 -0
  104. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/code_mower_telemetry.py +0 -0
  105. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
  106. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/codex_audit_env_preflight.py +0 -0
  107. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/codex_audit_pr.py +0 -0
  108. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/codex_audit_schema_smoke.py +0 -0
  109. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/codex_audit_verdict.schema.json +0 -0
  110. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/config.py +0 -0
  111. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/decisions.py +0 -0
  112. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/__init__.py +0 -0
  113. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/adoption.py +0 -0
  114. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/audit_limits.py +0 -0
  115. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/cloud.py +0 -0
  116. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/common.py +0 -0
  117. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github.py +0 -0
  118. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions.py +0 -0
  119. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
  120. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
  121. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
  122. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
  123. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
  124. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
  125. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
  126. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
  127. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_api.py +0 -0
  128. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_branch.py +0 -0
  129. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_config.py +0 -0
  130. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_provider.py +0 -0
  131. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_repo.py +0 -0
  132. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/groups.py +0 -0
  133. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/models.py +0 -0
  134. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/output.py +0 -0
  135. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/presets.py +0 -0
  136. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/privacy.py +0 -0
  137. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
  138. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
  139. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
  140. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_env.py +0 -0
  141. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
  142. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
  143. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
  144. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
  145. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
  146. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
  147. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe.py +0 -0
  148. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
  149. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
  150. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
  151. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
  152. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
  153. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/registry.py +0 -0
  154. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
  155. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
  156. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/gate_health.py +0 -0
  157. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/gemini_cli_audit_pr.py +0 -0
  158. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/grok_build_audit_pr.py +0 -0
  159. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/hermes_cli_audit_pr.py +0 -0
  160. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/__init__.py +0 -0
  161. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/aider.py +0 -0
  162. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
  163. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/claude.py +0 -0
  164. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/codex.py +0 -0
  165. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/devin.py +0 -0
  166. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/gemini_cli.py +0 -0
  167. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/grok_build.py +0 -0
  168. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/hermes_cli.py +0 -0
  169. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/lane_configs/local_llm.py +0 -0
  170. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/local_llm_audit_pr.py +0 -0
  171. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/local_llm_bakeoff.py +0 -0
  172. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/local_llm_calibration.py +0 -0
  173. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/local_llm_profiles.py +0 -0
  174. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/migration_mirror.py +0 -0
  175. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/migration_readiness.py +0 -0
  176. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/migration_rehearsal.py +0 -0
  177. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/next_steps.py +0 -0
  178. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/observe.py +0 -0
  179. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/package.py +0 -0
  180. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/package_paths.py +0 -0
  181. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/package_rendering.py +0 -0
  182. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/plan_context.py +0 -0
  183. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/prompts.py +0 -0
  184. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_registry.py +0 -0
  185. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/__init__.py +0 -0
  186. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/comments.py +0 -0
  187. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/exit_codes.py +0 -0
  188. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/git.py +0 -0
  189. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/github_auth.py +0 -0
  190. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/github_pr.py +0 -0
  191. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/pr_worktree.py +0 -0
  192. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/process.py +0 -0
  193. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/repo_paths.py +0 -0
  194. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/text_schema.py +0 -0
  195. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
  196. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/provider_runners/workspace.py +0 -0
  197. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/providers/__init__.py +0 -0
  198. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/providers/local_cli.py +0 -0
  199. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/release_readiness.py +0 -0
  200. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/reviewer_metrics.py +0 -0
  201. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/reviewer_spend.py +0 -0
  202. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/saas_reviewer_labeler.py +0 -0
  203. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/secrets.py +0 -0
  204. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/builder-experiment.example.json +0 -0
  205. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/calibration-corpus.example.json +0 -0
  206. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/calibration-corpus.json +0 -0
  207. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/code-mower.example.yml +0 -0
  208. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/context-packs.example.json +0 -0
  209. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
  210. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
  211. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
  212. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
  213. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
  214. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/operability.md +0 -0
  215. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
  216. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
  217. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
  218. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/claude.md +0 -0
  219. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/codex.md +0 -0
  220. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/cursor.md +0 -0
  221. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/generic.md +0 -0
  222. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
  223. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
  224. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
  225. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
  226. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
  227. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
  228. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/status_report.py +0 -0
  229. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/providers.yml +0 -0
  230. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/reviewer-spend.example.json +0 -0
  231. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
  232. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  233. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  234. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  235. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  236. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +0 -0
  237. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  238. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
  239. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  240. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
  241. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
  242. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  243. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
  244. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  245. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  246. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  247. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
  248. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/trailer_comment_labeler.py +0 -0
  249. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/work_orders.py +0 -0
  250. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower/workflow_actionlint.py +0 -0
  251. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower.egg-info/dependency_links.txt +0 -0
  252. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower.egg-info/entry_points.txt +0 -0
  253. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/src/code_mower.egg-info/top_level.txt +0 -0
  254. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/builder-experiment.example.json +0 -0
  255. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/calibration-corpus.example.json +0 -0
  256. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/calibration-corpus.json +0 -0
  257. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/code-mower.yml.j2 +0 -0
  258. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/context-packs.example.json +0 -0
  259. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/cursor/BUGBOT.md +0 -0
  260. {code_mower-0.6.0b3/src/code_mower → code_mower-0.8.0b1}/templates/lanes/README.md +0 -0
  261. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/lanes/claude.md +0 -0
  262. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/lanes/codex.md +0 -0
  263. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/lanes/cursor.md +0 -0
  264. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/lanes/generic.md +0 -0
  265. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/lanes/run_mac_lane.sh +0 -0
  266. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/acp_bridge.yml +0 -0
  267. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/aider.yml +0 -0
  268. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/antigravity_cli.yml +0 -0
  269. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/claude_audit.yml +0 -0
  270. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/claude_review.yml +0 -0
  271. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/coderabbit_cli.yml +0 -0
  272. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/codex.yml +0 -0
  273. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/cursor_bugbot.yml +0 -0
  274. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/devin.yml +0 -0
  275. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/gemini_cli.yml +0 -0
  276. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/gitar.yml +0 -0
  277. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/greptile.yml +0 -0
  278. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/hermes_cli.yml +0 -0
  279. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/local_llm.yml +0 -0
  280. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers/qodo.yml +0 -0
  281. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/providers.yml +0 -0
  282. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/reviewer-spend.example.json +0 -0
  283. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/reviewer-value-report.example.md +0 -0
  284. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
  285. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
  286. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
  287. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
  288. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
  289. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/code-mower-gate.yml.j2 +0 -0
  290. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
  291. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/hosted-bridge.yml.j2 +0 -0
  292. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
  293. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/local-cli-audit.yml.j2 +0 -0
  294. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
  295. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/review-clear-stale.yml.j2 +0 -0
  296. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
  297. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
  298. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
  299. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_antigravity_sdk_probe.py +0 -0
  300. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_audit_comment_posture.py +0 -0
  301. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_audit_limits.py +0 -0
  302. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_builder_experiment.py +0 -0
  303. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_builder_identity.py +0 -0
  304. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_builder_runs.py +0 -0
  305. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_calibration_effect_report.py +0 -0
  306. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_calibration_truth.py +0 -0
  307. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_checks.py +0 -0
  308. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_claude_audit_pr.py +0 -0
  309. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_claude_cli_bounce.py +0 -0
  310. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_clear_stale.py +0 -0
  311. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_cloud_git_metadata.py +0 -0
  312. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_cloud_manifest.py +0 -0
  313. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_cloud_reports.py +0 -0
  314. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_coderabbit_cli_audit_pr.py +0 -0
  315. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_codex_audit_env_preflight.py +0 -0
  316. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_codex_audit_pr.py +0 -0
  317. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_decision_audit_integration.py +0 -0
  318. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_decisions.py +0 -0
  319. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_actions_cost_summary.py +0 -0
  320. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_actions_failure_selection.py +0 -0
  321. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_boundaries.py +0 -0
  322. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_output.py +0 -0
  323. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_privacy.py +0 -0
  324. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_provider_env_required.py +0 -0
  325. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_provider_env_tokens.py +0 -0
  326. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_provider_local_audit_setup.py +0 -0
  327. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_provider_probe.py +0 -0
  328. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_provider_review_hygiene.py +0 -0
  329. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_runtime.py +0 -0
  330. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_doctor_self_hosted_runner.py +0 -0
  331. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_gate_health.py +0 -0
  332. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_init_actionlint.py +0 -0
  333. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_init_build_loop.py +0 -0
  334. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_local_llm_github_helpers.py +0 -0
  335. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_observe.py +0 -0
  336. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_plan_context.py +0 -0
  337. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_prompts.py +0 -0
  338. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_fixture_contracts.py +0 -0
  339. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_local_cli.py +0 -0
  340. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_comments.py +0 -0
  341. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_git.py +0 -0
  342. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_github_pr.py +0 -0
  343. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_pr_worktree.py +0 -0
  344. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_process.py +0 -0
  345. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_repo_paths.py +0 -0
  346. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_text_schema.py +0 -0
  347. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_provider_runners_workspace.py +0 -0
  348. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_reviewer_metrics_core.py +0 -0
  349. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_reviewer_spend.py +0 -0
  350. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_trailer_comment_labeler.py +0 -0
  351. {code_mower-0.6.0b3 → code_mower-0.8.0b1}/tests/test_work_orders.py +0 -0
@@ -1,16 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-mower
3
- Version: 0.6.0b3
3
+ Version: 0.8.0b1
4
4
  Summary: Multi-reviewer AI code audit orchestration
5
5
  License-Expression: Apache-2.0
6
- Requires-Python: >=3.11
6
+ Requires-Python: >=3.12
7
7
  Description-Content-Type: text/markdown
8
8
  License-File: LICENSE
9
9
  License-File: NOTICE
10
10
  Requires-Dist: PyYAML>=6.0
11
11
  Provides-Extra: test
12
+ Requires-Dist: build>=1.2; extra == "test"
12
13
  Requires-Dist: pytest>=8.0; extra == "test"
13
14
  Requires-Dist: ruff>=0.8; extra == "test"
15
+ Requires-Dist: twine>=5.0; extra == "test"
14
16
  Dynamic: license-file
15
17
 
16
18
  # Code Mower
@@ -88,7 +90,33 @@ See a fuller static transcript: [docs/first-run-transcript.md](docs/first-run-tr
88
90
 
89
91
  After `init` and `doctor`, use `code-mower lanes status --repo OWNER/REPO` to
90
92
  see active builder/reviewer lanes, gate/check state, recent Code Mower
91
- workflows, local AgentTrail boards when present, and the next operator action.
93
+ workflows, local board/process hints when present, and the next operator
94
+ action. Text and JSON output redact local cwd paths by default; use
95
+ `--show-local-paths` only for local debugging.
96
+
97
+ For the same redacted metadata in a local browser view, run
98
+ `code-mower board serve --repo OWNER/REPO` and open the printed localhost URL.
99
+ Plain `board serve` is read-only. To build local history while the browser view
100
+ is open, run `code-mower board serve --repo OWNER/REPO --record-events`; it
101
+ records at most one snapshot every 60 seconds by default. To append one snapshot
102
+ without serving the browser view, run
103
+ `code-mower board record --repo OWNER/REPO` from the repository checkout; it
104
+ writes metadata-only snapshots to `.code-mower/board/events.jsonl` with default
105
+ 14-day and 500-event retention. `code-mower board events` prints recent stored
106
+ events without calling GitHub. `code-mower board doctor --repo OWNER/REPO`
107
+ checks Board inputs and local history without exposing local paths by default.
108
+ `code-mower board reset --repo OWNER/REPO --yes` clears only the local Board
109
+ history file. The Board also shows an owner queue, and it
110
+ summarizes reviewer verdict history and spend/latency from local board events
111
+ plus `.code-mower/reviewer-spend.json` when those files exist. Local agents can
112
+ publish opt-in status cards by writing metadata-only JSON files to
113
+ `.code-mower/board/agents/*.json`; the Board redacts local paths by default and
114
+ does not upload those cards.
115
+ The local JSON contracts are documented in
116
+ [Board Data Contract](docs/board-data-contract.md).
117
+ When a team wants the same operator picture on CodeMower.com, run
118
+ `code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` to inspect a
119
+ zero-report, metadata-only mirror event, then add `--yes` only after review.
92
120
 
93
121
  ## See The Value Shape First
94
122
 
@@ -96,8 +124,10 @@ If you want to understand the product before installing anything, start with
96
124
  the checked-in demo calibration package:
97
125
 
98
126
  - [examples/demo-calibration/README.md](examples/demo-calibration/README.md)
127
+ - [examples/board-demo/README.md](examples/board-demo/README.md)
99
128
  - [examples/demo-calibration/reviewer-value-report.md](examples/demo-calibration/reviewer-value-report.md)
100
129
  - [docs/first-user-demo-transcript.md](docs/first-user-demo-transcript.md)
130
+ - [docs/post-v08-effectiveness-assessment.md](docs/post-v08-effectiveness-assessment.md)
101
131
 
102
132
  The example is intentionally tiny and synthetic: one known-clean control, one
103
133
  known-blocked control, and three reviewer lanes. It shows the decision Code
@@ -111,15 +141,21 @@ Cold adopters should start with the reviewer gate, then add builders, then
111
141
  measure builder experiments; provider experiments come after that base loop is
112
142
  observable.
113
143
 
144
+ Install first from the [Install And Bootstrap](docs/install.md) matrix: pipx for
145
+ laptops, uv tool installs for hosted agents or CI boxes, and an editable venv
146
+ for Code Mower contributors. All paths require Python 3.12 or newer.
147
+
114
148
  | Path | Use When | Route | Guide |
115
149
  | --- | --- | --- | --- |
116
150
  | A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --adoption --repo OWNER/REPO`, open a small setup PR, run Codex and Claude audits, then merge manually when the audit evidence is clean. | [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md) |
117
151
  | B. Build loop in 30 minutes | You want builders plus an orchestrator pattern after the reviewer gate works. | Complete path A, then add the automation token, require `code-mower/gate` from Any source, enable repository auto-merge, prove the self-hosted Mac lane runner with `doctor --runner`, run `init --builders`, and dispatch the first issue. | [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md) |
118
152
  | C. Builder experiment | You want to compare authoring loops before trusting them broadly. | Use a work order or experiment spec, run `code-mower builder-experiment run` around an explicit command, then review the source-free `authoringRun` artifact and normal audit evidence. | [Builder Experiments](docs/builder-experiments.md) |
119
153
 
120
- The v0.6 beta announcement entry point is the tagged
121
- [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.6.0-beta.3/docs/try-in-10-minutes.md)
122
- guide.
154
+ The current package-index announcement entry point is the tagged
155
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.8.0-beta.1/docs/try-in-10-minutes.md)
156
+ guide. The v0.8 beta includes the completed adoption-polish and native Board
157
+ work, so package-only users can start from the public package rather than a
158
+ source checkout.
123
159
 
124
160
  ## What Calibration Does And Does Not Prove
125
161
 
@@ -148,7 +184,7 @@ Provider-contract baseline for the next release train:
148
184
 
149
185
  For release verification,
150
186
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
151
- the package-index procedure for `v0.6.0-beta.3` / `code-mower==0.6.0b3`. The
187
+ the package-index procedure for `v0.8.0-beta.1` / `code-mower==0.8.0b1`. The
152
188
  GitHub release records the workflow and rehearsal evidence for the exact tag.
153
189
 
154
190
  ## Optional: Plan Before Coding
@@ -254,6 +290,9 @@ code-mower cloud dogfood --json
254
290
  ```
255
291
 
256
292
  Nothing uploads unless you pass `--yes`.
293
+ For the hosted Board mirror specifically,
294
+ `code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` exports one
295
+ metadata-only event and zero reports; add `--yes` to upload it after inspection.
257
296
 
258
297
  Current dogfood uploads, historical catch-up imports, and calibrated
259
298
  reviewer/lens evidence are intentionally separate. Imported GitHub Actions
@@ -312,12 +351,14 @@ engineer can:
312
351
  2. understand the local/cloud trust boundary;
313
352
  3. run `init --easy` and `doctor --adoption --repo OWNER/REPO`;
314
353
  4. run `lanes status --repo OWNER/REPO` to see active lanes and gate state;
315
- 5. detect and run the repo's native lint/test/build surface instead of assuming
354
+ 5. run `board serve --repo OWNER/REPO` when you want the same state in a local
355
+ browser view;
356
+ 6. detect and run the repo's native lint/test/build surface instead of assuming
316
357
  every project uses the same tools;
317
- 6. produce a local value report from known PR outcomes;
318
- 7. decide which lanes should stay informational, selective, or merge-gating;
358
+ 7. produce a local value report from known PR outcomes;
359
+ 8. decide which lanes should stay informational, selective, or merge-gating;
319
360
  and
320
- 8. optionally upload sanitized metadata to CodeMower.com and see useful team
361
+ 9. optionally upload sanitized metadata to CodeMower.com and see useful team
321
362
  dashboard signal.
322
363
 
323
364
  Build-loop templates extend the same loop from "who reviews best?" to "which AI
@@ -329,8 +370,8 @@ measurement work.
329
370
 
330
371
  ## Installation Status
331
372
 
332
- The current public beta baseline is `v0.6.0-beta.3`, with pinned package-index
333
- install spec `code-mower==0.6.0b3`. Release evidence is recorded on the GitHub
373
+ The current package-index beta baseline is `v0.8.0-beta.1`, with pinned package
374
+ install spec `code-mower==0.8.0b1`. Release evidence is recorded on the GitHub
334
375
  release and in the first-user install rehearsal. The public repository is
335
376
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
336
377
  GitHub releases remain the auditable source for tags, build artifacts, and
@@ -370,6 +411,7 @@ first so local work exercises the same package entrypoint users install.
370
411
 
371
412
  ## Docs Map
372
413
 
414
+ - [Install And Bootstrap](docs/install.md)
373
415
  - [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
374
416
  - [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
375
417
  - [Quickstart Reference](docs/quickstart.md)
@@ -391,13 +433,17 @@ first so local work exercises the same package entrypoint users install.
391
433
  - [Launch Command Surface](docs/launch-command-surface.md)
392
434
  - [v0.6 Truth Baseline](docs/v06-truth-baseline.md)
393
435
  - [v0.6 Release Notes](docs/v06-release-notes.md)
436
+ - [v0.8 Release Notes](docs/v08-release-notes.md)
437
+ - [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
394
438
  - [Demo Calibration Example](examples/demo-calibration/README.md)
439
+ - [Board Demo Rehearsal](examples/board-demo/README.md)
395
440
  - [PyPI Release Runbook](docs/pypi-release.md)
396
441
  - [Sample Doctor Output](docs/sample-doctor-output.md)
397
442
  - [Architecture](docs/architecture.md)
398
443
  - [Lane Promotion Policy](docs/lane-promotion-policy.md)
399
444
  - [Cloud Sharing](docs/cloud-sharing.md)
400
445
  - [Cloud Data Contract](docs/cloud-data-contract.md)
446
+ - [Board Data Contract](docs/board-data-contract.md)
401
447
  - [Privacy And Threat Model](docs/privacy-threat-model.md)
402
448
  - [Current State And Roadmap](docs/current-state-and-roadmap.md)
403
449
  - [Public Release Checklist](docs/public-release-checklist.md)
@@ -1,18 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: code-mower
3
- Version: 0.6.0b3
4
- Summary: Multi-reviewer AI code audit orchestration
5
- License-Expression: Apache-2.0
6
- Requires-Python: >=3.11
7
- Description-Content-Type: text/markdown
8
- License-File: LICENSE
9
- License-File: NOTICE
10
- Requires-Dist: PyYAML>=6.0
11
- Provides-Extra: test
12
- Requires-Dist: pytest>=8.0; extra == "test"
13
- Requires-Dist: ruff>=0.8; extra == "test"
14
- Dynamic: license-file
15
-
16
1
  # Code Mower
17
2
 
18
3
  Code Mower helps teams set up AI peer-programmer and reviewer lanes on real
@@ -88,7 +73,33 @@ See a fuller static transcript: [docs/first-run-transcript.md](docs/first-run-tr
88
73
 
89
74
  After `init` and `doctor`, use `code-mower lanes status --repo OWNER/REPO` to
90
75
  see active builder/reviewer lanes, gate/check state, recent Code Mower
91
- workflows, local AgentTrail boards when present, and the next operator action.
76
+ workflows, local board/process hints when present, and the next operator
77
+ action. Text and JSON output redact local cwd paths by default; use
78
+ `--show-local-paths` only for local debugging.
79
+
80
+ For the same redacted metadata in a local browser view, run
81
+ `code-mower board serve --repo OWNER/REPO` and open the printed localhost URL.
82
+ Plain `board serve` is read-only. To build local history while the browser view
83
+ is open, run `code-mower board serve --repo OWNER/REPO --record-events`; it
84
+ records at most one snapshot every 60 seconds by default. To append one snapshot
85
+ without serving the browser view, run
86
+ `code-mower board record --repo OWNER/REPO` from the repository checkout; it
87
+ writes metadata-only snapshots to `.code-mower/board/events.jsonl` with default
88
+ 14-day and 500-event retention. `code-mower board events` prints recent stored
89
+ events without calling GitHub. `code-mower board doctor --repo OWNER/REPO`
90
+ checks Board inputs and local history without exposing local paths by default.
91
+ `code-mower board reset --repo OWNER/REPO --yes` clears only the local Board
92
+ history file. The Board also shows an owner queue, and it
93
+ summarizes reviewer verdict history and spend/latency from local board events
94
+ plus `.code-mower/reviewer-spend.json` when those files exist. Local agents can
95
+ publish opt-in status cards by writing metadata-only JSON files to
96
+ `.code-mower/board/agents/*.json`; the Board redacts local paths by default and
97
+ does not upload those cards.
98
+ The local JSON contracts are documented in
99
+ [Board Data Contract](docs/board-data-contract.md).
100
+ When a team wants the same operator picture on CodeMower.com, run
101
+ `code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` to inspect a
102
+ zero-report, metadata-only mirror event, then add `--yes` only after review.
92
103
 
93
104
  ## See The Value Shape First
94
105
 
@@ -96,8 +107,10 @@ If you want to understand the product before installing anything, start with
96
107
  the checked-in demo calibration package:
97
108
 
98
109
  - [examples/demo-calibration/README.md](examples/demo-calibration/README.md)
110
+ - [examples/board-demo/README.md](examples/board-demo/README.md)
99
111
  - [examples/demo-calibration/reviewer-value-report.md](examples/demo-calibration/reviewer-value-report.md)
100
112
  - [docs/first-user-demo-transcript.md](docs/first-user-demo-transcript.md)
113
+ - [docs/post-v08-effectiveness-assessment.md](docs/post-v08-effectiveness-assessment.md)
101
114
 
102
115
  The example is intentionally tiny and synthetic: one known-clean control, one
103
116
  known-blocked control, and three reviewer lanes. It shows the decision Code
@@ -111,15 +124,21 @@ Cold adopters should start with the reviewer gate, then add builders, then
111
124
  measure builder experiments; provider experiments come after that base loop is
112
125
  observable.
113
126
 
127
+ Install first from the [Install And Bootstrap](docs/install.md) matrix: pipx for
128
+ laptops, uv tool installs for hosted agents or CI boxes, and an editable venv
129
+ for Code Mower contributors. All paths require Python 3.12 or newer.
130
+
114
131
  | Path | Use When | Route | Guide |
115
132
  | --- | --- | --- | --- |
116
133
  | A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --adoption --repo OWNER/REPO`, open a small setup PR, run Codex and Claude audits, then merge manually when the audit evidence is clean. | [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md) |
117
134
  | B. Build loop in 30 minutes | You want builders plus an orchestrator pattern after the reviewer gate works. | Complete path A, then add the automation token, require `code-mower/gate` from Any source, enable repository auto-merge, prove the self-hosted Mac lane runner with `doctor --runner`, run `init --builders`, and dispatch the first issue. | [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md) |
118
135
  | C. Builder experiment | You want to compare authoring loops before trusting them broadly. | Use a work order or experiment spec, run `code-mower builder-experiment run` around an explicit command, then review the source-free `authoringRun` artifact and normal audit evidence. | [Builder Experiments](docs/builder-experiments.md) |
119
136
 
120
- The v0.6 beta announcement entry point is the tagged
121
- [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.6.0-beta.3/docs/try-in-10-minutes.md)
122
- guide.
137
+ The current package-index announcement entry point is the tagged
138
+ [Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.8.0-beta.1/docs/try-in-10-minutes.md)
139
+ guide. The v0.8 beta includes the completed adoption-polish and native Board
140
+ work, so package-only users can start from the public package rather than a
141
+ source checkout.
123
142
 
124
143
  ## What Calibration Does And Does Not Prove
125
144
 
@@ -148,7 +167,7 @@ Provider-contract baseline for the next release train:
148
167
 
149
168
  For release verification,
150
169
  [First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
151
- the package-index procedure for `v0.6.0-beta.3` / `code-mower==0.6.0b3`. The
170
+ the package-index procedure for `v0.8.0-beta.1` / `code-mower==0.8.0b1`. The
152
171
  GitHub release records the workflow and rehearsal evidence for the exact tag.
153
172
 
154
173
  ## Optional: Plan Before Coding
@@ -254,6 +273,9 @@ code-mower cloud dogfood --json
254
273
  ```
255
274
 
256
275
  Nothing uploads unless you pass `--yes`.
276
+ For the hosted Board mirror specifically,
277
+ `code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` exports one
278
+ metadata-only event and zero reports; add `--yes` to upload it after inspection.
257
279
 
258
280
  Current dogfood uploads, historical catch-up imports, and calibrated
259
281
  reviewer/lens evidence are intentionally separate. Imported GitHub Actions
@@ -312,12 +334,14 @@ engineer can:
312
334
  2. understand the local/cloud trust boundary;
313
335
  3. run `init --easy` and `doctor --adoption --repo OWNER/REPO`;
314
336
  4. run `lanes status --repo OWNER/REPO` to see active lanes and gate state;
315
- 5. detect and run the repo's native lint/test/build surface instead of assuming
337
+ 5. run `board serve --repo OWNER/REPO` when you want the same state in a local
338
+ browser view;
339
+ 6. detect and run the repo's native lint/test/build surface instead of assuming
316
340
  every project uses the same tools;
317
- 6. produce a local value report from known PR outcomes;
318
- 7. decide which lanes should stay informational, selective, or merge-gating;
341
+ 7. produce a local value report from known PR outcomes;
342
+ 8. decide which lanes should stay informational, selective, or merge-gating;
319
343
  and
320
- 8. optionally upload sanitized metadata to CodeMower.com and see useful team
344
+ 9. optionally upload sanitized metadata to CodeMower.com and see useful team
321
345
  dashboard signal.
322
346
 
323
347
  Build-loop templates extend the same loop from "who reviews best?" to "which AI
@@ -329,8 +353,8 @@ measurement work.
329
353
 
330
354
  ## Installation Status
331
355
 
332
- The current public beta baseline is `v0.6.0-beta.3`, with pinned package-index
333
- install spec `code-mower==0.6.0b3`. Release evidence is recorded on the GitHub
356
+ The current package-index beta baseline is `v0.8.0-beta.1`, with pinned package
357
+ install spec `code-mower==0.8.0b1`. Release evidence is recorded on the GitHub
334
358
  release and in the first-user install rehearsal. The public repository is
335
359
  [codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
336
360
  GitHub releases remain the auditable source for tags, build artifacts, and
@@ -370,6 +394,7 @@ first so local work exercises the same package entrypoint users install.
370
394
 
371
395
  ## Docs Map
372
396
 
397
+ - [Install And Bootstrap](docs/install.md)
373
398
  - [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
374
399
  - [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
375
400
  - [Quickstart Reference](docs/quickstart.md)
@@ -391,13 +416,17 @@ first so local work exercises the same package entrypoint users install.
391
416
  - [Launch Command Surface](docs/launch-command-surface.md)
392
417
  - [v0.6 Truth Baseline](docs/v06-truth-baseline.md)
393
418
  - [v0.6 Release Notes](docs/v06-release-notes.md)
419
+ - [v0.8 Release Notes](docs/v08-release-notes.md)
420
+ - [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
394
421
  - [Demo Calibration Example](examples/demo-calibration/README.md)
422
+ - [Board Demo Rehearsal](examples/board-demo/README.md)
395
423
  - [PyPI Release Runbook](docs/pypi-release.md)
396
424
  - [Sample Doctor Output](docs/sample-doctor-output.md)
397
425
  - [Architecture](docs/architecture.md)
398
426
  - [Lane Promotion Policy](docs/lane-promotion-policy.md)
399
427
  - [Cloud Sharing](docs/cloud-sharing.md)
400
428
  - [Cloud Data Contract](docs/cloud-data-contract.md)
429
+ - [Board Data Contract](docs/board-data-contract.md)
401
430
  - [Privacy And Threat Model](docs/privacy-threat-model.md)
402
431
  - [Current State And Roadmap](docs/current-state-and-roadmap.md)
403
432
  - [Public Release Checklist](docs/public-release-checklist.md)
@@ -4,17 +4,19 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-mower"
7
- version = "0.6.0b3"
7
+ version = "0.8.0b1"
8
8
  description = "Multi-reviewer AI code audit orchestration"
9
- requires-python = ">=3.11"
9
+ requires-python = ">=3.12"
10
10
  readme = "README.md"
11
11
  license = "Apache-2.0"
12
12
  dependencies = ["PyYAML>=6.0"]
13
13
 
14
14
  [project.optional-dependencies]
15
15
  test = [
16
+ "build>=1.2",
16
17
  "pytest>=8.0",
17
18
  "ruff>=0.8",
19
+ "twine>=5.0",
18
20
  ]
19
21
 
20
22
  [project.scripts]
@@ -43,7 +45,7 @@ code_mower = [
43
45
  ]
44
46
 
45
47
  [tool.ruff]
46
- target-version = "py311"
48
+ target-version = "py312"
47
49
  line-length = 100
48
50
 
49
51
  [tool.ruff.lint]
@@ -1,3 +1,3 @@
1
1
  """Code Mower package."""
2
2
 
3
- __version__ = "0.6.0b3"
3
+ __version__ = "0.8.0b1"