code-mower 0.6.0b2__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.0b2/src/code_mower.egg-info → code_mower-0.8.0b1}/PKG-INFO +68 -20
- code_mower-0.6.0b2/PKG-INFO → code_mower-0.8.0b1/README.md +64 -33
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/pyproject.toml +5 -3
- {code_mower-0.6.0b2 → 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.0b2 → code_mower-0.8.0b1}/src/code_mower/bootstrap.py +5 -5
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cli.py +8 -3
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud.py +90 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/__init__.py +4 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/bundle.py +1 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/events.py +233 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/operations.py +124 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor.py +65 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/__init__.py +12 -0
- code_mower-0.8.0b1/src/code_mower/doctor_checks/adoption.py +249 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_human_token.py +39 -3
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_repo.py +6 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/providers.py +67 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/registry.py +14 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/runner.py +28 -1
- {code_mower-0.6.0b2 → 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.0b2 → code_mower-0.8.0b1}/src/code_mower/init.py +76 -8
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_status.py +66 -6
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/migration.py +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/migration_install.py +4 -21
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/next_steps.py +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/package_content.py +5 -4
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/package_manifest.py +4 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/package_static.py +20 -3
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/providers/provenance.py +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1/src/code_mower}/templates/lanes/README.md +2 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/code_mower +4 -4
- code_mower-0.8.0b1/src/code_mower/templates/product-support/run_claude_audit_pr.sh +63 -0
- code_mower-0.8.0b1/src/code_mower/templates/product-support/run_codex_audit_pr.sh +63 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +2 -2
- {code_mower-0.6.0b2 → code_mower-0.8.0b1/src/code_mower}/templates/workflows/code-mower-gate-health.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1/src/code_mower}/templates/workflows/lane-mac-runner.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1/src/code_mower}/templates/workflows/private-standalone-shadow.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1/src/code_mower}/templates/workflows/saas-reviewer-labeler.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +2 -2
- {code_mower-0.6.0b2 → code_mower-0.8.0b1/src/code_mower}/templates/workflows/trailer-comment-labeler.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/weekly-status.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/versioning.py +2 -2
- code_mower-0.6.0b2/README.md → code_mower-0.8.0b1/src/code_mower.egg-info/PKG-INFO +81 -18
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower.egg-info/SOURCES.txt +5 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower.egg-info/requires.txt +2 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/builder-provenance.yml.j2 +2 -2
- {code_mower-0.6.0b2/src/code_mower → code_mower-0.8.0b1}/templates/workflows/code-mower-gate-health.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/code-mower-gate.yml.j2 +1 -1
- {code_mower-0.6.0b2/src/code_mower → code_mower-0.8.0b1}/templates/workflows/lane-mac-runner.yml.j2 +1 -1
- {code_mower-0.6.0b2/src/code_mower → code_mower-0.8.0b1}/templates/workflows/private-standalone-shadow.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/review-clear-stale.yml.j2 +1 -1
- {code_mower-0.6.0b2/src/code_mower → code_mower-0.8.0b1}/templates/workflows/saas-reviewer-labeler.yml.j2 +1 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/self-hosted-local-audit.yml.j2 +2 -2
- {code_mower-0.6.0b2/src/code_mower → code_mower-0.8.0b1}/templates/workflows/trailer-comment-labeler.yml.j2 +1 -1
- code_mower-0.8.0b1/tests/test_board.py +968 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_cloud_client.py +226 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_boundaries.py +1 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_github_checks.py +36 -0
- code_mower-0.8.0b1/tests/test_doctor_registry.py +433 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_lane_status.py +79 -1
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_release_hygiene.py +637 -65
- code_mower-0.6.0b2/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -32
- code_mower-0.6.0b2/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -32
- code_mower-0.6.0b2/tests/test_doctor_registry.py +0 -175
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/LICENSE +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/MANIFEST.in +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/NOTICE +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/SUPPORT.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/requirements/requirements.txt +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/setup.cfg +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/antigravity_sdk_probe.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/audit_labeler_lib.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/audit_limits.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/audit_progress.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/builder_runs.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/results.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/checks.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/claude_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/clear_stale.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/tokens.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/codex_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/config.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/decisions.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/audit_limits.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/gate_health.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/grok_build_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/grok_build.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/migration_rehearsal.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/observe.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/package.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/package_paths.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/package_rendering.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/plan_context.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/prompts.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_registry.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/exit_codes.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/github_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/release_readiness.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/reviewer_spend.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/secrets.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/code-mower.example.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/claude.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/codex.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/cursor.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/generic.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/product-support/status_report.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/trailer_comment_labeler.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/work_orders.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower/workflow_actionlint.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/builder-experiment.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/calibration-corpus.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/code-mower.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/context-packs.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-0.6.0b2/src/code_mower → code_mower-0.8.0b1}/templates/lanes/README.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/lanes/claude.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/lanes/codex.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/lanes/cursor.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/lanes/generic.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/aider.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/claude_audit.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/claude_review.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/codex.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/devin.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/gitar.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/greptile.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/local_llm.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers/qodo.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/providers.yml +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_antigravity_sdk_probe.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_audit_comment_posture.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_audit_limits.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_builder_experiment.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_builder_identity.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_builder_runs.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_calibration_truth.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_checks.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_claude_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_clear_stale.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_cloud_manifest.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_cloud_reports.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_codex_audit_env_preflight.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_codex_audit_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_decision_audit_integration.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_decisions.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_output.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_privacy.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_provider_local_audit_setup.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_provider_review_hygiene.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_runtime.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_doctor_self_hosted_runner.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_gate_health.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_init_actionlint.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_init_build_loop.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_observe.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_plan_context.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_prompts.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_fixture_contracts.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_local_cli.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_git.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_process.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_reviewer_metrics_core.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_reviewer_spend.py +0 -0
- {code_mower-0.6.0b2 → code_mower-0.8.0b1}/tests/test_trailer_comment_labeler.py +0 -0
- {code_mower-0.6.0b2 → 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
|
|
@@ -57,15 +59,16 @@ Code Mower should feel like an engineering tool, not a demo harness:
|
|
|
57
59
|
|
|
58
60
|
## What It Looks Like
|
|
59
61
|
|
|
60
|
-
`code-mower doctor --
|
|
61
|
-
runtime, GitHub setup, provider CLIs,
|
|
62
|
-
private-repo Actions cost traps
|
|
63
|
-
|
|
62
|
+
`code-mower doctor --adoption --repo OWNER/REPO` is the first useful command
|
|
63
|
+
for a real repository. It checks your runtime, GitHub setup, provider CLIs,
|
|
64
|
+
token posture, optional cloud setup, private-repo Actions cost traps, and
|
|
65
|
+
first-run adoption gaps. `--preflight` remains the compatibility preset for
|
|
66
|
+
older scripts; `--adoption` adds explicit repo targeting and setup guidance.
|
|
64
67
|
|
|
65
68
|
Example, shortened:
|
|
66
69
|
|
|
67
70
|
```text
|
|
68
|
-
$ code-mower doctor --
|
|
71
|
+
$ code-mower doctor --adoption --repo OWNER/REPO
|
|
69
72
|
PASS config.validate config validates
|
|
70
73
|
PASS profile.select selected profile: codex, claude_audit, gitar
|
|
71
74
|
PASS runtime.python Python 3.12 satisfies Code Mower requirements
|
|
@@ -87,7 +90,33 @@ See a fuller static transcript: [docs/first-run-transcript.md](docs/first-run-tr
|
|
|
87
90
|
|
|
88
91
|
After `init` and `doctor`, use `code-mower lanes status --repo OWNER/REPO` to
|
|
89
92
|
see active builder/reviewer lanes, gate/check state, recent Code Mower
|
|
90
|
-
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.
|
|
91
120
|
|
|
92
121
|
## See The Value Shape First
|
|
93
122
|
|
|
@@ -95,8 +124,10 @@ If you want to understand the product before installing anything, start with
|
|
|
95
124
|
the checked-in demo calibration package:
|
|
96
125
|
|
|
97
126
|
- [examples/demo-calibration/README.md](examples/demo-calibration/README.md)
|
|
127
|
+
- [examples/board-demo/README.md](examples/board-demo/README.md)
|
|
98
128
|
- [examples/demo-calibration/reviewer-value-report.md](examples/demo-calibration/reviewer-value-report.md)
|
|
99
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)
|
|
100
131
|
|
|
101
132
|
The example is intentionally tiny and synthetic: one known-clean control, one
|
|
102
133
|
known-blocked control, and three reviewer lanes. It shows the decision Code
|
|
@@ -110,15 +141,21 @@ Cold adopters should start with the reviewer gate, then add builders, then
|
|
|
110
141
|
measure builder experiments; provider experiments come after that base loop is
|
|
111
142
|
observable.
|
|
112
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
|
+
|
|
113
148
|
| Path | Use When | Route | Guide |
|
|
114
149
|
| --- | --- | --- | --- |
|
|
115
|
-
| A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --
|
|
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) |
|
|
116
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) |
|
|
117
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) |
|
|
118
153
|
|
|
119
|
-
The
|
|
120
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.
|
|
121
|
-
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.
|
|
122
159
|
|
|
123
160
|
## What Calibration Does And Does Not Prove
|
|
124
161
|
|
|
@@ -147,7 +184,7 @@ Provider-contract baseline for the next release train:
|
|
|
147
184
|
|
|
148
185
|
For release verification,
|
|
149
186
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
150
|
-
the package-index procedure for `v0.
|
|
187
|
+
the package-index procedure for `v0.8.0-beta.1` / `code-mower==0.8.0b1`. The
|
|
151
188
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
152
189
|
|
|
153
190
|
## Optional: Plan Before Coding
|
|
@@ -253,6 +290,9 @@ code-mower cloud dogfood --json
|
|
|
253
290
|
```
|
|
254
291
|
|
|
255
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.
|
|
256
296
|
|
|
257
297
|
Current dogfood uploads, historical catch-up imports, and calibrated
|
|
258
298
|
reviewer/lens evidence are intentionally separate. Imported GitHub Actions
|
|
@@ -309,14 +349,16 @@ engineer can:
|
|
|
309
349
|
|
|
310
350
|
1. install Code Mower in a clean repo;
|
|
311
351
|
2. understand the local/cloud trust boundary;
|
|
312
|
-
3. run `init --easy` and `doctor --
|
|
352
|
+
3. run `init --easy` and `doctor --adoption --repo OWNER/REPO`;
|
|
313
353
|
4. run `lanes status --repo OWNER/REPO` to see active lanes and gate state;
|
|
314
|
-
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
|
|
315
357
|
every project uses the same tools;
|
|
316
|
-
|
|
317
|
-
|
|
358
|
+
7. produce a local value report from known PR outcomes;
|
|
359
|
+
8. decide which lanes should stay informational, selective, or merge-gating;
|
|
318
360
|
and
|
|
319
|
-
|
|
361
|
+
9. optionally upload sanitized metadata to CodeMower.com and see useful team
|
|
320
362
|
dashboard signal.
|
|
321
363
|
|
|
322
364
|
Build-loop templates extend the same loop from "who reviews best?" to "which AI
|
|
@@ -328,8 +370,8 @@ measurement work.
|
|
|
328
370
|
|
|
329
371
|
## Installation Status
|
|
330
372
|
|
|
331
|
-
The current
|
|
332
|
-
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
|
|
333
375
|
release and in the first-user install rehearsal. The public repository is
|
|
334
376
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
335
377
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -369,9 +411,11 @@ first so local work exercises the same package entrypoint users install.
|
|
|
369
411
|
|
|
370
412
|
## Docs Map
|
|
371
413
|
|
|
414
|
+
- [Install And Bootstrap](docs/install.md)
|
|
372
415
|
- [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
|
|
373
416
|
- [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
|
|
374
417
|
- [Quickstart Reference](docs/quickstart.md)
|
|
418
|
+
- [Orchestrator Prompt Pack](docs/orchestrator-prompt-pack.md)
|
|
375
419
|
- [Planning And Work Orders](docs/planning-work-orders.md)
|
|
376
420
|
- [Builder Providers: Grok And Cursor](docs/builders-grok-cursor.md)
|
|
377
421
|
- [Build Loop Operations](docs/build-loop.md)
|
|
@@ -389,13 +433,17 @@ first so local work exercises the same package entrypoint users install.
|
|
|
389
433
|
- [Launch Command Surface](docs/launch-command-surface.md)
|
|
390
434
|
- [v0.6 Truth Baseline](docs/v06-truth-baseline.md)
|
|
391
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)
|
|
392
438
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
439
|
+
- [Board Demo Rehearsal](examples/board-demo/README.md)
|
|
393
440
|
- [PyPI Release Runbook](docs/pypi-release.md)
|
|
394
441
|
- [Sample Doctor Output](docs/sample-doctor-output.md)
|
|
395
442
|
- [Architecture](docs/architecture.md)
|
|
396
443
|
- [Lane Promotion Policy](docs/lane-promotion-policy.md)
|
|
397
444
|
- [Cloud Sharing](docs/cloud-sharing.md)
|
|
398
445
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
446
|
+
- [Board Data Contract](docs/board-data-contract.md)
|
|
399
447
|
- [Privacy And Threat Model](docs/privacy-threat-model.md)
|
|
400
448
|
- [Current State And Roadmap](docs/current-state-and-roadmap.md)
|
|
401
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.0b2
|
|
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
|
|
@@ -57,15 +42,16 @@ Code Mower should feel like an engineering tool, not a demo harness:
|
|
|
57
42
|
|
|
58
43
|
## What It Looks Like
|
|
59
44
|
|
|
60
|
-
`code-mower doctor --
|
|
61
|
-
runtime, GitHub setup, provider CLIs,
|
|
62
|
-
private-repo Actions cost traps
|
|
63
|
-
|
|
45
|
+
`code-mower doctor --adoption --repo OWNER/REPO` is the first useful command
|
|
46
|
+
for a real repository. It checks your runtime, GitHub setup, provider CLIs,
|
|
47
|
+
token posture, optional cloud setup, private-repo Actions cost traps, and
|
|
48
|
+
first-run adoption gaps. `--preflight` remains the compatibility preset for
|
|
49
|
+
older scripts; `--adoption` adds explicit repo targeting and setup guidance.
|
|
64
50
|
|
|
65
51
|
Example, shortened:
|
|
66
52
|
|
|
67
53
|
```text
|
|
68
|
-
$ code-mower doctor --
|
|
54
|
+
$ code-mower doctor --adoption --repo OWNER/REPO
|
|
69
55
|
PASS config.validate config validates
|
|
70
56
|
PASS profile.select selected profile: codex, claude_audit, gitar
|
|
71
57
|
PASS runtime.python Python 3.12 satisfies Code Mower requirements
|
|
@@ -87,7 +73,33 @@ See a fuller static transcript: [docs/first-run-transcript.md](docs/first-run-tr
|
|
|
87
73
|
|
|
88
74
|
After `init` and `doctor`, use `code-mower lanes status --repo OWNER/REPO` to
|
|
89
75
|
see active builder/reviewer lanes, gate/check state, recent Code Mower
|
|
90
|
-
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.
|
|
91
103
|
|
|
92
104
|
## See The Value Shape First
|
|
93
105
|
|
|
@@ -95,8 +107,10 @@ If you want to understand the product before installing anything, start with
|
|
|
95
107
|
the checked-in demo calibration package:
|
|
96
108
|
|
|
97
109
|
- [examples/demo-calibration/README.md](examples/demo-calibration/README.md)
|
|
110
|
+
- [examples/board-demo/README.md](examples/board-demo/README.md)
|
|
98
111
|
- [examples/demo-calibration/reviewer-value-report.md](examples/demo-calibration/reviewer-value-report.md)
|
|
99
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)
|
|
100
114
|
|
|
101
115
|
The example is intentionally tiny and synthetic: one known-clean control, one
|
|
102
116
|
known-blocked control, and three reviewer lanes. It shows the decision Code
|
|
@@ -110,15 +124,21 @@ Cold adopters should start with the reviewer gate, then add builders, then
|
|
|
110
124
|
measure builder experiments; provider experiments come after that base loop is
|
|
111
125
|
observable.
|
|
112
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
|
+
|
|
113
131
|
| Path | Use When | Route | Guide |
|
|
114
132
|
| --- | --- | --- | --- |
|
|
115
|
-
| A. Reviewer gate in 10 minutes | You want one audited PR before recurring workflows or builder dispatch. | Install, run `init --easy`, run `doctor --
|
|
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) |
|
|
116
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) |
|
|
117
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) |
|
|
118
136
|
|
|
119
|
-
The
|
|
120
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v0.
|
|
121
|
-
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.
|
|
122
142
|
|
|
123
143
|
## What Calibration Does And Does Not Prove
|
|
124
144
|
|
|
@@ -147,7 +167,7 @@ Provider-contract baseline for the next release train:
|
|
|
147
167
|
|
|
148
168
|
For release verification,
|
|
149
169
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
150
|
-
the package-index procedure for `v0.
|
|
170
|
+
the package-index procedure for `v0.8.0-beta.1` / `code-mower==0.8.0b1`. The
|
|
151
171
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
152
172
|
|
|
153
173
|
## Optional: Plan Before Coding
|
|
@@ -253,6 +273,9 @@ code-mower cloud dogfood --json
|
|
|
253
273
|
```
|
|
254
274
|
|
|
255
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.
|
|
256
279
|
|
|
257
280
|
Current dogfood uploads, historical catch-up imports, and calibrated
|
|
258
281
|
reviewer/lens evidence are intentionally separate. Imported GitHub Actions
|
|
@@ -309,14 +332,16 @@ engineer can:
|
|
|
309
332
|
|
|
310
333
|
1. install Code Mower in a clean repo;
|
|
311
334
|
2. understand the local/cloud trust boundary;
|
|
312
|
-
3. run `init --easy` and `doctor --
|
|
335
|
+
3. run `init --easy` and `doctor --adoption --repo OWNER/REPO`;
|
|
313
336
|
4. run `lanes status --repo OWNER/REPO` to see active lanes and gate state;
|
|
314
|
-
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
|
|
315
340
|
every project uses the same tools;
|
|
316
|
-
|
|
317
|
-
|
|
341
|
+
7. produce a local value report from known PR outcomes;
|
|
342
|
+
8. decide which lanes should stay informational, selective, or merge-gating;
|
|
318
343
|
and
|
|
319
|
-
|
|
344
|
+
9. optionally upload sanitized metadata to CodeMower.com and see useful team
|
|
320
345
|
dashboard signal.
|
|
321
346
|
|
|
322
347
|
Build-loop templates extend the same loop from "who reviews best?" to "which AI
|
|
@@ -328,8 +353,8 @@ measurement work.
|
|
|
328
353
|
|
|
329
354
|
## Installation Status
|
|
330
355
|
|
|
331
|
-
The current
|
|
332
|
-
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
|
|
333
358
|
release and in the first-user install rehearsal. The public repository is
|
|
334
359
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
335
360
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -369,9 +394,11 @@ first so local work exercises the same package entrypoint users install.
|
|
|
369
394
|
|
|
370
395
|
## Docs Map
|
|
371
396
|
|
|
397
|
+
- [Install And Bootstrap](docs/install.md)
|
|
372
398
|
- [Try Code Mower In 10 Minutes](docs/try-in-10-minutes.md)
|
|
373
399
|
- [Build Loop In 30 Minutes](docs/build-loop-in-30-minutes.md)
|
|
374
400
|
- [Quickstart Reference](docs/quickstart.md)
|
|
401
|
+
- [Orchestrator Prompt Pack](docs/orchestrator-prompt-pack.md)
|
|
375
402
|
- [Planning And Work Orders](docs/planning-work-orders.md)
|
|
376
403
|
- [Builder Providers: Grok And Cursor](docs/builders-grok-cursor.md)
|
|
377
404
|
- [Build Loop Operations](docs/build-loop.md)
|
|
@@ -389,13 +416,17 @@ first so local work exercises the same package entrypoint users install.
|
|
|
389
416
|
- [Launch Command Surface](docs/launch-command-surface.md)
|
|
390
417
|
- [v0.6 Truth Baseline](docs/v06-truth-baseline.md)
|
|
391
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)
|
|
392
421
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
422
|
+
- [Board Demo Rehearsal](examples/board-demo/README.md)
|
|
393
423
|
- [PyPI Release Runbook](docs/pypi-release.md)
|
|
394
424
|
- [Sample Doctor Output](docs/sample-doctor-output.md)
|
|
395
425
|
- [Architecture](docs/architecture.md)
|
|
396
426
|
- [Lane Promotion Policy](docs/lane-promotion-policy.md)
|
|
397
427
|
- [Cloud Sharing](docs/cloud-sharing.md)
|
|
398
428
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
429
|
+
- [Board Data Contract](docs/board-data-contract.md)
|
|
399
430
|
- [Privacy And Threat Model](docs/privacy-threat-model.md)
|
|
400
431
|
- [Current State And Roadmap](docs/current-state-and-roadmap.md)
|
|
401
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]
|