code-mower 1.4.0__tar.gz → 1.4.2__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.4.0 → code_mower-1.4.2}/MANIFEST.in +1 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/PKG-INFO +23 -16
- {code_mower-1.4.0 → code_mower-1.4.2}/README.md +22 -15
- code_mower-1.4.2/docs/acp-bridge-spike.md +48 -0
- code_mower-1.4.2/docs/architecture.md +205 -0
- code_mower-1.4.2/docs/archive/README.md +11 -0
- code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha4.md +106 -0
- code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha5.md +131 -0
- code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha6.md +195 -0
- code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha8.md +111 -0
- code_mower-1.4.2/docs/archive/first-user-install-rehearsal-alpha9.md +135 -0
- code_mower-1.4.2/docs/authoring-intelligence.md +170 -0
- code_mower-1.4.2/docs/board-data-contract.md +958 -0
- code_mower-1.4.2/docs/board-qualification.md +129 -0
- code_mower-1.4.2/docs/board-service-lifecycle.md +324 -0
- code_mower-1.4.2/docs/build-loop-in-30-minutes.md +530 -0
- code_mower-1.4.2/docs/build-loop.md +204 -0
- code_mower-1.4.2/docs/builder-experiments.md +225 -0
- code_mower-1.4.2/docs/builders-grok-cursor.md +135 -0
- code_mower-1.4.2/docs/calibration-notes.md +474 -0
- code_mower-1.4.2/docs/calibration-pilot.md +325 -0
- code_mower-1.4.2/docs/cloud-benchmarking.md +133 -0
- code_mower-1.4.2/docs/cloud-contributor-runbook.md +229 -0
- code_mower-1.4.2/docs/cloud-data-contract.md +776 -0
- code_mower-1.4.2/docs/cloud-sharing.md +592 -0
- code_mower-1.4.2/docs/code-structure-roadmap.md +110 -0
- code_mower-1.4.2/docs/commercial-boundary.md +53 -0
- code_mower-1.4.2/docs/context-connections.md +175 -0
- code_mower-1.4.2/docs/context-delivery.md +304 -0
- code_mower-1.4.2/docs/context-graph-lifecycle.md +726 -0
- code_mower-1.4.2/docs/context-graph-queries.md +460 -0
- code_mower-1.4.2/docs/context-packet-schema.md +131 -0
- code_mower-1.4.2/docs/context-provider-contract.md +234 -0
- code_mower-1.4.2/docs/context-setup.md +137 -0
- code_mower-1.4.2/docs/current-state-and-roadmap.md +288 -0
- code_mower-1.4.2/docs/devin-peer-support-qualification.md +349 -0
- code_mower-1.4.2/docs/devin-review-parity.md +76 -0
- code_mower-1.4.2/docs/devin-work-orders.md +163 -0
- code_mower-1.4.2/docs/doctrine-lens-proof-v2.md +66 -0
- code_mower-1.4.2/docs/early-adopter-invite-runbook.md +104 -0
- code_mower-1.4.2/docs/early-adopter-v05.md +154 -0
- code_mower-1.4.2/docs/first-run-transcript.md +118 -0
- code_mower-1.4.2/docs/first-user-demo-transcript.md +83 -0
- code_mower-1.4.2/docs/first-user-install-rehearsal.md +407 -0
- code_mower-1.4.2/docs/friendly-user-rollout-v05.md +134 -0
- code_mower-1.4.2/docs/github-setup.md +854 -0
- code_mower-1.4.2/docs/graphify-evaluation.md +197 -0
- code_mower-1.4.2/docs/graphify-setup.md +95 -0
- code_mower-1.4.2/docs/install.md +349 -0
- code_mower-1.4.2/docs/jira-adoption-rehearsal.md +271 -0
- code_mower-1.4.2/docs/jira-cloud-setup.md +315 -0
- code_mower-1.4.2/docs/lane-promotion-policy.md +304 -0
- code_mower-1.4.2/docs/lanes/README.md +42 -0
- code_mower-1.4.2/docs/lanes/claude.md +22 -0
- code_mower-1.4.2/docs/lanes/codex.md +22 -0
- code_mower-1.4.2/docs/lanes/cursor.md +22 -0
- code_mower-1.4.2/docs/lanes/devin.md +41 -0
- code_mower-1.4.2/docs/launch-command-surface.md +103 -0
- code_mower-1.4.2/docs/lens-calibration-report.md +686 -0
- code_mower-1.4.2/docs/local-audit-runner.md +166 -0
- code_mower-1.4.2/docs/mirror-removal-runbook.md +213 -0
- code_mower-1.4.2/docs/operational-evidence.md +111 -0
- code_mower-1.4.2/docs/orchestrator-prompt-pack.md +274 -0
- code_mower-1.4.2/docs/oss-v1-checklist.md +502 -0
- code_mower-1.4.2/docs/package-customization.md +566 -0
- code_mower-1.4.2/docs/participant-qualification.md +94 -0
- code_mower-1.4.2/docs/planning-work-orders.md +262 -0
- code_mower-1.4.2/docs/post-v08-effectiveness-assessment.md +74 -0
- code_mower-1.4.2/docs/prd-addendum-v05-beta.md +57 -0
- code_mower-1.4.2/docs/privacy-threat-model.md +66 -0
- code_mower-1.4.2/docs/provider-calibration-scorecard.md +137 -0
- code_mower-1.4.2/docs/provider-diversity-provenance.md +166 -0
- code_mower-1.4.2/docs/provider-matrix.md +333 -0
- code_mower-1.4.2/docs/public-release-checklist.md +219 -0
- code_mower-1.4.2/docs/pypi-release.md +2223 -0
- code_mower-1.4.2/docs/quickstart.md +651 -0
- code_mower-1.4.2/docs/release-history.md +71 -0
- code_mower-1.4.2/docs/release-qualification.md +817 -0
- code_mower-1.4.2/docs/repo-strategy.md +185 -0
- code_mower-1.4.2/docs/reviewer-value-report.md +90 -0
- code_mower-1.4.2/docs/sample-doctor-output.md +103 -0
- code_mower-1.4.2/docs/self-hosted-mac-runner.md +439 -0
- code_mower-1.4.2/docs/sessions.md +566 -0
- code_mower-1.4.2/docs/slack-contract.md +193 -0
- code_mower-1.4.2/docs/slack-ingress.md +138 -0
- code_mower-1.4.2/docs/supervised-pilot-contract.md +145 -0
- code_mower-1.4.2/docs/tracker-data-contract.md +457 -0
- code_mower-1.4.2/docs/troubleshooting.md +347 -0
- code_mower-1.4.2/docs/try-in-10-minutes.md +263 -0
- code_mower-1.4.2/docs/upgrade-existing-repo.md +306 -0
- code_mower-1.4.2/docs/v06-release-notes.md +95 -0
- code_mower-1.4.2/docs/v06-truth-baseline.md +108 -0
- code_mower-1.4.2/docs/v08-release-notes.md +57 -0
- code_mower-1.4.2/docs/v09-release-notes.md +51 -0
- code_mower-1.4.2/docs/v10-release-notes.md +64 -0
- code_mower-1.4.2/docs/v101-effectiveness-assessment.md +75 -0
- code_mower-1.4.2/docs/v101-release-notes.md +74 -0
- code_mower-1.4.2/docs/v1010-release-notes.md +156 -0
- code_mower-1.4.2/docs/v1011-release-notes.md +166 -0
- code_mower-1.4.2/docs/v1012-release-notes.md +162 -0
- code_mower-1.4.2/docs/v1013-release-notes.md +175 -0
- code_mower-1.4.2/docs/v1014-release-notes.md +176 -0
- code_mower-1.4.2/docs/v1015-release-notes.md +145 -0
- code_mower-1.4.2/docs/v102-release-notes.md +73 -0
- code_mower-1.4.2/docs/v103-installation-documentation-audit.md +170 -0
- code_mower-1.4.2/docs/v103-release-notes.md +85 -0
- code_mower-1.4.2/docs/v104-installation-documentation-audit.md +6 -0
- code_mower-1.4.2/docs/v104-release-notes.md +88 -0
- code_mower-1.4.2/docs/v105-release-notes.md +90 -0
- code_mower-1.4.2/docs/v106-release-notes.md +100 -0
- code_mower-1.4.2/docs/v107-release-notes.md +116 -0
- code_mower-1.4.2/docs/v108-release-notes.md +124 -0
- code_mower-1.4.2/docs/v109-release-notes.md +119 -0
- code_mower-1.4.2/docs/v11-release-notes.md +124 -0
- code_mower-1.4.2/docs/v111-release-notes.md +73 -0
- code_mower-1.4.2/docs/v112-release-notes.md +49 -0
- code_mower-1.4.2/docs/v12-release-notes.md +63 -0
- code_mower-1.4.2/docs/v121-release-notes.md +52 -0
- code_mower-1.4.2/docs/v122-release-notes.md +61 -0
- code_mower-1.4.2/docs/v130-context-qualification.md +103 -0
- code_mower-1.4.2/docs/v130-release-notes.md +77 -0
- code_mower-1.4.2/docs/v131-guided-context-qualification.md +55 -0
- code_mower-1.4.2/docs/v131-release-notes.md +76 -0
- code_mower-1.4.2/docs/v140-release-notes.md +105 -0
- code_mower-1.4.2/docs/v140-release-runbook.md +2262 -0
- code_mower-1.4.2/docs/v141-qualification.md +69 -0
- code_mower-1.4.2/docs/v141-release-notes.md +58 -0
- code_mower-1.4.2/docs/v142-qualification.md +67 -0
- code_mower-1.4.2/docs/v142-release-notes.md +64 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/pyproject.toml +1 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/__init__.py +1 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_labeler_lib.py +131 -22
- code_mower-1.4.2/src/code_mower/board.py +6488 -0
- code_mower-1.4.2/src/code_mower/board_local_observation.py +1030 -0
- code_mower-1.4.2/src/code_mower/board_observation.py +459 -0
- code_mower-1.4.2/src/code_mower/board_observation.schema.json +278 -0
- code_mower-1.4.2/src/code_mower/board_remote_observation.py +180 -0
- code_mower-1.4.2/src/code_mower/board_service.py +2757 -0
- code_mower-1.4.2/src/code_mower/branch_policy.py +229 -0
- code_mower-1.4.2/src/code_mower/builder_lineage.py +495 -0
- code_mower-1.4.2/src/code_mower/builder_lineage_producer.py +386 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/builder_runs.py +40 -53
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/campaign_adapters.py +11 -8
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/claude_audit_pr.py +116 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cli.py +15 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_pr.py +103 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/config.py +30 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_audit.py +10 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_command.py +15 -4
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_contract.py +55 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_delivery.py +81 -12
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_graph.py +1 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_graph_command.py +137 -3
- code_mower-1.4.2/src/code_mower/context_graph_connection.py +308 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_graph_lifecycle.py +1304 -130
- code_mower-1.4.2/src/code_mower/context_graph_query.py +1545 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_guided.py +164 -33
- code_mower-1.4.2/src/code_mower/context_packets.py +364 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_prepare.py +25 -17
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_session.py +44 -6
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_store.py +26 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/controller.py +17 -6
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/coworker_mcp.py +48 -19
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/coworker_retrieval.py +45 -6
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_cli_audit_pr.py +72 -7
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_readiness.py +142 -14
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_review.py +27 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_sessions.py +14 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_work_orders.py +196 -19
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor.py +100 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/__init__.py +2 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/adoption.py +44 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/campaign_auth.py +249 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/devin.py +2 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/output.py +74 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/runner.py +3 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/init.py +172 -17
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_delivery.py +436 -33
- code_mower-1.4.2/src/code_mower/lane_handoff.py +277 -0
- code_mower-1.4.2/src/code_mower/lane_runtime.py +102 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_status.py +206 -13
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration.py +95 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_install.py +17 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_rehearsal.py +10 -3
- code_mower-1.4.2/src/code_mower/operational_evidence.py +377 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package.py +26 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_manifest.py +39 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_static.py +1 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/participants.py +2 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_capabilities.py +14 -4
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_registry.py +3 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/github_pr.py +16 -19
- code_mower-1.4.2/src/code_mower/provider_runners/lineage.py +106 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/release_campaigns.py +4 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/release_qualify.py +20 -5
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/release_readiness.py +97 -57
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/remote_session.py +158 -4
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/remote_session_cli.py +17 -0
- code_mower-1.4.2/src/code_mower/review_authority.py +305 -0
- code_mower-1.4.2/src/code_mower/role_eligibility.py +203 -0
- code_mower-1.4.2/src/code_mower/role_eligibility.schema.json +119 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/saas_reviewer_labeler.py +52 -6
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/session.py +106 -17
- code_mower-1.4.2/src/code_mower/session_current.py +321 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/session_lease.py +46 -14
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/code-mower.example.yml +6 -0
- code_mower-1.4.2/src/code_mower/templates/lanes/lineage-producer.sh +15 -0
- {code_mower-1.4.0 → code_mower-1.4.2/src/code_mower}/templates/lanes/run_mac_lane.sh +568 -105
- code_mower-1.4.2/src/code_mower/templates/workflows/builder-lineage-producer.yml.j2 +49 -0
- code_mower-1.4.2/src/code_mower/templates/workflows/builder-provenance.yml.j2 +39 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-gate.yml.j2 +31 -17
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/trailer_comment_labeler.py +20 -5
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/work_orders.py +1 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/PKG-INFO +23 -16
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/SOURCES.txt +176 -0
- code_mower-1.4.2/templates/lanes/lineage-producer.sh +15 -0
- {code_mower-1.4.0/src/code_mower → code_mower-1.4.2}/templates/lanes/run_mac_lane.sh +568 -105
- code_mower-1.4.2/templates/workflows/builder-lineage-producer.yml.j2 +49 -0
- code_mower-1.4.2/templates/workflows/builder-provenance.yml.j2 +39 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-gate.yml.j2 +31 -17
- code_mower-1.4.2/tests/test_adoption_polish_955.py +1373 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_audit_comment_posture.py +6 -1
- code_mower-1.4.2/tests/test_audit_labeler_identity.py +192 -0
- code_mower-1.4.2/tests/test_board.py +11907 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_board_lease.py +8 -3
- code_mower-1.4.2/tests/test_board_local_observation.py +700 -0
- code_mower-1.4.2/tests/test_board_observation.py +282 -0
- code_mower-1.4.2/tests/test_board_qualification.py +272 -0
- code_mower-1.4.2/tests/test_board_remote_observation.py +485 -0
- code_mower-1.4.2/tests/test_board_service.py +2562 -0
- code_mower-1.4.2/tests/test_branch_policy.py +1007 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_builder_identity.py +5 -5
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_builder_runs.py +78 -206
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_adapters.py +11 -4
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_claude_audit_pr.py +25 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_codex_audit_pr.py +9 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_audit.py +80 -5
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_command.py +137 -0
- code_mower-1.4.2/tests/test_context_delivery.py +347 -0
- code_mower-1.4.2/tests/test_context_graph_connection.py +721 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_graph_lifecycle.py +1486 -68
- code_mower-1.4.2/tests/test_context_graph_query.py +2032 -0
- code_mower-1.4.2/tests/test_context_guided.py +1152 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_packets.py +89 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_prepare.py +104 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_session.py +110 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_controller.py +6 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_coworker_retrieval.py +130 -3
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_decision_audit_integration.py +4 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_builder_lane.py +249 -56
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_capabilities.py +6 -7
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_cli_audit_pr.py +285 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_review.py +193 -1
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_setup_readiness.py +1 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_work_orders.py +53 -10
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_campaign_auth.py +228 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_campaign_readiness.py +10 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_registry.py +42 -0
- code_mower-1.4.2/tests/test_documented_commands.py +200 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_init_build_loop.py +66 -34
- code_mower-1.4.2/tests/test_init_builders_cold_start.py +166 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_lane_delivery_contract.py +231 -21
- code_mower-1.4.2/tests/test_lane_handoff.py +359 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_lane_status.py +132 -0
- code_mower-1.4.2/tests/test_lineage_consumer_activation.py +229 -0
- code_mower-1.4.2/tests/test_lineage_consumer_admission.py +77 -0
- code_mower-1.4.2/tests/test_lineage_consumer_labels.py +233 -0
- code_mower-1.4.2/tests/test_lineage_consumer_projection.py +184 -0
- code_mower-1.4.2/tests/test_lineage_producer_artifacts.py +393 -0
- code_mower-1.4.2/tests/test_lineage_producer_publication.py +231 -0
- code_mower-1.4.2/tests/test_lineage_producer_state.py +159 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_migration_rehearsal.py +50 -3
- code_mower-1.4.2/tests/test_minimal_lineage_contract.py +246 -0
- code_mower-1.4.2/tests/test_minimal_lineage_packaging.py +98 -0
- code_mower-1.4.2/tests/test_minimal_lineage_transport.py +185 -0
- code_mower-1.4.2/tests/test_operational_evidence.py +317 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_participant_sessions.py +2 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_release_campaigns.py +6 -2
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_release_hygiene.py +465 -249
- code_mower-1.4.2/tests/test_release_v141.py +296 -0
- code_mower-1.4.2/tests/test_release_v142.py +330 -0
- code_mower-1.4.2/tests/test_role_eligibility.py +451 -0
- code_mower-1.4.2/tests/test_session_current.py +493 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_work_orders.py +34 -1
- code_mower-1.4.0/src/code_mower/board.py +0 -2542
- code_mower-1.4.0/src/code_mower/context_packets.py +0 -215
- code_mower-1.4.0/src/code_mower/templates/workflows/builder-provenance.yml.j2 +0 -64
- code_mower-1.4.0/templates/workflows/builder-provenance.yml.j2 +0 -64
- code_mower-1.4.0/tests/test_board.py +0 -2735
- code_mower-1.4.0/tests/test_context_delivery.py +0 -164
- code_mower-1.4.0/tests/test_context_guided.py +0 -465
- {code_mower-1.4.0 → code_mower-1.4.2}/CODE_OF_CONDUCT.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/LICENSE +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/NOTICE +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/SUPPORT.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/requirements/requirements.txt +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/setup.cfg +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/__init__.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/_base.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/cursor_bugbot.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/gitar.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/greptile.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/adapters/qodo.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/antigravity_cli_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/antigravity_sdk_probe.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_handoff_log.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_limits.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/audit_progress.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/blind_review_artifacts.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/blind_review_coordinator.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/board_store.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/bootstrap.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/builder_experiment.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/__init__.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/arms.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/auto_discovery.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/commands.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/context_inputs.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/corpus.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/effect_report.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/evidence.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/evidence_report.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/identity.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/metrics.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/overlap.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/planning.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/policy.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/results.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/run_results.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/run_status.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/runner.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/truth.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/calibration/value_report.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/campaign_discovery.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/checks.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/claude_cli_bounce.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/claude_cli_environment.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/clear_stale.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/__init__.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/adoption_runs.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/bundle.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/doctor.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/dogfood.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/endpoints.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/errors.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/events.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/export.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/finding_outcomes.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/git_metadata.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/manifest.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/operations.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/pr_outcomes.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/productivity.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/productivity_windows.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/reports.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/setup.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/tokens.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/upload.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/cloud_client/work_types.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_calibration.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_context_packs.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_merge.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/code_mower_telemetry.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_env_preflight.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_schema_smoke.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/codex_audit_verdict.schema.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_connections.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_readiness.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/context_review.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/decisions.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/devin_api.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/audit_limits.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/cloud.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/common.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_cost.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_cost_summary.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_annotations.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_models.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_scan.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failure_selection.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_failures.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_actions_permissions.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_api.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_branch.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_config.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_human_token.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_provider.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_repo.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/github_trusted_authors.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/groups.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/jira.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/models.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/presets.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/privacy.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_api_model.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_api_model_openai.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_api_model_profiles.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_env.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_env_required.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_env_tokens.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_audit_setup.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_cli_commands.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_local_cli_probe_config.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_auth.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_evaluation.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_json.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_probe_remediation.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/provider_review_hygiene.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/providers.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/registry.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/runtime.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/runtime_github_auth.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/self_hosted_runner.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/doctor_checks/supervised_pilot.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/file_locks.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/gate_health.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/gemini_cli_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/git_identity.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/github_builder_evidence.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/grok_build_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/hermes_cli_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/jira_cloud.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/jira_mutations.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/jira_pr_sync.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/__init__.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/aider.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/antigravity_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/claude.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/codex.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/devin.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/devin_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/gemini_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/grok_build.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/hermes_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/local_llm.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/lane_configs/muse_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_cli_commands.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_bakeoff.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_calibration.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/local_llm_profiles.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_mirror.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/migration_readiness.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/muse_cli_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/next_steps.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_content.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_paths.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/package_rendering.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/plan_context.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/productivity_report.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/prompts.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_capabilities.schema.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_credentials.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/__init__.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/comments.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/exit_codes.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/git.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/github_auth.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/pr_worktree.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/process.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/repo_paths.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/text_schema.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/verdict_artifacts.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/provider_runners/workspace.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/providers/__init__.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/providers/local_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/providers/provenance.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/remote_session.schema.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/reviewer_metrics.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/reviewer_spend.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/secrets.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/slack_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/slack_contract.schema.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/slack_ingress.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/builder-experiment.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/calibration-corpus.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/context-packs.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/base-audit.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/calibration-policy.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/context-driven-quality.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/docs-design.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/generic-programming.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/operability.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/package-runtime.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/plan-conformance.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lane_prompts/security-threat-model.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/README.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/claude.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/codex.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/cursor.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/devin.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/lanes/generic.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/code_mower +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/code_mower_standalone_pin.env +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/code_mower_standalone_shadow.sh +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/run_claude_audit_pr.sh +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/run_codex_audit_pr.sh +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/run_devin_cli_audit_pr.sh +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/safe_gh_comment.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/product-support/status_report.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/providers.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/slack/app-manifest.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/needs-owner-notify.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/templates/workflows/weekly-status.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/tracker_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/tracker_queue.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/versioning.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/workflow_actionlint.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower/yaml_subset.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/dependency_links.txt +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/entry_points.txt +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/requires.txt +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/src/code_mower.egg-info/top_level.txt +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/builder-experiment.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/calibration-corpus.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/calibration-corpus.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/code-mower.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/context-packs.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/cursor/BUGBOT.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/README.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/claude.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/codex.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/cursor.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/devin.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/lanes/generic.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/acp_bridge.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/aider.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/antigravity_cli.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/claude_audit.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/claude_review.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/coderabbit_cli.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/codex.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/cursor_bugbot.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/cursor_cloud_agent.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/devin.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/devin_cli.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/gemini_cli.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/gitar.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/greptile.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/hermes_cli.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/local_llm.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/muse_cli.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers/qodo.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/providers.yml +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/reviewer-spend.example.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/reviewer-value-report.example.md +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/slack/app-manifest.json +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/audit-label-cleanup.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/blind-review-artifacts-dry-run.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-agent-pr-labeler.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-fix-round-dispatch.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/code-mower-gate-health.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/dispatch-lanes.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/hosted-bridge.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/lane-mac-runner.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/local-cli-audit.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/private-standalone-shadow.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/review-clear-stale.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/saas-reviewer-labeler.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/self-hosted-local-audit.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/templates/workflows/trailer-comment-labeler.yml.j2 +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_adoption_diagnostics.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_adoption_result_semantics.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_adoption_run_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_antigravity_cli_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_antigravity_sdk_probe.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_audit_limits.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_builder_experiment.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_calibration_effect_report.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_calibration_truth.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_discovery.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_gh_auth_and_issue_binding_817.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_campaign_retry_evidence_711.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_checks.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_claude_cli_bounce.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_clear_stale.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_client.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_git_metadata.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_manifest.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_cloud_reports.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_coderabbit_cli_audit_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_codex_audit_env_preflight.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_connections.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_graph.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_readiness.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_context_review.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_coworker_mcp.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_decisions.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_api.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_provider_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_devin_sessions.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_actions_cost_summary.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_actions_failure_selection.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_boundaries.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_github_checks.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_output.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_privacy.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_env_required.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_env_tokens.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_local_audit_setup.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_probe.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_provider_review_hygiene.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_runtime.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_self_hosted_runner.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_doctor_supervised_pilot.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_documentation.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_file_locks.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_fork_pr_guard.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_gate_automerge.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_gate_health.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_github_builder_evidence.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_hosted_dispatch_profile.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_init_actionlint.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_adoption.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_cloud.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_mutations.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_jira_pr_sync.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_local_llm_github_helpers.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_migration_setup_drift.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_next_steps.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_package_install_failure_taxonomy.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_plan_context.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_pr_outcome_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_pr_outcome_coverage.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_productivity_metrics_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_productivity_report.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_productivity_windows.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_prompts.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_credentials.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_fixture_contracts.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_local_cli.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_comments.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_git.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_github_pr.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_pr_worktree.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_process.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_repo_paths.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_text_schema.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_provider_runners_workspace.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_release_qualify.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_remote_qualification_failure_reason_819.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_remote_session.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_reviewer_finding_outcome_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_reviewer_metrics_core.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_reviewer_spend.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_session_lease.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_slack_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_slack_ingress.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_supervised_pilot_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_tracker_config.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_tracker_contract.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_tracker_queue.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_trailer_comment_labeler.py +0 -0
- {code_mower-1.4.0 → code_mower-1.4.2}/tests/test_work_type_contract.py +0 -0
|
@@ -6,6 +6,7 @@ recursive-include src/code_mower/templates/product-support *
|
|
|
6
6
|
include src/code_mower/*.json
|
|
7
7
|
recursive-include templates *.j2 *.json *.md *.yml *.yaml
|
|
8
8
|
recursive-include templates/lanes *
|
|
9
|
+
recursive-include docs *.md
|
|
9
10
|
include requirements/*.txt
|
|
10
11
|
include LICENSE
|
|
11
12
|
include NOTICE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-mower
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.2
|
|
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
|
|
@@ -45,13 +45,14 @@ The current release is supervised-pilot, bring-your-own-agent-loop software.
|
|
|
45
45
|
It is not a drop-in unattended merge gate. Humans still own credentials,
|
|
46
46
|
repository policy, reviewer promotion, and exceptional decisions.
|
|
47
47
|
|
|
48
|
-
The current
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
The current source candidate is `v1.4.2`, with target install spec
|
|
49
|
+
`code-mower==1.4.2`. Publication and installed-package qualification are pending
|
|
50
|
+
[#952](https://github.com/codemower-ai/code-mower/issues/952). The published
|
|
51
|
+
`v1.4.0` and `v1.4.1` artifacts remain unchanged. Install commands below target
|
|
52
|
+
v1.4.2 after publication; candidate rehearsals use the exact verified artifact.
|
|
51
53
|
|
|
52
|
-
Documentation on `main` follows the source on `main`.
|
|
53
|
-
|
|
54
|
-
[`v1.4.0` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.0/docs/try-in-10-minutes.md).
|
|
54
|
+
Documentation on `main` follows the source on `main`. After v1.4.2 publication, start with the
|
|
55
|
+
[`v1.4.2` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.2/docs/try-in-10-minutes.md).
|
|
55
56
|
|
|
56
57
|
## What Code Mower Adds
|
|
57
58
|
|
|
@@ -79,7 +80,7 @@ one stable `pipx` installation:
|
|
|
79
80
|
```bash
|
|
80
81
|
python3.12 --version
|
|
81
82
|
export CODE_MOWER_PYTHON="$(command -v python3.12)"
|
|
82
|
-
pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.
|
|
83
|
+
pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.2
|
|
83
84
|
command -v code-mower
|
|
84
85
|
code-mower --version
|
|
85
86
|
```
|
|
@@ -140,10 +141,16 @@ code-mower session start \
|
|
|
140
141
|
`session start` saves an operating brief and takes the local single-orchestrator
|
|
141
142
|
lease. It does not launch every selected product. The host uses the execution
|
|
142
143
|
paths available for each participant and records explicit handoffs where Code
|
|
143
|
-
Mower has no automatic transport.
|
|
144
|
+
Mower has no automatic transport. Later, from anywhere in the checkout,
|
|
145
|
+
`code-mower session show --current` finds the brief the live lease names and
|
|
146
|
+
`code-mower session lease show` reports the lease itself; neither changes state.
|
|
147
|
+
The default is 12 hours. A later process can renew or release the same session
|
|
148
|
+
ID with `session lease renew --session-id SESSION_ID` or `session lease release
|
|
149
|
+
--session-id SESSION_ID`; stop its writers before release. Use `session start
|
|
150
|
+
--dry-run` or `--no-lease` for read-only work.
|
|
144
151
|
|
|
145
152
|
Codex, Claude Code, and Cursor are qualified for the shared session, telemetry,
|
|
146
|
-
lease, and Jira-authority contract in v1.4.
|
|
153
|
+
lease, and Jira-authority contract in v1.4.2. Devin, Grok Bot, Antigravity,
|
|
147
154
|
Muse, and custom hosts are recognized for briefs and provenance, while their
|
|
148
155
|
execution remains an explicit handoff or provider-specific transport. See
|
|
149
156
|
[Participants And Sessions](docs/sessions.md) and the
|
|
@@ -251,11 +258,11 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
|
|
|
251
258
|
|
|
252
259
|
## Current Capabilities And Limits
|
|
253
260
|
|
|
254
|
-
| Area | v1.4.
|
|
261
|
+
| Area | v1.4.2 posture |
|
|
255
262
|
| --- | --- |
|
|
256
263
|
| Default builders and reviewers | Claude Code + Codex |
|
|
257
264
|
| Session hosts | Codex, Claude Code, and Cursor qualified; other identities recognized but require explicit handoff/provider transport |
|
|
258
|
-
| Devin | Maintained local builder and hosted
|
|
265
|
+
| Devin | Maintained local builder lane and an exact PR-bound hosted work-order library seam (`code_mower.devin_work_orders`, no packaged CLI command); local review remains informational and Devin is not yet a qualified peer orchestrator |
|
|
259
266
|
| Organizational context | Optional Coworker delivery to approved Claude/Codex/Devin roles |
|
|
260
267
|
| Work trackers | GitHub Issues by default; Jira Cloud is optional and guarded |
|
|
261
268
|
| Forge and merge gate | GitHub |
|
|
@@ -264,8 +271,8 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
|
|
|
264
271
|
| Slack | Command and authenticated bounded ingress foundation only; no Slack worker delivery, results, or orchestration authority |
|
|
265
272
|
|
|
266
273
|
GitLab, Bitbucket, broad unattended rollout, uncalibrated merge gates, Devin
|
|
267
|
-
peer-orchestrator/reviewer parity, a
|
|
268
|
-
worker delivery are
|
|
274
|
+
peer-orchestrator/reviewer parity, a hosted work-order CLI, a required Graphify
|
|
275
|
+
dependency, and Slack worker delivery are outside the v1.4.2 candidate. The current priorities and
|
|
269
276
|
boundaries are recorded in
|
|
270
277
|
[Current State And Roadmap](docs/current-state-and-roadmap.md).
|
|
271
278
|
|
|
@@ -278,7 +285,7 @@ boundaries are recorded in
|
|
|
278
285
|
- [Upgrade An Existing Repository](docs/upgrade-existing-repo.md)
|
|
279
286
|
- [Quickstart Reference](docs/quickstart.md)
|
|
280
287
|
- [Troubleshooting](docs/troubleshooting.md)
|
|
281
|
-
- [First Run Transcript](docs/first-run-transcript.md)
|
|
288
|
+
- [First Run Transcript](docs/first-run-transcript.md) (v1.4.0 illustrative shape, not the current v1.4.2 pin)
|
|
282
289
|
|
|
283
290
|
### Sessions, Builders, And Reviewers
|
|
284
291
|
|
|
@@ -320,7 +327,7 @@ boundaries are recorded in
|
|
|
320
327
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
321
328
|
- [Release Qualification](docs/release-qualification.md)
|
|
322
329
|
- [Public Release Checklist](docs/public-release-checklist.md)
|
|
323
|
-
- [v1.4.
|
|
330
|
+
- [v1.4.2 Release Notes](docs/v142-release-notes.md)
|
|
324
331
|
- [Release History And Archived Plans](docs/release-history.md)
|
|
325
332
|
- [Changelog](CHANGELOG.md)
|
|
326
333
|
- [Contributing](CONTRIBUTING.md)
|
|
@@ -9,13 +9,14 @@ The current release is supervised-pilot, bring-your-own-agent-loop software.
|
|
|
9
9
|
It is not a drop-in unattended merge gate. Humans still own credentials,
|
|
10
10
|
repository policy, reviewer promotion, and exceptional decisions.
|
|
11
11
|
|
|
12
|
-
The current
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
The current source candidate is `v1.4.2`, with target install spec
|
|
13
|
+
`code-mower==1.4.2`. Publication and installed-package qualification are pending
|
|
14
|
+
[#952](https://github.com/codemower-ai/code-mower/issues/952). The published
|
|
15
|
+
`v1.4.0` and `v1.4.1` artifacts remain unchanged. Install commands below target
|
|
16
|
+
v1.4.2 after publication; candidate rehearsals use the exact verified artifact.
|
|
15
17
|
|
|
16
|
-
Documentation on `main` follows the source on `main`.
|
|
17
|
-
|
|
18
|
-
[`v1.4.0` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.0/docs/try-in-10-minutes.md).
|
|
18
|
+
Documentation on `main` follows the source on `main`. After v1.4.2 publication, start with the
|
|
19
|
+
[`v1.4.2` guide](https://github.com/codemower-ai/code-mower/blob/v1.4.2/docs/try-in-10-minutes.md).
|
|
19
20
|
|
|
20
21
|
## What Code Mower Adds
|
|
21
22
|
|
|
@@ -43,7 +44,7 @@ one stable `pipx` installation:
|
|
|
43
44
|
```bash
|
|
44
45
|
python3.12 --version
|
|
45
46
|
export CODE_MOWER_PYTHON="$(command -v python3.12)"
|
|
46
|
-
pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.
|
|
47
|
+
pipx install --python "$CODE_MOWER_PYTHON" code-mower==1.4.2
|
|
47
48
|
command -v code-mower
|
|
48
49
|
code-mower --version
|
|
49
50
|
```
|
|
@@ -104,10 +105,16 @@ code-mower session start \
|
|
|
104
105
|
`session start` saves an operating brief and takes the local single-orchestrator
|
|
105
106
|
lease. It does not launch every selected product. The host uses the execution
|
|
106
107
|
paths available for each participant and records explicit handoffs where Code
|
|
107
|
-
Mower has no automatic transport.
|
|
108
|
+
Mower has no automatic transport. Later, from anywhere in the checkout,
|
|
109
|
+
`code-mower session show --current` finds the brief the live lease names and
|
|
110
|
+
`code-mower session lease show` reports the lease itself; neither changes state.
|
|
111
|
+
The default is 12 hours. A later process can renew or release the same session
|
|
112
|
+
ID with `session lease renew --session-id SESSION_ID` or `session lease release
|
|
113
|
+
--session-id SESSION_ID`; stop its writers before release. Use `session start
|
|
114
|
+
--dry-run` or `--no-lease` for read-only work.
|
|
108
115
|
|
|
109
116
|
Codex, Claude Code, and Cursor are qualified for the shared session, telemetry,
|
|
110
|
-
lease, and Jira-authority contract in v1.4.
|
|
117
|
+
lease, and Jira-authority contract in v1.4.2. Devin, Grok Bot, Antigravity,
|
|
111
118
|
Muse, and custom hosts are recognized for briefs and provenance, while their
|
|
112
119
|
execution remains an explicit handoff or provider-specific transport. See
|
|
113
120
|
[Participants And Sessions](docs/sessions.md) and the
|
|
@@ -215,11 +222,11 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
|
|
|
215
222
|
|
|
216
223
|
## Current Capabilities And Limits
|
|
217
224
|
|
|
218
|
-
| Area | v1.4.
|
|
225
|
+
| Area | v1.4.2 posture |
|
|
219
226
|
| --- | --- |
|
|
220
227
|
| Default builders and reviewers | Claude Code + Codex |
|
|
221
228
|
| Session hosts | Codex, Claude Code, and Cursor qualified; other identities recognized but require explicit handoff/provider transport |
|
|
222
|
-
| Devin | Maintained local builder and hosted
|
|
229
|
+
| Devin | Maintained local builder lane and an exact PR-bound hosted work-order library seam (`code_mower.devin_work_orders`, no packaged CLI command); local review remains informational and Devin is not yet a qualified peer orchestrator |
|
|
223
230
|
| Organizational context | Optional Coworker delivery to approved Claude/Codex/Devin roles |
|
|
224
231
|
| Work trackers | GitHub Issues by default; Jira Cloud is optional and guarded |
|
|
225
232
|
| Forge and merge gate | GitHub |
|
|
@@ -228,8 +235,8 @@ and the [Cloud Data Contract](docs/cloud-data-contract.md).
|
|
|
228
235
|
| Slack | Command and authenticated bounded ingress foundation only; no Slack worker delivery, results, or orchestration authority |
|
|
229
236
|
|
|
230
237
|
GitLab, Bitbucket, broad unattended rollout, uncalibrated merge gates, Devin
|
|
231
|
-
peer-orchestrator/reviewer parity, a
|
|
232
|
-
worker delivery are
|
|
238
|
+
peer-orchestrator/reviewer parity, a hosted work-order CLI, a required Graphify
|
|
239
|
+
dependency, and Slack worker delivery are outside the v1.4.2 candidate. The current priorities and
|
|
233
240
|
boundaries are recorded in
|
|
234
241
|
[Current State And Roadmap](docs/current-state-and-roadmap.md).
|
|
235
242
|
|
|
@@ -242,7 +249,7 @@ boundaries are recorded in
|
|
|
242
249
|
- [Upgrade An Existing Repository](docs/upgrade-existing-repo.md)
|
|
243
250
|
- [Quickstart Reference](docs/quickstart.md)
|
|
244
251
|
- [Troubleshooting](docs/troubleshooting.md)
|
|
245
|
-
- [First Run Transcript](docs/first-run-transcript.md)
|
|
252
|
+
- [First Run Transcript](docs/first-run-transcript.md) (v1.4.0 illustrative shape, not the current v1.4.2 pin)
|
|
246
253
|
|
|
247
254
|
### Sessions, Builders, And Reviewers
|
|
248
255
|
|
|
@@ -284,7 +291,7 @@ boundaries are recorded in
|
|
|
284
291
|
- [Cloud Data Contract](docs/cloud-data-contract.md)
|
|
285
292
|
- [Release Qualification](docs/release-qualification.md)
|
|
286
293
|
- [Public Release Checklist](docs/public-release-checklist.md)
|
|
287
|
-
- [v1.4.
|
|
294
|
+
- [v1.4.2 Release Notes](docs/v142-release-notes.md)
|
|
288
295
|
- [Release History And Archived Plans](docs/release-history.md)
|
|
289
296
|
- [Changelog](CHANGELOG.md)
|
|
290
297
|
- [Contributing](CONTRIBUTING.md)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Code Mower ACP Bridge Spike
|
|
2
|
+
|
|
3
|
+
Agent Client Protocol is a JSON-RPC-over-stdio protocol for driving coding-agent CLIs through a provider-neutral client. Code Mower should treat it as a research lane until one provider can run a full head-bound audit through it without weakening the existing audit invariants.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Replace per-provider shell-and-parse glue with one client primitive where the underlying CLI supports ACP.
|
|
8
|
+
|
|
9
|
+
The first useful proof is an informational audit lane that:
|
|
10
|
+
|
|
11
|
+
- accepts repo, PR number, head SHA, prompt lenses, and artifact output path;
|
|
12
|
+
- starts the configured ACP command from `CODE_MOWER_ACP_COMMAND`;
|
|
13
|
+
- sends the same trusted review doctrine used by other audit wrappers;
|
|
14
|
+
- records stdout/stderr/session metadata in a held blind-review artifact;
|
|
15
|
+
- emits a normal trailer-bearing audit comment only after schema validation.
|
|
16
|
+
|
|
17
|
+
Hermes Agent is a good future candidate because its documentation exposes
|
|
18
|
+
ACP-related surfaces. The first plain `hermes-cli` one-shot calibration now
|
|
19
|
+
exists and showed useful #347 signal, but also a known-clean blocker, an
|
|
20
|
+
infra/parse failure, and audit-input gaps on large historical diffs. That moves
|
|
21
|
+
Hermes from "unknown" to "interesting but not boring." ACP should reduce adapter
|
|
22
|
+
churn only after the provider runtime, auth, prompt, head-SHA, context-pack,
|
|
23
|
+
parser, and artifact contracts are already boring.
|
|
24
|
+
|
|
25
|
+
## Non-goals
|
|
26
|
+
|
|
27
|
+
- Do not make ACP a merge-authority lane during the spike.
|
|
28
|
+
- Do not import long-lived conversational state into Code Mower. Audits stay stateless and head-bound.
|
|
29
|
+
- Do not bypass existing wrappers for providers that already have reliable structured lanes.
|
|
30
|
+
- Do not use ACP as a dashboard, IDE, browser, or human cockpit surface.
|
|
31
|
+
|
|
32
|
+
## Acceptance Criteria
|
|
33
|
+
|
|
34
|
+
1. `code-mower doctor --profile cli_research` reports the configured ACP command and protocol.
|
|
35
|
+
2. A fixture-backed client test proves request/response framing without requiring a live provider.
|
|
36
|
+
3. A dry-run audit can generate a held artifact without posting a merge signal.
|
|
37
|
+
4. The bridge refuses to produce a done/blocked trailer when the response is missing the expected schema or head SHA.
|
|
38
|
+
5. The provider catalog continues to mark `acp_bridge` as manual and informational.
|
|
39
|
+
|
|
40
|
+
## Open Questions
|
|
41
|
+
|
|
42
|
+
- Which provider should be the first proof case?
|
|
43
|
+
- Does Hermes' ACP surface preserve the same stateless, head-bound audit
|
|
44
|
+
invariants as its one-shot CLI path?
|
|
45
|
+
- Can an ACP-backed Hermes proof resolve the #390 context/input gap better than
|
|
46
|
+
the one-shot CLI without importing long-lived session state?
|
|
47
|
+
- Should ACP responses use the provider's native schema, or should Code Mower require a normalized audit schema at the bridge boundary?
|
|
48
|
+
- Can the client capture enough token, model, and elapsed-time metadata for spend/value analytics without provider-specific code?
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
Code Mower is a local-first Python CLI plus generated GitHub support files. It
|
|
4
|
+
coordinates supervised AI builder and reviewer lanes, records bounded evidence,
|
|
5
|
+
and can optionally upload sanitized metadata to CodeMower.com.
|
|
6
|
+
|
|
7
|
+
## Product Boundaries
|
|
8
|
+
|
|
9
|
+
Code Mower owns:
|
|
10
|
+
|
|
11
|
+
- participant and role selection;
|
|
12
|
+
- operating briefs, work orders, local session leases, and recovery state;
|
|
13
|
+
- builder provenance and delivery outcomes;
|
|
14
|
+
- reviewer invocation, structured verdicts, and current-head validity;
|
|
15
|
+
- calibration, lane-promotion evidence, and local reports;
|
|
16
|
+
- generated GitHub labels, workflows, gates, and support wrappers;
|
|
17
|
+
- guarded tracker operations; and
|
|
18
|
+
- explicit context and cloud-data boundaries.
|
|
19
|
+
|
|
20
|
+
Provider products still own their models, authentication, execution sandboxes,
|
|
21
|
+
usage charges, and product-specific sessions. GitHub remains authoritative for
|
|
22
|
+
pull requests, checks, and merge state. Selecting a provider does not grant it
|
|
23
|
+
review or merge authority.
|
|
24
|
+
|
|
25
|
+
## Core Concepts
|
|
26
|
+
|
|
27
|
+
- **Participant:** a selected product identity such as Claude, Codex, or Devin.
|
|
28
|
+
- **Provider transport:** the CLI, API, GitHub app, or manual handoff used for a
|
|
29
|
+
participant's specific job.
|
|
30
|
+
- **Orchestrator:** the hosting agent by default; coordinates assignments,
|
|
31
|
+
evidence, reviews, and recovery.
|
|
32
|
+
- **Builder:** the single writer for one branch.
|
|
33
|
+
- **Reviewer lane:** a provider plus trigger, prompt/lens, verdict contract, and
|
|
34
|
+
merge posture.
|
|
35
|
+
- **Context provider:** a source of approved bounded evidence. It is separate
|
|
36
|
+
from participant roles.
|
|
37
|
+
- **Session:** a local operating brief, selected participants, optional work
|
|
38
|
+
item/context association, and single-orchestrator lease.
|
|
39
|
+
- **Calibration corpus:** known-clean, known-blocked, or subtle-risk cases used
|
|
40
|
+
to measure reviewer usefulness.
|
|
41
|
+
- **Builder experiment:** a source-free measurement record for an authoring
|
|
42
|
+
attempt and its review/merge outcome.
|
|
43
|
+
- **Cloud bundle:** an inspectable export that uploads only after an explicit
|
|
44
|
+
command.
|
|
45
|
+
|
|
46
|
+
## Runtime Shape
|
|
47
|
+
|
|
48
|
+
```mermaid
|
|
49
|
+
flowchart LR
|
|
50
|
+
U["CLI / hosting agent"] --> S["Session and work order"]
|
|
51
|
+
S --> P["Participant/provider transports"]
|
|
52
|
+
P --> B["Builder: one branch writer"]
|
|
53
|
+
P --> R["Independent reviewers"]
|
|
54
|
+
C["Optional context provider"] --> S
|
|
55
|
+
B --> G["GitHub pull request"]
|
|
56
|
+
R --> G
|
|
57
|
+
G --> M["Gate and repository merge policy"]
|
|
58
|
+
S --> L["Local Board, calibration, reports"]
|
|
59
|
+
L --> X{"Explicit cloud upload?"}
|
|
60
|
+
X -->|No| K["Keep local"]
|
|
61
|
+
X -->|Yes| H["CodeMower.com metadata"]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`code-mower session start` creates the operating state and lease. It does not
|
|
65
|
+
act as a universal process launcher. The host invokes a maintained local or
|
|
66
|
+
hosted transport where one exists and otherwise records an explicit handoff.
|
|
67
|
+
|
|
68
|
+
## Package Layout
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
src/code_mower/
|
|
72
|
+
cli.py top-level command routing
|
|
73
|
+
init.py, next_steps.py setup and first-run guidance
|
|
74
|
+
session.py participant brief and orchestrator lease
|
|
75
|
+
context_session.py protected guided context state
|
|
76
|
+
context_guided.py prepare/deliver/attach/feedback workflow
|
|
77
|
+
context_*.py connection, packet, delivery, and review contracts
|
|
78
|
+
doctor.py thin doctor CLI adapter
|
|
79
|
+
doctor_checks/ runtime, provider, GitHub, tracker, cloud checks
|
|
80
|
+
participants.py participant identity and role mapping
|
|
81
|
+
provider_registry.py reviewer lane metadata and posture
|
|
82
|
+
providers/ shared provider metadata helpers
|
|
83
|
+
provider_runners/ checkout, process, verdict, and GitHub primitives
|
|
84
|
+
lane_configs/ provider-specific lane declarations
|
|
85
|
+
*_audit_pr.py provider-specific audit adapters
|
|
86
|
+
work_orders.py planning and implementation contracts
|
|
87
|
+
builder_runs.py source-free builder provenance
|
|
88
|
+
calibration/ corpus, evidence, policy, metrics, reports
|
|
89
|
+
tracker_*.py, jira_*.py work-item contracts and guarded Jira operations
|
|
90
|
+
cloud.py, cloud_client/ export, upload, setup, and metadata operations
|
|
91
|
+
package_*.py, migration_*.py generated package and rehearsal support
|
|
92
|
+
templates/ generated config, workflows, prompts, wrappers
|
|
93
|
+
tests/ behavior, privacy, and release-hygiene tests
|
|
94
|
+
scripts/ smoke, privacy, fresh-clone, and Python helpers
|
|
95
|
+
docs/ current guides and historical release records
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Shared provider-runner modules implement stable mechanics such as isolated PR
|
|
99
|
+
checkouts, subprocess cleanup, verdict artifacts, and GitHub posting. Provider
|
|
100
|
+
adapters retain authentication, sandbox, prompt, parser, and API differences.
|
|
101
|
+
The goal is one role contract, not identical vendor mechanics.
|
|
102
|
+
|
|
103
|
+
## Session And Participant Contract
|
|
104
|
+
|
|
105
|
+
Participant selection is independent from role and merge authority. A session
|
|
106
|
+
stores normalized participants and host identity. Repository configuration and
|
|
107
|
+
the reviewer registry decide which transports and review policies apply.
|
|
108
|
+
|
|
109
|
+
One local working copy can have one mutating orchestrator lease. One PR branch
|
|
110
|
+
can have one writer. These are different controls: the session lease prevents
|
|
111
|
+
two orchestrators from coordinating the same working copy, while the branch
|
|
112
|
+
rule prevents a reviewer or second builder from changing the owner's branch.
|
|
113
|
+
|
|
114
|
+
Codex, Claude Code, and Cursor are qualified session hosts in v1.4.0. Other host
|
|
115
|
+
identities can receive the same brief and telemetry shape, but Code Mower does
|
|
116
|
+
not claim execution parity until the relevant transport and recovery behavior
|
|
117
|
+
are qualified. See [Participants And Sessions](sessions.md).
|
|
118
|
+
|
|
119
|
+
## Review And Merge Contract
|
|
120
|
+
|
|
121
|
+
Reviewers consume the PR diff and task/context contract, not the builder's raw
|
|
122
|
+
transcript. Structured verdicts bind to the exact PR head. When required
|
|
123
|
+
context is selected, they also bind to the current context input revision.
|
|
124
|
+
|
|
125
|
+
Generated workflows clear stale terminal audit labels after the head changes.
|
|
126
|
+
The repository gate combines current trusted verdict evidence with configured
|
|
127
|
+
policy. A reviewer starts informational unless its repository-specific
|
|
128
|
+
known-clean and known-blocked evidence supports promotion.
|
|
129
|
+
|
|
130
|
+
The private [Devin review adapters](devin-review-parity.md) normalize local CLI
|
|
131
|
+
and hosted v3 evidence over the existing remote lifecycle. Both remain
|
|
132
|
+
informational and revalidate the current head and context before consumption.
|
|
133
|
+
|
|
134
|
+
## Context Contract
|
|
135
|
+
|
|
136
|
+
Context connections are private machine state. Repository configuration stores
|
|
137
|
+
only a generic connection alias and policy. Packets retain bounded evidence,
|
|
138
|
+
citations, provenance, expiry, and integrity metadata in a protected local
|
|
139
|
+
store.
|
|
140
|
+
|
|
141
|
+
The provider adapter may fetch or authorize evidence, but the common Code Mower
|
|
142
|
+
packet, delivery, attachment, and review contracts decide how it enters a work
|
|
143
|
+
order or review. Every delivery reauthorizes. Context providers gain no role or
|
|
144
|
+
tracker authority. See [Context Provider Contract](context-provider-contract.md).
|
|
145
|
+
|
|
146
|
+
## Tracker Contract
|
|
147
|
+
|
|
148
|
+
`code_mower.trackerWorkItem.v1` normalizes a bounded work item. GitHub Issues is
|
|
149
|
+
the default. Jira Cloud is opt-in; queue reads and all writes use Code Mower's
|
|
150
|
+
REST transport. Writes require both repository configuration and an explicit
|
|
151
|
+
apply command and are revalidated against live scope. Connected Atlassian MCP
|
|
152
|
+
can enrich local reading but cannot authorize a mutation. See
|
|
153
|
+
[Work Tracker Data Contract](tracker-data-contract.md).
|
|
154
|
+
|
|
155
|
+
## Local And Cloud Boundary
|
|
156
|
+
|
|
157
|
+
Local runners hold source, diffs, credentials, worktrees, prompts, raw provider
|
|
158
|
+
output, and private context. The Board reads redacted local/GitHub metadata and
|
|
159
|
+
serves on loopback. It does not upload data.
|
|
160
|
+
|
|
161
|
+
Cloud export is a separate explicit operation. Default uploads exclude source,
|
|
162
|
+
raw diffs, raw model transcripts, raw stdout/stderr, auth output, issue body
|
|
163
|
+
text, credentials, and private context. Provider verdict artifacts and cloud
|
|
164
|
+
events pass Code Mower-owned schema and privacy validation before posting or
|
|
165
|
+
upload. See [Cloud Data Contract](cloud-data-contract.md).
|
|
166
|
+
|
|
167
|
+
## First-Run Flow
|
|
168
|
+
|
|
169
|
+
```mermaid
|
|
170
|
+
flowchart TD
|
|
171
|
+
A["Install pinned package"] --> B["Preview init --easy"]
|
|
172
|
+
B --> C["Generate reviewable setup"]
|
|
173
|
+
C --> D["doctor --adoption"]
|
|
174
|
+
D --> E["Open setup PR"]
|
|
175
|
+
E --> F["Run manual Codex and Claude audits"]
|
|
176
|
+
F --> G["Inspect lane status and local reports"]
|
|
177
|
+
G --> H{"Add automation?"}
|
|
178
|
+
H -->|No| I["Continue manual supervised pilot"]
|
|
179
|
+
H -->|Yes| J["Configure dispatch, gate, and runner"]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Automation credentials and auto-merge configuration follow the first manual
|
|
183
|
+
audit. Optional Coworker context, additional participants, Jira, and cloud
|
|
184
|
+
sharing are independent additions.
|
|
185
|
+
|
|
186
|
+
## Release Validation
|
|
187
|
+
|
|
188
|
+
From a contributor checkout:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
scripts/dev-python -m venv .venv
|
|
192
|
+
.venv/bin/python -m pip install -e ".[test]"
|
|
193
|
+
.venv/bin/python -m ruff check .
|
|
194
|
+
.venv/bin/python -m unittest discover -s tests
|
|
195
|
+
.venv/bin/python scripts/privacy_scan.py
|
|
196
|
+
.venv/bin/python scripts/smoke_easy_mode.py \
|
|
197
|
+
--code-mower-bin .venv/bin/code-mower --json
|
|
198
|
+
.venv/bin/python scripts/fresh_clone_rehearsal.py \
|
|
199
|
+
--repo-url . --ref HEAD --python .venv/bin/python --json
|
|
200
|
+
git diff --check
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Package-index publication and live provider campaigns are separate release
|
|
204
|
+
checks. See [Public Release Checklist](public-release-checklist.md) and
|
|
205
|
+
[Release Qualification](release-qualification.md).
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Archived Release Rehearsals
|
|
2
|
+
|
|
3
|
+
These notes are historical release-gate evidence from the alpha line. They are
|
|
4
|
+
kept for maintainers who need to reconstruct how the package path evolved, but
|
|
5
|
+
they are not first-user documentation.
|
|
6
|
+
|
|
7
|
+
For the current install rehearsal, use
|
|
8
|
+
[`../first-user-install-rehearsal.md`](../first-user-install-rehearsal.md).
|
|
9
|
+
For the current quickstart, use [`../quickstart.md`](../quickstart.md) or
|
|
10
|
+
[`../try-in-10-minutes.md`](../try-in-10-minutes.md).
|
|
11
|
+
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# v0.5.0-alpha.4 First-User Install Rehearsal
|
|
2
|
+
|
|
3
|
+
This is the recorded release-gate shape for `v0.5.0-alpha.4`. It proves the
|
|
4
|
+
source checkout can install, run easy mode, generate a starter value report, and
|
|
5
|
+
create a metadata-only cloud dry-run bundle from a fresh toy repository.
|
|
6
|
+
|
|
7
|
+
The exact temporary paths and cache output vary by machine; the important signal
|
|
8
|
+
is the command sequence and `status: pass` results.
|
|
9
|
+
|
|
10
|
+
## Local Source Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
scripts/dev-python -m venv .venv
|
|
14
|
+
.venv/bin/python -m pip install --upgrade pip
|
|
15
|
+
.venv/bin/python -m pip install -e . ruff build
|
|
16
|
+
.venv/bin/code-mower --version
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Expected output:
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
code-mower 0.5.0a4
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Release Gate
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
.venv/bin/python -m ruff check .
|
|
29
|
+
.venv/bin/python scripts/privacy_scan.py
|
|
30
|
+
.venv/bin/python -m unittest discover -s tests
|
|
31
|
+
.venv/bin/python -m compileall -q src scripts
|
|
32
|
+
.venv/bin/python -m build
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Observed summary:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
All checks passed!
|
|
39
|
+
privacy scan passed
|
|
40
|
+
Ran 54 tests ... OK
|
|
41
|
+
Successfully built code_mower-0.5.0a4.tar.gz and code_mower-0.5.0a4-py3-none-any.whl
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`python -m build` currently emits non-blocking warnings about the deprecated
|
|
45
|
+
`project.license` table form and broad YAML include patterns. The alpha.4 build
|
|
46
|
+
also verifies bytecode caches are excluded from the wheel even after
|
|
47
|
+
`compileall` runs.
|
|
48
|
+
|
|
49
|
+
## Easy-Mode Smoke
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
.venv/bin/python scripts/smoke_easy_mode.py \
|
|
53
|
+
--code-mower-bin .venv/bin/code-mower \
|
|
54
|
+
--json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Observed summary:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"mode": "code-mower-easy-mode-smoke",
|
|
62
|
+
"status": "pass"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The smoke covers:
|
|
67
|
+
|
|
68
|
+
- `code-mower providers list`
|
|
69
|
+
- `code-mower init --easy --apply`
|
|
70
|
+
- generated `smoke-tests.sh`
|
|
71
|
+
- `code-mower doctor --easy --json`
|
|
72
|
+
- wrapper rehearsal
|
|
73
|
+
- calibration plan/evidence/metrics/policy/value-report
|
|
74
|
+
- cloud export
|
|
75
|
+
- cloud upload dry run
|
|
76
|
+
|
|
77
|
+
## Fresh-Clone Rehearsal
|
|
78
|
+
|
|
79
|
+
After committing the alpha.4 changes, run:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
.venv/bin/python scripts/fresh_clone_rehearsal.py \
|
|
83
|
+
--repo-url /absolute/path/to/code-mower \
|
|
84
|
+
--ref HEAD \
|
|
85
|
+
--python .venv/bin/python \
|
|
86
|
+
--work-dir /tmp/code-mower-alpha4-fresh-clone \
|
|
87
|
+
--json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Expected summary:
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"mode": "code-mower-fresh-clone-rehearsal",
|
|
95
|
+
"status": "pass"
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Observed alpha.4 summary:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
Successfully installed PyYAML-6.0.3 code-mower-0.5.0a4
|
|
103
|
+
No broken requirements found.
|
|
104
|
+
code-mower 0.5.0a4
|
|
105
|
+
status: pass
|
|
106
|
+
```
|