code-mower 1.0.13__tar.gz → 1.0.14__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.13 → code_mower-1.0.14}/PKG-INFO +12 -5
- {code_mower-1.0.13 → code_mower-1.0.14}/README.md +11 -4
- {code_mower-1.0.13 → code_mower-1.0.14}/pyproject.toml +1 -1
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/__init__.py +1 -1
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/devin_api.py +9 -7
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower.egg-info/PKG-INFO +12 -5
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/builder-provenance.yml.j2 +1 -1
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_devin_api.py +55 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_release_hygiene.py +47 -46
- {code_mower-1.0.13 → code_mower-1.0.14}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/LICENSE +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/MANIFEST.in +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/NOTICE +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/SUPPORT.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/requirements/requirements.txt +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/setup.cfg +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/antigravity_sdk_probe.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/audit_labeler_lib.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/audit_limits.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/audit_progress.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/board.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/board_store.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/bootstrap.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/builder_runs.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/results.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/campaign_adapters.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/campaign_discovery.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/checks.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/claude_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/clear_stale.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/__init__.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/adoption_runs.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/bundle.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/events.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/operations.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/productivity.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/tokens.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/cloud_client/work_types.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/codex_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/config.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/controller.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/decisions.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/devin_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/__init__.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/adoption.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/audit_limits.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/campaign_auth.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_human_token.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_repo.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/providers.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/registry.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/runner.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/runtime.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/file_locks.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/gate_health.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/git_identity.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/grok_build_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/init.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/devin_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/grok_build.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_configs/muse_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_delivery.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/lane_status.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/migration.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/migration_install.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/migration_rehearsal.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/muse_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/next_steps.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/package.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/package_content.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/package_manifest.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/package_paths.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/package_rendering.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/package_static.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/participants.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/plan_context.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/productivity_report.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/prompts.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_registry.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/exit_codes.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/github_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/providers/provenance.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/release_campaigns.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/release_qualify.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/release_readiness.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/reviewer_spend.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/secrets.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/session.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/code-mower.example.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lanes/README.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lanes/claude.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lanes/codex.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lanes/cursor.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lanes/devin.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lanes/generic.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/code_mower +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/product-support/status_report.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/trailer_comment_labeler.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/versioning.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/work_orders.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower/workflow_actionlint.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower.egg-info/SOURCES.txt +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower.egg-info/requires.txt +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/builder-experiment.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/calibration-corpus.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/code-mower.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/context-packs.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/lanes/README.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/lanes/claude.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/lanes/codex.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/lanes/cursor.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/lanes/devin.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/lanes/generic.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/aider.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/claude_audit.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/claude_review.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/codex.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/cursor_cloud_agent.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/devin.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/devin_cli.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/gitar.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/greptile.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/local_llm.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/muse_cli.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers/qodo.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/providers.yml +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_adoption_diagnostics.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_adoption_result_semantics.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_adoption_run_contract.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_antigravity_sdk_probe.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_audit_comment_posture.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_audit_limits.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_board.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_builder_experiment.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_builder_identity.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_builder_runs.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_calibration_truth.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_campaign_adapters.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_campaign_discovery.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_campaign_retry_evidence_711.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_checks.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_claude_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_clear_stale.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_cloud_client.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_cloud_manifest.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_cloud_reports.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_codex_audit_env_preflight.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_codex_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_controller.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_decision_audit_integration.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_decisions.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_devin_builder_lane.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_devin_cli_audit_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_devin_provider_contract.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_campaign_auth.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_campaign_readiness.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_github_checks.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_output.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_privacy.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_provider_local_audit_setup.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_provider_review_hygiene.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_registry.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_runtime.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_self_hosted_runner.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_doctor_supervised_pilot.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_file_locks.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_fork_pr_guard.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_gate_automerge.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_gate_health.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_hosted_dispatch_profile.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_init_actionlint.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_init_build_loop.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_lane_delivery_contract.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_lane_status.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_migration_rehearsal.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_migration_setup_drift.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_next_steps.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_package_install_failure_taxonomy.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_participant_sessions.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_plan_context.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_pr_outcome_contract.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_productivity_metrics_contract.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_productivity_report.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_prompts.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_fixture_contracts.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_local_cli.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_git.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_process.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_release_campaigns.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_release_qualify.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_reviewer_metrics_core.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_reviewer_spend.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_supervised_pilot_contract.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_trailer_comment_labeler.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/tests/test_work_orders.py +0 -0
- {code_mower-1.0.13 → code_mower-1.0.14}/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.14
|
|
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.14/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
|
|
@@ -300,6 +300,12 @@ versioned Python on `PATH` outside the user home before falling back to its
|
|
|
300
300
|
own running interpreter, so a pipx- or uv-installed CLI stops handing Claude's
|
|
301
301
|
strict macOS sandbox an interpreter under the denied home tree. An explicit
|
|
302
302
|
`CODE_MOWER_PYTHON` remains authoritative.
|
|
303
|
+
The v1.0.14 patch corrects hosted Devin qualification result precedence: a
|
|
304
|
+
valid closed structured result is accepted even while the session still
|
|
305
|
+
reports `running` / `waiting_for_user`, so a finished informational Devin
|
|
306
|
+
attempt is no longer recorded as owner-blocked. An explicit terminal API
|
|
307
|
+
failure and a `waiting_for_approval` session still take precedence over any
|
|
308
|
+
structured output.
|
|
303
309
|
Package-only users can start from the public package rather than a source
|
|
304
310
|
checkout.
|
|
305
311
|
|
|
@@ -332,7 +338,7 @@ Provider-contract baseline for the next release train:
|
|
|
332
338
|
|
|
333
339
|
For release verification,
|
|
334
340
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
335
|
-
the package-index procedure for `v1.0.
|
|
341
|
+
the package-index procedure for `v1.0.14` / `code-mower==1.0.14`. The
|
|
336
342
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
337
343
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
338
344
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -526,8 +532,8 @@ measurement work.
|
|
|
526
532
|
|
|
527
533
|
## Installation Status
|
|
528
534
|
|
|
529
|
-
The current package-index release baseline is `v1.0.
|
|
530
|
-
install spec `code-mower==1.0.
|
|
535
|
+
The current package-index release baseline is `v1.0.14`, with pinned package
|
|
536
|
+
install spec `code-mower==1.0.14`. Release evidence is recorded on the GitHub
|
|
531
537
|
release and in the first-user install rehearsal. The public repository is
|
|
532
538
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
533
539
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -609,6 +615,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
609
615
|
- [v1.0.11 Release Notes](docs/v1011-release-notes.md)
|
|
610
616
|
- [v1.0.12 Release Notes](docs/v1012-release-notes.md)
|
|
611
617
|
- [v1.0.13 Release Notes](docs/v1013-release-notes.md)
|
|
618
|
+
- [v1.0.14 Release Notes](docs/v1014-release-notes.md)
|
|
612
619
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
613
620
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
614
621
|
- [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.14/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
|
|
@@ -270,6 +270,12 @@ versioned Python on `PATH` outside the user home before falling back to its
|
|
|
270
270
|
own running interpreter, so a pipx- or uv-installed CLI stops handing Claude's
|
|
271
271
|
strict macOS sandbox an interpreter under the denied home tree. An explicit
|
|
272
272
|
`CODE_MOWER_PYTHON` remains authoritative.
|
|
273
|
+
The v1.0.14 patch corrects hosted Devin qualification result precedence: a
|
|
274
|
+
valid closed structured result is accepted even while the session still
|
|
275
|
+
reports `running` / `waiting_for_user`, so a finished informational Devin
|
|
276
|
+
attempt is no longer recorded as owner-blocked. An explicit terminal API
|
|
277
|
+
failure and a `waiting_for_approval` session still take precedence over any
|
|
278
|
+
structured output.
|
|
273
279
|
Package-only users can start from the public package rather than a source
|
|
274
280
|
checkout.
|
|
275
281
|
|
|
@@ -302,7 +308,7 @@ Provider-contract baseline for the next release train:
|
|
|
302
308
|
|
|
303
309
|
For release verification,
|
|
304
310
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
305
|
-
the package-index procedure for `v1.0.
|
|
311
|
+
the package-index procedure for `v1.0.14` / `code-mower==1.0.14`. The
|
|
306
312
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
307
313
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
308
314
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -496,8 +502,8 @@ measurement work.
|
|
|
496
502
|
|
|
497
503
|
## Installation Status
|
|
498
504
|
|
|
499
|
-
The current package-index release baseline is `v1.0.
|
|
500
|
-
install spec `code-mower==1.0.
|
|
505
|
+
The current package-index release baseline is `v1.0.14`, with pinned package
|
|
506
|
+
install spec `code-mower==1.0.14`. Release evidence is recorded on the GitHub
|
|
501
507
|
release and in the first-user install rehearsal. The public repository is
|
|
502
508
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
503
509
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -579,6 +585,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
579
585
|
- [v1.0.11 Release Notes](docs/v1011-release-notes.md)
|
|
580
586
|
- [v1.0.12 Release Notes](docs/v1012-release-notes.md)
|
|
581
587
|
- [v1.0.13 Release Notes](docs/v1013-release-notes.md)
|
|
588
|
+
- [v1.0.14 Release Notes](docs/v1014-release-notes.md)
|
|
582
589
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
583
590
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
584
591
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
@@ -238,13 +238,6 @@ def poll_devin_session(
|
|
|
238
238
|
return "failed", None, exc.code
|
|
239
239
|
status = str(data.get("status") or "")
|
|
240
240
|
detail = str(data.get("status_detail") or "")
|
|
241
|
-
if detail in {"waiting_for_user", "waiting_for_approval"}:
|
|
242
|
-
return "owner_action", None, "devin_waiting_for_owner"
|
|
243
|
-
if status == "exit" or detail == "finished":
|
|
244
|
-
result = data.get("structured_output")
|
|
245
|
-
if isinstance(result, dict):
|
|
246
|
-
return "complete", dict(result), ""
|
|
247
|
-
return "failed", None, "hosted_result_rejected"
|
|
248
241
|
if status in {"error", "suspended"} or detail in {
|
|
249
242
|
"error",
|
|
250
243
|
"usage_limit_exceeded",
|
|
@@ -256,4 +249,13 @@ def poll_devin_session(
|
|
|
256
249
|
"total_session_limit_exceeded",
|
|
257
250
|
}:
|
|
258
251
|
return "failed", None, "devin_session_failed"
|
|
252
|
+
if detail == "waiting_for_approval":
|
|
253
|
+
return "owner_action", None, "devin_waiting_for_owner"
|
|
254
|
+
result = data.get("structured_output")
|
|
255
|
+
if isinstance(result, dict):
|
|
256
|
+
return "complete", dict(result), ""
|
|
257
|
+
if detail == "waiting_for_user":
|
|
258
|
+
return "owner_action", None, "devin_waiting_for_owner"
|
|
259
|
+
if status == "exit" or detail == "finished":
|
|
260
|
+
return "failed", None, "hosted_result_rejected"
|
|
259
261
|
return "running", None, ""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.14
|
|
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.14/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
|
|
@@ -300,6 +300,12 @@ versioned Python on `PATH` outside the user home before falling back to its
|
|
|
300
300
|
own running interpreter, so a pipx- or uv-installed CLI stops handing Claude's
|
|
301
301
|
strict macOS sandbox an interpreter under the denied home tree. An explicit
|
|
302
302
|
`CODE_MOWER_PYTHON` remains authoritative.
|
|
303
|
+
The v1.0.14 patch corrects hosted Devin qualification result precedence: a
|
|
304
|
+
valid closed structured result is accepted even while the session still
|
|
305
|
+
reports `running` / `waiting_for_user`, so a finished informational Devin
|
|
306
|
+
attempt is no longer recorded as owner-blocked. An explicit terminal API
|
|
307
|
+
failure and a `waiting_for_approval` session still take precedence over any
|
|
308
|
+
structured output.
|
|
303
309
|
Package-only users can start from the public package rather than a source
|
|
304
310
|
checkout.
|
|
305
311
|
|
|
@@ -332,7 +338,7 @@ Provider-contract baseline for the next release train:
|
|
|
332
338
|
|
|
333
339
|
For release verification,
|
|
334
340
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
335
|
-
the package-index procedure for `v1.0.
|
|
341
|
+
the package-index procedure for `v1.0.14` / `code-mower==1.0.14`. The
|
|
336
342
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
337
343
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
338
344
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -526,8 +532,8 @@ measurement work.
|
|
|
526
532
|
|
|
527
533
|
## Installation Status
|
|
528
534
|
|
|
529
|
-
The current package-index release baseline is `v1.0.
|
|
530
|
-
install spec `code-mower==1.0.
|
|
535
|
+
The current package-index release baseline is `v1.0.14`, with pinned package
|
|
536
|
+
install spec `code-mower==1.0.14`. Release evidence is recorded on the GitHub
|
|
531
537
|
release and in the first-user install rehearsal. The public repository is
|
|
532
538
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
533
539
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -609,6 +615,7 @@ first so local work exercises the same package entrypoint users install.
|
|
|
609
615
|
- [v1.0.11 Release Notes](docs/v1011-release-notes.md)
|
|
610
616
|
- [v1.0.12 Release Notes](docs/v1012-release-notes.md)
|
|
611
617
|
- [v1.0.13 Release Notes](docs/v1013-release-notes.md)
|
|
618
|
+
- [v1.0.14 Release Notes](docs/v1014-release-notes.md)
|
|
612
619
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
613
620
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
614
621
|
- [Demo Calibration Example](examples/demo-calibration/README.md)
|
|
@@ -172,6 +172,61 @@ class DevinApiModuleTests(unittest.TestCase):
|
|
|
172
172
|
("failed", None, "devin_session_failed"),
|
|
173
173
|
)
|
|
174
174
|
|
|
175
|
+
def test_poll_accepts_structured_result_while_devin_waits_for_user(self) -> None:
|
|
176
|
+
result = _adoption_result()
|
|
177
|
+
runner = _FakeApiRunner(
|
|
178
|
+
[
|
|
179
|
+
{
|
|
180
|
+
"status": "running",
|
|
181
|
+
"status_detail": "waiting_for_user",
|
|
182
|
+
"structured_output": result,
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
self.assertEqual(
|
|
188
|
+
devin_api.poll_devin_session(
|
|
189
|
+
"org-test", "devin-1", "key", api_runner=runner
|
|
190
|
+
),
|
|
191
|
+
("complete", result, ""),
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
def test_poll_keeps_terminal_failure_ahead_of_structured_output(self) -> None:
|
|
195
|
+
runner = _FakeApiRunner(
|
|
196
|
+
[
|
|
197
|
+
{
|
|
198
|
+
"status": "error",
|
|
199
|
+
"status_detail": "out_of_credits",
|
|
200
|
+
"structured_output": _adoption_result(),
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
self.assertEqual(
|
|
206
|
+
devin_api.poll_devin_session(
|
|
207
|
+
"org-test", "devin-1", "key", api_runner=runner
|
|
208
|
+
),
|
|
209
|
+
("failed", None, "devin_session_failed"),
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
def test_poll_keeps_owner_approval_ahead_of_structured_output(self) -> None:
|
|
213
|
+
runner = _FakeApiRunner(
|
|
214
|
+
[
|
|
215
|
+
{
|
|
216
|
+
"status": "running",
|
|
217
|
+
"status_detail": "waiting_for_approval",
|
|
218
|
+
"structured_output": _adoption_result(),
|
|
219
|
+
}
|
|
220
|
+
]
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
self.assertEqual(
|
|
224
|
+
devin_api.poll_devin_session(
|
|
225
|
+
"org-test", "devin-1", "key", api_runner=runner
|
|
226
|
+
),
|
|
227
|
+
("owner_action", None, "devin_waiting_for_owner"),
|
|
228
|
+
)
|
|
229
|
+
|
|
175
230
|
|
|
176
231
|
class DevinCampaignApiTests(unittest.TestCase):
|
|
177
232
|
def _campaign(
|
|
@@ -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.14")
|
|
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.14", 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.14", 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.14"\n',
|
|
3241
3241
|
"pass",
|
|
3242
3242
|
"matches_running_package",
|
|
3243
|
-
"v1.0.
|
|
3243
|
+
"v1.0.14",
|
|
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.14",
|
|
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.14")
|
|
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.14",
|
|
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.14",
|
|
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.14", 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.14"',
|
|
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.14"',
|
|
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.14",
|
|
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.14"
|
|
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.14"
|
|
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.14",
|
|
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.14",
|
|
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.14")
|
|
7735
|
+
self.assertEqual(payload["release_tag"], "v1.0.14")
|
|
7736
|
+
self.assertEqual(payload["alpha_tag"], "v1.0.14")
|
|
7737
|
+
self.assertEqual(payload["package_index_spec"], "code-mower==1.0.14")
|
|
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.14", 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.14", 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.14")
|
|
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.14"),
|
|
7897
|
+
"v1.0.14",
|
|
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.14"),
|
|
7901
|
+
"v1.0.14",
|
|
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.14`, "
|
|
7909
|
+
"with pinned package install spec `code-mower==1.0.14`. "
|
|
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.14/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.14`, with "
|
|
7972
|
+
"pinned package install spec `code-mower==1.0.14`. 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.14`",
|
|
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.14`",
|
|
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.14 \\"), 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.14` 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.14`", 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.14`",
|
|
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.14`",
|
|
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.14`",
|
|
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.14", 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.14",
|
|
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" / "v1014-release-notes.md").read_text(
|
|
8496
8496
|
encoding="utf-8",
|
|
8497
8497
|
)
|
|
8498
8498
|
|
|
@@ -8514,6 +8514,7 @@ def main():
|
|
|
8514
8514
|
self.assertIn("[v1.0.11 Release Notes](docs/v1011-release-notes.md)", readme)
|
|
8515
8515
|
self.assertIn("[v1.0.12 Release Notes](docs/v1012-release-notes.md)", readme)
|
|
8516
8516
|
self.assertIn("[v1.0.13 Release Notes](docs/v1013-release-notes.md)", readme)
|
|
8517
|
+
self.assertIn("[v1.0.14 Release Notes](docs/v1014-release-notes.md)", readme)
|
|
8517
8518
|
self.assertIn(
|
|
8518
8519
|
"[v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)",
|
|
8519
8520
|
readme,
|
|
@@ -8525,7 +8526,7 @@ def main():
|
|
|
8525
8526
|
self.assertIn("Manual Audit Wrapper Fails Before Reviewing", troubleshooting)
|
|
8526
8527
|
self.assertIn("OWNER/REPO:/absolute/path/to/pr-head-checkout", troubleshooting)
|
|
8527
8528
|
self.assertIn("structured output", " ".join(troubleshooting.split()))
|
|
8528
|
-
self.assertIn("Code Mower v1.0.
|
|
8529
|
+
self.assertIn("Code Mower v1.0.14 Release Notes", release_notes)
|
|
8529
8530
|
self.assertIn("code-mower release qualify", release_notes)
|
|
8530
8531
|
self.assertIn("code-mower release campaign", release_notes)
|
|
8531
8532
|
self.assertIn("code_mower.adoptionResult.v1", release_notes)
|
|
@@ -8732,7 +8733,7 @@ def main():
|
|
|
8732
8733
|
"doctor --adoption --repo codemower-ai/code-mower",
|
|
8733
8734
|
doctor_step["command"],
|
|
8734
8735
|
)
|
|
8735
|
-
self.assertIn("code-mower==1.0.
|
|
8736
|
+
self.assertIn("code-mower==1.0.14", package_step["command"])
|
|
8736
8737
|
self.assertIn("--allow-package-index", package_step["command"])
|
|
8737
8738
|
self.assertIn("current published PyPI package", package_step["why"])
|
|
8738
8739
|
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
|