code-mower 0.5.0b51__tar.gz → 0.5.0b53__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.
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/MANIFEST.in +2 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/PKG-INFO +56 -48
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/README.md +55 -47
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/pyproject.toml +2 -1
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/__init__.py +1 -1
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/audit_labeler_lib.py +222 -17
- code_mower-0.5.0b53/src/code_mower/audit_limits.py +141 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/claude_audit_pr.py +386 -86
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cli.py +4 -1
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_pr.py +640 -76
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/config.py +270 -3
- code_mower-0.5.0b53/src/code_mower/decisions.py +717 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor.py +12 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/__init__.py +18 -0
- code_mower-0.5.0b53/src/code_mower/doctor_checks/audit_limits.py +186 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github.py +10 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_branch.py +17 -5
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_human_token.py +10 -7
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_repo.py +2 -2
- code_mower-0.5.0b53/src/code_mower/doctor_checks/provider_local_audit_setup.py +162 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/providers.py +8 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/registry.py +13 -2
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/runner.py +27 -1
- code_mower-0.5.0b53/src/code_mower/doctor_checks/self_hosted_runner.py +964 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/init.py +1167 -77
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/claude.py +1 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/codex.py +1 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_mirror.py +1 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package.py +5 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_content.py +24 -1
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_manifest.py +31 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/__init__.py +9 -1
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/github_pr.py +31 -1
- code_mower-0.5.0b53/src/code_mower/provider_runners/repo_paths.py +87 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/release_readiness.py +5 -2
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/code-mower.example.yml +28 -5
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/base-audit.md +10 -0
- code_mower-0.5.0b53/src/code_mower/templates/lanes/README.md +39 -0
- code_mower-0.5.0b53/src/code_mower/templates/lanes/claude.md +22 -0
- code_mower-0.5.0b53/src/code_mower/templates/lanes/codex.md +22 -0
- code_mower-0.5.0b53/src/code_mower/templates/lanes/cursor.md +22 -0
- code_mower-0.5.0b53/src/code_mower/templates/lanes/generic.md +20 -0
- code_mower-0.5.0b53/src/code_mower/templates/lanes/run_mac_lane.sh +529 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
- {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +81 -27
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +8 -6
- {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/code-mower-gate-health.yml.j2 +6 -7
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +44 -17
- code_mower-0.5.0b53/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +550 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +1 -1
- code_mower-0.5.0b53/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +125 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +5 -5
- {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/saas-reviewer-labeler.yml.j2 +1 -2
- {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/self-hosted-local-audit.yml.j2 +6 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53/src/code_mower}/templates/workflows/trailer-comment-labeler.yml.j2 +2 -2
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/weekly-status.yml.j2 +9 -9
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/trailer_comment_labeler.py +40 -3
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/versioning.py +24 -0
- code_mower-0.5.0b53/src/code_mower/workflow_actionlint.py +231 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/PKG-INFO +56 -48
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/SOURCES.txt +29 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/code-mower.yml.j2 +6 -0
- code_mower-0.5.0b53/templates/lanes/README.md +39 -0
- code_mower-0.5.0b53/templates/lanes/claude.md +22 -0
- code_mower-0.5.0b53/templates/lanes/codex.md +22 -0
- code_mower-0.5.0b53/templates/lanes/cursor.md +22 -0
- code_mower-0.5.0b53/templates/lanes/generic.md +20 -0
- code_mower-0.5.0b53/templates/lanes/run_mac_lane.sh +529 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/builder-provenance.yml.j2 +1 -1
- {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +81 -27
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +8 -6
- {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/code-mower-gate-health.yml.j2 +6 -7
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/code-mower-gate.yml.j2 +44 -17
- code_mower-0.5.0b53/templates/workflows/dispatch-lanes.yml.j2 +550 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/hosted-bridge.yml.j2 +1 -1
- code_mower-0.5.0b53/templates/workflows/lane-mac-runner.yml.j2 +125 -0
- {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/saas-reviewer-labeler.yml.j2 +1 -2
- {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/self-hosted-local-audit.yml.j2 +6 -0
- {code_mower-0.5.0b51/src/code_mower → code_mower-0.5.0b53}/templates/workflows/trailer-comment-labeler.yml.j2 +2 -2
- code_mower-0.5.0b53/tests/test_audit_limits.py +71 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_builder_identity.py +47 -2
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_claude_audit_pr.py +339 -0
- code_mower-0.5.0b53/tests/test_codex_audit_pr.py +715 -0
- code_mower-0.5.0b53/tests/test_decision_audit_integration.py +218 -0
- code_mower-0.5.0b53/tests/test_decisions.py +478 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_github_checks.py +95 -4
- code_mower-0.5.0b53/tests/test_doctor_provider_local_audit_setup.py +90 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_registry.py +35 -0
- code_mower-0.5.0b53/tests/test_doctor_self_hosted_runner.py +302 -0
- code_mower-0.5.0b53/tests/test_init_actionlint.py +134 -0
- code_mower-0.5.0b53/tests/test_init_build_loop.py +1730 -0
- code_mower-0.5.0b53/tests/test_plan_context.py +448 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_prompts.py +3 -0
- code_mower-0.5.0b53/tests/test_provider_runners_github_pr.py +166 -0
- code_mower-0.5.0b53/tests/test_provider_runners_repo_paths.py +59 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_release_hygiene.py +1175 -72
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_trailer_comment_labeler.py +133 -1
- code_mower-0.5.0b51/src/code_mower/provider_runners/repo_paths.py +0 -23
- code_mower-0.5.0b51/tests/test_codex_audit_pr.py +0 -243
- code_mower-0.5.0b51/tests/test_plan_context.py +0 -241
- code_mower-0.5.0b51/tests/test_provider_runners_github_pr.py +0 -65
- code_mower-0.5.0b51/tests/test_provider_runners_repo_paths.py +0 -26
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/LICENSE +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/NOTICE +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/SUPPORT.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/requirements/requirements.txt +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/setup.cfg +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/audit_progress.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/bootstrap.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/builder_runs.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/results.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/checks.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/clear_stale.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/__init__.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/bundle.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/events.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/operations.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/runtime.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/gate_health.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/grok_build_audit_pr.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/grok_build.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_install.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/migration_rehearsal.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/next_steps.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_paths.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_rendering.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/package_static.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/plan_context.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/prompts.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_registry.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/providers/provenance.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/reviewer_spend.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/secrets.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/code_mower +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/product-support/status_report.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower/work_orders.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/requires.txt +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/builder-experiment.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/calibration-corpus.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/context-packs.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/aider.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/claude_audit.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/claude_review.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/codex.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/devin.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/gitar.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/greptile.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/local_llm.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers/qodo.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/providers.yml +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_audit_comment_posture.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_builder_runs.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_calibration_truth.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_checks.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_clear_stale.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_client.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_manifest.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_cloud_reports.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_codex_audit_env_preflight.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_output.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_privacy.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_provider_review_hygiene.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_doctor_runtime.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_gate_health.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_local_cli.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_git.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_process.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_reviewer_metrics_core.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_reviewer_spend.py +0 -0
- {code_mower-0.5.0b51 → code_mower-0.5.0b53}/tests/test_work_orders.py +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
recursive-include src/code_mower/templates *.yml *.yaml *.json
|
|
2
2
|
recursive-include src/code_mower/templates *.md
|
|
3
3
|
recursive-include src/code_mower/templates *.j2
|
|
4
|
+
recursive-include src/code_mower/templates/lanes *
|
|
4
5
|
recursive-include src/code_mower/templates/product-support *
|
|
5
6
|
include src/code_mower/*.json
|
|
6
7
|
recursive-include templates *.j2 *.json *.md *.yml *.yaml
|
|
8
|
+
recursive-include templates/lanes *
|
|
7
9
|
include requirements/*.txt
|
|
8
10
|
include LICENSE
|
|
9
11
|
include NOTICE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0b53
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -19,6 +19,9 @@ Code Mower helps teams set up AI peer-programmer and reviewer lanes on real
|
|
|
19
19
|
GitHub pull requests, then measure which builders and reviewers are useful on
|
|
20
20
|
their actual codebase.
|
|
21
21
|
|
|
22
|
+
Code Mower is beta, bring-your-own-agent-loop software for teams willing to
|
|
23
|
+
calibrate reviewers. It is not a drop-in autonomous merge gate.
|
|
24
|
+
|
|
22
25
|
The short version:
|
|
23
26
|
|
|
24
27
|
- create safe, manual-first reviewer lanes for Codex, Claude, Gitar, and other
|
|
@@ -97,46 +100,26 @@ known-blocked control, and three reviewer lanes. It shows the decision Code
|
|
|
97
100
|
Mower is built to support: which AI reviewers are useful, noisy, expensive,
|
|
98
101
|
fast, or eligible for stronger merge policy on your actual codebase.
|
|
99
102
|
|
|
100
|
-
##
|
|
101
|
-
|
|
102
|
-
Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
python3.12 --version
|
|
106
|
-
pipx install --python python3.12 code-mower==0.5.0b51
|
|
107
|
-
code-mower --version
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
`0.5.0b51` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
111
|
-
line, use the explicit beta version above or allow prereleases with:
|
|
103
|
+
## Start Here
|
|
112
104
|
|
|
113
|
-
|
|
114
|
-
pipx install --python python3.12 --pip-args="--pre" code-mower
|
|
115
|
-
```
|
|
105
|
+
Choose one path. Each path has one guide and gets to one visible outcome.
|
|
116
106
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
code-mower init --
|
|
121
|
-
code-mower doctor --preflight
|
|
122
|
-
code-mower checks detect --json
|
|
123
|
-
```
|
|
107
|
+
| Path | Use When | Route | Guide |
|
|
108
|
+
| --- | --- | --- | --- |
|
|
109
|
+
| A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --preflight`, 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) |
|
|
110
|
+
| 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) |
|
|
124
111
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
112
|
+
The beta.53 announcement entry point is the tagged
|
|
113
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.5.0-beta.53/docs/try-in-10-minutes.md)
|
|
114
|
+
guide.
|
|
128
115
|
|
|
129
|
-
|
|
130
|
-
produce the starter local report:
|
|
116
|
+
## What Calibration Does And Does Not Prove
|
|
131
117
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
```
|
|
118
|
+
The generated starter corpus proves that the commands run and the report path
|
|
119
|
+
works. It does not prove that a reviewer should gate merges. Promote reviewer
|
|
120
|
+
lanes only after repository-specific known-clean and known-blocked evidence
|
|
121
|
+
meets the [lane promotion policy](docs/lane-promotion-policy.md).
|
|
137
122
|
|
|
138
|
-
The generated setup also includes the configurable owner escalation and weekly
|
|
139
|
-
status digest templates. The generated starter corpus proves the command path.
|
|
140
123
|
To bootstrap a draft from your repository history:
|
|
141
124
|
|
|
142
125
|
```bash
|
|
@@ -153,9 +136,12 @@ every disposition before using it for lane promotion or merge policy.
|
|
|
153
136
|
Full walkthrough: [docs/try-in-10-minutes.md](docs/try-in-10-minutes.md).
|
|
154
137
|
First-time command map: [docs/launch-command-surface.md](docs/launch-command-surface.md).
|
|
155
138
|
|
|
156
|
-
The
|
|
139
|
+
The beta.53 package-index release is prepared:
|
|
157
140
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
158
|
-
the
|
|
141
|
+
the release procedure. It is to be published and rehearsed as part of the
|
|
142
|
+
`v0.5.0-beta.53` release execution, with evidence recorded on the release after
|
|
143
|
+
the workflow runs complete. The latest completed public-package rehearsal
|
|
144
|
+
remains beta.52: 10/10 first-user readiness for `code-mower==0.5.0b52`.
|
|
159
145
|
|
|
160
146
|
## Optional: Plan Before Coding
|
|
161
147
|
|
|
@@ -205,6 +191,15 @@ That lets CodeMower.com show `issue -> plan -> work order -> builder run -> PR
|
|
|
205
191
|
transcripts, prompts, or issue body text. See
|
|
206
192
|
[docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
|
|
207
193
|
|
|
194
|
+
## Roles
|
|
195
|
+
|
|
196
|
+
Code Mower records builder provenance for Claude Code, Codex, Cursor-style
|
|
197
|
+
hosted builders, and similar authoring lanes, then runs reviewer lanes against
|
|
198
|
+
the resulting pull requests. The orchestrator is a workflow convention: issue,
|
|
199
|
+
optional work order, single-writer branch, reviewer lanes, and fix rounds. Code
|
|
200
|
+
Mower's templates now support that loop end to end; humans still own
|
|
201
|
+
credentials, branch protection, calibration, and owner decisions.
|
|
202
|
+
|
|
208
203
|
## Why Not Just Run Codex Or Claude Yourself?
|
|
209
204
|
|
|
210
205
|
You should, at first. Code Mower is not a replacement for a good local agent or
|
|
@@ -301,18 +296,20 @@ engineer can:
|
|
|
301
296
|
7. optionally upload sanitized metadata to CodeMower.com and see useful team
|
|
302
297
|
dashboard signal.
|
|
303
298
|
|
|
304
|
-
|
|
305
|
-
|
|
299
|
+
Build-loop templates extend the same loop from "who reviews best?" to "which AI
|
|
300
|
+
builder plus reviewer loop ships best on this product?" Start with
|
|
301
|
+
[docs/build-loop-in-30-minutes.md](docs/build-loop-in-30-minutes.md), then use
|
|
306
302
|
[docs/builder-experiments.md](docs/builder-experiments.md) and
|
|
307
|
-
[docs/authoring-intelligence.md](docs/authoring-intelligence.md)
|
|
308
|
-
|
|
309
|
-
[docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
|
|
303
|
+
[docs/authoring-intelligence.md](docs/authoring-intelligence.md) for deeper
|
|
304
|
+
measurement work.
|
|
310
305
|
|
|
311
306
|
## Installation Status
|
|
312
307
|
|
|
313
|
-
The
|
|
314
|
-
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower)
|
|
315
|
-
as `
|
|
308
|
+
The prepared public beta is `v0.5.0-beta.53` from
|
|
309
|
+
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower). It is to
|
|
310
|
+
be published and rehearsed as part of the `v0.5.0-beta.53` release execution,
|
|
311
|
+
with evidence recorded on the release after the workflow runs complete. The
|
|
312
|
+
pinned package-index install spec is `code-mower==0.5.0b53`.
|
|
316
313
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
317
314
|
release notes.
|
|
318
315
|
|
|
@@ -349,7 +346,19 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
|
|
|
349
346
|
## Docs Map
|
|
350
347
|
|
|
351
348
|
- [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
|
|
352
|
-
- [
|
|
349
|
+
- [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
|
|
350
|
+
- [Quickstart Reference](docs/quickstart.md)
|
|
351
|
+
- [Planning And Work Orders](docs/planning-work-orders.md)
|
|
352
|
+
- [Builder Providers: Grok And Cursor](docs/builders-grok-cursor.md)
|
|
353
|
+
- [Build Loop Operations](docs/build-loop.md)
|
|
354
|
+
- [Self-Hosted Mac Runner](docs/self-hosted-mac-runner.md)
|
|
355
|
+
- [Local Audit Runner](docs/local-audit-runner.md)
|
|
356
|
+
- [Lane Standing Instructions](docs/lanes/README.md)
|
|
357
|
+
- [Codex Lane Standing Instructions](docs/lanes/codex.md)
|
|
358
|
+
- [Claude Lane Standing Instructions](docs/lanes/claude.md)
|
|
359
|
+
- [Cursor Hosted Lane Standing Instructions](docs/lanes/cursor.md)
|
|
360
|
+
- [Provider Matrix](docs/provider-matrix.md)
|
|
361
|
+
- [GitHub Setup](docs/github-setup.md)
|
|
353
362
|
- [First Run Transcript](docs/first-run-transcript.md)
|
|
354
363
|
- [First-User Demo Transcript](docs/first-user-demo-transcript.md)
|
|
355
364
|
- [First-User Install Rehearsal](docs/first-user-install-rehearsal.md)
|
|
@@ -358,8 +367,7 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
|
|
|
358
367
|
- [PyPI Release Runbook](docs/pypi-release.md)
|
|
359
368
|
- [Sample Doctor Output](docs/sample-doctor-output.md)
|
|
360
369
|
- [Architecture](docs/architecture.md)
|
|
361
|
-
- [
|
|
362
|
-
- [GitHub Setup](docs/github-setup.md)
|
|
370
|
+
- [Lane Promotion Policy](docs/lane-promotion-policy.md)
|
|
363
371
|
- [Cloud Sharing](docs/cloud-sharing.md)
|
|
364
372
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
365
373
|
- [Privacy And Threat Model](docs/privacy-threat-model.md)
|
|
@@ -4,6 +4,9 @@ Code Mower helps teams set up AI peer-programmer and reviewer lanes on real
|
|
|
4
4
|
GitHub pull requests, then measure which builders and reviewers are useful on
|
|
5
5
|
their actual codebase.
|
|
6
6
|
|
|
7
|
+
Code Mower is beta, bring-your-own-agent-loop software for teams willing to
|
|
8
|
+
calibrate reviewers. It is not a drop-in autonomous merge gate.
|
|
9
|
+
|
|
7
10
|
The short version:
|
|
8
11
|
|
|
9
12
|
- create safe, manual-first reviewer lanes for Codex, Claude, Gitar, and other
|
|
@@ -82,46 +85,26 @@ known-blocked control, and three reviewer lanes. It shows the decision Code
|
|
|
82
85
|
Mower is built to support: which AI reviewers are useful, noisy, expensive,
|
|
83
86
|
fast, or eligible for stronger merge policy on your actual codebase.
|
|
84
87
|
|
|
85
|
-
##
|
|
86
|
-
|
|
87
|
-
Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
python3.12 --version
|
|
91
|
-
pipx install --python python3.12 code-mower==0.5.0b51
|
|
92
|
-
code-mower --version
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
`0.5.0b51` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
96
|
-
line, use the explicit beta version above or allow prereleases with:
|
|
88
|
+
## Start Here
|
|
97
89
|
|
|
98
|
-
|
|
99
|
-
pipx install --python python3.12 --pip-args="--pre" code-mower
|
|
100
|
-
```
|
|
90
|
+
Choose one path. Each path has one guide and gets to one visible outcome.
|
|
101
91
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
code-mower init --
|
|
106
|
-
code-mower doctor --preflight
|
|
107
|
-
code-mower checks detect --json
|
|
108
|
-
```
|
|
92
|
+
| Path | Use When | Route | Guide |
|
|
93
|
+
| --- | --- | --- | --- |
|
|
94
|
+
| A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --preflight`, 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) |
|
|
95
|
+
| 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) |
|
|
109
96
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
97
|
+
The beta.53 announcement entry point is the tagged
|
|
98
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.5.0-beta.53/docs/try-in-10-minutes.md)
|
|
99
|
+
guide.
|
|
113
100
|
|
|
114
|
-
|
|
115
|
-
produce the starter local report:
|
|
101
|
+
## What Calibration Does And Does Not Prove
|
|
116
102
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
```
|
|
103
|
+
The generated starter corpus proves that the commands run and the report path
|
|
104
|
+
works. It does not prove that a reviewer should gate merges. Promote reviewer
|
|
105
|
+
lanes only after repository-specific known-clean and known-blocked evidence
|
|
106
|
+
meets the [lane promotion policy](docs/lane-promotion-policy.md).
|
|
122
107
|
|
|
123
|
-
The generated setup also includes the configurable owner escalation and weekly
|
|
124
|
-
status digest templates. The generated starter corpus proves the command path.
|
|
125
108
|
To bootstrap a draft from your repository history:
|
|
126
109
|
|
|
127
110
|
```bash
|
|
@@ -138,9 +121,12 @@ every disposition before using it for lane promotion or merge policy.
|
|
|
138
121
|
Full walkthrough: [docs/try-in-10-minutes.md](docs/try-in-10-minutes.md).
|
|
139
122
|
First-time command map: [docs/launch-command-surface.md](docs/launch-command-surface.md).
|
|
140
123
|
|
|
141
|
-
The
|
|
124
|
+
The beta.53 package-index release is prepared:
|
|
142
125
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
143
|
-
the
|
|
126
|
+
the release procedure. It is to be published and rehearsed as part of the
|
|
127
|
+
`v0.5.0-beta.53` release execution, with evidence recorded on the release after
|
|
128
|
+
the workflow runs complete. The latest completed public-package rehearsal
|
|
129
|
+
remains beta.52: 10/10 first-user readiness for `code-mower==0.5.0b52`.
|
|
144
130
|
|
|
145
131
|
## Optional: Plan Before Coding
|
|
146
132
|
|
|
@@ -190,6 +176,15 @@ That lets CodeMower.com show `issue -> plan -> work order -> builder run -> PR
|
|
|
190
176
|
transcripts, prompts, or issue body text. See
|
|
191
177
|
[docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
|
|
192
178
|
|
|
179
|
+
## Roles
|
|
180
|
+
|
|
181
|
+
Code Mower records builder provenance for Claude Code, Codex, Cursor-style
|
|
182
|
+
hosted builders, and similar authoring lanes, then runs reviewer lanes against
|
|
183
|
+
the resulting pull requests. The orchestrator is a workflow convention: issue,
|
|
184
|
+
optional work order, single-writer branch, reviewer lanes, and fix rounds. Code
|
|
185
|
+
Mower's templates now support that loop end to end; humans still own
|
|
186
|
+
credentials, branch protection, calibration, and owner decisions.
|
|
187
|
+
|
|
193
188
|
## Why Not Just Run Codex Or Claude Yourself?
|
|
194
189
|
|
|
195
190
|
You should, at first. Code Mower is not a replacement for a good local agent or
|
|
@@ -286,18 +281,20 @@ engineer can:
|
|
|
286
281
|
7. optionally upload sanitized metadata to CodeMower.com and see useful team
|
|
287
282
|
dashboard signal.
|
|
288
283
|
|
|
289
|
-
|
|
290
|
-
|
|
284
|
+
Build-loop templates extend the same loop from "who reviews best?" to "which AI
|
|
285
|
+
builder plus reviewer loop ships best on this product?" Start with
|
|
286
|
+
[docs/build-loop-in-30-minutes.md](docs/build-loop-in-30-minutes.md), then use
|
|
291
287
|
[docs/builder-experiments.md](docs/builder-experiments.md) and
|
|
292
|
-
[docs/authoring-intelligence.md](docs/authoring-intelligence.md)
|
|
293
|
-
|
|
294
|
-
[docs/builders-grok-cursor.md](docs/builders-grok-cursor.md).
|
|
288
|
+
[docs/authoring-intelligence.md](docs/authoring-intelligence.md) for deeper
|
|
289
|
+
measurement work.
|
|
295
290
|
|
|
296
291
|
## Installation Status
|
|
297
292
|
|
|
298
|
-
The
|
|
299
|
-
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower)
|
|
300
|
-
as `
|
|
293
|
+
The prepared public beta is `v0.5.0-beta.53` from
|
|
294
|
+
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower). It is to
|
|
295
|
+
be published and rehearsed as part of the `v0.5.0-beta.53` release execution,
|
|
296
|
+
with evidence recorded on the release after the workflow runs complete. The
|
|
297
|
+
pinned package-index install spec is `code-mower==0.5.0b53`.
|
|
301
298
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
302
299
|
release notes.
|
|
303
300
|
|
|
@@ -334,7 +331,19 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
|
|
|
334
331
|
## Docs Map
|
|
335
332
|
|
|
336
333
|
- [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
|
|
337
|
-
- [
|
|
334
|
+
- [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
|
|
335
|
+
- [Quickstart Reference](docs/quickstart.md)
|
|
336
|
+
- [Planning And Work Orders](docs/planning-work-orders.md)
|
|
337
|
+
- [Builder Providers: Grok And Cursor](docs/builders-grok-cursor.md)
|
|
338
|
+
- [Build Loop Operations](docs/build-loop.md)
|
|
339
|
+
- [Self-Hosted Mac Runner](docs/self-hosted-mac-runner.md)
|
|
340
|
+
- [Local Audit Runner](docs/local-audit-runner.md)
|
|
341
|
+
- [Lane Standing Instructions](docs/lanes/README.md)
|
|
342
|
+
- [Codex Lane Standing Instructions](docs/lanes/codex.md)
|
|
343
|
+
- [Claude Lane Standing Instructions](docs/lanes/claude.md)
|
|
344
|
+
- [Cursor Hosted Lane Standing Instructions](docs/lanes/cursor.md)
|
|
345
|
+
- [Provider Matrix](docs/provider-matrix.md)
|
|
346
|
+
- [GitHub Setup](docs/github-setup.md)
|
|
338
347
|
- [First Run Transcript](docs/first-run-transcript.md)
|
|
339
348
|
- [First-User Demo Transcript](docs/first-user-demo-transcript.md)
|
|
340
349
|
- [First-User Install Rehearsal](docs/first-user-install-rehearsal.md)
|
|
@@ -343,8 +352,7 @@ The wrapper resolves Python 3.12+ and refuses stale or old system Python shims.
|
|
|
343
352
|
- [PyPI Release Runbook](docs/pypi-release.md)
|
|
344
353
|
- [Sample Doctor Output](docs/sample-doctor-output.md)
|
|
345
354
|
- [Architecture](docs/architecture.md)
|
|
346
|
-
- [
|
|
347
|
-
- [GitHub Setup](docs/github-setup.md)
|
|
355
|
+
- [Lane Promotion Policy](docs/lane-promotion-policy.md)
|
|
348
356
|
- [Cloud Sharing](docs/cloud-sharing.md)
|
|
349
357
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
350
358
|
- [Privacy And Threat Model](docs/privacy-threat-model.md)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "code-mower"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.0b53"
|
|
8
8
|
description = "Multi-reviewer AI code audit orchestration"
|
|
9
9
|
requires-python = ">=3.11"
|
|
10
10
|
readme = "README.md"
|
|
@@ -31,6 +31,7 @@ code_mower = [
|
|
|
31
31
|
"templates/**/*.yml",
|
|
32
32
|
"templates/**/*.yaml",
|
|
33
33
|
"templates/**/*.j2",
|
|
34
|
+
"templates/lanes/*",
|
|
34
35
|
"templates/product-support/*",
|
|
35
36
|
]
|
|
36
37
|
|