code-mower 1.3.0__tar.gz → 1.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_mower-1.3.0 → code_mower-1.3.1}/PKG-INFO +9 -7
- {code_mower-1.3.0 → code_mower-1.3.1}/README.md +8 -6
- {code_mower-1.3.0 → code_mower-1.3.1}/pyproject.toml +1 -1
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/__init__.py +1 -1
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_delivery.py +106 -20
- code_mower-1.3.1/src/code_mower/context_guided.py +454 -0
- code_mower-1.3.1/src/code_mower/context_prepare.py +461 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_readiness.py +3 -3
- code_mower-1.3.1/src/code_mower/context_session.py +481 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_manifest.py +9 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/session.py +226 -6
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/builder-provenance.yml.j2 +1 -1
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/work_orders.py +3 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/PKG-INFO +9 -7
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/SOURCES.txt +6 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/builder-provenance.yml.j2 +1 -1
- code_mower-1.3.1/tests/test_context_guided.py +396 -0
- code_mower-1.3.1/tests/test_context_prepare.py +357 -0
- code_mower-1.3.1/tests/test_context_session.py +321 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_participant_sessions.py +1 -1
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_release_hygiene.py +47 -47
- {code_mower-1.3.0 → code_mower-1.3.1}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/LICENSE +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/MANIFEST.in +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/NOTICE +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/SUPPORT.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/requirements/requirements.txt +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/setup.cfg +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/antigravity_sdk_probe.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_labeler_lib.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_limits.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/audit_progress.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/board.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/board_store.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/bootstrap.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/builder_runs.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/results.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/campaign_adapters.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/campaign_discovery.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/checks.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/claude_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/clear_stale.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/__init__.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/adoption_runs.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/bundle.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/events.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/finding_outcomes.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/operations.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/productivity.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/productivity_windows.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/tokens.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/cloud_client/work_types.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/config.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_audit.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_command.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_connections.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_packets.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_review.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/context_store.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/controller.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/coworker_mcp.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/coworker_retrieval.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/decisions.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/devin_api.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/devin_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/__init__.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/adoption.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/audit_limits.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/campaign_auth.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_human_token.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_repo.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/jira.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/output.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/providers.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/registry.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/runner.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/runtime.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/file_locks.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/gate_health.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/git_identity.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/grok_build_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/init.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/jira_cloud.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/jira_mutations.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/jira_pr_sync.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/devin_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/grok_build.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_configs/muse_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_delivery.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/lane_status.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_install.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/migration_rehearsal.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/muse_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/next_steps.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_content.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_paths.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_rendering.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/package_static.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/participants.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/plan_context.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/productivity_report.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/prompts.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_credentials.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_registry.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/exit_codes.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/github_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/providers/provenance.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/release_campaigns.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/release_qualify.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/release_readiness.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/reviewer_spend.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/saas_reviewer_labeler.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/secrets.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/session_lease.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/code-mower.example.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/README.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/claude.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/codex.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/cursor.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/devin.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/generic.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/code_mower +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/product-support/status_report.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/tracker_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/tracker_queue.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/trailer_comment_labeler.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/versioning.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/workflow_actionlint.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower/yaml_subset.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/requires.txt +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/builder-experiment.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/calibration-corpus.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/code-mower.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/context-packs.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/README.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/claude.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/codex.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/cursor.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/devin.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/generic.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/lanes/run_mac_lane.sh +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/aider.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/claude_audit.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/claude_review.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/codex.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/cursor_cloud_agent.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/devin.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/devin_cli.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/gitar.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/greptile.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/local_llm.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/muse_cli.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers/qodo.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/providers.yml +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/code-mower-gate.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_adoption_diagnostics.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_adoption_result_semantics.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_adoption_run_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_antigravity_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_antigravity_sdk_probe.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_audit_comment_posture.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_audit_limits.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_board.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_board_lease.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_builder_experiment.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_builder_identity.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_builder_runs.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_calibration_truth.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_adapters.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_discovery.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_gh_auth_and_issue_binding_817.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_campaign_retry_evidence_711.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_checks.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_claude_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_clear_stale.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_client.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_manifest.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_cloud_reports.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_codex_audit_env_preflight.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_codex_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_audit.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_command.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_connections.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_delivery.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_packets.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_readiness.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_context_review.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_controller.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_coworker_mcp.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_coworker_retrieval.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_decision_audit_integration.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_decisions.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_api.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_builder_lane.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_cli_audit_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_devin_provider_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_campaign_auth.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_campaign_readiness.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_github_checks.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_output.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_privacy.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_local_audit_setup.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_provider_review_hygiene.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_registry.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_runtime.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_self_hosted_runner.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_doctor_supervised_pilot.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_file_locks.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_fork_pr_guard.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_gate_automerge.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_gate_health.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_hosted_dispatch_profile.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_init_actionlint.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_init_build_loop.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_adoption.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_cloud.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_mutations.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_jira_pr_sync.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_lane_delivery_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_lane_status.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_migration_rehearsal.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_migration_setup_drift.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_next_steps.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_package_install_failure_taxonomy.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_plan_context.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_pr_outcome_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_pr_outcome_coverage.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_productivity_metrics_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_productivity_report.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_productivity_windows.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_prompts.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_credentials.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_fixture_contracts.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_local_cli.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_git.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_process.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_release_campaigns.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_release_qualify.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_remote_qualification_failure_reason_819.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_reviewer_finding_outcome_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_reviewer_metrics_core.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_reviewer_spend.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_session_lease.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_supervised_pilot_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_tracker_config.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_tracker_contract.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_tracker_queue.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_trailer_comment_labeler.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_work_orders.py +0 -0
- {code_mower-1.3.0 → code_mower-1.3.1}/tests/test_work_type_contract.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: Multi-reviewer AI code audit orchestration
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/codemower-ai/code-mower
|
|
@@ -63,8 +63,8 @@ Default cloud bundles exclude source code, raw diffs, raw model transcripts,
|
|
|
63
63
|
raw stdout/stderr, auth output, and secrets.
|
|
64
64
|
|
|
65
65
|
Documentation on `main` follows the source on `main`. If you install the
|
|
66
|
-
published `code-mower==1.3.
|
|
67
|
-
[`v1.3.
|
|
66
|
+
published `code-mower==1.3.1` package, use the documentation from the matching
|
|
67
|
+
[`v1.3.1` tag](https://github.com/codemower-ai/code-mower/tree/v1.3.1) so the
|
|
68
68
|
commands and package stay aligned as development continues.
|
|
69
69
|
|
|
70
70
|
## Design Principles
|
|
@@ -259,7 +259,7 @@ agent report its actual host posture, exact installed version, doctor result,
|
|
|
259
259
|
Board URL, and any owner-only click-list before it mutates the repo.
|
|
260
260
|
|
|
261
261
|
The current package-index announcement entry point is the tagged
|
|
262
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.
|
|
262
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.1/docs/try-in-10-minutes.md)
|
|
263
263
|
guide. The v1.0 supervised-pilot release includes the native Board, the
|
|
264
264
|
controller dry-run and policy contract, adoption and upgrade hardening from
|
|
265
265
|
recent install rehearsals, package-index release checks, provider-diversity
|
|
@@ -374,7 +374,7 @@ Provider-contract baseline for the next release train:
|
|
|
374
374
|
|
|
375
375
|
For release verification,
|
|
376
376
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
377
|
-
the package-index procedure for `v1.3.
|
|
377
|
+
the package-index procedure for `v1.3.1` / `code-mower==1.3.1`. The
|
|
378
378
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
379
379
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
380
380
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -568,8 +568,8 @@ measurement work.
|
|
|
568
568
|
|
|
569
569
|
## Installation Status
|
|
570
570
|
|
|
571
|
-
The current package-index release baseline is `v1.3.
|
|
572
|
-
install spec `code-mower==1.3.
|
|
571
|
+
The current package-index release baseline is `v1.3.1`, with pinned package
|
|
572
|
+
install spec `code-mower==1.3.1`. Release evidence is recorded on the GitHub
|
|
573
573
|
release and in the first-user install rehearsal. The public repository is
|
|
574
574
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
575
575
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -687,6 +687,8 @@ first so local work exercises the same package entrypoint users install.
|
|
|
687
687
|
- [v1.3.0 Release Notes](docs/v130-release-notes.md)
|
|
688
688
|
- [Optional Coworker Setup](docs/context-setup.md)
|
|
689
689
|
- [Context Qualification and Limits](docs/v130-context-qualification.md)
|
|
690
|
+
- [v1.3.1 Guided Context Release Notes](docs/v131-release-notes.md)
|
|
691
|
+
- [v1.3.1 Guided Context Qualification](docs/v131-guided-context-qualification.md)
|
|
690
692
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
691
693
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
692
694
|
|
|
@@ -28,8 +28,8 @@ Default cloud bundles exclude source code, raw diffs, raw model transcripts,
|
|
|
28
28
|
raw stdout/stderr, auth output, and secrets.
|
|
29
29
|
|
|
30
30
|
Documentation on `main` follows the source on `main`. If you install the
|
|
31
|
-
published `code-mower==1.3.
|
|
32
|
-
[`v1.3.
|
|
31
|
+
published `code-mower==1.3.1` package, use the documentation from the matching
|
|
32
|
+
[`v1.3.1` tag](https://github.com/codemower-ai/code-mower/tree/v1.3.1) so the
|
|
33
33
|
commands and package stay aligned as development continues.
|
|
34
34
|
|
|
35
35
|
## Design Principles
|
|
@@ -224,7 +224,7 @@ agent report its actual host posture, exact installed version, doctor result,
|
|
|
224
224
|
Board URL, and any owner-only click-list before it mutates the repo.
|
|
225
225
|
|
|
226
226
|
The current package-index announcement entry point is the tagged
|
|
227
|
-
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.
|
|
227
|
+
[Try Code Mower In 10 Minutes](https://github.com/codemower-ai/code-mower/blob/v1.3.1/docs/try-in-10-minutes.md)
|
|
228
228
|
guide. The v1.0 supervised-pilot release includes the native Board, the
|
|
229
229
|
controller dry-run and policy contract, adoption and upgrade hardening from
|
|
230
230
|
recent install rehearsals, package-index release checks, provider-diversity
|
|
@@ -339,7 +339,7 @@ Provider-contract baseline for the next release train:
|
|
|
339
339
|
|
|
340
340
|
For release verification,
|
|
341
341
|
[First-User Install Rehearsal](docs/first-user-install-rehearsal.md) records
|
|
342
|
-
the package-index procedure for `v1.3.
|
|
342
|
+
the package-index procedure for `v1.3.1` / `code-mower==1.3.1`. The
|
|
343
343
|
GitHub release records the workflow and rehearsal evidence for the exact tag.
|
|
344
344
|
After publication, [Release Qualification](docs/release-qualification.md)
|
|
345
345
|
coordinates provider-specific install and operational checks without treating
|
|
@@ -533,8 +533,8 @@ measurement work.
|
|
|
533
533
|
|
|
534
534
|
## Installation Status
|
|
535
535
|
|
|
536
|
-
The current package-index release baseline is `v1.3.
|
|
537
|
-
install spec `code-mower==1.3.
|
|
536
|
+
The current package-index release baseline is `v1.3.1`, with pinned package
|
|
537
|
+
install spec `code-mower==1.3.1`. Release evidence is recorded on the GitHub
|
|
538
538
|
release and in the first-user install rehearsal. The public repository is
|
|
539
539
|
[codemower-ai/code-mower](https://github.com/codemower-ai/code-mower), and
|
|
540
540
|
GitHub releases remain the auditable source for tags, build artifacts, and
|
|
@@ -652,6 +652,8 @@ first so local work exercises the same package entrypoint users install.
|
|
|
652
652
|
- [v1.3.0 Release Notes](docs/v130-release-notes.md)
|
|
653
653
|
- [Optional Coworker Setup](docs/context-setup.md)
|
|
654
654
|
- [Context Qualification and Limits](docs/v130-context-qualification.md)
|
|
655
|
+
- [v1.3.1 Guided Context Release Notes](docs/v131-release-notes.md)
|
|
656
|
+
- [v1.3.1 Guided Context Qualification](docs/v131-guided-context-qualification.md)
|
|
655
657
|
- [Post-v0.8 Effectiveness Assessment](docs/post-v08-effectiveness-assessment.md)
|
|
656
658
|
- [v1.0.1 Effectiveness Assessment](docs/v101-effectiveness-assessment.md)
|
|
657
659
|
|
|
@@ -83,18 +83,31 @@ def _packet_for_binding(store, binding, recipient, *, backend=None):
|
|
|
83
83
|
return packet
|
|
84
84
|
|
|
85
85
|
|
|
86
|
-
def
|
|
87
|
-
|
|
86
|
+
def reserve_attachment(
|
|
87
|
+
store,
|
|
88
|
+
name,
|
|
89
|
+
handle,
|
|
90
|
+
policy,
|
|
91
|
+
request: ContextRequest,
|
|
92
|
+
*,
|
|
93
|
+
pr,
|
|
94
|
+
head,
|
|
95
|
+
revision=None,
|
|
96
|
+
backend=None,
|
|
97
|
+
):
|
|
98
|
+
"""Reserve one unpublished binding before any remote publication.
|
|
88
99
|
|
|
89
|
-
|
|
90
|
-
|
|
100
|
+
A caller-supplied revision lets a guided session persist its intent before
|
|
101
|
+
touching GitHub and resume that exact intent after a crash. Repeating the
|
|
102
|
+
same reservation is idempotent; a conflicting reuse fails closed.
|
|
91
103
|
"""
|
|
92
104
|
if request.recipient not in SUPPORTED_RECIPIENTS or not request.recipient.endswith(":orchestrator"):
|
|
93
105
|
raise ContextError("an approved orchestrator must attach context")
|
|
94
106
|
policy = normalize_policy(policy)
|
|
95
107
|
packet = load_authorized(store, name, handle, policy, request, backend=backend)
|
|
96
108
|
payload = packet.private_payload()
|
|
97
|
-
revision = uuid.uuid4().hex
|
|
109
|
+
revision = revision or uuid.uuid4().hex
|
|
110
|
+
_handle(revision)
|
|
98
111
|
metadata = context_review.validate({"revision": revision, "head": head, "required": policy["required"],
|
|
99
112
|
"state": "available", "expires_at": payload["binding"]["expires_at"]})
|
|
100
113
|
render_evidence(packet, handle)
|
|
@@ -107,30 +120,99 @@ def attach(store, name, handle, policy, request: ContextRequest, *, pr, head, pu
|
|
|
107
120
|
if entry is None or entry["reference"] is None or entry["reference"]["sha256"] != packet.sha256:
|
|
108
121
|
raise ContextError("context packet was replaced before attachment")
|
|
109
122
|
deliveries = entry.setdefault("deliveries", [])
|
|
110
|
-
if len(deliveries) >= 8:
|
|
111
|
-
raise ContextError("context packet delivery limit reached; refresh the work item")
|
|
112
123
|
binding = _binding({"schema": SCHEMA, "revision": revision, "connection": name,
|
|
113
124
|
"repository": request.repository, "work_item": request.work_item, "pr": pr, "handle": handle,
|
|
114
125
|
"policy": policy, "packet_sha256": packet.sha256, "metadata": metadata,
|
|
115
126
|
"published": False, "feedback": {}})
|
|
116
127
|
artifact = locked.artifact("d-" + revision)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
existing = artifact.read()
|
|
129
|
+
if existing is not None:
|
|
130
|
+
saved = _binding(existing)
|
|
131
|
+
comparable = {**saved, "published": False, "feedback": {}}
|
|
132
|
+
if comparable != binding:
|
|
133
|
+
raise ContextError("context attachment revision is already bound to different input")
|
|
134
|
+
if revision not in deliveries:
|
|
135
|
+
if len(deliveries) >= 8:
|
|
136
|
+
raise ContextError("context packet delivery limit reached; refresh the work item")
|
|
137
|
+
deliveries.append(revision)
|
|
138
|
+
index_file.write(index)
|
|
139
|
+
return saved["metadata"]
|
|
140
|
+
if revision not in deliveries:
|
|
141
|
+
if len(deliveries) >= 8:
|
|
142
|
+
raise ContextError("context packet delivery limit reached; refresh the work item")
|
|
143
|
+
deliveries.append(revision)
|
|
127
144
|
index_file.write(index)
|
|
128
|
-
|
|
129
|
-
raise
|
|
130
|
-
artifact.write({**binding, "published": True})
|
|
145
|
+
artifact.write(binding)
|
|
131
146
|
return metadata
|
|
132
147
|
|
|
133
148
|
|
|
149
|
+
def mark_published(store, name, revision):
|
|
150
|
+
"""Enable a reserved binding only after its exact metadata is public."""
|
|
151
|
+
_handle(revision)
|
|
152
|
+
with store.locked(name) as locked:
|
|
153
|
+
artifact = locked.artifact("d-" + revision)
|
|
154
|
+
binding = _binding(artifact.read())
|
|
155
|
+
if binding["connection"] != name:
|
|
156
|
+
raise ContextError("context attachment connection does not match its binding")
|
|
157
|
+
if not binding["published"]:
|
|
158
|
+
artifact.write({**binding, "published": True})
|
|
159
|
+
return binding["metadata"]
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _remove_attachment(store, name, handle, revision, *, published):
|
|
163
|
+
_handle(handle)
|
|
164
|
+
_handle(revision)
|
|
165
|
+
with store.locked(name) as locked:
|
|
166
|
+
index_file, index = _index(locked)
|
|
167
|
+
entry = next((item for item in index["entries"] if item["handle"] == handle), None)
|
|
168
|
+
artifact = locked.artifact("d-" + revision)
|
|
169
|
+
saved = artifact.read()
|
|
170
|
+
if saved is None:
|
|
171
|
+
if entry is not None and revision in entry.setdefault("deliveries", []):
|
|
172
|
+
entry["deliveries"].remove(revision)
|
|
173
|
+
index_file.write(index)
|
|
174
|
+
return
|
|
175
|
+
binding = _binding(saved)
|
|
176
|
+
if binding["published"] and not published:
|
|
177
|
+
raise ContextError("published context attachment cannot be abandoned")
|
|
178
|
+
if entry is None or revision not in entry.setdefault("deliveries", []):
|
|
179
|
+
raise ContextError("context attachment index is inconsistent")
|
|
180
|
+
entry["deliveries"].remove(revision)
|
|
181
|
+
index_file.write(index)
|
|
182
|
+
artifact.delete()
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def abandon_attachment(store, name, handle, revision):
|
|
186
|
+
"""Remove an unpublished reservation after a known pre-publication failure."""
|
|
187
|
+
_remove_attachment(store, name, handle, revision, published=False)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def retire_attachment(store, name, handle, revision):
|
|
191
|
+
"""Remove a binding after its PR head is authoritatively no longer current."""
|
|
192
|
+
_remove_attachment(store, name, handle, revision, published=True)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def attach(store, name, handle, policy, request: ContextRequest, *, pr, head, publish, backend=None):
|
|
196
|
+
"""Publish a new input revision before any participant can use that binding.
|
|
197
|
+
|
|
198
|
+
``publish`` is a trusted runtime callback for the selected repository/PR,
|
|
199
|
+
never provider code. A failed publication leaves the local binding unusable.
|
|
200
|
+
"""
|
|
201
|
+
metadata = reserve_attachment(
|
|
202
|
+
store, name, handle, policy, request, pr=pr, head=head, backend=backend,
|
|
203
|
+
)
|
|
204
|
+
revision = metadata["revision"]
|
|
205
|
+
try:
|
|
206
|
+
publish(metadata)
|
|
207
|
+
except Exception:
|
|
208
|
+
# Even an uncertain remote post must not enable delivery. Preserve the
|
|
209
|
+
# expert command's historical retry behavior; guided sessions use the
|
|
210
|
+
# lower-level primitives and retain their fixed intent for reconciliation.
|
|
211
|
+
abandon_attachment(store, name, handle, revision)
|
|
212
|
+
raise
|
|
213
|
+
return mark_published(store, name, revision)
|
|
214
|
+
|
|
215
|
+
|
|
134
216
|
@dataclass(frozen=True)
|
|
135
217
|
class Delivery:
|
|
136
218
|
metadata: dict
|
|
@@ -140,6 +222,10 @@ class Delivery:
|
|
|
140
222
|
|
|
141
223
|
def deliver(store, revision, *, repository, pr, head, recipient, current, backend=None):
|
|
142
224
|
binding = read_binding(store, revision)
|
|
225
|
+
try:
|
|
226
|
+
current = context_review.validate(dict(current))
|
|
227
|
+
except (TypeError, ValueError):
|
|
228
|
+
raise ContextError("no trusted current context input is declared") from None
|
|
143
229
|
if (not binding["published"] or binding["repository"] != repository or binding["pr"] != pr
|
|
144
230
|
or binding["metadata"] != current or current["head"] != head):
|
|
145
231
|
raise ContextError("context input is missing, unpublished, or no longer current")
|