code-mower 0.5.0b13__tar.gz → 0.5.0b14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/PKG-INFO +6 -6
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/README.md +5 -5
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/pyproject.toml +1 -1
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/__init__.py +1 -1
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/__init__.py +2 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/results.py +41 -1
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cli.py +1 -1
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower.egg-info/PKG-INFO +6 -6
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_calibration_truth.py +59 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_release_hygiene.py +34 -34
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/LICENSE +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/MANIFEST.in +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/NOTICE +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/SUPPORT.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/requirements/requirements.txt +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/setup.cfg +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/audit_labeler_lib.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/audit_progress.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/bootstrap.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/checks.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/claude_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/clear_stale.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/__init__.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/bundle.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/events.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/operations.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/codex_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/config.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/__init__.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/github_repo.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/providers.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/registry.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/runner.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/runtime.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/init.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/migration.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/migration_install.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/migration_rehearsal.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/next_steps.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/package.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/package_content.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/package_manifest.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/package_paths.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/package_rendering.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/package_static.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/prompts.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_registry.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/github_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/providers/provenance.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/release_readiness.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/secrets.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/code-mower.example.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/product-support/code_mower +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/trailer_comment_labeler.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower/versioning.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower.egg-info/SOURCES.txt +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower.egg-info/requires.txt +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/builder-experiment.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/calibration-corpus.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/code-mower.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/context-packs.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/aider.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/claude_audit.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/claude_review.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/codex.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/devin.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/gitar.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/greptile.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/local_llm.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers/qodo.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/providers.yml +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_checks.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_clear_stale.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_cloud_client.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_cloud_manifest.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_cloud_reports.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_github_checks.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_output.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_privacy.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_doctor_registry.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_local_cli.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_git.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_process.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-0.5.0b13 → code_mower-0.5.0b14}/tests/test_reviewer_metrics_core.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0b14
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -101,11 +101,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
|
101
101
|
|
|
102
102
|
```bash
|
|
103
103
|
python3.12 --version
|
|
104
|
-
pipx install --python python3.12 code-mower==0.5.
|
|
104
|
+
pipx install --python python3.12 code-mower==0.5.0b14
|
|
105
105
|
code-mower --version
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
`0.5.
|
|
108
|
+
`0.5.0b14` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
109
109
|
line, use the explicit beta version above or allow prereleases with:
|
|
110
110
|
|
|
111
111
|
```bash
|
|
@@ -148,7 +148,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
|
|
|
148
148
|
|
|
149
149
|
The current PyPI beta has been rehearsed end-to-end from a clean install:
|
|
150
150
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
151
|
-
the latest 10/10 public-package readiness proof for `code-mower==0.5.
|
|
151
|
+
the latest 10/10 public-package readiness proof for `code-mower==0.5.0b14`.
|
|
152
152
|
|
|
153
153
|
## Why Not Just Run Codex Or Claude Yourself?
|
|
154
154
|
|
|
@@ -253,9 +253,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
|
|
|
253
253
|
|
|
254
254
|
## Installation Status
|
|
255
255
|
|
|
256
|
-
The current public beta is `v0.5.0-beta.
|
|
256
|
+
The current public beta is `v0.5.0-beta.14` from
|
|
257
257
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
|
|
258
|
-
as `code-mower==0.5.
|
|
258
|
+
as `code-mower==0.5.0b14` on [PyPI](https://pypi.org/project/code-mower/).
|
|
259
259
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
260
260
|
release notes.
|
|
261
261
|
|
|
@@ -86,11 +86,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
88
|
python3.12 --version
|
|
89
|
-
pipx install --python python3.12 code-mower==0.5.
|
|
89
|
+
pipx install --python python3.12 code-mower==0.5.0b14
|
|
90
90
|
code-mower --version
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
`0.5.
|
|
93
|
+
`0.5.0b14` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
94
94
|
line, use the explicit beta version above or allow prereleases with:
|
|
95
95
|
|
|
96
96
|
```bash
|
|
@@ -133,7 +133,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
|
|
|
133
133
|
|
|
134
134
|
The current PyPI beta has been rehearsed end-to-end from a clean install:
|
|
135
135
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
136
|
-
the latest 10/10 public-package readiness proof for `code-mower==0.5.
|
|
136
|
+
the latest 10/10 public-package readiness proof for `code-mower==0.5.0b14`.
|
|
137
137
|
|
|
138
138
|
## Why Not Just Run Codex Or Claude Yourself?
|
|
139
139
|
|
|
@@ -238,9 +238,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
|
|
|
238
238
|
|
|
239
239
|
## Installation Status
|
|
240
240
|
|
|
241
|
-
The current public beta is `v0.5.0-beta.
|
|
241
|
+
The current public beta is `v0.5.0-beta.14` from
|
|
242
242
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
|
|
243
|
-
as `code-mower==0.5.
|
|
243
|
+
as `code-mower==0.5.0b14` on [PyPI](https://pypi.org/project/code-mower/).
|
|
244
244
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
245
245
|
release notes.
|
|
246
246
|
|
|
@@ -58,6 +58,7 @@ from .results import (
|
|
|
58
58
|
coderabbit_blocking_findings,
|
|
59
59
|
infra_run_record,
|
|
60
60
|
local_llm_findings,
|
|
61
|
+
observed_model_from_summary,
|
|
61
62
|
run_records_from_summary,
|
|
62
63
|
)
|
|
63
64
|
from .run_results import (
|
|
@@ -158,6 +159,7 @@ __all__ = [
|
|
|
158
159
|
"normalize_run_status_category",
|
|
159
160
|
"normalize_truth",
|
|
160
161
|
"normalize_truth_expectation",
|
|
162
|
+
"observed_model_from_summary",
|
|
161
163
|
"option_value",
|
|
162
164
|
"parse_int",
|
|
163
165
|
"parse_repo_path_map",
|
|
@@ -88,6 +88,46 @@ def local_llm_findings(run: Mapping[str, Any]) -> list[dict[str, Any]]:
|
|
|
88
88
|
return findings
|
|
89
89
|
|
|
90
90
|
|
|
91
|
+
def observed_model_from_summary(summary: Mapping[str, Any]) -> str:
|
|
92
|
+
"""Return explicit or provider-observed model metadata from a run summary."""
|
|
93
|
+
|
|
94
|
+
explicit = str(summary.get("model") or "").strip()
|
|
95
|
+
if explicit:
|
|
96
|
+
return explicit
|
|
97
|
+
stats = summary.get("stats")
|
|
98
|
+
if not isinstance(stats, Mapping):
|
|
99
|
+
return ""
|
|
100
|
+
models = stats.get("models")
|
|
101
|
+
if not isinstance(models, Mapping):
|
|
102
|
+
return ""
|
|
103
|
+
candidates: list[tuple[int, str]] = []
|
|
104
|
+
role_priority = {
|
|
105
|
+
"main": 0,
|
|
106
|
+
"reviewer": 1,
|
|
107
|
+
"default": 2,
|
|
108
|
+
"utility_router": 4,
|
|
109
|
+
}
|
|
110
|
+
for model_name, detail in models.items():
|
|
111
|
+
model = str(model_name or "").strip()
|
|
112
|
+
if not model:
|
|
113
|
+
continue
|
|
114
|
+
priority = 3
|
|
115
|
+
if isinstance(detail, Mapping):
|
|
116
|
+
roles = detail.get("roles")
|
|
117
|
+
if isinstance(roles, Mapping):
|
|
118
|
+
role_ranks = [
|
|
119
|
+
role_priority.get(str(role_name), 3)
|
|
120
|
+
for role_name in roles
|
|
121
|
+
if str(role_name).strip()
|
|
122
|
+
]
|
|
123
|
+
if role_ranks:
|
|
124
|
+
priority = min(role_ranks)
|
|
125
|
+
candidates.append((priority, model))
|
|
126
|
+
if not candidates:
|
|
127
|
+
return ""
|
|
128
|
+
return sorted(candidates)[0][1]
|
|
129
|
+
|
|
130
|
+
|
|
91
131
|
def observed_head_field(observed_head_sha: str, head_sha: str) -> dict[str, str]:
|
|
92
132
|
if observed_head_sha and observed_head_sha != head_sha:
|
|
93
133
|
return {"observed_head_sha": observed_head_sha}
|
|
@@ -165,7 +205,7 @@ def run_records_from_summary(
|
|
|
165
205
|
"duration_seconds": summary.get("duration_seconds"),
|
|
166
206
|
"parse_status": parse_status,
|
|
167
207
|
"artifact": artifact,
|
|
168
|
-
"model": summary
|
|
208
|
+
"model": observed_model_from_summary(summary),
|
|
169
209
|
"repo": repo,
|
|
170
210
|
"pr_number": pr_number,
|
|
171
211
|
"head_sha": head_sha,
|
|
@@ -14,7 +14,7 @@ from pathlib import Path
|
|
|
14
14
|
if __package__ in {None, ""}:
|
|
15
15
|
raise SystemExit(
|
|
16
16
|
"code_mower.cli is a packaged entrypoint. Install Code Mower with "
|
|
17
|
-
"`pipx install code-mower==0.5.
|
|
17
|
+
"`pipx install code-mower==0.5.0b14`, or run source checkouts with "
|
|
18
18
|
"`PYTHONPATH=src python -m code_mower.cli`."
|
|
19
19
|
)
|
|
20
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0b14
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -101,11 +101,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
|
101
101
|
|
|
102
102
|
```bash
|
|
103
103
|
python3.12 --version
|
|
104
|
-
pipx install --python python3.12 code-mower==0.5.
|
|
104
|
+
pipx install --python python3.12 code-mower==0.5.0b14
|
|
105
105
|
code-mower --version
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
`0.5.
|
|
108
|
+
`0.5.0b14` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
109
109
|
line, use the explicit beta version above or allow prereleases with:
|
|
110
110
|
|
|
111
111
|
```bash
|
|
@@ -148,7 +148,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
|
|
|
148
148
|
|
|
149
149
|
The current PyPI beta has been rehearsed end-to-end from a clean install:
|
|
150
150
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
151
|
-
the latest 10/10 public-package readiness proof for `code-mower==0.5.
|
|
151
|
+
the latest 10/10 public-package readiness proof for `code-mower==0.5.0b14`.
|
|
152
152
|
|
|
153
153
|
## Why Not Just Run Codex Or Claude Yourself?
|
|
154
154
|
|
|
@@ -253,9 +253,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
|
|
|
253
253
|
|
|
254
254
|
## Installation Status
|
|
255
255
|
|
|
256
|
-
The current public beta is `v0.5.0-beta.
|
|
256
|
+
The current public beta is `v0.5.0-beta.14` from
|
|
257
257
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
|
|
258
|
-
as `code-mower==0.5.
|
|
258
|
+
as `code-mower==0.5.0b14` on [PyPI](https://pypi.org/project/code-mower/).
|
|
259
259
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
260
260
|
release notes.
|
|
261
261
|
|
|
@@ -21,6 +21,65 @@ class CalibrationTruthTests(unittest.TestCase):
|
|
|
21
21
|
path.write_text(json.dumps(payload), encoding="utf-8")
|
|
22
22
|
return code_mower_calibration.load_corpus(path)
|
|
23
23
|
|
|
24
|
+
def test_run_summary_preserves_explicit_cli_model(self) -> None:
|
|
25
|
+
[record] = code_mower_calibration._run_records_from_summary(
|
|
26
|
+
summary={
|
|
27
|
+
"mode": "gemini-cli-audit",
|
|
28
|
+
"repo": "owner/repo",
|
|
29
|
+
"pr_number": 1,
|
|
30
|
+
"model": "gemini-explicit",
|
|
31
|
+
"verdict": {"verdict": "pass", "findings": []},
|
|
32
|
+
},
|
|
33
|
+
item={"repo": "owner/repo", "pr_number": 1, "head_sha": "a" * 40},
|
|
34
|
+
command_result={"summary_path": "/tmp/summary.json", "returncode": 0},
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
self.assertEqual(record["model"], "gemini-explicit")
|
|
38
|
+
|
|
39
|
+
def test_run_summary_infers_google_cli_main_model_from_stats(self) -> None:
|
|
40
|
+
[record] = code_mower_calibration._run_records_from_summary(
|
|
41
|
+
summary={
|
|
42
|
+
"mode": "gemini-cli-audit",
|
|
43
|
+
"repo": "owner/repo",
|
|
44
|
+
"pr_number": 1,
|
|
45
|
+
"verdict": {"verdict": "pass", "findings": []},
|
|
46
|
+
"stats": {
|
|
47
|
+
"models": {
|
|
48
|
+
"gemini-3.1-flash-lite": {
|
|
49
|
+
"roles": {"utility_router": {"totalRequests": 1}}
|
|
50
|
+
},
|
|
51
|
+
"gemini-3.5-flash": {
|
|
52
|
+
"roles": {"main": {"totalRequests": 1}}
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
item={"repo": "owner/repo", "pr_number": 1, "head_sha": "a" * 40},
|
|
58
|
+
command_result={"summary_path": "/tmp/summary.json", "returncode": 0},
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
self.assertEqual(record["model"], "gemini-3.5-flash")
|
|
62
|
+
|
|
63
|
+
def test_run_summary_uses_deterministic_model_fallback(self) -> None:
|
|
64
|
+
[record] = code_mower_calibration._run_records_from_summary(
|
|
65
|
+
summary={
|
|
66
|
+
"mode": "antigravity-cli-audit",
|
|
67
|
+
"repo": "owner/repo",
|
|
68
|
+
"pr_number": 1,
|
|
69
|
+
"verdict": {"verdict": "pass", "findings": []},
|
|
70
|
+
"stats": {
|
|
71
|
+
"models": {
|
|
72
|
+
"z-model": {"api": {"totalRequests": 1}},
|
|
73
|
+
"a-model": {"api": {"totalRequests": 1}},
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
item={"repo": "owner/repo", "pr_number": 1, "head_sha": "a" * 40},
|
|
78
|
+
command_result={"summary_path": "/tmp/summary.json", "returncode": 0},
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
self.assertEqual(record["model"], "a-model")
|
|
82
|
+
|
|
24
83
|
def test_starter_value_report_matches_packaged_example(self) -> None:
|
|
25
84
|
corpus = code_mower_calibration.load_corpus(
|
|
26
85
|
ROOT / "src/code_mower/templates/calibration-corpus.json"
|
|
@@ -49,7 +49,7 @@ from scripts import privacy_scan
|
|
|
49
49
|
|
|
50
50
|
class ReleaseHygieneTests(unittest.TestCase):
|
|
51
51
|
def test_version_is_current_v05_prerelease(self) -> None:
|
|
52
|
-
self.assertEqual(__version__, "0.5.
|
|
52
|
+
self.assertEqual(__version__, "0.5.0b14")
|
|
53
53
|
|
|
54
54
|
def test_release_workflow_verifies_downloaded_distributions_before_publish(self) -> None:
|
|
55
55
|
workflow = (ROOT / ".github/workflows/release.yml").read_text(encoding="utf-8")
|
|
@@ -168,7 +168,7 @@ class ReleaseHygieneTests(unittest.TestCase):
|
|
|
168
168
|
self.assertIn(
|
|
169
169
|
(
|
|
170
170
|
"code-mower migration package-install-rehearsal --package-spec "
|
|
171
|
-
"code-mower==0.5.
|
|
171
|
+
"code-mower==0.5.0b14 --json"
|
|
172
172
|
),
|
|
173
173
|
help_text,
|
|
174
174
|
)
|
|
@@ -1583,8 +1583,8 @@ printf '%s\\n' "${lane}"
|
|
|
1583
1583
|
fromlist=["current_alpha_package_spec"],
|
|
1584
1584
|
)
|
|
1585
1585
|
self.assertEqual(
|
|
1586
|
-
legacy_module.current_alpha_package_spec("0.5.
|
|
1587
|
-
"code-mower==0.5.
|
|
1586
|
+
legacy_module.current_alpha_package_spec("0.5.0b14"),
|
|
1587
|
+
"code-mower==0.5.0b14",
|
|
1588
1588
|
)
|
|
1589
1589
|
finally:
|
|
1590
1590
|
sys.path[:] = original_path
|
|
@@ -1621,7 +1621,7 @@ printf '%s\\n' "${lane}"
|
|
|
1621
1621
|
"-c",
|
|
1622
1622
|
(
|
|
1623
1623
|
"from tools import code_mower_package_content as c; "
|
|
1624
|
-
"print(c.current_alpha_package_spec('0.5.
|
|
1624
|
+
"print(c.current_alpha_package_spec('0.5.0b14'))"
|
|
1625
1625
|
),
|
|
1626
1626
|
],
|
|
1627
1627
|
cwd=tmp_path,
|
|
@@ -1634,7 +1634,7 @@ printf '%s\\n' "${lane}"
|
|
|
1634
1634
|
self.assertEqual(completed.returncode, 0, completed.stderr)
|
|
1635
1635
|
self.assertEqual(
|
|
1636
1636
|
completed.stdout.strip(),
|
|
1637
|
-
"code-mower==0.5.
|
|
1637
|
+
"code-mower==0.5.0b14",
|
|
1638
1638
|
)
|
|
1639
1639
|
|
|
1640
1640
|
def test_package_rendering_legacy_fallback_stays_valid_yaml_subset(self) -> None:
|
|
@@ -1710,11 +1710,11 @@ printf '%s\\n' "${lane}"
|
|
|
1710
1710
|
(output_dir / "src/code_mower/cloud_client/dogfood.py").is_file()
|
|
1711
1711
|
)
|
|
1712
1712
|
self.assertIn(
|
|
1713
|
-
'version = "0.5.
|
|
1713
|
+
'version = "0.5.0b14"',
|
|
1714
1714
|
(output_dir / "pyproject.toml").read_text(encoding="utf-8"),
|
|
1715
1715
|
)
|
|
1716
1716
|
self.assertIn(
|
|
1717
|
-
'__version__ = "0.5.
|
|
1717
|
+
'__version__ = "0.5.0b14"',
|
|
1718
1718
|
(output_dir / "src/code_mower/__init__.py").read_text(
|
|
1719
1719
|
encoding="utf-8"
|
|
1720
1720
|
),
|
|
@@ -3205,7 +3205,7 @@ def main():
|
|
|
3205
3205
|
{
|
|
3206
3206
|
"status": "pass",
|
|
3207
3207
|
"package_spec": "code-mower",
|
|
3208
|
-
"version": "code-mower 0.5.
|
|
3208
|
+
"version": "code-mower 0.5.0b14",
|
|
3209
3209
|
"work_dir": "/tmp/code-mower-rehearsal",
|
|
3210
3210
|
"toy_repo": "/tmp/code-mower-rehearsal/toy-repo",
|
|
3211
3211
|
"step_count": 1,
|
|
@@ -3317,7 +3317,7 @@ def main():
|
|
|
3317
3317
|
scorecard = code_mower_migration._first_user_readiness_scorecard(
|
|
3318
3318
|
toy_repo=toy_repo,
|
|
3319
3319
|
outputs=outputs,
|
|
3320
|
-
version="code-mower 0.5.
|
|
3320
|
+
version="code-mower 0.5.0b14",
|
|
3321
3321
|
steps=[
|
|
3322
3322
|
{
|
|
3323
3323
|
"command": ["code-mower", "doctor", "--easy", "--json"],
|
|
@@ -3396,7 +3396,7 @@ def main():
|
|
|
3396
3396
|
scorecard = code_mower_migration._first_user_readiness_scorecard(
|
|
3397
3397
|
toy_repo=toy_repo,
|
|
3398
3398
|
outputs=outputs,
|
|
3399
|
-
version="code-mower 0.5.
|
|
3399
|
+
version="code-mower 0.5.0b14",
|
|
3400
3400
|
steps=[
|
|
3401
3401
|
{
|
|
3402
3402
|
"command": ["code-mower", "doctor", "--easy", "--json"],
|
|
@@ -3458,7 +3458,7 @@ def main():
|
|
|
3458
3458
|
scorecard = code_mower_migration._first_user_readiness_scorecard(
|
|
3459
3459
|
toy_repo=toy_repo,
|
|
3460
3460
|
outputs=outputs,
|
|
3461
|
-
version="code-mower 0.5.
|
|
3461
|
+
version="code-mower 0.5.0b14",
|
|
3462
3462
|
steps=[
|
|
3463
3463
|
{
|
|
3464
3464
|
"command": ["code-mower", "doctor", "--easy", "--json"],
|
|
@@ -3524,24 +3524,24 @@ def main():
|
|
|
3524
3524
|
)
|
|
3525
3525
|
self.assertEqual(
|
|
3526
3526
|
code_mower_migration._resolve_install_package_spec(
|
|
3527
|
-
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.
|
|
3527
|
+
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.14",
|
|
3528
3528
|
base_dir=package,
|
|
3529
3529
|
),
|
|
3530
|
-
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.
|
|
3530
|
+
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.14",
|
|
3531
3531
|
)
|
|
3532
3532
|
self.assertEqual(
|
|
3533
3533
|
code_mower_migration._resolve_install_package_spec(
|
|
3534
|
-
"code-mower==0.5.
|
|
3534
|
+
"code-mower==0.5.0b14",
|
|
3535
3535
|
base_dir=package,
|
|
3536
3536
|
),
|
|
3537
|
-
"code-mower==0.5.
|
|
3537
|
+
"code-mower==0.5.0b14",
|
|
3538
3538
|
)
|
|
3539
3539
|
|
|
3540
3540
|
def test_package_install_rehearsal_supports_index_aware_pip_install(self) -> None:
|
|
3541
3541
|
self.assertEqual(
|
|
3542
3542
|
code_mower_migration._pip_install_command(
|
|
3543
3543
|
Path("/tmp/venv/bin/python"),
|
|
3544
|
-
"code-mower==0.5.
|
|
3544
|
+
"code-mower==0.5.0b14",
|
|
3545
3545
|
pip_index_url="https://test.pypi.org/simple/",
|
|
3546
3546
|
pip_extra_index_urls=["https://pypi.org/simple/"],
|
|
3547
3547
|
),
|
|
@@ -3554,7 +3554,7 @@ def main():
|
|
|
3554
3554
|
"https://test.pypi.org/simple/",
|
|
3555
3555
|
"--extra-index-url",
|
|
3556
3556
|
"https://pypi.org/simple/",
|
|
3557
|
-
"code-mower==0.5.
|
|
3557
|
+
"code-mower==0.5.0b14",
|
|
3558
3558
|
],
|
|
3559
3559
|
)
|
|
3560
3560
|
|
|
@@ -3574,10 +3574,10 @@ def main():
|
|
|
3574
3574
|
payload = release_readiness.render_release_readiness(ROOT)
|
|
3575
3575
|
|
|
3576
3576
|
self.assertEqual(payload["status"], "pass")
|
|
3577
|
-
self.assertEqual(payload["version"], "0.5.
|
|
3578
|
-
self.assertEqual(payload["release_tag"], "v0.5.0-beta.
|
|
3579
|
-
self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.
|
|
3580
|
-
self.assertEqual(payload["package_index_spec"], "code-mower==0.5.
|
|
3577
|
+
self.assertEqual(payload["version"], "0.5.0b14")
|
|
3578
|
+
self.assertEqual(payload["release_tag"], "v0.5.0-beta.14")
|
|
3579
|
+
self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.14")
|
|
3580
|
+
self.assertEqual(payload["package_index_spec"], "code-mower==0.5.0b14")
|
|
3581
3581
|
check_ids = {check["id"]: check for check in payload["checks"]}
|
|
3582
3582
|
self.assertEqual(check_ids["package-version-consistency"]["status"], "pass")
|
|
3583
3583
|
self.assertEqual(
|
|
@@ -3626,7 +3626,7 @@ def main():
|
|
|
3626
3626
|
check_ids = {check["id"]: check for check in payload["checks"]}
|
|
3627
3627
|
check = check_ids["materialized-package-version-consistency"]
|
|
3628
3628
|
self.assertEqual(check["status"], "fail")
|
|
3629
|
-
self.assertEqual(check["detail"]["source_version"], "0.5.
|
|
3629
|
+
self.assertEqual(check["detail"]["source_version"], "0.5.0b14")
|
|
3630
3630
|
self.assertEqual(check["detail"]["generated_init_version"], "0.0.0")
|
|
3631
3631
|
|
|
3632
3632
|
def test_public_support_docs_are_packaged_and_privacy_forward(self) -> None:
|
|
@@ -3706,20 +3706,20 @@ def main():
|
|
|
3706
3706
|
|
|
3707
3707
|
def test_release_readiness_tag_derivation_supports_release_stages(self) -> None:
|
|
3708
3708
|
self.assertEqual(
|
|
3709
|
-
release_readiness._release_tag_for_version("0.5.
|
|
3710
|
-
"v0.5.0-beta.
|
|
3709
|
+
release_readiness._release_tag_for_version("0.5.0b14"),
|
|
3710
|
+
"v0.5.0-beta.14",
|
|
3711
3711
|
)
|
|
3712
3712
|
self.assertEqual(
|
|
3713
|
-
code_mower_versioning.release_tag_for_version("0.5.
|
|
3714
|
-
"v0.5.0-beta.
|
|
3713
|
+
code_mower_versioning.release_tag_for_version("0.5.0b14"),
|
|
3714
|
+
"v0.5.0-beta.14",
|
|
3715
3715
|
)
|
|
3716
3716
|
self.assertEqual(
|
|
3717
|
-
release_readiness._release_tag_for_version("0.5.
|
|
3718
|
-
"v0.5.0-beta.
|
|
3717
|
+
release_readiness._release_tag_for_version("0.5.0b14"),
|
|
3718
|
+
"v0.5.0-beta.14",
|
|
3719
3719
|
)
|
|
3720
3720
|
self.assertEqual(
|
|
3721
|
-
code_mower_versioning.release_tag_for_version("0.5.
|
|
3722
|
-
"v0.5.0-beta.
|
|
3721
|
+
code_mower_versioning.release_tag_for_version("0.5.0b14"),
|
|
3722
|
+
"v0.5.0-beta.14",
|
|
3723
3723
|
)
|
|
3724
3724
|
self.assertEqual(
|
|
3725
3725
|
release_readiness._release_tag_for_version("1.0.0rc1"),
|
|
@@ -3748,8 +3748,8 @@ def main():
|
|
|
3748
3748
|
next_steps.current_alpha_package_spec(),
|
|
3749
3749
|
)
|
|
3750
3750
|
self.assertEqual(
|
|
3751
|
-
code_mower_package_content.current_alpha_package_spec("0.5.
|
|
3752
|
-
"code-mower==0.5.
|
|
3751
|
+
code_mower_package_content.current_alpha_package_spec("0.5.0b14"),
|
|
3752
|
+
"code-mower==0.5.0b14",
|
|
3753
3753
|
)
|
|
3754
3754
|
self.assertNotIn(next_steps.current_public_tag(), package_content_text)
|
|
3755
3755
|
self.assertNotIn("v0.0.0", package_content_text)
|
|
@@ -3921,7 +3921,7 @@ def main():
|
|
|
3921
3921
|
step for step in plan["steps"] if step["id"] == "package-install-rehearsal"
|
|
3922
3922
|
)
|
|
3923
3923
|
self.assertIn("doctor --v05", doctor_step["command"])
|
|
3924
|
-
self.assertIn("code-mower==0.5.
|
|
3924
|
+
self.assertIn("code-mower==0.5.0b14", package_step["command"])
|
|
3925
3925
|
self.assertIn("current published PyPI prerelease", package_step["why"])
|
|
3926
3926
|
self.assertIn("first_user_readiness", package_step["why"])
|
|
3927
3927
|
self.assertEqual(
|
|
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
|
|
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
|