code-mower 0.5.0b33__tar.gz → 0.5.0b35__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.0b33 → code_mower-0.5.0b35}/PKG-INFO +6 -6
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/README.md +5 -5
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/pyproject.toml +1 -1
- code_mower-0.5.0b35/requirements/requirements.txt +1 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/__init__.py +1 -1
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cli.py +1 -1
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/work_orders.py +13 -10
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower.egg-info/PKG-INFO +6 -6
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_cloud_client.py +1 -1
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_local_cli.py +2 -2
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_release_hygiene.py +34 -34
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_work_orders.py +32 -0
- code_mower-0.5.0b33/requirements/requirements.txt +0 -1
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/LICENSE +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/MANIFEST.in +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/NOTICE +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/SUPPORT.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/setup.cfg +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/audit_labeler_lib.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/audit_progress.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/bootstrap.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/results.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/checks.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/claude_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/clear_stale.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/__init__.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/bundle.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/events.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/operations.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/codex_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/config.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/__init__.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/github_repo.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/providers.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/registry.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/runner.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/runtime.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/init.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/migration.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/migration_install.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/migration_rehearsal.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/next_steps.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/package.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/package_content.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/package_manifest.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/package_paths.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/package_rendering.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/package_static.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/prompts.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_registry.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/github_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/providers/provenance.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/release_readiness.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/secrets.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/code-mower.example.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/product-support/code_mower +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/trailer_comment_labeler.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower/versioning.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower.egg-info/SOURCES.txt +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower.egg-info/requires.txt +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/builder-experiment.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/calibration-corpus.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/calibration-corpus.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/code-mower.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/context-packs.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/aider.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/claude_audit.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/claude_review.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/codex.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/devin.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/gitar.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/greptile.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/local_llm.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers/qodo.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/providers.yml +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/reviewer-spend.example.json +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_calibration_truth.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_checks.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_clear_stale.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_cloud_manifest.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_cloud_reports.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_github_checks.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_output.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_privacy.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_provider_review_hygiene.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_doctor_registry.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_git.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_process.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-0.5.0b33 → code_mower-0.5.0b35}/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.0b35
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -103,11 +103,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
105
|
python3.12 --version
|
|
106
|
-
pipx install --python python3.12 code-mower==0.5.
|
|
106
|
+
pipx install --python python3.12 code-mower==0.5.0b35
|
|
107
107
|
code-mower --version
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
`0.5.
|
|
110
|
+
`0.5.0b35` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
111
111
|
line, use the explicit beta version above or allow prereleases with:
|
|
112
112
|
|
|
113
113
|
```bash
|
|
@@ -150,7 +150,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
|
|
|
150
150
|
|
|
151
151
|
The current PyPI beta has been rehearsed end-to-end from a clean install:
|
|
152
152
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
153
|
-
the latest 10/10 public-package readiness proof for `code-mower==0.5.
|
|
153
|
+
the latest 10/10 public-package readiness proof for `code-mower==0.5.0b35`.
|
|
154
154
|
|
|
155
155
|
## Optional: Plan Before Coding
|
|
156
156
|
|
|
@@ -291,9 +291,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
|
|
|
291
291
|
|
|
292
292
|
## Installation Status
|
|
293
293
|
|
|
294
|
-
The current public beta is `v0.5.0-beta.
|
|
294
|
+
The current public beta is `v0.5.0-beta.35` from
|
|
295
295
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
|
|
296
|
-
as `code-mower==0.5.
|
|
296
|
+
as `code-mower==0.5.0b35` on [PyPI](https://pypi.org/project/code-mower/).
|
|
297
297
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
298
298
|
release notes.
|
|
299
299
|
|
|
@@ -88,11 +88,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
90
|
python3.12 --version
|
|
91
|
-
pipx install --python python3.12 code-mower==0.5.
|
|
91
|
+
pipx install --python python3.12 code-mower==0.5.0b35
|
|
92
92
|
code-mower --version
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
`0.5.
|
|
95
|
+
`0.5.0b35` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
96
96
|
line, use the explicit beta version above or allow prereleases with:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
@@ -135,7 +135,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
|
|
|
135
135
|
|
|
136
136
|
The current PyPI beta has been rehearsed end-to-end from a clean install:
|
|
137
137
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
138
|
-
the latest 10/10 public-package readiness proof for `code-mower==0.5.
|
|
138
|
+
the latest 10/10 public-package readiness proof for `code-mower==0.5.0b35`.
|
|
139
139
|
|
|
140
140
|
## Optional: Plan Before Coding
|
|
141
141
|
|
|
@@ -276,9 +276,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
|
|
|
276
276
|
|
|
277
277
|
## Installation Status
|
|
278
278
|
|
|
279
|
-
The current public beta is `v0.5.0-beta.
|
|
279
|
+
The current public beta is `v0.5.0-beta.35` from
|
|
280
280
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
|
|
281
|
-
as `code-mower==0.5.
|
|
281
|
+
as `code-mower==0.5.0b35` on [PyPI](https://pypi.org/project/code-mower/).
|
|
282
282
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
283
283
|
release notes.
|
|
284
284
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pytest==9.1.1
|
|
@@ -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.0b35`, or run source checkouts with "
|
|
18
18
|
"`PYTHONPATH=src python -m code_mower.cli`."
|
|
19
19
|
)
|
|
20
20
|
|
|
@@ -1157,16 +1157,19 @@ def attach_delivery_to_work_order_event(
|
|
|
1157
1157
|
updated["dimensions"] = dimensions
|
|
1158
1158
|
updated["metrics"] = metrics
|
|
1159
1159
|
_write_json(event_path, updated, force=force)
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1160
|
+
response = dict(updated)
|
|
1161
|
+
response.update(
|
|
1162
|
+
{
|
|
1163
|
+
"mode": "work-order-attach-delivery",
|
|
1164
|
+
"event_path": str(event_path),
|
|
1165
|
+
"pr_repo": dimensions.get("pr_repo", ""),
|
|
1166
|
+
"pr_url": dimensions.get("pr_url", ""),
|
|
1167
|
+
"pr_number": dimensions.get("pr_number", ""),
|
|
1168
|
+
"merge_sha": dimensions.get("merge_sha", ""),
|
|
1169
|
+
"reviewer_check_count": metrics.get("reviewer_check_count", 0),
|
|
1170
|
+
}
|
|
1171
|
+
)
|
|
1172
|
+
return response
|
|
1170
1173
|
|
|
1171
1174
|
|
|
1172
1175
|
def render_work_order(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0b35
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -103,11 +103,11 @@ Code Mower currently targets Python 3.11+; Python 3.12 is recommended.
|
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
105
|
python3.12 --version
|
|
106
|
-
pipx install --python python3.12 code-mower==0.5.
|
|
106
|
+
pipx install --python python3.12 code-mower==0.5.0b35
|
|
107
107
|
code-mower --version
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
`0.5.
|
|
110
|
+
`0.5.0b35` is a beta release. Until Code Mower publishes a stable `1.0`
|
|
111
111
|
line, use the explicit beta version above or allow prereleases with:
|
|
112
112
|
|
|
113
113
|
```bash
|
|
@@ -150,7 +150,7 @@ First-time command map: [docs/launch-command-surface.md](docs/launch-command-sur
|
|
|
150
150
|
|
|
151
151
|
The current PyPI beta has been rehearsed end-to-end from a clean install:
|
|
152
152
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
153
|
-
the latest 10/10 public-package readiness proof for `code-mower==0.5.
|
|
153
|
+
the latest 10/10 public-package readiness proof for `code-mower==0.5.0b35`.
|
|
154
154
|
|
|
155
155
|
## Optional: Plan Before Coding
|
|
156
156
|
|
|
@@ -291,9 +291,9 @@ best?" to "which AI builder plus reviewer loop ships best on this product?" See
|
|
|
291
291
|
|
|
292
292
|
## Installation Status
|
|
293
293
|
|
|
294
|
-
The current public beta is `v0.5.0-beta.
|
|
294
|
+
The current public beta is `v0.5.0-beta.35` from
|
|
295
295
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), published
|
|
296
|
-
as `code-mower==0.5.
|
|
296
|
+
as `code-mower==0.5.0b35` on [PyPI](https://pypi.org/project/code-mower/).
|
|
297
297
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
298
298
|
release notes.
|
|
299
299
|
|
|
@@ -361,7 +361,7 @@ def test_provenance_summary_preserves_source_quality_fields() -> None:
|
|
|
361
361
|
"tool": {
|
|
362
362
|
"role": "reporter",
|
|
363
363
|
"tool_name": "code-mower",
|
|
364
|
-
"tool_version": "0.5.
|
|
364
|
+
"tool_version": "0.5.0b34",
|
|
365
365
|
"provider": "code-mower",
|
|
366
366
|
"model": "",
|
|
367
367
|
"model_source": "not_applicable",
|
|
@@ -436,11 +436,11 @@ def test_provider_lane_tool_provenance_reads_model_from_selected_profile(
|
|
|
436
436
|
def test_code_mower_reporter_provenance_marks_model_not_applicable() -> None:
|
|
437
437
|
tool = build_code_mower_tool_provenance(
|
|
438
438
|
source="unit-test",
|
|
439
|
-
version="0.5.
|
|
439
|
+
version="0.5.0b34",
|
|
440
440
|
)
|
|
441
441
|
|
|
442
442
|
assert tool["tool_name"] == "code-mower"
|
|
443
|
-
assert tool["tool_version"] == "0.5.
|
|
443
|
+
assert tool["tool_version"] == "0.5.0b34"
|
|
444
444
|
assert tool["provider"] == "code-mower"
|
|
445
445
|
assert tool["model"] == ""
|
|
446
446
|
assert tool["model_source"] == "not_applicable"
|
|
@@ -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.0b35")
|
|
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")
|
|
@@ -203,7 +203,7 @@ class ReleaseHygieneTests(unittest.TestCase):
|
|
|
203
203
|
self.assertIn(
|
|
204
204
|
(
|
|
205
205
|
"code-mower migration package-install-rehearsal --package-spec "
|
|
206
|
-
"code-mower==0.5.
|
|
206
|
+
"code-mower==0.5.0b35 --json"
|
|
207
207
|
),
|
|
208
208
|
help_text,
|
|
209
209
|
)
|
|
@@ -1622,8 +1622,8 @@ printf '%s\\n' "${lane}"
|
|
|
1622
1622
|
fromlist=["current_alpha_package_spec"],
|
|
1623
1623
|
)
|
|
1624
1624
|
self.assertEqual(
|
|
1625
|
-
legacy_module.current_alpha_package_spec("0.5.
|
|
1626
|
-
"code-mower==0.5.
|
|
1625
|
+
legacy_module.current_alpha_package_spec("0.5.0b35"),
|
|
1626
|
+
"code-mower==0.5.0b35",
|
|
1627
1627
|
)
|
|
1628
1628
|
finally:
|
|
1629
1629
|
sys.path[:] = original_path
|
|
@@ -1660,7 +1660,7 @@ printf '%s\\n' "${lane}"
|
|
|
1660
1660
|
"-c",
|
|
1661
1661
|
(
|
|
1662
1662
|
"from tools import code_mower_package_content as c; "
|
|
1663
|
-
"print(c.current_alpha_package_spec('0.5.
|
|
1663
|
+
"print(c.current_alpha_package_spec('0.5.0b35'))"
|
|
1664
1664
|
),
|
|
1665
1665
|
],
|
|
1666
1666
|
cwd=tmp_path,
|
|
@@ -1673,7 +1673,7 @@ printf '%s\\n' "${lane}"
|
|
|
1673
1673
|
self.assertEqual(completed.returncode, 0, completed.stderr)
|
|
1674
1674
|
self.assertEqual(
|
|
1675
1675
|
completed.stdout.strip(),
|
|
1676
|
-
"code-mower==0.5.
|
|
1676
|
+
"code-mower==0.5.0b35",
|
|
1677
1677
|
)
|
|
1678
1678
|
|
|
1679
1679
|
def test_package_rendering_legacy_fallback_stays_valid_yaml_subset(self) -> None:
|
|
@@ -1749,11 +1749,11 @@ printf '%s\\n' "${lane}"
|
|
|
1749
1749
|
(output_dir / "src/code_mower/cloud_client/dogfood.py").is_file()
|
|
1750
1750
|
)
|
|
1751
1751
|
self.assertIn(
|
|
1752
|
-
'version = "0.5.
|
|
1752
|
+
'version = "0.5.0b35"',
|
|
1753
1753
|
(output_dir / "pyproject.toml").read_text(encoding="utf-8"),
|
|
1754
1754
|
)
|
|
1755
1755
|
self.assertIn(
|
|
1756
|
-
'__version__ = "0.5.
|
|
1756
|
+
'__version__ = "0.5.0b35"',
|
|
1757
1757
|
(output_dir / "src/code_mower/__init__.py").read_text(
|
|
1758
1758
|
encoding="utf-8"
|
|
1759
1759
|
),
|
|
@@ -3288,7 +3288,7 @@ def main():
|
|
|
3288
3288
|
{
|
|
3289
3289
|
"status": "pass",
|
|
3290
3290
|
"package_spec": "code-mower",
|
|
3291
|
-
"version": "code-mower 0.5.
|
|
3291
|
+
"version": "code-mower 0.5.0b35",
|
|
3292
3292
|
"work_dir": "/tmp/code-mower-rehearsal",
|
|
3293
3293
|
"toy_repo": "/tmp/code-mower-rehearsal/toy-repo",
|
|
3294
3294
|
"step_count": 1,
|
|
@@ -3400,7 +3400,7 @@ def main():
|
|
|
3400
3400
|
scorecard = code_mower_migration._first_user_readiness_scorecard(
|
|
3401
3401
|
toy_repo=toy_repo,
|
|
3402
3402
|
outputs=outputs,
|
|
3403
|
-
version="code-mower 0.5.
|
|
3403
|
+
version="code-mower 0.5.0b35",
|
|
3404
3404
|
steps=[
|
|
3405
3405
|
{
|
|
3406
3406
|
"command": ["code-mower", "doctor", "--easy", "--json"],
|
|
@@ -3479,7 +3479,7 @@ def main():
|
|
|
3479
3479
|
scorecard = code_mower_migration._first_user_readiness_scorecard(
|
|
3480
3480
|
toy_repo=toy_repo,
|
|
3481
3481
|
outputs=outputs,
|
|
3482
|
-
version="code-mower 0.5.
|
|
3482
|
+
version="code-mower 0.5.0b35",
|
|
3483
3483
|
steps=[
|
|
3484
3484
|
{
|
|
3485
3485
|
"command": ["code-mower", "doctor", "--easy", "--json"],
|
|
@@ -3541,7 +3541,7 @@ def main():
|
|
|
3541
3541
|
scorecard = code_mower_migration._first_user_readiness_scorecard(
|
|
3542
3542
|
toy_repo=toy_repo,
|
|
3543
3543
|
outputs=outputs,
|
|
3544
|
-
version="code-mower 0.5.
|
|
3544
|
+
version="code-mower 0.5.0b35",
|
|
3545
3545
|
steps=[
|
|
3546
3546
|
{
|
|
3547
3547
|
"command": ["code-mower", "doctor", "--easy", "--json"],
|
|
@@ -3607,24 +3607,24 @@ def main():
|
|
|
3607
3607
|
)
|
|
3608
3608
|
self.assertEqual(
|
|
3609
3609
|
code_mower_migration._resolve_install_package_spec(
|
|
3610
|
-
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.
|
|
3610
|
+
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.35",
|
|
3611
3611
|
base_dir=package,
|
|
3612
3612
|
),
|
|
3613
|
-
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.
|
|
3613
|
+
"git+https://github.com/codemower-ai/code-mower.git@v0.5.0-beta.35",
|
|
3614
3614
|
)
|
|
3615
3615
|
self.assertEqual(
|
|
3616
3616
|
code_mower_migration._resolve_install_package_spec(
|
|
3617
|
-
"code-mower==0.5.
|
|
3617
|
+
"code-mower==0.5.0b35",
|
|
3618
3618
|
base_dir=package,
|
|
3619
3619
|
),
|
|
3620
|
-
"code-mower==0.5.
|
|
3620
|
+
"code-mower==0.5.0b35",
|
|
3621
3621
|
)
|
|
3622
3622
|
|
|
3623
3623
|
def test_package_install_rehearsal_supports_index_aware_pip_install(self) -> None:
|
|
3624
3624
|
self.assertEqual(
|
|
3625
3625
|
code_mower_migration._pip_install_command(
|
|
3626
3626
|
Path("/tmp/venv/bin/python"),
|
|
3627
|
-
"code-mower==0.5.
|
|
3627
|
+
"code-mower==0.5.0b35",
|
|
3628
3628
|
pip_index_url="https://test.pypi.org/simple/",
|
|
3629
3629
|
pip_extra_index_urls=["https://pypi.org/simple/"],
|
|
3630
3630
|
),
|
|
@@ -3637,7 +3637,7 @@ def main():
|
|
|
3637
3637
|
"https://test.pypi.org/simple/",
|
|
3638
3638
|
"--extra-index-url",
|
|
3639
3639
|
"https://pypi.org/simple/",
|
|
3640
|
-
"code-mower==0.5.
|
|
3640
|
+
"code-mower==0.5.0b35",
|
|
3641
3641
|
],
|
|
3642
3642
|
)
|
|
3643
3643
|
|
|
@@ -3657,10 +3657,10 @@ def main():
|
|
|
3657
3657
|
payload = release_readiness.render_release_readiness(ROOT)
|
|
3658
3658
|
|
|
3659
3659
|
self.assertEqual(payload["status"], "pass")
|
|
3660
|
-
self.assertEqual(payload["version"], "0.5.
|
|
3661
|
-
self.assertEqual(payload["release_tag"], "v0.5.0-beta.
|
|
3662
|
-
self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.
|
|
3663
|
-
self.assertEqual(payload["package_index_spec"], "code-mower==0.5.
|
|
3660
|
+
self.assertEqual(payload["version"], "0.5.0b35")
|
|
3661
|
+
self.assertEqual(payload["release_tag"], "v0.5.0-beta.35")
|
|
3662
|
+
self.assertEqual(payload["alpha_tag"], "v0.5.0-beta.35")
|
|
3663
|
+
self.assertEqual(payload["package_index_spec"], "code-mower==0.5.0b35")
|
|
3664
3664
|
check_ids = {check["id"]: check for check in payload["checks"]}
|
|
3665
3665
|
self.assertEqual(check_ids["package-version-consistency"]["status"], "pass")
|
|
3666
3666
|
self.assertEqual(
|
|
@@ -3709,7 +3709,7 @@ def main():
|
|
|
3709
3709
|
check_ids = {check["id"]: check for check in payload["checks"]}
|
|
3710
3710
|
check = check_ids["materialized-package-version-consistency"]
|
|
3711
3711
|
self.assertEqual(check["status"], "fail")
|
|
3712
|
-
self.assertEqual(check["detail"]["source_version"], "0.5.
|
|
3712
|
+
self.assertEqual(check["detail"]["source_version"], "0.5.0b35")
|
|
3713
3713
|
self.assertEqual(check["detail"]["generated_init_version"], "0.0.0")
|
|
3714
3714
|
|
|
3715
3715
|
def test_public_support_docs_are_packaged_and_privacy_forward(self) -> None:
|
|
@@ -3789,20 +3789,20 @@ def main():
|
|
|
3789
3789
|
|
|
3790
3790
|
def test_release_readiness_tag_derivation_supports_release_stages(self) -> None:
|
|
3791
3791
|
self.assertEqual(
|
|
3792
|
-
release_readiness._release_tag_for_version("0.5.
|
|
3793
|
-
"v0.5.0-beta.
|
|
3792
|
+
release_readiness._release_tag_for_version("0.5.0b35"),
|
|
3793
|
+
"v0.5.0-beta.35",
|
|
3794
3794
|
)
|
|
3795
3795
|
self.assertEqual(
|
|
3796
|
-
code_mower_versioning.release_tag_for_version("0.5.
|
|
3797
|
-
"v0.5.0-beta.
|
|
3796
|
+
code_mower_versioning.release_tag_for_version("0.5.0b35"),
|
|
3797
|
+
"v0.5.0-beta.35",
|
|
3798
3798
|
)
|
|
3799
3799
|
self.assertEqual(
|
|
3800
|
-
release_readiness._release_tag_for_version("0.5.
|
|
3801
|
-
"v0.5.0-beta.
|
|
3800
|
+
release_readiness._release_tag_for_version("0.5.0b35"),
|
|
3801
|
+
"v0.5.0-beta.35",
|
|
3802
3802
|
)
|
|
3803
3803
|
self.assertEqual(
|
|
3804
|
-
code_mower_versioning.release_tag_for_version("0.5.
|
|
3805
|
-
"v0.5.0-beta.
|
|
3804
|
+
code_mower_versioning.release_tag_for_version("0.5.0b35"),
|
|
3805
|
+
"v0.5.0-beta.35",
|
|
3806
3806
|
)
|
|
3807
3807
|
self.assertEqual(
|
|
3808
3808
|
release_readiness._release_tag_for_version("1.0.0rc1"),
|
|
@@ -3831,8 +3831,8 @@ def main():
|
|
|
3831
3831
|
next_steps.current_alpha_package_spec(),
|
|
3832
3832
|
)
|
|
3833
3833
|
self.assertEqual(
|
|
3834
|
-
code_mower_package_content.current_alpha_package_spec("0.5.
|
|
3835
|
-
"code-mower==0.5.
|
|
3834
|
+
code_mower_package_content.current_alpha_package_spec("0.5.0b35"),
|
|
3835
|
+
"code-mower==0.5.0b35",
|
|
3836
3836
|
)
|
|
3837
3837
|
self.assertNotIn(next_steps.current_public_tag(), package_content_text)
|
|
3838
3838
|
self.assertNotIn("v0.0.0", package_content_text)
|
|
@@ -4004,7 +4004,7 @@ def main():
|
|
|
4004
4004
|
step for step in plan["steps"] if step["id"] == "package-install-rehearsal"
|
|
4005
4005
|
)
|
|
4006
4006
|
self.assertIn("doctor --v05", doctor_step["command"])
|
|
4007
|
-
self.assertIn("code-mower==0.5.
|
|
4007
|
+
self.assertIn("code-mower==0.5.0b35", package_step["command"])
|
|
4008
4008
|
self.assertIn("current published PyPI prerelease", package_step["why"])
|
|
4009
4009
|
self.assertIn("first_user_readiness", package_step["why"])
|
|
4010
4010
|
self.assertEqual(
|
|
@@ -420,6 +420,13 @@ class WorkOrderTests(unittest.TestCase):
|
|
|
420
420
|
title="Full lineage capture",
|
|
421
421
|
source_text="Tie issue planning to PR delivery evidence.",
|
|
422
422
|
repo="owner/repo",
|
|
423
|
+
source={
|
|
424
|
+
"type": "issue_plan",
|
|
425
|
+
"repo": "owner/repo",
|
|
426
|
+
"issue_number": "274",
|
|
427
|
+
"issue_url": "https://github.com/owner/repo/issues/274",
|
|
428
|
+
"issue_plan_file": "issue-plan.json",
|
|
429
|
+
},
|
|
423
430
|
output=root / "work-order.md",
|
|
424
431
|
)
|
|
425
432
|
event_path = Path(work_order["cloud_event_path"])
|
|
@@ -435,8 +442,21 @@ class WorkOrderTests(unittest.TestCase):
|
|
|
435
442
|
)
|
|
436
443
|
|
|
437
444
|
self.assertEqual(payload["status"], "merged")
|
|
445
|
+
self.assertEqual(payload["schema"], work_orders.BENCHMARK_EVENT_SCHEMA)
|
|
446
|
+
self.assertEqual(payload["event_type"], "work_order")
|
|
447
|
+
self.assertEqual(payload["dimensions"]["issue_number"], "274")
|
|
448
|
+
self.assertEqual(
|
|
449
|
+
payload["dimensions"]["issue_url"], "https://github.com/owner/repo/issues/274"
|
|
450
|
+
)
|
|
451
|
+
self.assertEqual(payload["dimensions"]["work_order_slug"], "full-lineage-capture")
|
|
452
|
+
self.assertEqual(payload["dimensions"]["pr_repo"], "owner/repo")
|
|
453
|
+
self.assertEqual(payload["dimensions"]["pr_url"], "https://github.com/owner/repo/pull/12")
|
|
454
|
+
self.assertEqual(payload["metrics"]["reviewer_check_count"], 2)
|
|
455
|
+
self.assertEqual(payload["reviewer_check_count"], 2)
|
|
438
456
|
event = json.loads(event_path.read_text(encoding="utf-8"))
|
|
439
457
|
self.assertEqual(event["status"], "merged")
|
|
458
|
+
self.assertEqual(event, {key: payload[key] for key in event.keys()})
|
|
459
|
+
self.assertEqual(event["dimensions"]["issue_number"], "274")
|
|
440
460
|
self.assertEqual(event["dimensions"]["pr_repo"], "owner/repo")
|
|
441
461
|
self.assertEqual(event["dimensions"]["pr_url"], "https://github.com/owner/repo/pull/12")
|
|
442
462
|
self.assertEqual(event["dimensions"]["pull_request_number"], "12")
|
|
@@ -493,7 +513,10 @@ class WorkOrderTests(unittest.TestCase):
|
|
|
493
513
|
|
|
494
514
|
self.assertEqual(exit_code, 0)
|
|
495
515
|
payload = json.loads(out.getvalue())
|
|
516
|
+
self.assertEqual(payload["event_type"], "work_order")
|
|
496
517
|
self.assertEqual(payload["reviewer_check_count"], 2)
|
|
518
|
+
self.assertEqual(payload["dimensions"]["pr_state"], "MERGED")
|
|
519
|
+
self.assertEqual(payload["dimensions"]["merge_commit"], "abc123def456")
|
|
497
520
|
event = json.loads(event_path.read_text(encoding="utf-8"))
|
|
498
521
|
self.assertEqual(event["dimensions"]["pr_state"], "MERGED")
|
|
499
522
|
self.assertEqual(event["dimensions"]["merge_commit"], "abc123def456")
|
|
@@ -532,9 +555,12 @@ class WorkOrderTests(unittest.TestCase):
|
|
|
532
555
|
|
|
533
556
|
self.assertEqual(exit_code, 0)
|
|
534
557
|
payload = json.loads(out.getvalue())
|
|
558
|
+
self.assertEqual(payload["event_type"], "work_order")
|
|
535
559
|
self.assertEqual(payload["pr_repo"], "owner/repo")
|
|
536
560
|
self.assertEqual(payload["pr_url"], "https://github.com/owner/repo/pull/12")
|
|
537
561
|
self.assertEqual(payload["pr_number"], "12")
|
|
562
|
+
self.assertEqual(payload["dimensions"]["pr_repo"], "owner/repo")
|
|
563
|
+
self.assertEqual(payload["dimensions"]["pr_url"], "https://github.com/owner/repo/pull/12")
|
|
538
564
|
event = json.loads(event_path.read_text(encoding="utf-8"))
|
|
539
565
|
self.assertEqual(event["status"], "pr-linked")
|
|
540
566
|
self.assertEqual(event["dimensions"]["pr_repo"], "owner/repo")
|
|
@@ -571,8 +597,14 @@ class WorkOrderTests(unittest.TestCase):
|
|
|
571
597
|
|
|
572
598
|
self.assertEqual(exit_code, 0)
|
|
573
599
|
payload = json.loads(out.getvalue())
|
|
600
|
+
self.assertEqual(payload["event_type"], "work_order")
|
|
574
601
|
self.assertEqual(payload["pr_repo"], "github.example.com/owner/repo")
|
|
575
602
|
self.assertEqual(payload["pr_url"], "https://github.example.com/owner/repo/pull/12")
|
|
603
|
+
self.assertEqual(payload["dimensions"]["pr_repo"], "github.example.com/owner/repo")
|
|
604
|
+
self.assertEqual(
|
|
605
|
+
payload["dimensions"]["pr_url"],
|
|
606
|
+
"https://github.example.com/owner/repo/pull/12",
|
|
607
|
+
)
|
|
576
608
|
event = json.loads(event_path.read_text(encoding="utf-8"))
|
|
577
609
|
self.assertEqual(event["dimensions"]["pr_repo"], "github.example.com/owner/repo")
|
|
578
610
|
self.assertEqual(event["dimensions"]["pr_url"], "https://github.example.com/owner/repo/pull/12")
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
pytest==9.1.0
|
|
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
|