code-mower 0.6.0b3__tar.gz → 0.9.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.
- {code_mower-0.6.0b3/src/code_mower.egg-info → code_mower-0.9.0b1}/PKG-INFO +72 -13
- code_mower-0.6.0b3/PKG-INFO → code_mower-0.9.0b1/README.md +68 -26
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/pyproject.toml +5 -3
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/__init__.py +1 -1
- code_mower-0.9.0b1/src/code_mower/board.py +1277 -0
- code_mower-0.9.0b1/src/code_mower/board_store.py +269 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/bootstrap.py +5 -5
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cli.py +10 -4
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud.py +90 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/__init__.py +4 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/bundle.py +1 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/events.py +233 -1
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/operations.py +124 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor.py +74 -1
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/adoption.py +20 -12
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/common.py +2 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github.py +2 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_human_token.py +78 -10
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_review_hygiene.py +53 -30
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/providers.py +74 -2
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/runner.py +8 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/runtime.py +5 -5
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -3
- code_mower-0.9.0b1/src/code_mower/git_identity.py +15 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/init.py +3 -3
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_status.py +51 -6
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/migration.py +352 -2
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/migration_install.py +26 -21
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/migration_rehearsal.py +30 -7
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/next_steps.py +4 -4
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/package_content.py +3 -2
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/package_manifest.py +3 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/package_static.py +19 -2
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/providers/provenance.py +1 -1
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/release_readiness.py +3 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1/src/code_mower}/templates/lanes/README.md +2 -1
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/product-support/code_mower +4 -4
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +2 -2
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/versioning.py +2 -2
- code_mower-0.6.0b3/README.md → code_mower-0.9.0b1/src/code_mower.egg-info/PKG-INFO +85 -11
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower.egg-info/SOURCES.txt +5 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower.egg-info/requires.txt +2 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/builder-provenance.yml.j2 +2 -2
- code_mower-0.9.0b1/tests/test_board.py +1048 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_cloud_client.py +226 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_github_checks.py +65 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_provider_review_hygiene.py +4 -6
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_registry.py +155 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_self_hosted_runner.py +31 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_lane_status.py +59 -1
- code_mower-0.9.0b1/tests/test_migration_setup_drift.py +82 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_release_hygiene.py +513 -43
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/LICENSE +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/MANIFEST.in +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/NOTICE +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/SUPPORT.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/requirements/requirements.txt +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/setup.cfg +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/antigravity_sdk_probe.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/audit_labeler_lib.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/audit_limits.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/audit_progress.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/builder_runs.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/results.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/checks.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/claude_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/clear_stale.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/tokens.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/codex_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/config.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/decisions.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/__init__.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/audit_limits.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/github_repo.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/registry.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/gate_health.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/grok_build_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/grok_build.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/observe.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/package.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/package_paths.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/package_rendering.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/plan_context.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/prompts.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_registry.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/exit_codes.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/github_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/reviewer_spend.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/secrets.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/code-mower.example.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lanes/claude.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lanes/codex.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lanes/cursor.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lanes/generic.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/product-support/status_report.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/trailer_comment_labeler.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/work_orders.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower/workflow_actionlint.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/builder-experiment.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/calibration-corpus.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/code-mower.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/context-packs.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-0.6.0b3/src/code_mower → code_mower-0.9.0b1}/templates/lanes/README.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/lanes/claude.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/lanes/codex.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/lanes/cursor.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/lanes/generic.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/aider.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/claude_audit.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/claude_review.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/codex.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/devin.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/gitar.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/greptile.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/local_llm.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers/qodo.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/providers.yml +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_antigravity_sdk_probe.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_audit_comment_posture.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_audit_limits.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_builder_experiment.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_builder_identity.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_builder_runs.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_calibration_truth.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_checks.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_claude_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_clear_stale.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_cloud_manifest.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_cloud_reports.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_codex_audit_env_preflight.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_codex_audit_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_decision_audit_integration.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_decisions.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_output.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_privacy.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_provider_local_audit_setup.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_doctor_runtime.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_gate_health.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_init_actionlint.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_init_build_loop.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_observe.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_plan_context.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_prompts.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_fixture_contracts.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_local_cli.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_git.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_process.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_reviewer_metrics_core.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_reviewer_spend.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.0b1}/tests/test_trailer_comment_labeler.py +0 -0
- {code_mower-0.6.0b3 → code_mower-0.9.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.
|
|
3
|
+
Version: 0.9.0b1
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
|
-
Requires-Python: >=3.
|
|
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
|
|
@@ -62,6 +64,8 @@ for a real repository. It checks your runtime, GitHub setup, provider CLIs,
|
|
|
62
64
|
token posture, optional cloud setup, private-repo Actions cost traps, and
|
|
63
65
|
first-run adoption gaps. `--preflight` remains the compatibility preset for
|
|
64
66
|
older scripts; `--adoption` adds explicit repo targeting and setup guidance.
|
|
67
|
+
Use `--hosted-builders` or `--orchestrator-only` when the current machine is
|
|
68
|
+
observing/coordinating lanes and will not run local Codex or Claude wrappers.
|
|
65
69
|
|
|
66
70
|
Example, shortened:
|
|
67
71
|
|
|
@@ -86,9 +90,43 @@ boundaries visible before you promote any reviewer lane.
|
|
|
86
90
|
|
|
87
91
|
See a fuller static transcript: [docs/first-run-transcript.md](docs/first-run-transcript.md).
|
|
88
92
|
|
|
93
|
+
For an existing repository that already has Code Mower generated workflows or
|
|
94
|
+
wrappers, run `code-mower migration setup-drift --repo-path .` before copying a
|
|
95
|
+
fresh `.code-mower.generated` tree. It is read-only and reports path-level
|
|
96
|
+
classifications (`same`, `differs`, `new`, `repo-only`,
|
|
97
|
+
`missing-from-output`) without file contents or diffs.
|
|
98
|
+
|
|
89
99
|
After `init` and `doctor`, use `code-mower lanes status --repo OWNER/REPO` to
|
|
90
100
|
see active builder/reviewer lanes, gate/check state, recent Code Mower
|
|
91
|
-
workflows, local
|
|
101
|
+
workflows, local board/process hints when present, and the next operator
|
|
102
|
+
action. Text and JSON output redact local cwd paths by default; use
|
|
103
|
+
`--show-local-paths` only for local debugging.
|
|
104
|
+
|
|
105
|
+
For the same redacted metadata in a local browser view, run
|
|
106
|
+
`code-mower board serve --repo OWNER/REPO` and open the printed localhost URL.
|
|
107
|
+
Plain `board serve` is read-only. If the default Board port is busy, the CLI
|
|
108
|
+
uses a nearby free loopback port and prints the URL; an explicit `--port` stays
|
|
109
|
+
strict and reports a friendly conflict. To build local history while the browser
|
|
110
|
+
view is open, run `code-mower board serve --repo OWNER/REPO --record-events`; it
|
|
111
|
+
records at most one snapshot every 60 seconds by default. To append one snapshot
|
|
112
|
+
without serving the browser view, run
|
|
113
|
+
`code-mower board record --repo OWNER/REPO` from the repository checkout; it
|
|
114
|
+
writes metadata-only snapshots to `.code-mower/board/events.jsonl` with default
|
|
115
|
+
14-day and 500-event retention. `code-mower board events` prints recent stored
|
|
116
|
+
events without calling GitHub. `code-mower board doctor --repo OWNER/REPO`
|
|
117
|
+
checks Board inputs and local history without exposing local paths by default.
|
|
118
|
+
`code-mower board reset --repo OWNER/REPO --yes` clears only the local Board
|
|
119
|
+
history file. The Board also shows an owner queue, and it
|
|
120
|
+
summarizes reviewer verdict history and spend/latency from local board events
|
|
121
|
+
plus `.code-mower/reviewer-spend.json` when those files exist. Local agents can
|
|
122
|
+
publish opt-in status cards by writing metadata-only JSON files to
|
|
123
|
+
`.code-mower/board/agents/*.json`; the Board redacts local paths by default and
|
|
124
|
+
does not upload those cards.
|
|
125
|
+
The local JSON contracts are documented in
|
|
126
|
+
[Board Data Contract](docs/board-data-contract.md).
|
|
127
|
+
When a team wants the same operator picture on CodeMower.com, run
|
|
128
|
+
`code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` to inspect a
|
|
129
|
+
zero-report, metadata-only mirror event, then add `--yes` only after review.
|
|
92
130
|
|
|
93
131
|
## See The Value Shape First
|
|
94
132
|
|
|
@@ -96,8 +134,10 @@ If you want to understand the product before installing anything, start with
|
|
|
96
134
|
the checked-in demo calibration package:
|
|
97
135
|
|
|
98
136
|
- [examples/demo-calibration/README.md](examples/demo-calibration/README.md)
|
|
137
|
+
- [examples/board-demo/README.md](examples/board-demo/README.md)
|
|
99
138
|
- [examples/demo-calibration/reviewer-value-report.md](examples/demo-calibration/reviewer-value-report.md)
|
|
100
139
|
- [docs/first-user-demo-transcript.md](docs/first-user-demo-transcript.md)
|
|
140
|
+
- [docs/post-v08-effectiveness-assessment.md](docs/post-v08-effectiveness-assessment.md)
|
|
101
141
|
|
|
102
142
|
The example is intentionally tiny and synthetic: one known-clean control, one
|
|
103
143
|
known-blocked control, and three reviewer lanes. It shows the decision Code
|
|
@@ -111,15 +151,23 @@ Cold adopters should start with the reviewer gate, then add builders, then
|
|
|
111
151
|
measure builder experiments; provider experiments come after that base loop is
|
|
112
152
|
observable.
|
|
113
153
|
|
|
154
|
+
Install first from the [Install And Bootstrap](docs/install.md) matrix: pipx for
|
|
155
|
+
laptops, uv tool installs for hosted agents or CI boxes, and an editable venv
|
|
156
|
+
for Code Mower contributors. All paths require Python 3.12 or newer. For
|
|
157
|
+
upgrades, record `command -v code-mower` and `code-mower --version` before and
|
|
158
|
+
after reinstalling, especially when switching between pipx and uv.
|
|
159
|
+
|
|
114
160
|
| Path | Use When | Route | Guide |
|
|
115
161
|
| --- | --- | --- | --- |
|
|
116
162
|
| 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
163
|
| 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
164
|
| 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
165
|
|
|
120
|
-
The
|
|
121
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.
|
|
122
|
-
guide.
|
|
166
|
+
The current package-index announcement entry point is the tagged
|
|
167
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.9.0-beta.1/docs/try-in-10-minutes.md)
|
|
168
|
+
guide. The v0.9 beta includes the completed native Board work plus the adoption
|
|
169
|
+
and upgrade hardening from recent install rehearsals, so package-only users can
|
|
170
|
+
start from the public package rather than a source checkout.
|
|
123
171
|
|
|
124
172
|
## What Calibration Does And Does Not Prove
|
|
125
173
|
|
|
@@ -148,7 +196,7 @@ Provider-contract baseline for the next release train:
|
|
|
148
196
|
|
|
149
197
|
For release verification,
|
|
150
198
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
151
|
-
the package-index procedure for `v0.
|
|
199
|
+
the package-index procedure for `v0.9.0-beta.1` / `code-mower==0.9.0b1`. The
|
|
152
200
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
153
201
|
|
|
154
202
|
## Optional: Plan Before Coding
|
|
@@ -254,6 +302,9 @@ code-mower cloud dogfood --json
|
|
|
254
302
|
```
|
|
255
303
|
|
|
256
304
|
Nothing uploads unless you pass `--yes`.
|
|
305
|
+
For the hosted Board mirror specifically,
|
|
306
|
+
`code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` exports one
|
|
307
|
+
metadata-only event and zero reports; add `--yes` to upload it after inspection.
|
|
257
308
|
|
|
258
309
|
Current dogfood uploads, historical catch-up imports, and calibrated
|
|
259
310
|
reviewer/lens evidence are intentionally separate. Imported GitHub Actions
|
|
@@ -312,12 +363,14 @@ engineer can:
|
|
|
312
363
|
2. understand the local/cloud trust boundary;
|
|
313
364
|
3. run `init --easy` and `doctor --adoption --repo OWNER/REPO`;
|
|
314
365
|
4. run `lanes status --repo OWNER/REPO` to see active lanes and gate state;
|
|
315
|
-
5.
|
|
366
|
+
5. run `board serve --repo OWNER/REPO` when you want the same state in a local
|
|
367
|
+
browser view;
|
|
368
|
+
6. detect and run the repo's native lint/test/build surface instead of assuming
|
|
316
369
|
every project uses the same tools;
|
|
317
|
-
|
|
318
|
-
|
|
370
|
+
7. produce a local value report from known PR outcomes;
|
|
371
|
+
8. decide which lanes should stay informational, selective, or merge-gating;
|
|
319
372
|
and
|
|
320
|
-
|
|
373
|
+
9. optionally upload sanitized metadata to CodeMower.com and see useful team
|
|
321
374
|
dashboard signal.
|
|
322
375
|
|
|
323
376
|
Build-loop templates extend the same loop from "who reviews best?" to "which AI
|
|
@@ -329,8 +382,8 @@ measurement work.
|
|
|
329
382
|
|
|
330
383
|
## Installation Status
|
|
331
384
|
|
|
332
|
-
The current
|
|
333
|
-
install spec `code-mower==0.
|
|
385
|
+
The current package-index beta baseline is `v0.9.0-beta.1`, with pinned package
|
|
386
|
+
install spec `code-mower==0.9.0b1`. Release evidence is recorded on the GitHub
|
|
334
387
|
release and in the first-user install rehearsal. The public repository is
|
|
335
388
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
336
389
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -370,6 +423,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
370
423
|
|
|
371
424
|
## Docs Map
|
|
372
425
|
|
|
426
|
+
- [Install And Bootstrap](docs/install.md)
|
|
373
427
|
- [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
|
|
374
428
|
- [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
|
|
375
429
|
- [Quickstart Reference](docs/quickstart.md)
|
|
@@ -391,13 +445,18 @@ first so local work exercises the same package entrypoint users install.
|
|
|
391
445
|
- [Launch Command Surface](docs/launch-command-surface.md)
|
|
392
446
|
- [v0.6 Truth Baseline](docs/v06-truth-baseline.md)
|
|
393
447
|
- [v0.6 Release Notes](docs/v06-release-notes.md)
|
|
448
|
+
- [v0.8 Release Notes](docs/v08-release-notes.md)
|
|
449
|
+
- [v0.9 Release Notes](docs/v09-release-notes.md)
|
|
450
|
+
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
394
451
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
452
|
+
- [Board Demo Rehearsal](examples/board-demo/README.md)
|
|
395
453
|
- [PyPI Release Runbook](docs/pypi-release.md)
|
|
396
454
|
- [Sample Doctor Output](docs/sample-doctor-output.md)
|
|
397
455
|
- [Architecture](docs/architecture.md)
|
|
398
456
|
- [Lane Promotion Policy](docs/lane-promotion-policy.md)
|
|
399
457
|
- [Cloud Sharing](docs/cloud-sharing.md)
|
|
400
458
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
459
|
+
- [Board Data Contract](docs/board-data-contract.md)
|
|
401
460
|
- [Privacy And Threat Model](docs/privacy-threat-model.md)
|
|
402
461
|
- [Current State And Roadmap](docs/current-state-and-roadmap.md)
|
|
403
462
|
- [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
|
|
@@ -62,6 +47,8 @@ for a real repository. It checks your runtime, GitHub setup, provider CLIs,
|
|
|
62
47
|
token posture, optional cloud setup, private-repo Actions cost traps, and
|
|
63
48
|
first-run adoption gaps. `--preflight` remains the compatibility preset for
|
|
64
49
|
older scripts; `--adoption` adds explicit repo targeting and setup guidance.
|
|
50
|
+
Use `--hosted-builders` or `--orchestrator-only` when the current machine is
|
|
51
|
+
observing/coordinating lanes and will not run local Codex or Claude wrappers.
|
|
65
52
|
|
|
66
53
|
Example, shortened:
|
|
67
54
|
|
|
@@ -86,9 +73,43 @@ boundaries visible before you promote any reviewer lane.
|
|
|
86
73
|
|
|
87
74
|
See a fuller static transcript: [docs/first-run-transcript.md](docs/first-run-transcript.md).
|
|
88
75
|
|
|
76
|
+
For an existing repository that already has Code Mower generated workflows or
|
|
77
|
+
wrappers, run `code-mower migration setup-drift --repo-path .` before copying a
|
|
78
|
+
fresh `.code-mower.generated` tree. It is read-only and reports path-level
|
|
79
|
+
classifications (`same`, `differs`, `new`, `repo-only`,
|
|
80
|
+
`missing-from-output`) without file contents or diffs.
|
|
81
|
+
|
|
89
82
|
After `init` and `doctor`, use `code-mower lanes status --repo OWNER/REPO` to
|
|
90
83
|
see active builder/reviewer lanes, gate/check state, recent Code Mower
|
|
91
|
-
workflows, local
|
|
84
|
+
workflows, local board/process hints when present, and the next operator
|
|
85
|
+
action. Text and JSON output redact local cwd paths by default; use
|
|
86
|
+
`--show-local-paths` only for local debugging.
|
|
87
|
+
|
|
88
|
+
For the same redacted metadata in a local browser view, run
|
|
89
|
+
`code-mower board serve --repo OWNER/REPO` and open the printed localhost URL.
|
|
90
|
+
Plain `board serve` is read-only. If the default Board port is busy, the CLI
|
|
91
|
+
uses a nearby free loopback port and prints the URL; an explicit `--port` stays
|
|
92
|
+
strict and reports a friendly conflict. To build local history while the browser
|
|
93
|
+
view is open, run `code-mower board serve --repo OWNER/REPO --record-events`; it
|
|
94
|
+
records at most one snapshot every 60 seconds by default. To append one snapshot
|
|
95
|
+
without serving the browser view, run
|
|
96
|
+
`code-mower board record --repo OWNER/REPO` from the repository checkout; it
|
|
97
|
+
writes metadata-only snapshots to `.code-mower/board/events.jsonl` with default
|
|
98
|
+
14-day and 500-event retention. `code-mower board events` prints recent stored
|
|
99
|
+
events without calling GitHub. `code-mower board doctor --repo OWNER/REPO`
|
|
100
|
+
checks Board inputs and local history without exposing local paths by default.
|
|
101
|
+
`code-mower board reset --repo OWNER/REPO --yes` clears only the local Board
|
|
102
|
+
history file. The Board also shows an owner queue, and it
|
|
103
|
+
summarizes reviewer verdict history and spend/latency from local board events
|
|
104
|
+
plus `.code-mower/reviewer-spend.json` when those files exist. Local agents can
|
|
105
|
+
publish opt-in status cards by writing metadata-only JSON files to
|
|
106
|
+
`.code-mower/board/agents/*.json`; the Board redacts local paths by default and
|
|
107
|
+
does not upload those cards.
|
|
108
|
+
The local JSON contracts are documented in
|
|
109
|
+
[Board Data Contract](docs/board-data-contract.md).
|
|
110
|
+
When a team wants the same operator picture on CodeMower.com, run
|
|
111
|
+
`code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` to inspect a
|
|
112
|
+
zero-report, metadata-only mirror event, then add `--yes` only after review.
|
|
92
113
|
|
|
93
114
|
## See The Value Shape First
|
|
94
115
|
|
|
@@ -96,8 +117,10 @@ If you want to understand the product before installing anything, start with
|
|
|
96
117
|
the checked-in demo calibration package:
|
|
97
118
|
|
|
98
119
|
- [examples/demo-calibration/README.md](examples/demo-calibration/README.md)
|
|
120
|
+
- [examples/board-demo/README.md](examples/board-demo/README.md)
|
|
99
121
|
- [examples/demo-calibration/reviewer-value-report.md](examples/demo-calibration/reviewer-value-report.md)
|
|
100
122
|
- [docs/first-user-demo-transcript.md](docs/first-user-demo-transcript.md)
|
|
123
|
+
- [docs/post-v08-effectiveness-assessment.md](docs/post-v08-effectiveness-assessment.md)
|
|
101
124
|
|
|
102
125
|
The example is intentionally tiny and synthetic: one known-clean control, one
|
|
103
126
|
known-blocked control, and three reviewer lanes. It shows the decision Code
|
|
@@ -111,15 +134,23 @@ Cold adopters should start with the reviewer gate, then add builders, then
|
|
|
111
134
|
measure builder experiments; provider experiments come after that base loop is
|
|
112
135
|
observable.
|
|
113
136
|
|
|
137
|
+
Install first from the [Install And Bootstrap](docs/install.md) matrix: pipx for
|
|
138
|
+
laptops, uv tool installs for hosted agents or CI boxes, and an editable venv
|
|
139
|
+
for Code Mower contributors. All paths require Python 3.12 or newer. For
|
|
140
|
+
upgrades, record `command -v code-mower` and `code-mower --version` before and
|
|
141
|
+
after reinstalling, especially when switching between pipx and uv.
|
|
142
|
+
|
|
114
143
|
| Path | Use When | Route | Guide |
|
|
115
144
|
| --- | --- | --- | --- |
|
|
116
145
|
| 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
146
|
| 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
147
|
| 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
148
|
|
|
120
|
-
The
|
|
121
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.
|
|
122
|
-
guide.
|
|
149
|
+
The current package-index announcement entry point is the tagged
|
|
150
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.9.0-beta.1/docs/try-in-10-minutes.md)
|
|
151
|
+
guide. The v0.9 beta includes the completed native Board work plus the adoption
|
|
152
|
+
and upgrade hardening from recent install rehearsals, so package-only users can
|
|
153
|
+
start from the public package rather than a source checkout.
|
|
123
154
|
|
|
124
155
|
## What Calibration Does And Does Not Prove
|
|
125
156
|
|
|
@@ -148,7 +179,7 @@ Provider-contract baseline for the next release train:
|
|
|
148
179
|
|
|
149
180
|
For release verification,
|
|
150
181
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
151
|
-
the package-index procedure for `v0.
|
|
182
|
+
the package-index procedure for `v0.9.0-beta.1` / `code-mower==0.9.0b1`. The
|
|
152
183
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
153
184
|
|
|
154
185
|
## Optional: Plan Before Coding
|
|
@@ -254,6 +285,9 @@ code-mower cloud dogfood --json
|
|
|
254
285
|
```
|
|
255
286
|
|
|
256
287
|
Nothing uploads unless you pass `--yes`.
|
|
288
|
+
For the hosted Board mirror specifically,
|
|
289
|
+
`code-mower cloud board-snapshot --repo-slug OWNER/REPO --json` exports one
|
|
290
|
+
metadata-only event and zero reports; add `--yes` to upload it after inspection.
|
|
257
291
|
|
|
258
292
|
Current dogfood uploads, historical catch-up imports, and calibrated
|
|
259
293
|
reviewer/lens evidence are intentionally separate. Imported GitHub Actions
|
|
@@ -312,12 +346,14 @@ engineer can:
|
|
|
312
346
|
2. understand the local/cloud trust boundary;
|
|
313
347
|
3. run `init --easy` and `doctor --adoption --repo OWNER/REPO`;
|
|
314
348
|
4. run `lanes status --repo OWNER/REPO` to see active lanes and gate state;
|
|
315
|
-
5.
|
|
349
|
+
5. run `board serve --repo OWNER/REPO` when you want the same state in a local
|
|
350
|
+
browser view;
|
|
351
|
+
6. detect and run the repo's native lint/test/build surface instead of assuming
|
|
316
352
|
every project uses the same tools;
|
|
317
|
-
|
|
318
|
-
|
|
353
|
+
7. produce a local value report from known PR outcomes;
|
|
354
|
+
8. decide which lanes should stay informational, selective, or merge-gating;
|
|
319
355
|
and
|
|
320
|
-
|
|
356
|
+
9. optionally upload sanitized metadata to CodeMower.com and see useful team
|
|
321
357
|
dashboard signal.
|
|
322
358
|
|
|
323
359
|
Build-loop templates extend the same loop from "who reviews best?" to "which AI
|
|
@@ -329,8 +365,8 @@ measurement work.
|
|
|
329
365
|
|
|
330
366
|
## Installation Status
|
|
331
367
|
|
|
332
|
-
The current
|
|
333
|
-
install spec `code-mower==0.
|
|
368
|
+
The current package-index beta baseline is `v0.9.0-beta.1`, with pinned package
|
|
369
|
+
install spec `code-mower==0.9.0b1`. Release evidence is recorded on the GitHub
|
|
334
370
|
release and in the first-user install rehearsal. The public repository is
|
|
335
371
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
336
372
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -370,6 +406,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
370
406
|
|
|
371
407
|
## Docs Map
|
|
372
408
|
|
|
409
|
+
- [Install And Bootstrap](docs/install.md)
|
|
373
410
|
- [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
|
|
374
411
|
- [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
|
|
375
412
|
- [Quickstart Reference](docs/quickstart.md)
|
|
@@ -391,13 +428,18 @@ first so local work exercises the same package entrypoint users install.
|
|
|
391
428
|
- [Launch Command Surface](docs/launch-command-surface.md)
|
|
392
429
|
- [v0.6 Truth Baseline](docs/v06-truth-baseline.md)
|
|
393
430
|
- [v0.6 Release Notes](docs/v06-release-notes.md)
|
|
431
|
+
- [v0.8 Release Notes](docs/v08-release-notes.md)
|
|
432
|
+
- [v0.9 Release Notes](docs/v09-release-notes.md)
|
|
433
|
+
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
394
434
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
435
|
+
- [Board Demo Rehearsal](examples/board-demo/README.md)
|
|
395
436
|
- [PyPI Release Runbook](docs/pypi-release.md)
|
|
396
437
|
- [Sample Doctor Output](docs/sample-doctor-output.md)
|
|
397
438
|
- [Architecture](docs/architecture.md)
|
|
398
439
|
- [Lane Promotion Policy](docs/lane-promotion-policy.md)
|
|
399
440
|
- [Cloud Sharing](docs/cloud-sharing.md)
|
|
400
441
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
442
|
+
- [Board Data Contract](docs/board-data-contract.md)
|
|
401
443
|
- [Privacy And Threat Model](docs/privacy-threat-model.md)
|
|
402
444
|
- [Current State And Roadmap](docs/current-state-and-roadmap.md)
|
|
403
445
|
- [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.
|
|
7
|
+
version = "0.9.0b1"
|
|
8
8
|
description = "Multi-reviewer AI code audit orchestration"
|
|
9
|
-
requires-python = ">=3.
|
|
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 = "
|
|
48
|
+
target-version = "py312"
|
|
47
49
|
line-length = 100
|
|
48
50
|
|
|
49
51
|
[tool.ruff.lint]
|