code-coordinator 0.5.498__tar.gz → 0.5.499__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.498 → code_coordinator-0.5.499}/PKG-INFO +1 -1
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/release.py +84 -7
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_release_propagate.py +137 -3
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/.gitignore +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/CLAUDE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/GOAL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/LICENSE +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/MANIFEST.in +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/README.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/agent.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/audit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/backup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/block_log.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/board_service.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/brain.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/claim.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/cli.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/client.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/codegen.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/comments.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/config.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dao.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/db.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/deps.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/drive.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/events.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/filelock.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/freshness.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/gates.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/goal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/context.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/models.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/render.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/health/units.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/hooks.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/interactive.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/models.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/network.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/notify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/openapi.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/parentage.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/plans.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/progress.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/release_window.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/reports.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/review.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/self_health.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/smoke.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/split_work.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/sql.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/test_author.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/test_report.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/usage.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/install-agent.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/pyproject.toml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/setup.cfg +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/__init__.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/backends.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/conftest.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_client.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_config.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_db.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_events.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_init.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_models.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_network.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_session.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_split.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_state.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.498 → code_coordinator-0.5.499}/tests/write_parity.py +0 -0
|
@@ -1746,6 +1746,14 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
|
|
|
1746
1746
|
+ ", ".join(spared)
|
|
1747
1747
|
)
|
|
1748
1748
|
|
|
1749
|
+
# #3365: the version each targeted host was on BEFORE this run's
|
|
1750
|
+
# forward roll — i.e. exactly the version a rollback puts it back
|
|
1751
|
+
# on. `before` is the pre-roll verify sweep already paid for in
|
|
1752
|
+
# step 3, so this is a read, not a new probe. Passed through so
|
|
1753
|
+
# `_wait_agent_back` can assert on that version rather than on mere
|
|
1754
|
+
# liveness — see its docstring for why liveness alone lied here.
|
|
1755
|
+
pre_roll_versions = _python_lane_versions(before, targets, record.target_version)
|
|
1756
|
+
|
|
1749
1757
|
down: list[str] = []
|
|
1750
1758
|
for host in targets:
|
|
1751
1759
|
machine = by_name.get(host)
|
|
@@ -1756,6 +1764,7 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
|
|
|
1756
1764
|
initiator=cli_initiator(
|
|
1757
1765
|
f"coord release propagate -> {machine.name} rollback (red gate)"
|
|
1758
1766
|
),
|
|
1767
|
+
expected_version=pre_roll_versions.get(host),
|
|
1759
1768
|
)
|
|
1760
1769
|
record.rolled_back.append(f"{host}: {detail}")
|
|
1761
1770
|
if not ok:
|
|
@@ -2935,34 +2944,98 @@ def _get(url: str, *, timeout: float) -> tuple[int | None, dict]:
|
|
|
2935
2944
|
return resp.status_code, (body if isinstance(body, dict) else {})
|
|
2936
2945
|
|
|
2937
2946
|
|
|
2938
|
-
def _wait_agent_back(
|
|
2939
|
-
|
|
2947
|
+
def _wait_agent_back(
|
|
2948
|
+
machine, *, agent_port: int, timeout: float,
|
|
2949
|
+
expected_version: str | None = None, require_change: bool = True,
|
|
2950
|
+
) -> tuple[bool, str]:
|
|
2951
|
+
"""Poll ``/health`` until the agent answers again ON THE POST-ROLLBACK
|
|
2952
|
+
VERSION — never on the first 200, which may still be the not-yet-re-execed
|
|
2953
|
+
OLD process. ``(back, version)``.
|
|
2940
2954
|
|
|
2941
2955
|
A rollback re-execs the agent process, and #2052 fault 1 is what happens
|
|
2942
2956
|
when that re-exec does not take: precision's ``coord-agent`` went
|
|
2943
2957
|
``inactive (dead)`` at the moment of the rollback and stayed there until
|
|
2944
2958
|
a human noticed. "The POST was accepted" is therefore not an outcome —
|
|
2945
2959
|
the outcome is whether the service is serving again.
|
|
2960
|
+
|
|
2961
|
+
#3365: "serving again" turned out not to be a strong enough condition
|
|
2962
|
+
either. Between the accepted ``POST /rollback`` and the re-exec actually
|
|
2963
|
+
taking, the OLD process is still listening and answers 200 with the
|
|
2964
|
+
*pre-rollback* version — a liveness signal indistinguishable from success
|
|
2965
|
+
at the moment it's observed. Reporting the first 200's version asserted
|
|
2966
|
+
the opposite of what happened: four hosts rolled back to 0.5.479 all
|
|
2967
|
+
reported "serving again on v0.5.482", the version they'd just been rolled
|
|
2968
|
+
away from. Liveness alone cannot tell "the new process is up" from "the
|
|
2969
|
+
old process hasn't gone down yet" — both are a 200 — so this now asserts
|
|
2970
|
+
on version identity instead, the same fix #1568 made for the forward
|
|
2971
|
+
``/update`` wait (:func:`coord.commands.agent_ops._wait_agents_updated`):
|
|
2972
|
+
|
|
2973
|
+
* When the caller knows the destination version — the rollback path in
|
|
2974
|
+
``coord release propagate`` reads it straight out of the pre-roll
|
|
2975
|
+
``before`` snapshot, the same version this host is rolling back TO —
|
|
2976
|
+
pass it as *expected_version* and this polls until ``/health`` reports
|
|
2977
|
+
exactly that, never returning True for anything else. The version
|
|
2978
|
+
printed by the caller is then the version verified, by construction.
|
|
2979
|
+
* When the caller has no such snapshot (``coord release rollback``, the
|
|
2980
|
+
manual break-glass command, has no forward-roll record to read a
|
|
2981
|
+
target version from) AND *require_change* is left at its default
|
|
2982
|
+
``True``, the first 200 seen is recorded as a baseline to RULE OUT
|
|
2983
|
+
rather than proof of success — it is exactly the reading a still-live
|
|
2984
|
+
old process would produce — and this waits for a *different* version
|
|
2985
|
+
to show up before returning True. A process that never re-execs keeps
|
|
2986
|
+
answering the same baseline version for the whole window and
|
|
2987
|
+
correctly times out False, instead of the old bug's instant (wrong)
|
|
2988
|
+
True on the first answer.
|
|
2989
|
+
* *require_change* exists for :func:`_rollback_host`'s retry-after-SSH-
|
|
2990
|
+
escalation call. That escalation only ever runs after a FULL prior
|
|
2991
|
+
window of nothing but non-200s — the ambiguity above (an old process
|
|
2992
|
+
that never went away) cannot apply, because the polling already
|
|
2993
|
+
proved for one whole ``timeout`` that nothing was answering. Reusing
|
|
2994
|
+
the version-change requirement there would demand a signal
|
|
2995
|
+
(a version DIFFERENT from a baseline that was never even set) this
|
|
2996
|
+
call has no way to produce, and wrongly fail a host a hard
|
|
2997
|
+
``systemctl --user restart`` genuinely revived.
|
|
2946
2998
|
"""
|
|
2947
2999
|
import time # noqa: PLC0415
|
|
2948
3000
|
|
|
2949
3001
|
deadline = time.time() + max(timeout, 1.0)
|
|
2950
3002
|
poll = min(2.0, max(timeout / 10, 0.05))
|
|
3003
|
+
baseline: str | None = None # only used when expected_version is None
|
|
3004
|
+
last_version = "?"
|
|
2951
3005
|
while True:
|
|
2952
3006
|
status, body = _get(f"http://{machine.host}:{agent_port}/health", timeout=3.0)
|
|
2953
3007
|
if status == 200:
|
|
2954
|
-
|
|
3008
|
+
version = str(body.get("version") or "?")
|
|
3009
|
+
last_version = version
|
|
3010
|
+
if expected_version is not None:
|
|
3011
|
+
if version == expected_version:
|
|
3012
|
+
return True, version
|
|
3013
|
+
elif not require_change:
|
|
3014
|
+
return True, version
|
|
3015
|
+
elif baseline is None:
|
|
3016
|
+
baseline = version
|
|
3017
|
+
elif version != baseline:
|
|
3018
|
+
return True, version
|
|
2955
3019
|
if time.time() >= deadline:
|
|
2956
|
-
return False,
|
|
3020
|
+
return False, last_version
|
|
2957
3021
|
time.sleep(poll)
|
|
2958
3022
|
|
|
2959
3023
|
|
|
2960
3024
|
def _rollback_host(
|
|
2961
|
-
machine, *, agent_port: int, timeout: float = 90.0, initiator: str | None = None
|
|
3025
|
+
machine, *, agent_port: int, timeout: float = 90.0, initiator: str | None = None,
|
|
3026
|
+
expected_version: str | None = None,
|
|
2962
3027
|
) -> tuple[bool, str]:
|
|
2963
3028
|
"""POST /rollback — back to the previous blue/green generation (#1241) —
|
|
2964
3029
|
and then put the service back on its feet.
|
|
2965
3030
|
|
|
3031
|
+
#3365: *expected_version*, when the caller has one (the pre-roll version
|
|
3032
|
+
read for this host before the forward roll that's now being undone —
|
|
3033
|
+
see the ``coord release propagate`` rollback loop), is threaded straight
|
|
3034
|
+
through to :func:`_wait_agent_back` so the wait asserts on THAT version
|
|
3035
|
+
rather than on mere liveness. Without it, ``_wait_agent_back`` falls
|
|
3036
|
+
back to its own baseline-diff check — see its docstring — rather than
|
|
3037
|
+
this function inventing a second version-identity scheme.
|
|
3038
|
+
|
|
2966
3039
|
#2052 fault 1: "a rollback that stops a service and does not restore it
|
|
2967
3040
|
leaves the fleet worse off than the failed roll did." This used to return
|
|
2968
3041
|
True the instant the agent answered 202, which is a statement about the
|
|
@@ -3020,7 +3093,10 @@ def _rollback_host(
|
|
|
3020
3093
|
# service THIS call took down.
|
|
3021
3094
|
return True, f"{note}; {sib_detail}"
|
|
3022
3095
|
|
|
3023
|
-
back, version = _wait_agent_back(
|
|
3096
|
+
back, version = _wait_agent_back(
|
|
3097
|
+
machine, agent_port=agent_port, timeout=timeout,
|
|
3098
|
+
expected_version=expected_version,
|
|
3099
|
+
)
|
|
3024
3100
|
if back:
|
|
3025
3101
|
return _back_on_target(f"rolled back; agent is serving again on v{version}")
|
|
3026
3102
|
|
|
@@ -3030,7 +3106,8 @@ def _rollback_host(
|
|
|
3030
3106
|
escalated = _escalate_restart(machine)
|
|
3031
3107
|
if escalated:
|
|
3032
3108
|
back, version = _wait_agent_back(
|
|
3033
|
-
machine, agent_port=agent_port, timeout=min(timeout, 60.0)
|
|
3109
|
+
machine, agent_port=agent_port, timeout=min(timeout, 60.0),
|
|
3110
|
+
expected_version=expected_version, require_change=False,
|
|
3034
3111
|
)
|
|
3035
3112
|
if back:
|
|
3036
3113
|
return _back_on_target(
|
|
@@ -1424,15 +1424,26 @@ def test_no_verify_stops_before_the_gate(valid_config_path, state_dir, no_networ
|
|
|
1424
1424
|
|
|
1425
1425
|
|
|
1426
1426
|
def test_release_rollback_hits_every_machine(valid_config_path, monkeypatch):
|
|
1427
|
+
"""#3365: `/health` answering with the SAME version on every poll — the
|
|
1428
|
+
still-live OLD process, not yet re-execed — must never read as success.
|
|
1429
|
+
Only a version CHANGE (here: the pre-rollback "0.4.110" giving way to
|
|
1430
|
+
the post-rollback "0.4.109") proves the new process actually took over."""
|
|
1427
1431
|
hit: list[str] = []
|
|
1432
|
+
poll_count: dict[str, int] = {}
|
|
1428
1433
|
|
|
1429
1434
|
def _fake_post(url, payload, *, timeout):
|
|
1430
1435
|
hit.append(url)
|
|
1431
1436
|
return 202, {}, ""
|
|
1432
1437
|
|
|
1438
|
+
def _fake_get(url, *, timeout):
|
|
1439
|
+
# First poll per host still sees the not-yet-re-execed old process;
|
|
1440
|
+
# the next one sees the new, reverted generation.
|
|
1441
|
+
n = poll_count.get(url, 0)
|
|
1442
|
+
poll_count[url] = n + 1
|
|
1443
|
+
return 200, {"version": "0.4.110" if n == 0 else "0.4.109"}
|
|
1444
|
+
|
|
1433
1445
|
monkeypatch.setattr(release_cmd, "_post", _fake_post)
|
|
1434
|
-
monkeypatch.setattr(release_cmd, "_get",
|
|
1435
|
-
lambda url, *, timeout: (200, {"version": "0.4.110"}))
|
|
1446
|
+
monkeypatch.setattr(release_cmd, "_get", _fake_get)
|
|
1436
1447
|
# #3364: the sibling-restart call this test isn't about — assert it's
|
|
1437
1448
|
# made in the dedicated `_rollback_host` tests below instead.
|
|
1438
1449
|
monkeypatch.setattr(
|
|
@@ -1448,6 +1459,10 @@ def test_release_rollback_hits_every_machine(valid_config_path, monkeypatch):
|
|
|
1448
1459
|
# #2052 fault 1: "rolling back" is a statement about the request. The
|
|
1449
1460
|
# outcome is whether the service is serving again.
|
|
1450
1461
|
assert "serving again" in result.output
|
|
1462
|
+
# #3365: the version reported must be the one VERIFIED after the
|
|
1463
|
+
# version changed, never the stale first answer.
|
|
1464
|
+
assert "0.4.109" in result.output
|
|
1465
|
+
assert "v0.4.110" not in result.output
|
|
1451
1466
|
|
|
1452
1467
|
|
|
1453
1468
|
def test_a_rollback_that_leaves_the_agent_dead_says_so(valid_config_path, monkeypatch):
|
|
@@ -2483,6 +2498,90 @@ def test_roll_units_reload_never_attempted_is_not_a_failure(monkeypatch):
|
|
|
2483
2498
|
assert "daemon-reload FAILED" not in detail
|
|
2484
2499
|
|
|
2485
2500
|
|
|
2501
|
+
def test_wait_agent_back_rejects_a_stuck_old_process(monkeypatch):
|
|
2502
|
+
"""#3365: the reported bug, reproduced directly. A rollback re-execs the
|
|
2503
|
+
agent, but between the accepted `POST /rollback` and the re-exec taking,
|
|
2504
|
+
the OLD process is still listening and keeps answering 200 with the
|
|
2505
|
+
PRE-rollback version. If `/health` never advances past that version for
|
|
2506
|
+
the whole window, this must time out False — not report the stale
|
|
2507
|
+
version as "serving again", which is what actually happened on 4 hosts
|
|
2508
|
+
across 2 runs in the field."""
|
|
2509
|
+
monkeypatch.setattr(
|
|
2510
|
+
release_cmd, "_get", lambda url, *, timeout: (200, {"version": "0.5.482"})
|
|
2511
|
+
)
|
|
2512
|
+
back, _version = release_cmd._wait_agent_back(_machine(), agent_port=7433, timeout=0.3)
|
|
2513
|
+
assert back is False, "a version that never changes must never read as 'back'"
|
|
2514
|
+
|
|
2515
|
+
|
|
2516
|
+
def test_wait_agent_back_with_expected_version_ignores_the_old_answer(monkeypatch):
|
|
2517
|
+
"""The `coord release propagate` rollback path knows exactly which
|
|
2518
|
+
version it's rolling back TO (the pre-roll snapshot) — passing it as
|
|
2519
|
+
`expected_version` must reject the stale first answer and wait for the
|
|
2520
|
+
real one, rather than accepting anything that merely answers 200."""
|
|
2521
|
+
calls = {"n": 0}
|
|
2522
|
+
|
|
2523
|
+
def _fake_get(url, *, timeout):
|
|
2524
|
+
calls["n"] += 1
|
|
2525
|
+
# First couple of polls: the old, not-yet-re-execed process.
|
|
2526
|
+
# Only later does the reverted generation actually answer.
|
|
2527
|
+
return 200, {"version": "0.5.482" if calls["n"] <= 2 else "0.5.479"}
|
|
2528
|
+
|
|
2529
|
+
monkeypatch.setattr(release_cmd, "_get", _fake_get)
|
|
2530
|
+
back, version = release_cmd._wait_agent_back(
|
|
2531
|
+
_machine(), agent_port=7433, timeout=5.0, expected_version="0.5.479",
|
|
2532
|
+
)
|
|
2533
|
+
assert back is True
|
|
2534
|
+
assert version == "0.5.479"
|
|
2535
|
+
|
|
2536
|
+
|
|
2537
|
+
def test_wait_agent_back_with_expected_version_times_out_if_never_reached(monkeypatch):
|
|
2538
|
+
"""If the fleet never actually reaches the expected version — e.g. the
|
|
2539
|
+
rollback itself failed silently — `_wait_agent_back` must not be fooled
|
|
2540
|
+
by a live process answering on the WRONG (old) version."""
|
|
2541
|
+
monkeypatch.setattr(
|
|
2542
|
+
release_cmd, "_get", lambda url, *, timeout: (200, {"version": "0.5.482"})
|
|
2543
|
+
)
|
|
2544
|
+
back, _version = release_cmd._wait_agent_back(
|
|
2545
|
+
_machine(), agent_port=7433, timeout=0.3, expected_version="0.5.479",
|
|
2546
|
+
)
|
|
2547
|
+
assert back is False
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
def test_wait_agent_back_accepts_a_version_change_without_an_expected_target(monkeypatch):
|
|
2551
|
+
"""`coord release rollback`, the manual break-glass command, has no
|
|
2552
|
+
forward-roll record to read a destination version from. Lacking one,
|
|
2553
|
+
a version CHANGE away from the first-seen (baseline) reading is itself
|
|
2554
|
+
proof the new process took over — the same "went away, came back"
|
|
2555
|
+
signal, expressed through version identity rather than a connectivity
|
|
2556
|
+
gap that a same-PID `execv` restart may never actually produce."""
|
|
2557
|
+
calls = {"n": 0}
|
|
2558
|
+
|
|
2559
|
+
def _fake_get(url, *, timeout):
|
|
2560
|
+
calls["n"] += 1
|
|
2561
|
+
return 200, {"version": "0.5.482" if calls["n"] == 1 else "0.5.479"}
|
|
2562
|
+
|
|
2563
|
+
monkeypatch.setattr(release_cmd, "_get", _fake_get)
|
|
2564
|
+
back, version = release_cmd._wait_agent_back(_machine(), agent_port=7433, timeout=5.0)
|
|
2565
|
+
assert back is True
|
|
2566
|
+
assert version == "0.5.479"
|
|
2567
|
+
|
|
2568
|
+
|
|
2569
|
+
def test_wait_agent_back_require_change_false_trusts_the_first_answer(monkeypatch):
|
|
2570
|
+
"""`_rollback_host`'s retry-after-SSH-escalation call passes
|
|
2571
|
+
`require_change=False`: that escalation only ever runs after a FULL
|
|
2572
|
+
prior window of nothing but non-200s, so the ambiguity a still-live old
|
|
2573
|
+
process would create cannot apply — a hard `systemctl --user restart`
|
|
2574
|
+
genuinely revived a dead service, and the first answer is trustworthy."""
|
|
2575
|
+
monkeypatch.setattr(
|
|
2576
|
+
release_cmd, "_get", lambda url, *, timeout: (200, {"version": "0.5.479"})
|
|
2577
|
+
)
|
|
2578
|
+
back, version = release_cmd._wait_agent_back(
|
|
2579
|
+
_machine(), agent_port=7433, timeout=0.3, require_change=False,
|
|
2580
|
+
)
|
|
2581
|
+
assert back is True
|
|
2582
|
+
assert version == "0.5.479"
|
|
2583
|
+
|
|
2584
|
+
|
|
2486
2585
|
def test_rollback_host_posts_the_caller_supplied_initiator(monkeypatch):
|
|
2487
2586
|
"""#2121: `_rollback_host` is the sibling of `_roll_python` above — same
|
|
2488
2587
|
fleet-automation shape, same obligation to name itself on the target
|
|
@@ -2604,7 +2703,7 @@ def test_release_propagate_red_gate_rollback_names_itself(
|
|
|
2604
2703
|
captured: list[dict] = []
|
|
2605
2704
|
monkeypatch.setattr(
|
|
2606
2705
|
release_cmd, "_rollback_host",
|
|
2607
|
-
lambda machine, *, agent_port, timeout, initiator=None: (
|
|
2706
|
+
lambda machine, *, agent_port, timeout, initiator=None, expected_version=None: (
|
|
2608
2707
|
captured.append({"machine": machine.name, "initiator": initiator}),
|
|
2609
2708
|
(True, "back up"),
|
|
2610
2709
|
)[1],
|
|
@@ -2621,6 +2720,41 @@ def test_release_propagate_red_gate_rollback_names_itself(
|
|
|
2621
2720
|
assert row["initiator"].startswith("coord release propagate -> ")
|
|
2622
2721
|
|
|
2623
2722
|
|
|
2723
|
+
def test_release_propagate_red_gate_rollback_passes_the_pre_roll_version(
|
|
2724
|
+
valid_config_path, state_dir, no_network, monkeypatch
|
|
2725
|
+
):
|
|
2726
|
+
"""#3365: the red-gate rollback loop knows exactly which version each
|
|
2727
|
+
targeted host was on before this run's forward roll — the pre-roll
|
|
2728
|
+
`before` sweep it already paid for in step 3 — and must hand that to
|
|
2729
|
+
`_rollback_host` as `expected_version` so the post-rollback wait asserts
|
|
2730
|
+
on the real destination rather than on mere liveness."""
|
|
2731
|
+
_stub_lanes(monkeypatch)
|
|
2732
|
+
_stub_verify(monkeypatch, versions={"laptop": ["0.4.110"], "server": ["0.4.110"]},
|
|
2733
|
+
severity="crit")
|
|
2734
|
+
captured: list[dict] = []
|
|
2735
|
+
monkeypatch.setattr(
|
|
2736
|
+
release_cmd, "_rollback_host",
|
|
2737
|
+
lambda machine, *, agent_port, timeout, initiator=None, expected_version=None: (
|
|
2738
|
+
captured.append(
|
|
2739
|
+
{"machine": machine.name, "expected_version": expected_version}
|
|
2740
|
+
),
|
|
2741
|
+
(True, "back up"),
|
|
2742
|
+
)[1],
|
|
2743
|
+
)
|
|
2744
|
+
result = CliRunner().invoke(
|
|
2745
|
+
main,
|
|
2746
|
+
["release", "propagate", "--config", str(valid_config_path),
|
|
2747
|
+
"--target", "0.4.111"],
|
|
2748
|
+
)
|
|
2749
|
+
assert result.exit_code == 2, result.output
|
|
2750
|
+
assert captured, "the red gate must have rolled back at least one host"
|
|
2751
|
+
for row in captured:
|
|
2752
|
+
assert row["expected_version"] == "0.4.110", (
|
|
2753
|
+
"must pass the pre-roll version, not the (unreachable) target "
|
|
2754
|
+
"the roll never actually attained"
|
|
2755
|
+
)
|
|
2756
|
+
|
|
2757
|
+
|
|
2624
2758
|
def test_release_rollback_cli_names_itself(valid_config_path, monkeypatch):
|
|
2625
2759
|
"""`coord release rollback` is the other live call site of
|
|
2626
2760
|
`_rollback_host` — same obligation."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.498 → code_coordinator-0.5.499}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|