code-coordinator 0.5.554__tar.gz → 0.5.556__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_coordinator-0.5.554 → code_coordinator-0.5.556}/PKG-INFO +3 -1
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/PKG-INFO +3 -1
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/SOURCES.txt +4 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/requires.txt +5 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/scm_file_list.json +4 -0
- code_coordinator-0.5.556/code_coordinator.egg-info/scm_version.json +8 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/acceptance_drivers.py +141 -20
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/agent.py +33 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/agent_app.py +113 -4
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/release.py +39 -9
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/drive_queue.py +143 -15
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/merge_queue.py +221 -17
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/models.py +97 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/prereqs.py +241 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/release_propagate.py +37 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/review.py +97 -4
- code_coordinator-0.5.556/coord/win_native_bridge.py +334 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/install-agent.sh +90 -5
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/pyproject.toml +37 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_acceptance_drivers.py +166 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_update.py +249 -4
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_release_propagate.py +170 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_queue.py +198 -1
- code_coordinator-0.5.556/tests/test_install_agent_capabilities_3515.py +175 -0
- code_coordinator-0.5.556/tests/test_install_agent_wsl_bridge_3515.py +172 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_merge_queue.py +360 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_prereqs.py +178 -2
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_propagate.py +53 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review.py +180 -0
- code_coordinator-0.5.556/tests/test_win_native_bridge.py +338 -0
- code_coordinator-0.5.554/code_coordinator.egg-info/scm_version.json +0 -8
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/.gitignore +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/CLAUDE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/GOAL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/LICENSE +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/MANIFEST.in +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/README.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/audit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/backup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/block_log.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/board_service.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/brain.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/bugbash.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/claim.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/cli.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/client.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/codegen.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/bugbash.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/comments.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/config.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dao.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/db.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/deps.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/drive.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/events.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/filelock.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/freshness.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/gates.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/goal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/gtk_native_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/context.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/models.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/render.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/health/units.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/hooks.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/interactive.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/mac_native_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/network.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/notify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/openapi.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/parentage.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/plans.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/progress.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/release_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/release_window.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/reports.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/self_health.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/smoke.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/smoke_tags.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/split_work.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/sql.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/test_author.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/test_report.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/tui_pty_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/usage.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/win_native_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/setup.cfg +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/__init__.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/backends.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/conftest.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_bugbash.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_client.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_db.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_events.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_gtk_native_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_init.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_mac_native_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_models.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_network.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_gate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_session.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_split.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_state.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_tui_pty_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_win_native_driver.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.554 → code_coordinator-0.5.556}/tests/write_parity.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-coordinator
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.556
|
|
4
4
|
Summary: Coordinate Claude Code workers across multiple machines and repos.
|
|
5
5
|
Author-email: John Donaghy <johnfdonaghy@gmail.com>
|
|
6
6
|
License-Expression: LicenseRef-FSL-1.1-MIT
|
|
@@ -38,6 +38,8 @@ Requires-Dist: comtypes>=1.2; sys_platform == "win32" and extra == "win-native"
|
|
|
38
38
|
Provides-Extra: mac-native
|
|
39
39
|
Requires-Dist: pyobjc-framework-Quartz>=10.0; sys_platform == "darwin" and extra == "mac-native"
|
|
40
40
|
Requires-Dist: pyobjc-framework-ApplicationServices>=10.0; sys_platform == "darwin" and extra == "mac-native"
|
|
41
|
+
Provides-Extra: gtk-native
|
|
42
|
+
Requires-Dist: PyGObject>=3.46; sys_platform == "linux" and extra == "gtk-native"
|
|
41
43
|
Provides-Extra: all
|
|
42
44
|
Requires-Dist: code-coordinator[server]; extra == "all"
|
|
43
45
|
Requires-Dist: code-coordinator[reports-xlsx]; extra == "all"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-coordinator
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.556
|
|
4
4
|
Summary: Coordinate Claude Code workers across multiple machines and repos.
|
|
5
5
|
Author-email: John Donaghy <johnfdonaghy@gmail.com>
|
|
6
6
|
License-Expression: LicenseRef-FSL-1.1-MIT
|
|
@@ -38,6 +38,8 @@ Requires-Dist: comtypes>=1.2; sys_platform == "win32" and extra == "win-native"
|
|
|
38
38
|
Provides-Extra: mac-native
|
|
39
39
|
Requires-Dist: pyobjc-framework-Quartz>=10.0; sys_platform == "darwin" and extra == "mac-native"
|
|
40
40
|
Requires-Dist: pyobjc-framework-ApplicationServices>=10.0; sys_platform == "darwin" and extra == "mac-native"
|
|
41
|
+
Provides-Extra: gtk-native
|
|
42
|
+
Requires-Dist: PyGObject>=3.46; sys_platform == "linux" and extra == "gtk-native"
|
|
41
43
|
Provides-Extra: all
|
|
42
44
|
Requires-Dist: code-coordinator[server]; extra == "all"
|
|
43
45
|
Requires-Dist: code-coordinator[reports-xlsx]; extra == "all"
|
|
@@ -173,6 +173,7 @@ coord/uat_checks.py
|
|
|
173
173
|
coord/usage.py
|
|
174
174
|
coord/usage_limits.py
|
|
175
175
|
coord/usage_rollup.py
|
|
176
|
+
coord/win_native_bridge.py
|
|
176
177
|
coord/win_native_driver.py
|
|
177
178
|
coord/worker_events.py
|
|
178
179
|
coord/agents/opencode/.gitignore
|
|
@@ -694,7 +695,9 @@ tests/test_hooks.py
|
|
|
694
695
|
tests/test_housekeeping.py
|
|
695
696
|
tests/test_human_attended_437.py
|
|
696
697
|
tests/test_init.py
|
|
698
|
+
tests/test_install_agent_capabilities_3515.py
|
|
697
699
|
tests/test_install_agent_venv_2911.py
|
|
700
|
+
tests/test_install_agent_wsl_bridge_3515.py
|
|
698
701
|
tests/test_integration.py
|
|
699
702
|
tests/test_interactive.py
|
|
700
703
|
tests/test_interactive_briefing_echo.py
|
|
@@ -877,6 +880,7 @@ tests/test_usage_rollup.py
|
|
|
877
880
|
tests/test_venv_live_install_2121.py
|
|
878
881
|
tests/test_version_single_source.py
|
|
879
882
|
tests/test_watch.py
|
|
883
|
+
tests/test_win_native_bridge.py
|
|
880
884
|
tests/test_win_native_driver.py
|
|
881
885
|
tests/test_windows_job_is_a_real_gate_2000.py
|
|
882
886
|
tests/test_worker_env_venv_isolation.py
|
{code_coordinator-0.5.554 → code_coordinator-0.5.556}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -301,6 +301,7 @@
|
|
|
301
301
|
"coord/usage.py",
|
|
302
302
|
"coord/usage_limits.py",
|
|
303
303
|
"coord/usage_rollup.py",
|
|
304
|
+
"coord/win_native_bridge.py",
|
|
304
305
|
"coord/win_native_driver.py",
|
|
305
306
|
"coord/worker_events.py",
|
|
306
307
|
"coordinator.example.yml",
|
|
@@ -721,7 +722,9 @@
|
|
|
721
722
|
"tests/test_housekeeping.py",
|
|
722
723
|
"tests/test_human_attended_437.py",
|
|
723
724
|
"tests/test_init.py",
|
|
725
|
+
"tests/test_install_agent_capabilities_3515.py",
|
|
724
726
|
"tests/test_install_agent_venv_2911.py",
|
|
727
|
+
"tests/test_install_agent_wsl_bridge_3515.py",
|
|
725
728
|
"tests/test_integration.py",
|
|
726
729
|
"tests/test_interactive.py",
|
|
727
730
|
"tests/test_interactive_briefing_echo.py",
|
|
@@ -904,6 +907,7 @@
|
|
|
904
907
|
"tests/test_venv_live_install_2121.py",
|
|
905
908
|
"tests/test_version_single_source.py",
|
|
906
909
|
"tests/test_watch.py",
|
|
910
|
+
"tests/test_win_native_bridge.py",
|
|
907
911
|
"tests/test_win_native_driver.py",
|
|
908
912
|
"tests/test_windows_job_is_a_real_gate_2000.py",
|
|
909
913
|
"tests/test_worker_env_venv_isolation.py",
|
|
@@ -78,7 +78,12 @@ in :mod:`coord.win_native_driver` — see that module's docstring for the spec
|
|
|
78
78
|
format. This adapter (:func:`_run_win_native`) is the same thin seam
|
|
79
79
|
:func:`_run_tui_pty` is: it resolves the native spec from the driver's
|
|
80
80
|
``entrypoint:`` and hands off to
|
|
81
|
-
:func:`coord.win_native_driver.run_native_spec
|
|
81
|
+
:func:`coord.win_native_driver.run_native_spec` — or, on a WSL-hosted agent
|
|
82
|
+
(dell64, ``docs/WSL_WINDOWS_WORKER.md``), to
|
|
83
|
+
:func:`coord.win_native_bridge.run_native_spec_via_bridge`, which runs the
|
|
84
|
+
spec on a real Windows-side Python found through WSL's own interop instead
|
|
85
|
+
(#3515 — see that module's docstring for why `comtypes` can never resolve
|
|
86
|
+
in-process on a WSL-hosted agent no matter what gets pip-installed there).
|
|
82
87
|
|
|
83
88
|
``mac-native`` (#3485, the macOS-native tier alongside ``win-native``)
|
|
84
89
|
launches the driven repo's real compiled ``.app``/binary and drives it with
|
|
@@ -143,6 +148,7 @@ import re
|
|
|
143
148
|
import subprocess
|
|
144
149
|
import tempfile
|
|
145
150
|
import xml.etree.ElementTree as ET
|
|
151
|
+
from collections.abc import Iterable, Mapping
|
|
146
152
|
from dataclasses import dataclass, field
|
|
147
153
|
from pathlib import Path
|
|
148
154
|
|
|
@@ -154,6 +160,92 @@ SUPPORTED_KINDS = (
|
|
|
154
160
|
"win-native", "mac-native", "gtk-native",
|
|
155
161
|
)
|
|
156
162
|
|
|
163
|
+
# #3515: the one place a machine's `capabilities` (coordinator.yml) map to
|
|
164
|
+
# the `pyproject.toml` optional-dependency extra its Tier-2 lane driver
|
|
165
|
+
# actually needs installed. No fleet roll or agent update ever pulled these
|
|
166
|
+
# in before this — a lane only worked if someone hand-installed into
|
|
167
|
+
# `~/.coord-venv`, and the next `coord agent update`/`coord release
|
|
168
|
+
# propagate` rebuilt that venv from scratch and silently wiped it (observed
|
|
169
|
+
# live 2026-10-01: `gi` hand-installed on precision, `pyte` missing
|
|
170
|
+
# everywhere a Tier-2 lane runs). Kept here, next to :data:`SUPPORTED_KINDS`
|
|
171
|
+
# — the same "one question, one answer" reasoning (epic #2096): `coord.
|
|
172
|
+
# agent_app`'s self-update, `coord.release_propagate`'s fleet roll and
|
|
173
|
+
# `install-agent.sh`'s bootstrap must all resolve a machine's required
|
|
174
|
+
# extras through this ONE mapping, never three independently-drifting
|
|
175
|
+
# copies.
|
|
176
|
+
LANE_CAPABILITY_EXTRAS: dict[str, str] = {
|
|
177
|
+
"windows": "win-native",
|
|
178
|
+
"macos": "mac-native",
|
|
179
|
+
"gtk": "gtk-native",
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def repos_requiring_tui_pty(drivers: Mapping[str, object]) -> frozenset[str]:
|
|
184
|
+
"""Repo names (keys of `coordinator.yml`'s `acceptance.drivers`) that
|
|
185
|
+
declare a ``tui-pty``-kind acceptance driver somewhere — the flat form,
|
|
186
|
+
or one of its ``routes`` (#1125 in-repo path routing).
|
|
187
|
+
|
|
188
|
+
Duck-typed (``getattr``, not an import of
|
|
189
|
+
``coord.config.AcceptanceDriverConfig``) for the same reason
|
|
190
|
+
:mod:`coord.bugbash` duck-types its own config parameter rather than
|
|
191
|
+
importing :mod:`coord.config`: this module is foundational and widely
|
|
192
|
+
imported, so taking a dependency on the config module risks a cycle the
|
|
193
|
+
other direction never needs — the same posture :data:`TIER2_LANE_KINDS`'s
|
|
194
|
+
docstring (``coord.config``) describes from the other side.
|
|
195
|
+
"""
|
|
196
|
+
out: set[str] = set()
|
|
197
|
+
for repo_name, entry in drivers.items():
|
|
198
|
+
kind = getattr(entry, "kind", "")
|
|
199
|
+
routes = getattr(entry, "routes", None) or ()
|
|
200
|
+
if kind == "tui-pty" or any(
|
|
201
|
+
getattr(route, "kind", "") == "tui-pty" for route in routes
|
|
202
|
+
):
|
|
203
|
+
out.add(repo_name)
|
|
204
|
+
return frozenset(out)
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def lane_extras_for_machine(
|
|
208
|
+
capabilities: Iterable[str],
|
|
209
|
+
*,
|
|
210
|
+
repos: Iterable[str] = (),
|
|
211
|
+
tui_pty_repos: frozenset[str] | None = None,
|
|
212
|
+
) -> list[str]:
|
|
213
|
+
"""The `pyproject.toml` lane extras a machine with *capabilities* needs
|
|
214
|
+
installed alongside `server` (#3515).
|
|
215
|
+
|
|
216
|
+
``windows``/``macos``/``gtk`` each map straight through
|
|
217
|
+
:data:`LANE_CAPABILITY_EXTRAS`. ``tui-pty`` is different: it isn't a
|
|
218
|
+
machine capability at all, it's a property of *which repos* a host
|
|
219
|
+
serves — "is this host in a repo's `tui-pty` route" — so it's derived
|
|
220
|
+
from *repos* (a machine's own `coordinator.yml` `repos:` list)
|
|
221
|
+
intersected against *tui_pty_repos* (every repo name
|
|
222
|
+
:func:`repos_requiring_tui_pty` found to declare one).
|
|
223
|
+
|
|
224
|
+
*tui_pty_repos* is ``None`` when the caller only has the machine's own
|
|
225
|
+
capabilities/repos in hand, never the fleet-wide, repo-keyed
|
|
226
|
+
`acceptance.drivers` map needed to compute it properly — the agent's own
|
|
227
|
+
in-process self-update fallback (`coord.agent_app._agent_pkg_spec`) is
|
|
228
|
+
exactly that caller. In that case this falls back to the conservative
|
|
229
|
+
default: any host that already needs a native lane extra needs
|
|
230
|
+
`tui-pty` too, because every native lane observed in #3515's own
|
|
231
|
+
incident table also needed `pyte`, and `tui-pty` is pure-Python (no
|
|
232
|
+
C-extension/version-skew cost — the same reasoning `pyproject.toml`'s
|
|
233
|
+
own comment on the extra gives), so installing it somewhere that turns
|
|
234
|
+
out not to need it costs nothing. A caller that DOES have the full
|
|
235
|
+
config (`coord.release_propagate`, which has `cfg.acceptance.drivers`)
|
|
236
|
+
passes the exact computed set instead, which may be empty even when
|
|
237
|
+
*extras* is non-empty (a win-native host that serves no `tui-pty`-kind
|
|
238
|
+
repo) — passing ``frozenset()`` explicitly opts OUT of the fallback.
|
|
239
|
+
"""
|
|
240
|
+
caps = set(capabilities)
|
|
241
|
+
extras = [extra for cap, extra in LANE_CAPABILITY_EXTRAS.items() if cap in caps]
|
|
242
|
+
if tui_pty_repos is None:
|
|
243
|
+
if extras:
|
|
244
|
+
extras.append("tui-pty")
|
|
245
|
+
elif set(repos) & tui_pty_repos:
|
|
246
|
+
extras.append("tui-pty")
|
|
247
|
+
return extras
|
|
248
|
+
|
|
157
249
|
# #2748 (IL-2): driver kinds whose `run` produces a real pass/fail verdict
|
|
158
250
|
# but NOT yet a deterministic one, because an input they depend on hasn't
|
|
159
251
|
# shipped. `web-playwright` is the one case today — the driver itself
|
|
@@ -745,20 +837,30 @@ def _run_win_native(run_command: str, cwd: str, entrypoint: str, *, timeout: int
|
|
|
745
837
|
``capture_b64`` ``PrintWindow`` snapshot) into a :class:`DriverResult`
|
|
746
838
|
the same way :func:`_run_tui_pty` does.
|
|
747
839
|
|
|
840
|
+
**The WSL case (#3515).** `ctypes.windll`/`comtypes` have no meaning
|
|
841
|
+
outside a genuine Win32 process, so a WSL-hosted ``windows``-capability
|
|
842
|
+
agent (dell64, ``docs/WSL_WINDOWS_WORKER.md``) can never run
|
|
843
|
+
:func:`coord.win_native_driver.run_native_spec` in-process no matter
|
|
844
|
+
what gets pip-installed into its own (Linux) venv. :func:`coord.
|
|
845
|
+
win_native_bridge.is_wsl_host` detects that case and routes through
|
|
846
|
+
:func:`coord.win_native_bridge.run_native_spec_via_bridge` instead,
|
|
847
|
+
which bootstraps a real Windows-side Python reachable through WSL's own
|
|
848
|
+
interop and runs the spec on THAT interpreter — see that module's
|
|
849
|
+
docstring for the full mechanism. A native-Windows agent (or any
|
|
850
|
+
non-WSL host, including every test in this suite) takes the in-process
|
|
851
|
+
path unchanged.
|
|
852
|
+
|
|
748
853
|
Raises :class:`DriverError` — never a bare exception — for a missing
|
|
749
|
-
``entrypoint:``, a spec file that doesn't exist,
|
|
750
|
-
|
|
751
|
-
:class:`coord.win_native_driver.WinNativeSpecError`)
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
854
|
+
``entrypoint:``, a spec file that doesn't exist, a malformed spec (an
|
|
855
|
+
invalid-YAML/unknown-step-type
|
|
856
|
+
:class:`coord.win_native_driver.WinNativeSpecError`), or — WSL only — a
|
|
857
|
+
:class:`coord.win_native_bridge.WinNativeBridgeError` (the Windows-side
|
|
858
|
+
Python couldn't be found/bootstrapped, or the bridge subprocess itself
|
|
859
|
+
failed to run). A process that never launches, a window that never
|
|
860
|
+
appears, or a failed probe do NOT raise either way — both
|
|
861
|
+
:func:`coord.win_native_driver.run_native_spec` and the bridge fold
|
|
862
|
+
those into individual failing entries in ``tests`` instead.
|
|
755
863
|
"""
|
|
756
|
-
from coord.win_native_driver import ( # noqa: PLC0415 — see module docstring on the deferred import
|
|
757
|
-
WinNativeRuntimeError,
|
|
758
|
-
WinNativeSpecError,
|
|
759
|
-
run_native_spec,
|
|
760
|
-
)
|
|
761
|
-
|
|
762
864
|
if not entrypoint:
|
|
763
865
|
raise DriverError(
|
|
764
866
|
"win-native driver requires an `entrypoint:` naming the native "
|
|
@@ -773,14 +875,33 @@ def _run_win_native(run_command: str, cwd: str, entrypoint: str, *, timeout: int
|
|
|
773
875
|
except OSError as e:
|
|
774
876
|
raise DriverError(f"win-native spec could not be read: {spec_path}: {e}") from e
|
|
775
877
|
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
878
|
+
from coord.win_native_bridge import ( # noqa: PLC0415 — see module docstring on the deferred import
|
|
879
|
+
WinNativeBridgeError,
|
|
880
|
+
is_wsl_host,
|
|
881
|
+
run_native_spec_via_bridge,
|
|
882
|
+
)
|
|
883
|
+
|
|
884
|
+
if is_wsl_host():
|
|
885
|
+
try:
|
|
886
|
+
tests = run_native_spec_via_bridge(
|
|
887
|
+
spec_text, run_command=run_command, cwd=cwd, timeout=timeout,
|
|
888
|
+
)
|
|
889
|
+
except WinNativeBridgeError as e:
|
|
890
|
+
raise DriverError(f"win-native WSL bridge could not run: {e}") from e
|
|
891
|
+
else:
|
|
892
|
+
from coord.win_native_driver import ( # noqa: PLC0415 — see module docstring on the deferred import
|
|
893
|
+
WinNativeRuntimeError,
|
|
894
|
+
WinNativeSpecError,
|
|
895
|
+
run_native_spec,
|
|
779
896
|
)
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
897
|
+
try:
|
|
898
|
+
tests = run_native_spec(
|
|
899
|
+
spec_text, launch_command=run_command, cwd=cwd, timeout=timeout,
|
|
900
|
+
)
|
|
901
|
+
except WinNativeSpecError as e:
|
|
902
|
+
raise DriverError(f"win-native spec is invalid: {e}") from e
|
|
903
|
+
except WinNativeRuntimeError as e:
|
|
904
|
+
raise DriverError(f"win-native driver could not run: {e}") from e
|
|
784
905
|
|
|
785
906
|
# #3510: a locked/absent interactive session reports a distinct
|
|
786
907
|
# "unavailable" status (coord.win_native_driver's session precheck),
|
|
@@ -3795,6 +3795,39 @@ internal-only change (CLAUDE.md's existing exemption), say so explicitly \
|
|
|
3795
3795
|
in your final message instead — that already satisfies the reviewer, no \
|
|
3796
3796
|
test required.
|
|
3797
3797
|
|
|
3798
|
+
#3502: this ONLY applies to `type="work"` assignments — the ones whose \
|
|
3799
|
+
merge auto-closes the linked issue (`CLOSES_ISSUE_TYPES` in \
|
|
3800
|
+
`coord/models.py`). If you were dispatched as `mock-author`, \
|
|
3801
|
+
`test-author`, or `epic-decompose`, the `issue_number` you were given is \
|
|
3802
|
+
a milestone's TRACKING issue, not one your merge closes — this marker is \
|
|
3803
|
+
meaningless on those legs and you should omit it. For `type="work"`: your \
|
|
3804
|
+
PR merging does NOT automatically mean issue it's for is \
|
|
3805
|
+
actually resolved. If merging this PR would make the coordinator \
|
|
3806
|
+
auto-close the issue, but you know the issue's own problem is NOT fully \
|
|
3807
|
+
fixed — root cause lives in another repo and only a dependent half of \
|
|
3808
|
+
the fix landed here, this PR is investigation-only (no production change, \
|
|
3809
|
+
or only one hypothesis ruled out), or you only confirmed a symptom \
|
|
3810
|
+
without fixing the cause — say so explicitly, right before your \
|
|
3811
|
+
SMOKE_TESTS block:
|
|
3812
|
+
|
|
3813
|
+
ISSUE_RESOLUTION: partial — <what remains, in one sentence>
|
|
3814
|
+
|
|
3815
|
+
or
|
|
3816
|
+
|
|
3817
|
+
ISSUE_RESOLUTION: investigation — <what you ruled out / what's still \
|
|
3818
|
+
unknown>
|
|
3819
|
+
|
|
3820
|
+
Omit the line entirely (it defaults to `resolved`, today's behaviour) \
|
|
3821
|
+
when this PR genuinely fixes the issue. A drafted-but-unfiled upstream \
|
|
3822
|
+
issue — a bullet in a design doc, a TODO comment, a line in a tracking \
|
|
3823
|
+
markdown file — is NOT "filed"; only a real GitHub issue number counts, \
|
|
3824
|
+
so don't write `partial — see quadraui issue` unless that issue actually \
|
|
3825
|
+
exists and you name its number. This is read by the coordinator's merge \
|
|
3826
|
+
gate (not posted to GitHub by you — never run `gh` commands): a `partial`/ \
|
|
3827
|
+
`investigation` here keeps the issue OPEN after your PR merges, with a \
|
|
3828
|
+
comment on the issue quoting what remains, instead of auto-closing work \
|
|
3829
|
+
that still has a reported bug live.
|
|
3830
|
+
|
|
3798
3831
|
#252: before exiting, emit a SMOKE_TESTS block telling the human what to \
|
|
3799
3832
|
manually verify. You changed the code; you know what's worth poking.
|
|
3800
3833
|
|
|
@@ -13,6 +13,7 @@ import sys
|
|
|
13
13
|
import threading
|
|
14
14
|
import time
|
|
15
15
|
import urllib.request
|
|
16
|
+
from collections.abc import Iterable
|
|
16
17
|
from pathlib import Path
|
|
17
18
|
from typing import Callable
|
|
18
19
|
|
|
@@ -32,7 +33,12 @@ from coord.platform_paths import venv_python as platform_venv_python
|
|
|
32
33
|
_log = logging.getLogger(__name__)
|
|
33
34
|
|
|
34
35
|
|
|
35
|
-
def _agent_pkg_spec(
|
|
36
|
+
def _agent_pkg_spec(
|
|
37
|
+
*,
|
|
38
|
+
capabilities: Iterable[str] = (),
|
|
39
|
+
repos: Iterable[str] = (),
|
|
40
|
+
tui_pty_repos: frozenset[str] | None = None,
|
|
41
|
+
) -> str:
|
|
36
42
|
"""What `POST /update` asks pip to install (#1237). An agent *is* the
|
|
37
43
|
server half of the package, so it must reinstall itself WITH the
|
|
38
44
|
`[server]` extra — a bare upgrade would, on a fresh venv, leave the
|
|
@@ -45,8 +51,54 @@ def _agent_pkg_spec() -> str:
|
|
|
45
51
|
(`_do_update`'s existing try/except) turns that into an explicit
|
|
46
52
|
`last_update.json` failure naming what was expected, instead of
|
|
47
53
|
guessing.
|
|
54
|
+
|
|
55
|
+
#3515: ALSO folds in whichever Tier-2 lane extras *capabilities*/*repos*
|
|
56
|
+
need — `win-native`/`mac-native`/`gtk-native`/`tui-pty`
|
|
57
|
+
(`coord.acceptance_drivers.lane_extras_for_machine`, the one mapping
|
|
58
|
+
every install surface resolves through). Before this, no fleet roll or
|
|
59
|
+
agent update ever installed a lane driver's Python deps at all: a lane
|
|
60
|
+
only worked if someone hand-installed into `~/.coord-venv`, and the next
|
|
61
|
+
blue/green swap silently wiped it. Callers default to `()`/`None` (no
|
|
62
|
+
lane extras) rather than re-deriving them here, so a caller with no
|
|
63
|
+
capabilities/repos in hand — there is none left in this codebase, but a
|
|
64
|
+
future direct call — degrades to the pre-#3515 `[server]`-only spec
|
|
65
|
+
instead of raising.
|
|
66
|
+
"""
|
|
67
|
+
from coord.acceptance_drivers import lane_extras_for_machine # noqa: PLC0415 — avoid an import cycle
|
|
68
|
+
|
|
69
|
+
extras = ["server", *lane_extras_for_machine(
|
|
70
|
+
capabilities, repos=repos, tui_pty_repos=tui_pty_repos,
|
|
71
|
+
)]
|
|
72
|
+
return _dist_pkg_spec(extra=",".join(extras))
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _tui_pty_repos_for_server(server: AgentServer) -> frozenset[str] | None:
|
|
76
|
+
"""The repo-keyed `tui-pty` set `_agent_pkg_spec` needs (#3515), read
|
|
77
|
+
straight off whatever `coordinator.yml` this agent itself last loaded.
|
|
78
|
+
|
|
79
|
+
`AgentServer` keeps that full, freshly-reloaded `Config` (`acceptance`
|
|
80
|
+
included) on `_health_config` purely so `/health`'s own local checkout
|
|
81
|
+
probe can resolve repos the same way `coord health` does — see that
|
|
82
|
+
attribute's docstring in `coord.agent.AgentServer.__init__`. There is no
|
|
83
|
+
public accessor for it (nothing outside that one `/health` probe has
|
|
84
|
+
needed one before), so this reaches the private attribute directly
|
|
85
|
+
rather than widening `AgentServer`'s public surface for a single read.
|
|
86
|
+
`None` — the honest "don't know" the agent-only fallback in
|
|
87
|
+
`coord.acceptance_drivers.lane_extras_for_machine` expects — whenever
|
|
88
|
+
this agent is config-free, predates the `acceptance:` block, or hasn't
|
|
89
|
+
loaded a config at all (every case `getattr` degrades gracefully
|
|
90
|
+
through rather than raising).
|
|
48
91
|
"""
|
|
49
|
-
|
|
92
|
+
from coord.acceptance_drivers import repos_requiring_tui_pty # noqa: PLC0415 — avoid an import cycle
|
|
93
|
+
|
|
94
|
+
cfg = getattr(server, "_health_config", None)
|
|
95
|
+
if cfg is None:
|
|
96
|
+
return None
|
|
97
|
+
acceptance = getattr(cfg, "acceptance", None)
|
|
98
|
+
drivers = getattr(acceptance, "drivers", None)
|
|
99
|
+
if drivers is None:
|
|
100
|
+
return None
|
|
101
|
+
return repos_requiring_tui_pty(drivers)
|
|
50
102
|
|
|
51
103
|
|
|
52
104
|
#: The sibling systemd *user* units `POST /restart-services` (#2069) is
|
|
@@ -1408,7 +1460,7 @@ def build_app(
|
|
|
1408
1460
|
|
|
1409
1461
|
Request body (JSON, optional)::
|
|
1410
1462
|
|
|
1411
|
-
{"target_version": "0.4.85", "force": false}
|
|
1463
|
+
{"target_version": "0.4.85", "force": false, "extras": ["gtk-native"]}
|
|
1412
1464
|
|
|
1413
1465
|
#1568: when the caller (``coord agent update``) knows exactly which
|
|
1414
1466
|
release it's asking for, it passes ``target_version``, pinning the
|
|
@@ -1417,6 +1469,19 @@ def build_app(
|
|
|
1417
1469
|
matching distribution") instead of a silent no-op. ``target_version``
|
|
1418
1470
|
is echoed back in ``last_update`` so ``/health`` lets the caller
|
|
1419
1471
|
verify the upgrade actually landed.
|
|
1472
|
+
|
|
1473
|
+
#3515: ``extras`` lets a caller that already has the fleet-wide
|
|
1474
|
+
picture in hand (``coord release propagate``, which resolves
|
|
1475
|
+
:func:`coord.release_propagate.lane_extras_for_host` against the
|
|
1476
|
+
full `coordinator.yml` — repos AND `acceptance.drivers`, not just
|
|
1477
|
+
this one agent's own capabilities) OVERRIDE this agent's own
|
|
1478
|
+
self-derived lane extras (:func:`_agent_pkg_spec`'s default, driven
|
|
1479
|
+
off ``self.capabilities``/``self.repos`` and whatever `acceptance:`
|
|
1480
|
+
this agent's own last-reloaded config happened to carry). Absent —
|
|
1481
|
+
the default, and every pre-#3515 caller — this agent derives its own
|
|
1482
|
+
extras, exactly as described there. `server` is **always** included
|
|
1483
|
+
regardless of what's passed; a caller only ever needs to name the
|
|
1484
|
+
LANE extras.
|
|
1420
1485
|
"""
|
|
1421
1486
|
is_editable, project_path = _detect_install_mode()
|
|
1422
1487
|
if is_editable:
|
|
@@ -1445,6 +1510,12 @@ def build_app(
|
|
|
1445
1510
|
body = {}
|
|
1446
1511
|
target_version = body.get("target_version") or None
|
|
1447
1512
|
force = bool(body.get("force"))
|
|
1513
|
+
raw_extras = body.get("extras")
|
|
1514
|
+
explicit_extras: list[str] | None = (
|
|
1515
|
+
[str(e) for e in raw_extras]
|
|
1516
|
+
if isinstance(raw_extras, list) and raw_extras
|
|
1517
|
+
else None
|
|
1518
|
+
)
|
|
1448
1519
|
|
|
1449
1520
|
# #2121 item 2: every install must name who asked for it. A caller
|
|
1450
1521
|
# that knows (`coord release propagate`, `coord agent update`) says
|
|
@@ -1480,9 +1551,20 @@ def build_app(
|
|
|
1480
1551
|
}
|
|
1481
1552
|
try:
|
|
1482
1553
|
venv_dir = _venv_dir()
|
|
1554
|
+
if explicit_extras is not None:
|
|
1555
|
+
lane_extras = explicit_extras
|
|
1556
|
+
else:
|
|
1557
|
+
from coord.acceptance_drivers import lane_extras_for_machine # noqa: PLC0415 — avoid an import cycle
|
|
1558
|
+
|
|
1559
|
+
lane_extras = lane_extras_for_machine(
|
|
1560
|
+
server.capabilities,
|
|
1561
|
+
repos=server.repos,
|
|
1562
|
+
tui_pty_repos=_tui_pty_repos_for_server(server),
|
|
1563
|
+
)
|
|
1564
|
+
pkg_spec = _dist_pkg_spec(extra=",".join(["server", *lane_extras]))
|
|
1483
1565
|
result = agent_update.perform_update(
|
|
1484
1566
|
venv_dir,
|
|
1485
|
-
|
|
1567
|
+
pkg_spec,
|
|
1486
1568
|
target_version=target_version,
|
|
1487
1569
|
initiator=initiator,
|
|
1488
1570
|
)
|
|
@@ -1513,6 +1595,33 @@ def build_app(
|
|
|
1513
1595
|
_write_last_update(state_dir, payload)
|
|
1514
1596
|
return
|
|
1515
1597
|
|
|
1598
|
+
# #3515: a WSL-hosted `windows`-capability agent (dell64,
|
|
1599
|
+
# docs/WSL_WINDOWS_WORKER.md) just reinstalled `win-native`
|
|
1600
|
+
# into its OWN (Linux) venv above, where `comtypes` correctly
|
|
1601
|
+
# resolves to "skip it" — this ALSO bootstraps/refreshes the
|
|
1602
|
+
# separate, real Windows-side venv `coord.win_native_bridge`
|
|
1603
|
+
# needs, the same non-fatal "warn, never fail the update"
|
|
1604
|
+
# posture `install-agent.sh`'s own bootstrap hook follows. A
|
|
1605
|
+
# failure here must never turn an otherwise-successful swap
|
|
1606
|
+
# into a reported update failure — `coord doctor`'s
|
|
1607
|
+
# `comtypes` prereq (`coord.prereqs._probe_comtypes`) is the
|
|
1608
|
+
# durable signal for this gap, not `last_update.json`.
|
|
1609
|
+
if "win-native" in lane_extras:
|
|
1610
|
+
from coord.win_native_bridge import ( # noqa: PLC0415 — avoid an import cycle
|
|
1611
|
+
WinNativeBridgeError,
|
|
1612
|
+
ensure_windows_win_native_venv,
|
|
1613
|
+
is_wsl_host,
|
|
1614
|
+
)
|
|
1615
|
+
|
|
1616
|
+
if is_wsl_host():
|
|
1617
|
+
try:
|
|
1618
|
+
ensure_windows_win_native_venv()
|
|
1619
|
+
except WinNativeBridgeError as e:
|
|
1620
|
+
_log.warning(
|
|
1621
|
+
"win-native WSL bridge bootstrap failed after "
|
|
1622
|
+
"agent update: %s", e,
|
|
1623
|
+
)
|
|
1624
|
+
|
|
1516
1625
|
# #1241: prefer the version the smoke check already read
|
|
1517
1626
|
# straight from the new slot (deterministic, no reliance on
|
|
1518
1627
|
# this process's own site-packages resolution having
|
|
@@ -1602,6 +1602,21 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
|
|
|
1602
1602
|
updated_hosts: list[str] = []
|
|
1603
1603
|
local_name = _local_machine_name(config)
|
|
1604
1604
|
|
|
1605
|
+
# #3515: resolved ONCE, up front — propagate has the full,
|
|
1606
|
+
# just-loaded `config` (every machine's `repos:` AND the repo-keyed
|
|
1607
|
+
# `acceptance.drivers` map) in hand, which is exactly the fleet-wide
|
|
1608
|
+
# picture `coord.agent_app`'s own in-agent self-update fallback does
|
|
1609
|
+
# NOT have. Passed explicitly to `_roll_python` below (even when
|
|
1610
|
+
# empty) via `rp.lane_extras_for_host`, so this run's `/update` asks
|
|
1611
|
+
# for the precise extras this host's capabilities/repos need rather
|
|
1612
|
+
# than leaving each agent to guess from its own, possibly stale,
|
|
1613
|
+
# last-reloaded config.
|
|
1614
|
+
from coord.acceptance_drivers import repos_requiring_tui_pty # noqa: PLC0415
|
|
1615
|
+
|
|
1616
|
+
tui_pty_repos = repos_requiring_tui_pty(
|
|
1617
|
+
getattr(getattr(config, "acceptance", None), "drivers", None) or {}
|
|
1618
|
+
)
|
|
1619
|
+
|
|
1605
1620
|
# #1835 review: plan_lanes() puts the daemon host's python lane first
|
|
1606
1621
|
# specifically so "a caller must never reach an endpoint its daemon
|
|
1607
1622
|
# predates" holds — but that is only true if a failure there actually
|
|
@@ -1664,6 +1679,10 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
|
|
|
1664
1679
|
ok, detail, serve_unit_ok = _roll_python(
|
|
1665
1680
|
machine, target_version=record.target_version,
|
|
1666
1681
|
agent_port=AGENT_PORT, timeout=timeout, force=force,
|
|
1682
|
+
extras=rp.lane_extras_for_host(
|
|
1683
|
+
machine.capabilities, repos=machine.repos,
|
|
1684
|
+
tui_pty_repos=tui_pty_repos,
|
|
1685
|
+
),
|
|
1667
1686
|
)
|
|
1668
1687
|
if ok:
|
|
1669
1688
|
updated_hosts.append(roll.host)
|
|
@@ -2530,7 +2549,7 @@ def _local_machine_name(config) -> str | None:
|
|
|
2530
2549
|
|
|
2531
2550
|
|
|
2532
2551
|
def _roll_python(machine, *, target_version: str, agent_port: int, timeout: float,
|
|
2533
|
-
force: bool) -> tuple[bool, str, bool]:
|
|
2552
|
+
force: bool, extras: "list[str] | None" = None) -> tuple[bool, str, bool]:
|
|
2534
2553
|
"""POST /update and wait for the agent to actually report the version.
|
|
2535
2554
|
|
|
2536
2555
|
Success is judged by the version the agent reports, never by "the POST
|
|
@@ -2559,6 +2578,14 @@ def _roll_python(machine, *, target_version: str, agent_port: int, timeout: floa
|
|
|
2559
2578
|
2026-08-10 incident's shape (dellserver's coord-serve was fine;
|
|
2560
2579
|
coord-web was what failed). Callers deciding whether it's safe to
|
|
2561
2580
|
let OTHER hosts proceed must key off ``serve_unit_ok``, not ``ok``.
|
|
2581
|
+
|
|
2582
|
+
#3515: *extras* — the python lane's pip extras BEYOND ``server``
|
|
2583
|
+
(``coord.release_propagate.lane_extras_for_host``'s result, resolved by
|
|
2584
|
+
the caller against the fleet-wide ``repos``/``acceptance.drivers``
|
|
2585
|
+
picture) — are forwarded verbatim as ``/update``'s own ``extras`` field,
|
|
2586
|
+
overriding that agent's in-process self-derivation. ``None``/``[]`` omits
|
|
2587
|
+
the field entirely, so a pre-#3515 agent (one that predates the
|
|
2588
|
+
``extras`` body key) still gets exactly the request it always has.
|
|
2562
2589
|
"""
|
|
2563
2590
|
from coord.agent_update import cli_initiator # noqa: PLC0415
|
|
2564
2591
|
from coord.commands.agent_ops import ( # noqa: PLC0415
|
|
@@ -2568,16 +2595,19 @@ def _roll_python(machine, *, target_version: str, agent_port: int, timeout: floa
|
|
|
2568
2595
|
from coord.release_verify import DAEMON_UNIT # noqa: PLC0415
|
|
2569
2596
|
|
|
2570
2597
|
pre = _fetch_pre_started_at([machine])
|
|
2598
|
+
update_body: dict = {
|
|
2599
|
+
"target_version": target_version,
|
|
2600
|
+
"force": force,
|
|
2601
|
+
# #2121: the roll names itself on the target host's audit trail.
|
|
2602
|
+
"initiator": cli_initiator(
|
|
2603
|
+
f"coord release propagate -> {machine.name} python lane"
|
|
2604
|
+
),
|
|
2605
|
+
}
|
|
2606
|
+
if extras:
|
|
2607
|
+
update_body["extras"] = extras
|
|
2571
2608
|
status, body, error = _post(
|
|
2572
2609
|
f"http://{machine.host}:{agent_port}/update",
|
|
2573
|
-
|
|
2574
|
-
"target_version": target_version,
|
|
2575
|
-
"force": force,
|
|
2576
|
-
# #2121: the roll names itself on the target host's audit trail.
|
|
2577
|
-
"initiator": cli_initiator(
|
|
2578
|
-
f"coord release propagate -> {machine.name} python lane"
|
|
2579
|
-
),
|
|
2580
|
-
},
|
|
2610
|
+
update_body,
|
|
2581
2611
|
timeout=15.0,
|
|
2582
2612
|
)
|
|
2583
2613
|
if error:
|