code-mower 1.0.11__tar.gz → 1.0.12__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-1.0.11 → code_mower-1.0.12}/PKG-INFO +11 -5
- {code_mower-1.0.11 → code_mower-1.0.12}/README.md +10 -4
- {code_mower-1.0.11 → code_mower-1.0.12}/pyproject.toml +1 -1
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/__init__.py +1 -1
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/campaign_adapters.py +5 -3
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/PKG-INFO +11 -5
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/builder-provenance.yml.j2 +1 -1
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_campaign_adapters.py +8 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_release_hygiene.py +47 -46
- {code_mower-1.0.11 → code_mower-1.0.12}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/LICENSE +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/MANIFEST.in +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/NOTICE +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/SUPPORT.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/requirements/requirements.txt +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/setup.cfg +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/antigravity_sdk_probe.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_labeler_lib.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_limits.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/audit_progress.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/board.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/board_store.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/bootstrap.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/builder_runs.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/results.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/campaign_discovery.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/checks.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/claude_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/clear_stale.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/__init__.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/adoption_runs.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/bundle.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/events.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/operations.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/productivity.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/tokens.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/cloud_client/work_types.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/config.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/controller.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/decisions.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/devin_api.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/devin_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/__init__.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/adoption.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/audit_limits.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/campaign_auth.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_human_token.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_repo.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/providers.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/registry.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/runner.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/runtime.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/file_locks.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/gate_health.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/git_identity.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/grok_build_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/init.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/devin_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/grok_build.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_configs/muse_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_delivery.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/lane_status.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_install.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/migration_rehearsal.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/muse_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/next_steps.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_content.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_manifest.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_paths.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_rendering.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/package_static.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/participants.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/plan_context.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/productivity_report.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/prompts.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_registry.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/exit_codes.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/github_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/providers/provenance.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/release_campaigns.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/release_qualify.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/release_readiness.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/reviewer_spend.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/secrets.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/session.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/code-mower.example.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/README.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/claude.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/codex.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/cursor.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/devin.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/generic.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/code_mower +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/product-support/status_report.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/trailer_comment_labeler.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/versioning.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/work_orders.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower/workflow_actionlint.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/SOURCES.txt +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/requires.txt +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/builder-experiment.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/calibration-corpus.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/code-mower.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/context-packs.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/README.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/claude.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/codex.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/cursor.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/devin.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/generic.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/aider.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/claude_audit.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/claude_review.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/codex.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/cursor_cloud_agent.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/devin.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/devin_cli.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/gitar.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/greptile.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/local_llm.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/muse_cli.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers/qodo.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/providers.yml +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_adoption_diagnostics.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_adoption_result_semantics.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_adoption_run_contract.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_antigravity_sdk_probe.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_audit_comment_posture.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_audit_limits.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_board.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_builder_experiment.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_builder_identity.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_builder_runs.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_calibration_truth.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_campaign_discovery.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_campaign_retry_evidence_711.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_checks.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_claude_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_clear_stale.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_client.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_manifest.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_cloud_reports.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_codex_audit_env_preflight.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_codex_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_controller.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_decision_audit_integration.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_decisions.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_api.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_builder_lane.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_cli_audit_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_devin_provider_contract.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_campaign_auth.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_campaign_readiness.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_github_checks.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_output.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_privacy.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_local_audit_setup.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_provider_review_hygiene.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_registry.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_runtime.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_self_hosted_runner.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_doctor_supervised_pilot.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_file_locks.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_fork_pr_guard.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_gate_automerge.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_gate_health.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_hosted_dispatch_profile.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_init_actionlint.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_init_build_loop.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_lane_delivery_contract.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_lane_status.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_migration_rehearsal.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_migration_setup_drift.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_next_steps.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_package_install_failure_taxonomy.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_participant_sessions.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_plan_context.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_pr_outcome_contract.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_productivity_metrics_contract.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_productivity_report.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_prompts.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_fixture_contracts.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_local_cli.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_git.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_process.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_release_campaigns.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_release_qualify.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_reviewer_metrics_core.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_reviewer_spend.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_supervised_pilot_contract.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_trailer_comment_labeler.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_work_orders.py +0 -0
- {code_mower-1.0.11 → code_mower-1.0.12}/tests/test_work_type_contract.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.12
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/codemower-ai/code-mower
|
|
@@ -241,7 +241,7 @@ agent report its actual host posture, exact installed version, doctor result,
|
|
|
241
241
|
Board URL, and any owner-only click-list before it mutates the repo.
|
|
242
242
|
|
|
243
243
|
The current package-index announcement entry point is the tagged
|
|
244
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.
|
|
244
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.12/docs/try-in-10-minutes.md)
|
|
245
245
|
guide. The v1.0 supervised-pilot release includes the native Board, the
|
|
246
246
|
controller dry-run and policy contract, adoption and upgrade hardening from
|
|
247
247
|
recent install rehearsals, package-index release checks, provider-diversity
|
|
@@ -289,6 +289,11 @@ The v1.0.11 patch moves canonical hosted Devin release campaigns onto the
|
|
|
289
289
|
bounded, pollable Sessions API transport and keeps macOS Claude release
|
|
290
290
|
qualification inside the maintained strict sandbox by using pip's
|
|
291
291
|
TLS-verifying certifi certificate path.
|
|
292
|
+
The v1.0.12 patch completes that Claude qualification fix: the maintained
|
|
293
|
+
provider qualification prompt no longer tells the agent to create its own
|
|
294
|
+
temporary directory, so it stays in the disposable workspace Code Mower
|
|
295
|
+
already created, and it states the existing contract that a result's total
|
|
296
|
+
`elapsed_seconds` is the sum of its step values.
|
|
292
297
|
Package-only users can start from the public package rather than a source
|
|
293
298
|
checkout.
|
|
294
299
|
|
|
@@ -321,7 +326,7 @@ Provider-contract baseline for the next release train:
|
|
|
321
326
|
|
|
322
327
|
For release verification,
|
|
323
328
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
324
|
-
the package-index procedure for `v1.0.
|
|
329
|
+
the package-index procedure for `v1.0.12` / `code-mower==1.0.12`. The
|
|
325
330
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
326
331
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
327
332
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -515,8 +520,8 @@ measurement work.
|
|
|
515
520
|
|
|
516
521
|
## Installation Status
|
|
517
522
|
|
|
518
|
-
The current package-index release baseline is `v1.0.
|
|
519
|
-
install spec `code-mower==1.0.
|
|
523
|
+
The current package-index release baseline is `v1.0.12`, with pinned package
|
|
524
|
+
install spec `code-mower==1.0.12`. Release evidence is recorded on the GitHub
|
|
520
525
|
release and in the first-user install rehearsal. The public repository is
|
|
521
526
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
522
527
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -596,6 +601,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
596
601
|
- [v1.0.9 Release Notes](docs/v109-release-notes.md)
|
|
597
602
|
- [v1.0.10 Release Notes](docs/v1010-release-notes.md)
|
|
598
603
|
- [v1.0.11 Release Notes](docs/v1011-release-notes.md)
|
|
604
|
+
- [v1.0.12 Release Notes](docs/v1012-release-notes.md)
|
|
599
605
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
600
606
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
601
607
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
@@ -211,7 +211,7 @@ agent report its actual host posture, exact installed version, doctor result,
|
|
|
211
211
|
Board URL, and any owner-only click-list before it mutates the repo.
|
|
212
212
|
|
|
213
213
|
The current package-index announcement entry point is the tagged
|
|
214
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.
|
|
214
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.12/docs/try-in-10-minutes.md)
|
|
215
215
|
guide. The v1.0 supervised-pilot release includes the native Board, the
|
|
216
216
|
controller dry-run and policy contract, adoption and upgrade hardening from
|
|
217
217
|
recent install rehearsals, package-index release checks, provider-diversity
|
|
@@ -259,6 +259,11 @@ The v1.0.11 patch moves canonical hosted Devin release campaigns onto the
|
|
|
259
259
|
bounded, pollable Sessions API transport and keeps macOS Claude release
|
|
260
260
|
qualification inside the maintained strict sandbox by using pip's
|
|
261
261
|
TLS-verifying certifi certificate path.
|
|
262
|
+
The v1.0.12 patch completes that Claude qualification fix: the maintained
|
|
263
|
+
provider qualification prompt no longer tells the agent to create its own
|
|
264
|
+
temporary directory, so it stays in the disposable workspace Code Mower
|
|
265
|
+
already created, and it states the existing contract that a result's total
|
|
266
|
+
`elapsed_seconds` is the sum of its step values.
|
|
262
267
|
Package-only users can start from the public package rather than a source
|
|
263
268
|
checkout.
|
|
264
269
|
|
|
@@ -291,7 +296,7 @@ Provider-contract baseline for the next release train:
|
|
|
291
296
|
|
|
292
297
|
For release verification,
|
|
293
298
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
294
|
-
the package-index procedure for `v1.0.
|
|
299
|
+
the package-index procedure for `v1.0.12` / `code-mower==1.0.12`. The
|
|
295
300
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
296
301
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
297
302
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -485,8 +490,8 @@ measurement work.
|
|
|
485
490
|
|
|
486
491
|
## Installation Status
|
|
487
492
|
|
|
488
|
-
The current package-index release baseline is `v1.0.
|
|
489
|
-
install spec `code-mower==1.0.
|
|
493
|
+
The current package-index release baseline is `v1.0.12`, with pinned package
|
|
494
|
+
install spec `code-mower==1.0.12`. Release evidence is recorded on the GitHub
|
|
490
495
|
release and in the first-user install rehearsal. The public repository is
|
|
491
496
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
492
497
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -566,6 +571,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
566
571
|
- [v1.0.9 Release Notes](docs/v109-release-notes.md)
|
|
567
572
|
- [v1.0.10 Release Notes](docs/v1010-release-notes.md)
|
|
568
573
|
- [v1.0.11 Release Notes](docs/v1011-release-notes.md)
|
|
574
|
+
- [v1.0.12 Release Notes](docs/v1012-release-notes.md)
|
|
569
575
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
570
576
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
571
577
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
@@ -515,8 +515,9 @@ def build_qualification_prompt(
|
|
|
515
515
|
verification_step = 4
|
|
516
516
|
lines = [
|
|
517
517
|
f"You are the {provider} release-qualification agent for Code Mower.",
|
|
518
|
-
"Qualify exactly one release in
|
|
519
|
-
"
|
|
518
|
+
"Qualify exactly one release in the current disposable workspace.",
|
|
519
|
+
"Code Mower already created this workspace; do not create or change into",
|
|
520
|
+
"another temporary directory. Do not read or modify",
|
|
520
521
|
"any existing checkout, home directory, credential file, or environment",
|
|
521
522
|
"variable holding a secret. Never print secrets, tokens, file paths,",
|
|
522
523
|
"commands you ran, or raw logs in your final answer.",
|
|
@@ -612,7 +613,8 @@ def build_qualification_prompt(
|
|
|
612
613
|
"the step status strings: fail if any status is fail;",
|
|
613
614
|
"pass_with_warnings if any status is warn or unavailable; otherwise",
|
|
614
615
|
"pass. In particular, all-pass steps require outcome pass. No extra",
|
|
615
|
-
"fields, no prose, no fences.",
|
|
616
|
+
"fields, no prose, no fences. Set total elapsed_seconds to the sum of",
|
|
617
|
+
"the step elapsed_seconds values (within one second for rounding).",
|
|
616
618
|
])
|
|
617
619
|
return "\n".join(lines) + "\n"
|
|
618
620
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.12
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/codemower-ai/code-mower
|
|
@@ -241,7 +241,7 @@ agent report its actual host posture, exact installed version, doctor result,
|
|
|
241
241
|
Board URL, and any owner-only click-list before it mutates the repo.
|
|
242
242
|
|
|
243
243
|
The current package-index announcement entry point is the tagged
|
|
244
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.
|
|
244
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.0.12/docs/try-in-10-minutes.md)
|
|
245
245
|
guide. The v1.0 supervised-pilot release includes the native Board, the
|
|
246
246
|
controller dry-run and policy contract, adoption and upgrade hardening from
|
|
247
247
|
recent install rehearsals, package-index release checks, provider-diversity
|
|
@@ -289,6 +289,11 @@ The v1.0.11 patch moves canonical hosted Devin release campaigns onto the
|
|
|
289
289
|
bounded, pollable Sessions API transport and keeps macOS Claude release
|
|
290
290
|
qualification inside the maintained strict sandbox by using pip's
|
|
291
291
|
TLS-verifying certifi certificate path.
|
|
292
|
+
The v1.0.12 patch completes that Claude qualification fix: the maintained
|
|
293
|
+
provider qualification prompt no longer tells the agent to create its own
|
|
294
|
+
temporary directory, so it stays in the disposable workspace Code Mower
|
|
295
|
+
already created, and it states the existing contract that a result's total
|
|
296
|
+
`elapsed_seconds` is the sum of its step values.
|
|
292
297
|
Package-only users can start from the public package rather than a source
|
|
293
298
|
checkout.
|
|
294
299
|
|
|
@@ -321,7 +326,7 @@ Provider-contract baseline for the next release train:
|
|
|
321
326
|
|
|
322
327
|
For release verification,
|
|
323
328
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
324
|
-
the package-index procedure for `v1.0.
|
|
329
|
+
the package-index procedure for `v1.0.12` / `code-mower==1.0.12`. The
|
|
325
330
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
326
331
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
327
332
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -515,8 +520,8 @@ measurement work.
|
|
|
515
520
|
|
|
516
521
|
## Installation Status
|
|
517
522
|
|
|
518
|
-
The current package-index release baseline is `v1.0.
|
|
519
|
-
install spec `code-mower==1.0.
|
|
523
|
+
The current package-index release baseline is `v1.0.12`, with pinned package
|
|
524
|
+
install spec `code-mower==1.0.12`. Release evidence is recorded on the GitHub
|
|
520
525
|
release and in the first-user install rehearsal. The public repository is
|
|
521
526
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
522
527
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -596,6 +601,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
596
601
|
- [v1.0.9 Release Notes](docs/v109-release-notes.md)
|
|
597
602
|
- [v1.0.10 Release Notes](docs/v1010-release-notes.md)
|
|
598
603
|
- [v1.0.11 Release Notes](docs/v1011-release-notes.md)
|
|
604
|
+
- [v1.0.12 Release Notes](docs/v1012-release-notes.md)
|
|
599
605
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
600
606
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
601
607
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
@@ -393,6 +393,10 @@ class ArgvBuilderTests(unittest.TestCase):
|
|
|
393
393
|
for step_id in ("board", "doctor", "lanes_status", "overhead", "package_install"):
|
|
394
394
|
self.assertIn(step_id, prompt)
|
|
395
395
|
self.assertIn("<namespace>__<name>", prompt)
|
|
396
|
+
self.assertIn(
|
|
397
|
+
"total elapsed_seconds to the sum of\nthe step elapsed_seconds values",
|
|
398
|
+
prompt,
|
|
399
|
+
)
|
|
396
400
|
|
|
397
401
|
def test_guidance_schema_enforces_step_id_taxonomy(self) -> None:
|
|
398
402
|
step_id_schema = campaign_adapters.ADOPTION_RESULT_JSON_SCHEMA[
|
|
@@ -1917,6 +1921,10 @@ class ClaudeMacosCertificatePathTests(unittest.TestCase):
|
|
|
1917
1921
|
|
|
1918
1922
|
def test_macos_claude_cold_install_uses_legacy_certs_without_ambient_pip_config(self) -> None:
|
|
1919
1923
|
prompt = self._prompt("claude", "Darwin")
|
|
1924
|
+
self.assertIn("Code Mower already created this workspace", prompt)
|
|
1925
|
+
self.assertIn("do not create or change into\nanother temporary directory", prompt)
|
|
1926
|
+
self.assertNotIn("a disposable environment you create", prompt)
|
|
1927
|
+
self.assertNotIn("inside a fresh temporary directory", prompt)
|
|
1920
1928
|
self.assertIn(
|
|
1921
1929
|
"env -u PIP_INDEX_URL -u PIP_EXTRA_INDEX_URL PIP_CONFIG_FILE=/dev/null "
|
|
1922
1930
|
".venv/bin/python -m pip --isolated --use-deprecated=legacy-certs install",
|
|
@@ -65,7 +65,7 @@ from scripts import guard_package_workflows, privacy_scan
|
|
|
65
65
|
|
|
66
66
|
class ReleaseHygieneTests(unittest.TestCase):
|
|
67
67
|
def test_version_is_current_supervised_pilot_release(self) -> None:
|
|
68
|
-
self.assertEqual(__version__, "1.0.
|
|
68
|
+
self.assertEqual(__version__, "1.0.12")
|
|
69
69
|
|
|
70
70
|
def test_dogfood_repo_has_real_root_config(self) -> None:
|
|
71
71
|
config_path = ROOT / "code-mower.yml"
|
|
@@ -216,7 +216,7 @@ class ReleaseHygieneTests(unittest.TestCase):
|
|
|
216
216
|
self.assertIn("Cold Install Vs Upgrade", install)
|
|
217
217
|
self.assertIn("Switching Between pipx And uv", install)
|
|
218
218
|
self.assertIn("uv tool install --python 3.12 --reinstall --refresh-package", install)
|
|
219
|
-
self.assertIn("code-mower==1.0.
|
|
219
|
+
self.assertIn("code-mower==1.0.12", troubleshooting)
|
|
220
220
|
self.assertNotIn("code-mower==0.8.0b1", troubleshooting)
|
|
221
221
|
self.assertIn("pipx uninstall code-mower", install)
|
|
222
222
|
for env_name in ("PIPX_HOME", "PIPX_BIN_DIR", "PIPX_LOG_DIR"):
|
|
@@ -1099,7 +1099,7 @@ exit 1
|
|
|
1099
1099
|
)
|
|
1100
1100
|
|
|
1101
1101
|
self.assertNotEqual(completed.returncode, 0)
|
|
1102
|
-
self.assertIn("pipx install code-mower==1.0.
|
|
1102
|
+
self.assertIn("pipx install code-mower==1.0.12", completed.stderr)
|
|
1103
1103
|
self.assertIn("scripts/dev-python -m venv .venv", completed.stderr)
|
|
1104
1104
|
self.assertIn(".venv/bin/code-mower", completed.stderr)
|
|
1105
1105
|
self.assertNotIn("PYTHONPATH=src", completed.stderr)
|
|
@@ -3237,10 +3237,10 @@ jobs:
|
|
|
3237
3237
|
|
|
3238
3238
|
cases = (
|
|
3239
3239
|
(
|
|
3240
|
-
'CODE_MOWER_STANDALONE_REF="v1.0.
|
|
3240
|
+
'CODE_MOWER_STANDALONE_REF="v1.0.12"\n',
|
|
3241
3241
|
"pass",
|
|
3242
3242
|
"matches_running_package",
|
|
3243
|
-
"v1.0.
|
|
3243
|
+
"v1.0.12",
|
|
3244
3244
|
),
|
|
3245
3245
|
(
|
|
3246
3246
|
'CODE_MOWER_STANDALONE_REF="v0.9.1-beta.1"\n',
|
|
@@ -3271,12 +3271,12 @@ jobs:
|
|
|
3271
3271
|
|
|
3272
3272
|
payload = migration._standalone_pin_drift_summary(
|
|
3273
3273
|
repo,
|
|
3274
|
-
package_version="1.0.
|
|
3274
|
+
package_version="1.0.12",
|
|
3275
3275
|
)
|
|
3276
3276
|
|
|
3277
3277
|
self.assertEqual(payload["status"], status)
|
|
3278
3278
|
self.assertEqual(payload["reason"], reason)
|
|
3279
|
-
self.assertEqual(payload["expected_ref"], "v1.0.
|
|
3279
|
+
self.assertEqual(payload["expected_ref"], "v1.0.12")
|
|
3280
3280
|
if current_ref is None:
|
|
3281
3281
|
self.assertNotIn("current_ref", payload)
|
|
3282
3282
|
else:
|
|
@@ -3297,7 +3297,7 @@ jobs:
|
|
|
3297
3297
|
|
|
3298
3298
|
payload = migration._standalone_pin_drift_summary(
|
|
3299
3299
|
repo,
|
|
3300
|
-
package_version="1.0.
|
|
3300
|
+
package_version="1.0.12",
|
|
3301
3301
|
)
|
|
3302
3302
|
|
|
3303
3303
|
self.assertEqual(payload["status"], "warn")
|
|
@@ -3360,7 +3360,7 @@ jobs:
|
|
|
3360
3360
|
"standalone_pin": {
|
|
3361
3361
|
"status": "skip",
|
|
3362
3362
|
"reason": "pin_file_absent",
|
|
3363
|
-
"expected_ref": "v1.0.
|
|
3363
|
+
"expected_ref": "v1.0.12",
|
|
3364
3364
|
},
|
|
3365
3365
|
"builder_hint": {
|
|
3366
3366
|
"status": "skip",
|
|
@@ -3372,7 +3372,7 @@ jobs:
|
|
|
3372
3372
|
|
|
3373
3373
|
rendered = migration.render_setup_drift_text(payload)
|
|
3374
3374
|
|
|
3375
|
-
self.assertIn("Standalone pin: SKIP pin_file_absent expected=v1.0.
|
|
3375
|
+
self.assertIn("Standalone pin: SKIP pin_file_absent expected=v1.0.12", rendered)
|
|
3376
3376
|
|
|
3377
3377
|
def test_setup_drift_reports_builder_hint_when_builders_omitted(self) -> None:
|
|
3378
3378
|
from code_mower import migration
|
|
@@ -5552,11 +5552,11 @@ printf 'repo:%s:%s:%s\\n' "${lane}" "${stdin_flag}" "${token}"
|
|
|
5552
5552
|
(output_dir / "src/code_mower/cloud_client/dogfood.py").is_file()
|
|
5553
5553
|
)
|
|
5554
5554
|
self.assertIn(
|
|
5555
|
-
'version = "1.0.
|
|
5555
|
+
'version = "1.0.12"',
|
|
5556
5556
|
(output_dir / "pyproject.toml").read_text(encoding="utf-8"),
|
|
5557
5557
|
)
|
|
5558
5558
|
self.assertIn(
|
|
5559
|
-
'__version__ = "1.0.
|
|
5559
|
+
'__version__ = "1.0.12"',
|
|
5560
5560
|
(output_dir / "src/code_mower/__init__.py").read_text(
|
|
5561
5561
|
encoding="utf-8"
|
|
5562
5562
|
),
|
|
@@ -7561,7 +7561,7 @@ def main():
|
|
|
7561
7561
|
"pip",
|
|
7562
7562
|
"install",
|
|
7563
7563
|
"--no-cache-dir",
|
|
7564
|
-
"code-mower==1.0.
|
|
7564
|
+
"code-mower==1.0.12",
|
|
7565
7565
|
]
|
|
7566
7566
|
|
|
7567
7567
|
def fake_run_step(*args: object, **kwargs: object) -> subprocess.CompletedProcess[str]:
|
|
@@ -7628,7 +7628,7 @@ def main():
|
|
|
7628
7628
|
self.assertTrue(code_mower_migration._package_spec_uses_package_index("code-mower"))
|
|
7629
7629
|
self.assertTrue(
|
|
7630
7630
|
code_mower_migration._package_spec_uses_package_index(
|
|
7631
|
-
"code-mower==1.0.
|
|
7631
|
+
"code-mower==1.0.12"
|
|
7632
7632
|
)
|
|
7633
7633
|
)
|
|
7634
7634
|
self.assertFalse(code_mower_migration._package_spec_uses_package_index("."))
|
|
@@ -7637,7 +7637,7 @@ def main():
|
|
|
7637
7637
|
)
|
|
7638
7638
|
self.assertFalse(
|
|
7639
7639
|
code_mower_migration._package_spec_uses_package_index(
|
|
7640
|
-
"git+https://github.com/codemower-ai/code-mower.git@v1.0.
|
|
7640
|
+
"git+https://github.com/codemower-ai/code-mower.git@v1.0.12"
|
|
7641
7641
|
)
|
|
7642
7642
|
)
|
|
7643
7643
|
|
|
@@ -7647,7 +7647,7 @@ def main():
|
|
|
7647
7647
|
|
|
7648
7648
|
with self.assertRaisesRegex(ValueError, "--allow-package-index"):
|
|
7649
7649
|
code_mower_migration.run_package_install_rehearsal(
|
|
7650
|
-
package_spec="code-mower==1.0.
|
|
7650
|
+
package_spec="code-mower==1.0.12",
|
|
7651
7651
|
work_dir=work_dir,
|
|
7652
7652
|
)
|
|
7653
7653
|
|
|
@@ -7675,7 +7675,7 @@ def main():
|
|
|
7675
7675
|
[
|
|
7676
7676
|
"package-install-rehearsal",
|
|
7677
7677
|
"--package-spec",
|
|
7678
|
-
"code-mower==1.0.
|
|
7678
|
+
"code-mower==1.0.12",
|
|
7679
7679
|
"--allow-package-index",
|
|
7680
7680
|
"--upgrade-pip",
|
|
7681
7681
|
"--pip-no-cache",
|
|
@@ -7731,10 +7731,10 @@ def main():
|
|
|
7731
7731
|
payload = release_readiness.render_release_readiness(ROOT)
|
|
7732
7732
|
|
|
7733
7733
|
self.assertEqual(payload["status"], "pass")
|
|
7734
|
-
self.assertEqual(payload["version"], "1.0.
|
|
7735
|
-
self.assertEqual(payload["release_tag"], "v1.0.
|
|
7736
|
-
self.assertEqual(payload["alpha_tag"], "v1.0.
|
|
7737
|
-
self.assertEqual(payload["package_index_spec"], "code-mower==1.0.
|
|
7734
|
+
self.assertEqual(payload["version"], "1.0.12")
|
|
7735
|
+
self.assertEqual(payload["release_tag"], "v1.0.12")
|
|
7736
|
+
self.assertEqual(payload["alpha_tag"], "v1.0.12")
|
|
7737
|
+
self.assertEqual(payload["package_index_spec"], "code-mower==1.0.12")
|
|
7738
7738
|
check_ids = {check["id"]: check for check in payload["checks"]}
|
|
7739
7739
|
self.assertEqual(check_ids["package-version-consistency"]["status"], "pass")
|
|
7740
7740
|
self.assertEqual(
|
|
@@ -7750,9 +7750,9 @@ def main():
|
|
|
7750
7750
|
self.assertEqual(check_ids["public-support-redaction-guidance"]["status"], "pass")
|
|
7751
7751
|
commands = {action["id"]: action["command"] for action in payload["next_actions"]}
|
|
7752
7752
|
urls = {action["id"]: action.get("url", "") for action in payload["next_actions"]}
|
|
7753
|
-
self.assertIn("--ref v1.0.
|
|
7753
|
+
self.assertIn("--ref v1.0.12", commands["dry-run-release-workflow"])
|
|
7754
7754
|
self.assertNotIn("--ref main", commands["dry-run-release-workflow"])
|
|
7755
|
-
self.assertIn("--ref v1.0.
|
|
7755
|
+
self.assertIn("--ref v1.0.12", commands["publish-testpypi-candidate"])
|
|
7756
7756
|
self.assertNotIn("--ref main", commands["publish-testpypi-candidate"])
|
|
7757
7757
|
self.assertIn("publish_testpypi=true", commands["publish-testpypi-candidate"])
|
|
7758
7758
|
self.assertIn("publish_pypi=false", commands["publish-testpypi-candidate"])
|
|
@@ -7789,7 +7789,7 @@ def main():
|
|
|
7789
7789
|
check_ids = {check["id"]: check for check in payload["checks"]}
|
|
7790
7790
|
check = check_ids["materialized-package-version-consistency"]
|
|
7791
7791
|
self.assertEqual(check["status"], "fail")
|
|
7792
|
-
self.assertEqual(check["detail"]["source_version"], "1.0.
|
|
7792
|
+
self.assertEqual(check["detail"]["source_version"], "1.0.12")
|
|
7793
7793
|
self.assertEqual(check["detail"]["generated_init_version"], "0.0.0")
|
|
7794
7794
|
|
|
7795
7795
|
def test_public_support_docs_are_packaged_and_privacy_forward(self) -> None:
|
|
@@ -7893,20 +7893,20 @@ def main():
|
|
|
7893
7893
|
"v1.0.0-rc.1",
|
|
7894
7894
|
)
|
|
7895
7895
|
self.assertEqual(
|
|
7896
|
-
release_readiness._release_tag_for_version("1.0.
|
|
7897
|
-
"v1.0.
|
|
7896
|
+
release_readiness._release_tag_for_version("1.0.12"),
|
|
7897
|
+
"v1.0.12",
|
|
7898
7898
|
)
|
|
7899
7899
|
self.assertEqual(
|
|
7900
|
-
code_mower_versioning.release_tag_for_version("1.0.
|
|
7901
|
-
"v1.0.
|
|
7900
|
+
code_mower_versioning.release_tag_for_version("1.0.12"),
|
|
7901
|
+
"v1.0.12",
|
|
7902
7902
|
)
|
|
7903
7903
|
|
|
7904
7904
|
def test_public_release_baseline_helpers_derive_announcement_links(self) -> None:
|
|
7905
7905
|
self.assertEqual(
|
|
7906
7906
|
code_mower_versioning.public_baseline_sentence(__version__),
|
|
7907
7907
|
(
|
|
7908
|
-
"The current package-index release baseline is `v1.0.
|
|
7909
|
-
"with pinned package install spec `code-mower==1.0.
|
|
7908
|
+
"The current package-index release baseline is `v1.0.12`, "
|
|
7909
|
+
"with pinned package install spec `code-mower==1.0.12`. "
|
|
7910
7910
|
"Release evidence is recorded on the GitHub release and in the "
|
|
7911
7911
|
"first-user install rehearsal."
|
|
7912
7912
|
),
|
|
@@ -7915,7 +7915,7 @@ def main():
|
|
|
7915
7915
|
code_mower_versioning.tagged_doc_url(__version__),
|
|
7916
7916
|
(
|
|
7917
7917
|
"https://github.com/codemower-ai/code-mower/blob/"
|
|
7918
|
-
"v1.0.
|
|
7918
|
+
"v1.0.12/docs/try-in-10-minutes.md"
|
|
7919
7919
|
),
|
|
7920
7920
|
)
|
|
7921
7921
|
|
|
@@ -7968,15 +7968,15 @@ def main():
|
|
|
7968
7968
|
)
|
|
7969
7969
|
|
|
7970
7970
|
current_status = (
|
|
7971
|
-
"The current package-index release baseline is `v1.0.
|
|
7972
|
-
"pinned package install spec `code-mower==1.0.
|
|
7971
|
+
"The current package-index release baseline is `v1.0.12`, with "
|
|
7972
|
+
"pinned package install spec `code-mower==1.0.12`. Release "
|
|
7973
7973
|
"evidence is recorded on the GitHub release and in the first-user "
|
|
7974
7974
|
"install rehearsal."
|
|
7975
7975
|
)
|
|
7976
7976
|
for text in (readme, current_state, rollout):
|
|
7977
7977
|
self.assertIn(current_status, " ".join(text.split()))
|
|
7978
7978
|
self.assertIn(
|
|
7979
|
-
"The current package-index release entrypoint is `code-mower==1.0.
|
|
7979
|
+
"The current package-index release entrypoint is `code-mower==1.0.12`",
|
|
7980
7980
|
public_release,
|
|
7981
7981
|
)
|
|
7982
7982
|
self.assertIn("The v1.0 supervised-pilot release includes", public_release)
|
|
@@ -7986,7 +7986,7 @@ def main():
|
|
|
7986
7986
|
)
|
|
7987
7987
|
|
|
7988
7988
|
self.assertIn(
|
|
7989
|
-
"The current public-release baseline is `v1.0.
|
|
7989
|
+
"The current public-release baseline is `v1.0.12`",
|
|
7990
7990
|
oss_checklist,
|
|
7991
7991
|
)
|
|
7992
7992
|
self.assertIn(
|
|
@@ -8017,7 +8017,7 @@ def main():
|
|
|
8017
8017
|
" ".join(first_user.split()),
|
|
8018
8018
|
)
|
|
8019
8019
|
self.assertIn("never substitute mutable `main`", first_user)
|
|
8020
|
-
self.assertEqual(first_user.count(" --ref v1.0.
|
|
8020
|
+
self.assertEqual(first_user.count(" --ref v1.0.12 \\"), 2)
|
|
8021
8021
|
self.assertNotIn(" --ref main \\", first_user)
|
|
8022
8022
|
self.assertIn("-f publish_testpypi=true", first_user)
|
|
8023
8023
|
self.assertIn("-f publish_pypi=false", first_user)
|
|
@@ -8029,23 +8029,23 @@ def main():
|
|
|
8029
8029
|
first_user,
|
|
8030
8030
|
)
|
|
8031
8031
|
self.assertNotIn(
|
|
8032
|
-
"The latest public-package rehearsal for `v1.0.
|
|
8032
|
+
"The latest public-package rehearsal for `v1.0.12` was run",
|
|
8033
8033
|
first_user,
|
|
8034
8034
|
)
|
|
8035
|
-
self.assertNotIn("TestPyPI is not\npublished for `1.0.
|
|
8035
|
+
self.assertNotIn("TestPyPI is not\npublished for `1.0.12`", first_user)
|
|
8036
8036
|
for text in (readme, current_state, rollout):
|
|
8037
8037
|
self.assertNotIn(
|
|
8038
|
-
"published on PyPI as `code-mower==1.0.
|
|
8038
|
+
"published on PyPI as `code-mower==1.0.12`",
|
|
8039
8039
|
text,
|
|
8040
8040
|
)
|
|
8041
8041
|
self.assertNotIn(
|
|
8042
8042
|
"latest 10/10 public-package readiness proof for "
|
|
8043
|
-
"`code-mower==1.0.
|
|
8043
|
+
"`code-mower==1.0.12`",
|
|
8044
8044
|
text,
|
|
8045
8045
|
)
|
|
8046
8046
|
self.assertNotIn(
|
|
8047
8047
|
"public PyPI package-install rehearsal from "
|
|
8048
|
-
"`code-mower==1.0.
|
|
8048
|
+
"`code-mower==1.0.12`",
|
|
8049
8049
|
text,
|
|
8050
8050
|
)
|
|
8051
8051
|
self.assertNotIn("beta.52: 10/10 first-user readiness", text)
|
|
@@ -8345,7 +8345,7 @@ def main():
|
|
|
8345
8345
|
|
|
8346
8346
|
self.assertIn("Python 3.12 or newer", install)
|
|
8347
8347
|
self.assertIn('pipx install --python "$CODE_MOWER_PYTHON"', install)
|
|
8348
|
-
self.assertIn("uv tool install --python 3.12 code-mower==1.0.
|
|
8348
|
+
self.assertIn("uv tool install --python 3.12 code-mower==1.0.12", install)
|
|
8349
8349
|
self.assertIn(
|
|
8350
8350
|
'PIP_NO_CACHE_DIR=1 pipx install --force --python "$CODE_MOWER_PYTHON"',
|
|
8351
8351
|
install,
|
|
@@ -8439,7 +8439,7 @@ def main():
|
|
|
8439
8439
|
/ "v101-effectiveness-assessment.md",
|
|
8440
8440
|
}
|
|
8441
8441
|
stale_phrases = (
|
|
8442
|
-
"pipx install --python python3.12 code-mower==1.0.
|
|
8442
|
+
"pipx install --python python3.12 code-mower==1.0.12",
|
|
8443
8443
|
"Use only after TestPyPI passes.",
|
|
8444
8444
|
"future newest betas until 1.0",
|
|
8445
8445
|
"during v0.7 adoption",
|
|
@@ -8492,7 +8492,7 @@ def main():
|
|
|
8492
8492
|
troubleshooting = (ROOT / "docs" / "troubleshooting.md").read_text(
|
|
8493
8493
|
encoding="utf-8",
|
|
8494
8494
|
)
|
|
8495
|
-
release_notes = (ROOT / "docs" / "
|
|
8495
|
+
release_notes = (ROOT / "docs" / "v1012-release-notes.md").read_text(
|
|
8496
8496
|
encoding="utf-8",
|
|
8497
8497
|
)
|
|
8498
8498
|
|
|
@@ -8512,6 +8512,7 @@ def main():
|
|
|
8512
8512
|
self.assertIn("[v1.0.9 Release Notes](docs/v109-release-notes.md)", readme)
|
|
8513
8513
|
self.assertIn("[v1.0.10 Release Notes](docs/v1010-release-notes.md)", readme)
|
|
8514
8514
|
self.assertIn("[v1.0.11 Release Notes](docs/v1011-release-notes.md)", readme)
|
|
8515
|
+
self.assertIn("[v1.0.12 Release Notes](docs/v1012-release-notes.md)", readme)
|
|
8515
8516
|
self.assertIn(
|
|
8516
8517
|
"[v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)",
|
|
8517
8518
|
readme,
|
|
@@ -8523,7 +8524,7 @@ def main():
|
|
|
8523
8524
|
self.assertIn("Manual Audit Wrapper Fails Before Reviewing", troubleshooting)
|
|
8524
8525
|
self.assertIn("OWNER/REPO:/absolute/path/to/pr-head-checkout", troubleshooting)
|
|
8525
8526
|
self.assertIn("structured output", " ".join(troubleshooting.split()))
|
|
8526
|
-
self.assertIn("Code Mower v1.0.
|
|
8527
|
+
self.assertIn("Code Mower v1.0.12 Release Notes", release_notes)
|
|
8527
8528
|
self.assertIn("code-mower release qualify", release_notes)
|
|
8528
8529
|
self.assertIn("code-mower release campaign", release_notes)
|
|
8529
8530
|
self.assertIn("code_mower.adoptionResult.v1", release_notes)
|
|
@@ -8730,7 +8731,7 @@ def main():
|
|
|
8730
8731
|
"doctor --adoption --repo codemower-ai/code-mower",
|
|
8731
8732
|
doctor_step["command"],
|
|
8732
8733
|
)
|
|
8733
|
-
self.assertIn("code-mower==1.0.
|
|
8734
|
+
self.assertIn("code-mower==1.0.12", package_step["command"])
|
|
8734
8735
|
self.assertIn("--allow-package-index", package_step["command"])
|
|
8735
8736
|
self.assertIn("current published PyPI package", package_step["why"])
|
|
8736
8737
|
self.assertIn("first_user_readiness", package_step["why"])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|