code-coordinator 0.5.560__tar.gz → 0.5.561__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.560 → code_coordinator-0.5.561}/PKG-INFO +1 -1
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/ci_store.py +12 -5
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/merge_queue.py +91 -8
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/conftest.py +30 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_acceptance_drivers.py +26 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_queue.py +21 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_install_agent_wsl_bridge_3515.py +30 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_merge_queue.py +128 -2
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_throwaway_vm.py +29 -4
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/.gitignore +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/CLAUDE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/GOAL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/LICENSE +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/MANIFEST.in +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/README.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/agent.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/audit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/backup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/block_log.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/board_service.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/brain.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/bugbash.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/claim.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/cli.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/client.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/codegen.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/bugbash.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/comments.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/config.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dao.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/db.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/deps.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/drive.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/events.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/filelock.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/freshness.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/gates.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/goal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/gtk_native_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/context.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/models.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/render.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/health/units.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/hooks.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/interactive.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/mac_native_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/models.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/network.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/notify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/openapi.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/parentage.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/plans.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/progress.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/release_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/release_window.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/reports.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/review.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/self_health.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/smoke.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/smoke_tags.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/split_work.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/sql.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/test_author.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/test_report.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/tui_pty_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/usage.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/win_native_bridge.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/win_native_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/install-agent.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/pyproject.toml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/setup.cfg +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/__init__.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/backends.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_bugbash.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_client.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_db.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_events.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_gtk_native_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_init.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_install_agent_capabilities_3515.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_mac_native_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_models.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_network.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_gate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_session.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_split.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_state.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_tui_pty_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_win_native_bridge.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_win_native_driver.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/write_parity.py +0 -0
|
@@ -733,7 +733,7 @@ def is_verdictless_job(check: CheckRun, job: JobRun | None) -> bool:
|
|
|
733
733
|
|
|
734
734
|
|
|
735
735
|
def checks_are_stale(checks: list[CheckRun], base_commit_time: float | None) -> bool:
|
|
736
|
-
"""True when
|
|
736
|
+
"""True when *checks* predate *base_commit_time* (#1851).
|
|
737
737
|
|
|
738
738
|
GitHub attaches ``pull_request`` check runs to the PR's *head* SHA and
|
|
739
739
|
re-runs them on head ``synchronize`` — never on base movement — so a
|
|
@@ -742,10 +742,17 @@ def checks_are_stale(checks: list[CheckRun], base_commit_time: float | None) ->
|
|
|
742
742
|
what matters is what the base looked like when the run *began*, not when
|
|
743
743
|
it finished.
|
|
744
744
|
|
|
745
|
-
|
|
746
|
-
first
|
|
747
|
-
|
|
748
|
-
|
|
745
|
+
Originally written for the caller's all-**passing** remainder — apply
|
|
746
|
+
:func:`failed_checks`/:func:`in_flight_checks` first and pass what's
|
|
747
|
+
left, so this never contradicts "CI failed"/"CI running" with a third,
|
|
748
|
+
competing reading of the same checks. #1986 also calls this with the
|
|
749
|
+
FAILED remainder instead (``coord.merge_queue``'s ``checks_failed``
|
|
750
|
+
path): the comparison itself never inspects ``conclusion``, only
|
|
751
|
+
``started_at``, so "did this run predate the base?" is the identical
|
|
752
|
+
question either way — there is no second notion of CI staleness for the
|
|
753
|
+
red case, only a second caller asking the same one (#2096: one question,
|
|
754
|
+
one answer). Which verdict a stale run carries decides what the caller's
|
|
755
|
+
message says; it never decides whether the merge blocks. An empty
|
|
749
756
|
*checks* list (nothing to compare) reads as not-stale; the caller's own
|
|
750
757
|
"no checks" handling covers that case — see :meth:`CiStore.expects_checks`
|
|
751
758
|
and ``coord.merge_queue``'s ``checks_absent`` gate (#1904), which now
|
|
@@ -2770,9 +2770,19 @@ def _ci_checks_are_stale(
|
|
|
2770
2770
|
*,
|
|
2771
2771
|
fail_closed: bool = True,
|
|
2772
2772
|
) -> bool:
|
|
2773
|
-
"""True when *checks*
|
|
2774
|
-
|
|
2775
|
-
|
|
2773
|
+
"""True when *checks* are stale relative to *target_branch*'s current
|
|
2774
|
+
base (#1851).
|
|
2775
|
+
|
|
2776
|
+
Originally written for the caller's all-PASSING remainder (no
|
|
2777
|
+
failed/in-flight entries) — the ``checks_stale`` path below. #1986 reuses
|
|
2778
|
+
it unchanged for the FAILED remainder too: the underlying comparison
|
|
2779
|
+
(``started_at`` vs. the base's current commit time, via
|
|
2780
|
+
:func:`coord.ci_store.checks_are_stale`) never reads ``conclusion``, so
|
|
2781
|
+
"did this run see the base's current tip?" has exactly one answer
|
|
2782
|
+
regardless of which way the run concluded (#2096: one question, one
|
|
2783
|
+
answer). A stale FAILING check still blocks the merge either way — this
|
|
2784
|
+
only changes whether the refusal names the staleness, never the
|
|
2785
|
+
pass/fail verdict itself.
|
|
2776
2786
|
|
|
2777
2787
|
GitHub does not re-run ``pull_request`` workflows on a base-only move
|
|
2778
2788
|
(only on head ``synchronize``), so a green check can silently outlive the
|
|
@@ -2906,6 +2916,50 @@ def ci_stale_reason(
|
|
|
2906
2916
|
)
|
|
2907
2917
|
|
|
2908
2918
|
|
|
2919
|
+
def checks_failed_stale_suffix(
|
|
2920
|
+
failed: "list[CheckRun]",
|
|
2921
|
+
gh_ops: "GhOps | None",
|
|
2922
|
+
repo_github: str | None,
|
|
2923
|
+
target_branch: str | None,
|
|
2924
|
+
) -> str:
|
|
2925
|
+
"""Clause appended to a ``checks failed: ...`` refusal when the failing
|
|
2926
|
+
run(s) predate *target_branch*'s current base (#1986).
|
|
2927
|
+
|
|
2928
|
+
Hit while merging #1895: a `windows` check was red for `ModuleNotFoundError:
|
|
2929
|
+
No module named 'fcntl'` — a bug #1156 had already fixed on `main` 33
|
|
2930
|
+
commits before this branch's base. The gate reported it as a bare,
|
|
2931
|
+
current-looking failure, inviting either pointless debugging of a defect
|
|
2932
|
+
that no longer exists, or a `--force-merge` reasoned on "it's probably
|
|
2933
|
+
just flaky" — neither of which an operator should have to guess at when
|
|
2934
|
+
the gate already has the evidence.
|
|
2935
|
+
|
|
2936
|
+
#1851/:func:`ci_stale_reason` already answers "did this run see the
|
|
2937
|
+
base's current tip?" for a stale PASSING check; this is the exact same
|
|
2938
|
+
question for a FAILING one, so it reuses :func:`ci_staleness_note` for
|
|
2939
|
+
the anchor wording rather than inventing a second rendering of "predates
|
|
2940
|
+
the base" (#2096: one question, one answer). Callers decide staleness
|
|
2941
|
+
first via :func:`_ci_checks_are_stale` — this never makes that call
|
|
2942
|
+
itself, only renders the clause once asked to.
|
|
2943
|
+
|
|
2944
|
+
Returns ``""`` when the anchors can't be read — the same unreadable case
|
|
2945
|
+
:func:`ci_staleness_note` itself falls back on — so the caller's plain
|
|
2946
|
+
``checks failed: ...`` message prints unchanged rather than asserting
|
|
2947
|
+
staleness evidence this can't actually produce. Either way the refusal
|
|
2948
|
+
still BLOCKS: this only ever adds provenance to an existing block, never
|
|
2949
|
+
removes or downgrades it.
|
|
2950
|
+
"""
|
|
2951
|
+
note = ci_staleness_note(failed, gh_ops, repo_github, target_branch)
|
|
2952
|
+
if not note:
|
|
2953
|
+
return ""
|
|
2954
|
+
branch = target_branch or "the target branch"
|
|
2955
|
+
return (
|
|
2956
|
+
" — but that run predates the current base" + note + " — rebase "
|
|
2957
|
+
f"onto {branch} and push (`git push --force-with-lease`) and let CI "
|
|
2958
|
+
"re-run before trusting this result; a CI re-run against the same "
|
|
2959
|
+
"base cannot see a moved base"
|
|
2960
|
+
)
|
|
2961
|
+
|
|
2962
|
+
|
|
2909
2963
|
# #1826: `--force-merge` still overrides the CI gate, but the override must
|
|
2910
2964
|
# never be SILENT — the same posture `epic_closing_keyword_in_commit_forced`
|
|
2911
2965
|
# already takes for the #1318 gate. A waived stale-CI merge is precisely the
|
|
@@ -7649,11 +7703,26 @@ def process(
|
|
|
7649
7703
|
summary = ", ".join(
|
|
7650
7704
|
f"{c.name} ({c.conclusion})" for c in failed
|
|
7651
7705
|
)
|
|
7652
|
-
|
|
7653
|
-
unreadable_reason
|
|
7654
|
-
|
|
7655
|
-
|
|
7656
|
-
|
|
7706
|
+
if unreadable_reason:
|
|
7707
|
+
msg = unreadable_reason
|
|
7708
|
+
elif infra_reason:
|
|
7709
|
+
msg = infra_reason
|
|
7710
|
+
else:
|
|
7711
|
+
# #1986: preview the same staleness
|
|
7712
|
+
# provenance the live path now adds to a
|
|
7713
|
+
# bare `checks failed: ...` — see
|
|
7714
|
+
# `checks_failed_stale_suffix`'s docstring.
|
|
7715
|
+
# Preview-only: never mutates, just shows
|
|
7716
|
+
# what a real attempt would compute.
|
|
7717
|
+
msg = f"checks failed: {summary}"
|
|
7718
|
+
if _ci_checks_are_stale(
|
|
7719
|
+
failed, gh_ops, entry.repo_github,
|
|
7720
|
+
entry.target_branch, _smoke,
|
|
7721
|
+
):
|
|
7722
|
+
msg += checks_failed_stale_suffix(
|
|
7723
|
+
failed, gh_ops, entry.repo_github,
|
|
7724
|
+
entry.target_branch,
|
|
7725
|
+
)
|
|
7657
7726
|
events.append(MergeEvent(
|
|
7658
7727
|
entry, "checks_failed",
|
|
7659
7728
|
f"(dry run) would be blocked: {msg}",
|
|
@@ -8283,6 +8352,20 @@ def process(
|
|
|
8283
8352
|
# this already-confirmed streak as a flake.
|
|
8284
8353
|
entry.ci_flaky_pending = ""
|
|
8285
8354
|
msg = f"checks failed: {summary}"
|
|
8355
|
+
# #1986: a RED check can be exactly as stale as a GREEN
|
|
8356
|
+
# one (#1851) — it just looks like a current defect
|
|
8357
|
+
# instead of an obvious re-test candidate, which is what
|
|
8358
|
+
# invites either pointless debugging of a bug already
|
|
8359
|
+
# fixed on the current base, or a wrong `--force-merge`.
|
|
8360
|
+
# Reports provenance only; the entry still blocks either
|
|
8361
|
+
# way (see `checks_failed_stale_suffix`'s docstring).
|
|
8362
|
+
if _ci_checks_are_stale(
|
|
8363
|
+
failed, gh_ops, entry.repo_github, entry.target_branch,
|
|
8364
|
+
smoke,
|
|
8365
|
+
):
|
|
8366
|
+
msg += checks_failed_stale_suffix(
|
|
8367
|
+
failed, gh_ops, entry.repo_github, entry.target_branch,
|
|
8368
|
+
)
|
|
8286
8369
|
entry.error = msg
|
|
8287
8370
|
events.append(MergeEvent(entry, "checks_failed", msg))
|
|
8288
8371
|
continue # #292: skip, don't halt the group
|
|
@@ -1304,3 +1304,33 @@ def _no_frozen_coord_dir_constants():
|
|
|
1304
1304
|
_scrub_lazy_coord_dir_constants()
|
|
1305
1305
|
yield
|
|
1306
1306
|
_scrub_lazy_coord_dir_constants()
|
|
1307
|
+
|
|
1308
|
+
|
|
1309
|
+
@pytest.fixture(autouse=True)
|
|
1310
|
+
def _non_wsl_host_by_default(monkeypatch):
|
|
1311
|
+
"""#3532: ``coord.win_native_bridge.is_wsl_host`` detects the REAL host
|
|
1312
|
+
it's running on (``WSL_DISTRO_NAME``/``/proc/version``) — fine for
|
|
1313
|
+
production, but it means every ``win-native`` acceptance-driver test
|
|
1314
|
+
that doesn't scripts its own ``run_native_spec``/bridge fake implicitly
|
|
1315
|
+
assumed "whatever machine runs this test suite is not WSL". That held
|
|
1316
|
+
for every machine except dell64 (a genuine WSL2 host with a working
|
|
1317
|
+
Windows-side Python, #3519): there, ``is_wsl_host()`` legitimately
|
|
1318
|
+
returns ``True`` and ``coord.acceptance_drivers._run_win_native`` takes
|
|
1319
|
+
the real WSL->Windows bridge path instead of the scripted fake these
|
|
1320
|
+
tests set up on ``coord.win_native_driver.run_native_spec`` — a
|
|
1321
|
+
baseline-red latch (#3386), not a test bug in the assertions themselves.
|
|
1322
|
+
|
|
1323
|
+
Forcing the DEFAULT to non-WSL here, once, is the same "one question,
|
|
1324
|
+
one answer" posture as this file's other ``_no_real_*``/``_no_live_*``
|
|
1325
|
+
fixtures: every test in the suite gets a hermetic answer to "is this
|
|
1326
|
+
host WSL" regardless of which machine actually runs it. A test that
|
|
1327
|
+
means to exercise the WSL/bridge branch (``TestRunDriverWinNativeWslBridge``
|
|
1328
|
+
in ``tests/test_acceptance_drivers.py``) monkeypatches
|
|
1329
|
+
``win_native_bridge.is_wsl_host`` back to ``True`` itself, inside the
|
|
1330
|
+
test body — that call reuses this same function-scoped ``monkeypatch``
|
|
1331
|
+
fixture and so simply wins (last ``setattr`` on the same attribute),
|
|
1332
|
+
no ordering trick needed.
|
|
1333
|
+
"""
|
|
1334
|
+
import coord.win_native_bridge as win_native_bridge
|
|
1335
|
+
|
|
1336
|
+
monkeypatch.setattr(win_native_bridge, "is_wsl_host", lambda: False)
|
|
@@ -1699,6 +1699,32 @@ class TestRunDriverWinNativeWslBridge:
|
|
|
1699
1699
|
result = run_driver("win-native", "./vimcode.exe", cwd=str(tmp_path), entrypoint="native.yaml")
|
|
1700
1700
|
assert result.exit_code == 0
|
|
1701
1701
|
|
|
1702
|
+
def test_hermetic_default_beats_a_real_looking_wsl_environ(self, tmp_path, monkeypatch) -> None:
|
|
1703
|
+
"""#3532: dell64 is a genuine WSL host, so ``conftest.py``'s
|
|
1704
|
+
``_non_wsl_host_by_default`` autouse fixture must win over
|
|
1705
|
+
``is_wsl_host``'s OWN detection inputs outright — not merely happen
|
|
1706
|
+
to agree with them because the box running this particular test
|
|
1707
|
+
suite isn't WSL. Forcing ``WSL_DISTRO_NAME`` (the stronger of
|
|
1708
|
+
``is_wsl_host``'s two signals, and the one WSL sets for every
|
|
1709
|
+
interactive/non-interactive shell alike) to look exactly like
|
|
1710
|
+
dell64, and confirming the in-process (non-bridge) path still runs,
|
|
1711
|
+
proves the fixture actually overrides the real signal rather than
|
|
1712
|
+
coincidentally matching a non-WSL test runner."""
|
|
1713
|
+
monkeypatch.setenv("WSL_DISTRO_NAME", "Ubuntu")
|
|
1714
|
+
|
|
1715
|
+
spec = tmp_path / "native.yaml"
|
|
1716
|
+
spec.write_text("steps:\n - type: launch\n")
|
|
1717
|
+
|
|
1718
|
+
import coord.win_native_driver as win_native_driver
|
|
1719
|
+
|
|
1720
|
+
def fake_run_native_spec(spec_text, *, launch_command, cwd, timeout=None):
|
|
1721
|
+
return [{"id": "000 launch", "status": "pass", "message": ""}]
|
|
1722
|
+
|
|
1723
|
+
monkeypatch.setattr(win_native_driver, "run_native_spec", fake_run_native_spec)
|
|
1724
|
+
|
|
1725
|
+
result = run_driver("win-native", "./vimcode.exe", cwd=str(tmp_path), entrypoint="native.yaml")
|
|
1726
|
+
assert result.exit_code == 0
|
|
1727
|
+
|
|
1702
1728
|
|
|
1703
1729
|
class TestRunDriverMacNative:
|
|
1704
1730
|
"""#3485: the ``mac-native`` driver — the actual Quartz/AX calls, the
|
|
@@ -7364,6 +7364,27 @@ def test_merge_gate_remedy_command_falls_back_to_inspect_for_red_ci():
|
|
|
7364
7364
|
assert "drive-queue remove" not in command
|
|
7365
7365
|
|
|
7366
7366
|
|
|
7367
|
+
def test_merge_gate_remedy_command_recognizes_a_stale_checks_failed_reason():
|
|
7368
|
+
"""#1986: a RED check that predates the current base still carries the
|
|
7369
|
+
plain `checks failed` prefix (`coord/merge_queue.py`'s
|
|
7370
|
+
`checks_failed_stale_suffix` only ever APPENDS to it) — so this must
|
|
7371
|
+
keep matching here exactly as the bare #2983-less red-CI shape does
|
|
7372
|
+
above, not fall through to "not a merge-gate block" just because the
|
|
7373
|
+
message now also names the stale base."""
|
|
7374
|
+
reason = (
|
|
7375
|
+
"checks failed: windows (failure) — but that run predates the "
|
|
7376
|
+
"current base (ran against main as of 2026-08-07T03:33:48Z, main "
|
|
7377
|
+
"now 2026-08-08T01:02:03Z) — rebase onto main and push (`git push "
|
|
7378
|
+
"--force-with-lease`) and let CI re-run before trusting this "
|
|
7379
|
+
"result; a CI re-run against the same base cannot see a moved base"
|
|
7380
|
+
)
|
|
7381
|
+
assert is_merge_gate_block_reason(reason) is True
|
|
7382
|
+
command = merge_gate_remedy_command(reason, REPO, 1986)
|
|
7383
|
+
assert command == merge_plan_inspect_command(REPO)
|
|
7384
|
+
assert "revalidate" not in command
|
|
7385
|
+
assert "drive-queue remove" not in command
|
|
7386
|
+
|
|
7387
|
+
|
|
7367
7388
|
def test_merge_gate_remedy_command_falls_back_to_inspect_for_review_required():
|
|
7368
7389
|
reason = (
|
|
7369
7390
|
"review_required — coord merge's own gate reports 'review missing', "
|
{code_coordinator-0.5.560 → code_coordinator-0.5.561}/tests/test_install_agent_wsl_bridge_3515.py
RENAMED
|
@@ -73,9 +73,33 @@ exit 1
|
|
|
73
73
|
_write_exe(fake_bin / "systemctl", "#!/usr/bin/env bash\nexit 0\n")
|
|
74
74
|
for noop in ("loginctl", "claude"):
|
|
75
75
|
_write_exe(fake_bin / noop, "#!/usr/bin/env bash\nexit 0\n")
|
|
76
|
+
_write_exe(fake_bin / "grep", _GREP_STUB)
|
|
76
77
|
return fake_bin
|
|
77
78
|
|
|
78
79
|
|
|
80
|
+
#: #3532: `install-agent.sh`'s WSL-detection fallback is literally
|
|
81
|
+
#: `grep -qi microsoft /proc/version` (consulted only when `WSL_DISTRO_NAME`
|
|
82
|
+
#: is unset) — run for real, that reads the actual host's `/proc/version`,
|
|
83
|
+
#: which says "microsoft" on a genuine WSL2 host (dell64) regardless of
|
|
84
|
+
#: which branch THIS test means to exercise. Intercepting exactly that one
|
|
85
|
+
#: invocation and answering from `$COORD_TEST_PROC_VERSION_IS_WSL` (set by
|
|
86
|
+
#: `_run_installer` below, from the same `wsl=` flag the test author
|
|
87
|
+
#: already passed) makes the installer's WSL detection hermetic the same
|
|
88
|
+
#: way `tests/conftest.py`'s `_non_wsl_host_by_default` does for the Python
|
|
89
|
+
#: driver path — every OTHER `grep` call (e.g. the `python3 --version`
|
|
90
|
+
#: compatibility check) is forwarded to the real binary unchanged.
|
|
91
|
+
_GREP_STUB = """#!/usr/bin/env bash
|
|
92
|
+
if [ "$1" = "-qi" ] && [ "$2" = "microsoft" ] && [ "$3" = "/proc/version" ]; then
|
|
93
|
+
if [ "${COORD_TEST_PROC_VERSION_IS_WSL:-0}" = "1" ]; then
|
|
94
|
+
exit 0
|
|
95
|
+
else
|
|
96
|
+
exit 1
|
|
97
|
+
fi
|
|
98
|
+
fi
|
|
99
|
+
exec /usr/bin/grep "$@"
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
|
|
79
103
|
def _bridge_log(tmp_path: Path) -> Path:
|
|
80
104
|
return tmp_path / "home" / "bridge-ensure.log"
|
|
81
105
|
|
|
@@ -111,6 +135,12 @@ def _run_installer(
|
|
|
111
135
|
env["WSL_DISTRO_NAME"] = "Ubuntu"
|
|
112
136
|
else:
|
|
113
137
|
env.pop("WSL_DISTRO_NAME", None)
|
|
138
|
+
# #3532: back the installer's `/proc/version` fallback check with the
|
|
139
|
+
# same `wsl=` flag, via the `grep` stub in `_make_fake_bin`, instead of
|
|
140
|
+
# leaving it to read the REAL host's `/proc/version` — a genuine WSL2
|
|
141
|
+
# host (dell64) would otherwise always win that check regardless of
|
|
142
|
+
# what `WSL_DISTRO_NAME` above says.
|
|
143
|
+
env["COORD_TEST_PROC_VERSION_IS_WSL"] = "1" if wsl else "0"
|
|
114
144
|
return subprocess.run(
|
|
115
145
|
[POSIX_BASH, str(INSTALLER), "--machine", "testhost", *extra_args],
|
|
116
146
|
cwd=tmp_path,
|
|
@@ -44,14 +44,20 @@ def _check(
|
|
|
44
44
|
status: str = "completed",
|
|
45
45
|
conclusion: str | None = "failure",
|
|
46
46
|
run_id: str = "1",
|
|
47
|
+
started_at: float | None = None,
|
|
47
48
|
) -> CheckRun:
|
|
48
49
|
"""#1892 test helper: a `CheckRun` with a settable `run_id`, needed to
|
|
49
50
|
exercise `_ci_infra_reason`'s per-run job lookup — mirrors
|
|
50
|
-
`tests/test_ci_store.py`'s `_check`, which has no `run_id` parameter.
|
|
51
|
+
`tests/test_ci_store.py`'s `_check`, which has no `run_id` parameter.
|
|
52
|
+
|
|
53
|
+
`started_at` (#1986) lets a caller position the run before/after a
|
|
54
|
+
fake base timestamp, to exercise the `checks_failed` staleness wording
|
|
55
|
+
— defaults to `None` (unreadable anchor) exactly like every pre-#1986
|
|
56
|
+
caller of this helper, so none of them need updating."""
|
|
51
57
|
return CheckRun(
|
|
52
58
|
name=name, status=status, conclusion=conclusion,
|
|
53
59
|
url=f"https://gh/runs/{run_id}", run_id=run_id,
|
|
54
|
-
started_at=
|
|
60
|
+
started_at=started_at, completed_at=None,
|
|
55
61
|
)
|
|
56
62
|
|
|
57
63
|
|
|
@@ -9590,6 +9596,126 @@ class TestTwoGreenBranchesOneBaseMove:
|
|
|
9590
9596
|
assert gh.ts_calls == 1 # the gate's own read, and nothing more
|
|
9591
9597
|
|
|
9592
9598
|
|
|
9599
|
+
class TestChecksFailedStaleness:
|
|
9600
|
+
"""#1986: a FAILING check can be exactly as stale as a #1851 PASSING
|
|
9601
|
+
one — this issue's live incident (#1895) was a `windows` check red for
|
|
9602
|
+
`fcntl` import failure that #1156 had already fixed on `main`, 33
|
|
9603
|
+
commits before this branch's base. Unlike a stale pass (reported with
|
|
9604
|
+
full provenance since #1851), a stale failure used to be reported as a
|
|
9605
|
+
bare, current-looking defect, inviting either pointless debugging of a
|
|
9606
|
+
bug that no longer exists, or a wrong `--force-merge`.
|
|
9607
|
+
|
|
9608
|
+
Acceptance: the refusal still BLOCKS either way — only the message
|
|
9609
|
+
changes, never the decision — and a CURRENT failing check must be
|
|
9610
|
+
reported exactly as before (no staleness wording), so the signal stays
|
|
9611
|
+
meaningful."""
|
|
9612
|
+
|
|
9613
|
+
class _Gh(FakeGh):
|
|
9614
|
+
ts: float = 1000.0
|
|
9615
|
+
def get_branch_commit_timestamp(self, repo, branch):
|
|
9616
|
+
return self.ts
|
|
9617
|
+
|
|
9618
|
+
@staticmethod
|
|
9619
|
+
def _ci(failed_started_at: float | None):
|
|
9620
|
+
class _Ci:
|
|
9621
|
+
is_available = True
|
|
9622
|
+
def list_checks_for_pr(self, repo, number):
|
|
9623
|
+
return [_check("windows", started_at=failed_started_at)]
|
|
9624
|
+
return _Ci()
|
|
9625
|
+
|
|
9626
|
+
def test_stale_failure_names_both_anchors_and_still_blocks(self) -> None:
|
|
9627
|
+
items = [_q("w1", pr=99)]
|
|
9628
|
+
gh = self._Gh()
|
|
9629
|
+
events = process(items, gh, ci_store=self._ci(failed_started_at=500.0))
|
|
9630
|
+
|
|
9631
|
+
assert items[0].state == PENDING # still blocks
|
|
9632
|
+
kinds = [e.kind for e in events]
|
|
9633
|
+
assert "checks_failed" in kinds
|
|
9634
|
+
failed = [e for e in events if e.kind == "checks_failed"][0]
|
|
9635
|
+
assert failed.message.startswith("checks failed:") # #2212: drive_queue matches on this
|
|
9636
|
+
assert "predates the current base" in failed.message
|
|
9637
|
+
assert "rebase" in failed.message
|
|
9638
|
+
assert items[0].error == failed.message
|
|
9639
|
+
|
|
9640
|
+
def test_current_failure_has_no_staleness_wording(self) -> None:
|
|
9641
|
+
items = [_q("w1", pr=99)]
|
|
9642
|
+
gh = self._Gh()
|
|
9643
|
+
events = process(items, gh, ci_store=self._ci(failed_started_at=1500.0))
|
|
9644
|
+
|
|
9645
|
+
assert items[0].state == PENDING # still blocks
|
|
9646
|
+
failed = [e for e in events if e.kind == "checks_failed"][0]
|
|
9647
|
+
assert failed.message == "checks failed: windows (failure)"
|
|
9648
|
+
assert "predates the current base" not in failed.message
|
|
9649
|
+
assert "stale" not in failed.message.lower()
|
|
9650
|
+
|
|
9651
|
+
def test_stale_and_current_failure_reasons_differ(self) -> None:
|
|
9652
|
+
"""Acceptance criterion: the two reason strings must differ."""
|
|
9653
|
+
stale_items = [_q("w1", pr=99)]
|
|
9654
|
+
stale_events = process(
|
|
9655
|
+
stale_items, self._Gh(), ci_store=self._ci(failed_started_at=500.0),
|
|
9656
|
+
)
|
|
9657
|
+
current_items = [_q("w2", pr=100)]
|
|
9658
|
+
current_events = process(
|
|
9659
|
+
current_items, self._Gh(), ci_store=self._ci(failed_started_at=1500.0),
|
|
9660
|
+
)
|
|
9661
|
+
stale_msg = [e for e in stale_events if e.kind == "checks_failed"][0].message
|
|
9662
|
+
current_msg = [e for e in current_events if e.kind == "checks_failed"][0].message
|
|
9663
|
+
assert stale_msg != current_msg
|
|
9664
|
+
# Both share the same prefix — only the provenance differs.
|
|
9665
|
+
assert stale_msg.startswith("checks failed: windows (failure)")
|
|
9666
|
+
assert current_msg == "checks failed: windows (failure)"
|
|
9667
|
+
|
|
9668
|
+
def test_dry_run_previews_the_same_staleness_wording(self) -> None:
|
|
9669
|
+
items = [_q("w1", pr=99)]
|
|
9670
|
+
gh = self._Gh()
|
|
9671
|
+
events = process(
|
|
9672
|
+
items, gh, ci_store=self._ci(failed_started_at=500.0), dry_run=True,
|
|
9673
|
+
)
|
|
9674
|
+
assert items[0].state == PENDING
|
|
9675
|
+
failed = [e for e in events if e.kind == "checks_failed"][0]
|
|
9676
|
+
assert "would be blocked: checks failed:" in failed.message
|
|
9677
|
+
assert "predates the current base" in failed.message
|
|
9678
|
+
|
|
9679
|
+
def test_dry_run_current_failure_has_no_staleness_wording(self) -> None:
|
|
9680
|
+
items = [_q("w1", pr=99)]
|
|
9681
|
+
gh = self._Gh()
|
|
9682
|
+
events = process(
|
|
9683
|
+
items, gh, ci_store=self._ci(failed_started_at=1500.0), dry_run=True,
|
|
9684
|
+
)
|
|
9685
|
+
failed = [e for e in events if e.kind == "checks_failed"][0]
|
|
9686
|
+
assert failed.message == "(dry run) would be blocked: checks failed: windows (failure)"
|
|
9687
|
+
|
|
9688
|
+
def test_unreadable_base_anchor_omits_the_claim_rather_than_guessing(self) -> None:
|
|
9689
|
+
"""When the base timestamp can't be read at all, the stale-looking
|
|
9690
|
+
default inside `_ci_checks_are_stale` must NOT make this function
|
|
9691
|
+
assert staleness it has no evidence for — `ci_staleness_note`'s own
|
|
9692
|
+
anchor read fails the same way and the suffix comes back empty."""
|
|
9693
|
+
class _NoTimestampGh(FakeGh):
|
|
9694
|
+
pass
|
|
9695
|
+
|
|
9696
|
+
items = [_q("w1", pr=99)]
|
|
9697
|
+
events = process(
|
|
9698
|
+
items, _NoTimestampGh(), ci_store=self._ci(failed_started_at=500.0),
|
|
9699
|
+
)
|
|
9700
|
+
failed = [e for e in events if e.kind == "checks_failed"][0]
|
|
9701
|
+
assert failed.message == "checks failed: windows (failure)"
|
|
9702
|
+
|
|
9703
|
+
def test_checks_failed_stale_suffix_direct(self) -> None:
|
|
9704
|
+
"""Direct unit coverage of the suffix renderer, independent of the
|
|
9705
|
+
`process()` plumbing around it."""
|
|
9706
|
+
failed = [_check("windows", started_at=500.0)]
|
|
9707
|
+
suffix = mq.checks_failed_stale_suffix(
|
|
9708
|
+
failed, self._Gh(), "acme/api", "main",
|
|
9709
|
+
)
|
|
9710
|
+
assert "predates the current base" in suffix
|
|
9711
|
+
assert "rebase" in suffix
|
|
9712
|
+
|
|
9713
|
+
def test_checks_failed_stale_suffix_empty_when_anchor_unreadable(self) -> None:
|
|
9714
|
+
failed = [_check("windows", started_at=500.0)]
|
|
9715
|
+
suffix = mq.checks_failed_stale_suffix(failed, None, "acme/api", "main")
|
|
9716
|
+
assert suffix == ""
|
|
9717
|
+
|
|
9718
|
+
|
|
9593
9719
|
class TestProcessConflictedEmptyChecks:
|
|
9594
9720
|
"""#1877: a conflicted PR reports zero CI checks — GitHub can't build a
|
|
9595
9721
|
merge ref to run a `pull_request`-triggered workflow against it. Before
|
|
@@ -347,7 +347,14 @@ def test_teardown_fires_on_interrupt(stubs: dict) -> None:
|
|
|
347
347
|
# before the script installed its teardown trap, leaving no `az group
|
|
348
348
|
# delete` and a 50-attempt wait loop still running, which surfaced as
|
|
349
349
|
# the communicate() timeout rather than an honest failure.
|
|
350
|
-
|
|
350
|
+
#
|
|
351
|
+
# #3534: this is poll-and-observe already, not a fixed sleep, but a
|
|
352
|
+
# 30s ceiling was not generous enough once a Test leg runs the whole
|
|
353
|
+
# suite in parallel on a busy host -- scheduling delays alone can eat
|
|
354
|
+
# that budget before the first `ssh ... true` probe even lands in the
|
|
355
|
+
# log. Widen the ceiling; the loop still exits the instant the
|
|
356
|
+
# evidence shows up, so this costs nothing on an idle box.
|
|
357
|
+
deadline = time.monotonic() + 60.0
|
|
351
358
|
while time.monotonic() < deadline:
|
|
352
359
|
if any(c.endswith(" true") for c in _ssh_calls(stubs)):
|
|
353
360
|
break
|
|
@@ -356,13 +363,31 @@ def test_teardown_fires_on_interrupt(stubs: dict) -> None:
|
|
|
356
363
|
time.sleep(0.05)
|
|
357
364
|
else:
|
|
358
365
|
os.killpg(os.getpgid(proc.pid), signal.SIGKILL)
|
|
359
|
-
proc.communicate(timeout=
|
|
366
|
+
proc.communicate(timeout=15)
|
|
360
367
|
pytest.fail("script never reached its SSH-reachability wait loop")
|
|
361
368
|
os.killpg(os.getpgid(proc.pid), signal.SIGINT)
|
|
362
|
-
|
|
369
|
+
|
|
370
|
+
# #3534: assert teardown on its OWN observed evidence -- the `az
|
|
371
|
+
# group delete` call actually landing in the log -- with its own
|
|
372
|
+
# generous, bounded poll, rather than gating that assertion behind
|
|
373
|
+
# the *process* having fully exited and its stdout pipe having fully
|
|
374
|
+
# drained. Those are two different conditions: under heavy parallel
|
|
375
|
+
# load the pipe can take a while to drain even after teardown has
|
|
376
|
+
# already run, and `communicate()`'s one combined timeout couples
|
|
377
|
+
# "did teardown fire" to "did the pipe finish draining" -- the wrong
|
|
378
|
+
# observation for what this test is actually asserting.
|
|
379
|
+
teardown_deadline = time.monotonic() + 60.0
|
|
380
|
+
while time.monotonic() < teardown_deadline:
|
|
381
|
+
if any(c.startswith("group delete") for c in _az_calls(stubs)):
|
|
382
|
+
break
|
|
383
|
+
if proc.poll() is not None: # process already gone either way
|
|
384
|
+
break
|
|
385
|
+
time.sleep(0.05)
|
|
386
|
+
|
|
387
|
+
stdout, _ = proc.communicate(timeout=60)
|
|
363
388
|
except subprocess.TimeoutExpired:
|
|
364
389
|
os.killpg(os.getpgid(proc.pid), signal.SIGKILL)
|
|
365
|
-
proc.communicate(timeout=
|
|
390
|
+
proc.communicate(timeout=15)
|
|
366
391
|
pytest.fail("script did not exit after SIGINT")
|
|
367
392
|
|
|
368
393
|
assert proc.returncode != 0, stdout
|
|
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.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.560 → code_coordinator-0.5.561}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.560 → code_coordinator-0.5.561}/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
|