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