code-coordinator 0.5.535__tar.gz → 0.5.537__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.535 → code_coordinator-0.5.537}/PKG-INFO +1 -1
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/gate_a.py +51 -2
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/merge.py +64 -121
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/merge_queue.py +19 -15
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/milestone_dispatch.py +72 -4
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_gate_a.py +34 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_merge.py +46 -32
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_milestone_dispatch.py +156 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_revalidate.py +64 -263
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/.gitignore +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/CLAUDE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/GOAL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/LICENSE +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/MANIFEST.in +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/README.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/agent.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/audit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/backup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/block_log.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/board_service.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/brain.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/claim.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/cli.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/client.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/codegen.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/comments.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/config.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dao.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/db.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/deps.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/drive.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/events.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/filelock.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/freshness.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/gates.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/goal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/context.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/models.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/render.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/health/units.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/hooks.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/interactive.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/models.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/network.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/notify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/openapi.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/parentage.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/plans.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/progress.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/release_window.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/reports.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/review.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/self_health.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/smoke.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/split_work.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/sql.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/test_author.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/test_report.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/usage.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/install-agent.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/pyproject.toml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/setup.cfg +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/__init__.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/backends.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/conftest.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_client.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_db.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_events.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_init.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_models.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_network.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_session.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_split.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_state.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.535 → code_coordinator-0.5.537}/tests/write_parity.py +0 -0
|
@@ -137,17 +137,46 @@ def _fetch_contract(repo_cfg, config, milestone_number: int) -> str | None:
|
|
|
137
137
|
number doesn't say whether it's a directory-discovered driver's slice
|
|
138
138
|
(shared repo-root tree) or an entrypoint-linked driver's relocated one,
|
|
139
139
|
so this checks each candidate :func:`coord.acceptance.
|
|
140
|
-
gate_a_contract_candidates` returns until one exists.
|
|
140
|
+
gate_a_contract_candidates` returns until one exists.
|
|
141
|
+
|
|
142
|
+
Returns ``None`` only when every candidate genuinely 404'd — a
|
|
143
|
+
confirmed absence. Raises :class:`coord.github_ops.GhTransientError`
|
|
144
|
+
(unchanged) when a candidate's read failed because ``gh`` classified it
|
|
145
|
+
as a GitHub rate limit (:func:`coord.github_ops._classify_rate_limit`,
|
|
146
|
+
surfaced as :class:`coord.github_ops.GhRateLimitError`) rather than a
|
|
147
|
+
404: #2973's bug was exactly this distinction getting lost — a
|
|
148
|
+
rate-limited read was folded into the same ``except RuntimeError:
|
|
149
|
+
continue`` as a real 404, so "I could not tell" silently became "it
|
|
150
|
+
does not exist". A transient failure on ANY candidate makes the whole
|
|
151
|
+
read inconclusive (a later candidate 404'ing doesn't confirm the
|
|
152
|
+
transiently-failed one is absent too), so it takes priority over a
|
|
153
|
+
clean ``None`` even if a later candidate genuinely 404s.
|
|
154
|
+
|
|
155
|
+
Narrower than it may sound: only a rate limit is currently classified
|
|
156
|
+
this way — a plain non-zero ``gh`` exit that isn't a rate limit (a bad
|
|
157
|
+
token, a genuine network failure, ``gh`` missing) still raises a plain
|
|
158
|
+
``RuntimeError``/:class:`coord.github_ops.GhError` and is still folded
|
|
159
|
+
into ``continue`` below, same as before this fix. Tracked as a
|
|
160
|
+
follow-up rather than widened here, since ``_is_transient_error``-style
|
|
161
|
+
reclassification of those cases is a broader, separately-reviewable
|
|
162
|
+
change to ``coord.github_ops._gh`` itself.
|
|
163
|
+
"""
|
|
141
164
|
from coord import github_ops # noqa: PLC0415
|
|
142
165
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
143
166
|
|
|
167
|
+
transient: github_ops.GhTransientError | None = None
|
|
144
168
|
for path in gate_a_contract_candidates(config, repo_cfg.name, milestone_number):
|
|
145
169
|
try:
|
|
146
170
|
return github_ops.get_repo_file(
|
|
147
171
|
repo_cfg.github, path, branch=repo_cfg.default_branch,
|
|
148
172
|
)
|
|
173
|
+
except github_ops.GhTransientError as e:
|
|
174
|
+
transient = transient or e
|
|
175
|
+
continue
|
|
149
176
|
except RuntimeError:
|
|
150
177
|
continue
|
|
178
|
+
if transient is not None:
|
|
179
|
+
raise transient
|
|
151
180
|
return None
|
|
152
181
|
|
|
153
182
|
|
|
@@ -216,7 +245,27 @@ def gate_a(
|
|
|
216
245
|
sys.exit(2)
|
|
217
246
|
milestone_number = int(milestone_number)
|
|
218
247
|
|
|
219
|
-
|
|
248
|
+
try:
|
|
249
|
+
contract_text = _fetch_contract(repo_cfg, cfg, milestone_number)
|
|
250
|
+
except github_ops.GhTransientError as e:
|
|
251
|
+
# #2973: a failed READ is a different claim than a confirmed
|
|
252
|
+
# ABSENCE — only the latter justifies telling the caller to
|
|
253
|
+
# dispatch `coord acceptance mock` (which, against a milestone
|
|
254
|
+
# that already has an approved contract, produces a duplicate/
|
|
255
|
+
# conflicting one). Mirror the issue-fetch path just above, which
|
|
256
|
+
# already reports this correctly: name the real cause and ask for
|
|
257
|
+
# a retry, print no remedy.
|
|
258
|
+
click.echo(
|
|
259
|
+
f"error: could not read the Gate-A contract for ms-{milestone_number} "
|
|
260
|
+
f"({repo}#{tracking_issue}): {e}",
|
|
261
|
+
err=True,
|
|
262
|
+
)
|
|
263
|
+
click.echo(
|
|
264
|
+
" This is a failed read, not a confirmed absence — the contract "
|
|
265
|
+
"may well exist. Retry once the rate limit clears.",
|
|
266
|
+
err=True,
|
|
267
|
+
)
|
|
268
|
+
sys.exit(1)
|
|
220
269
|
if contract_text is None:
|
|
221
270
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
222
271
|
|
|
@@ -137,7 +137,6 @@ def _apply_revalidation(items, board, config, gh_ops, *, dry_run: bool, skip_rev
|
|
|
137
137
|
|
|
138
138
|
def _apply_ci_revalidation(
|
|
139
139
|
items, board, config, ci_store, gh_ops, *, dry_run: bool,
|
|
140
|
-
poll_sleep=None, poll_clock=None,
|
|
141
140
|
) -> set[str]:
|
|
142
141
|
"""#1851: the ``--revalidate`` arm for CI staleness — the CI analogue of
|
|
143
142
|
:func:`_apply_revalidation`'s stale-local-verdict arm, resolving a
|
|
@@ -147,64 +146,35 @@ def _apply_ci_revalidation(
|
|
|
147
146
|
outlive the base it actually validated even when the local Test verdict
|
|
148
147
|
is perfectly fresh).
|
|
149
148
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
149
|
+
#3276: every candidate :func:`coord.merge_queue.ci_revalidation_candidates`
|
|
150
|
+
returns is, by that function's own contract, blocked *solely* on CI
|
|
151
|
+
staleness — and the remedy that would have been here,
|
|
152
|
+
:meth:`coord.ci_store.CiStore.rerun_for_pr`, is a same-base ``gh run
|
|
153
|
+
rerun`` that a staleness reading (the base moved; the check didn't) can
|
|
154
|
+
never satisfy. #3266 already established exactly that and fixed the two
|
|
155
|
+
unattended call sites (``merge_queue.process()``'s own #2197 auto-rerun
|
|
156
|
+
and ``coord.commands.drive_queue._run_auto_revalidate_checks_stale``) to
|
|
157
|
+
stop spending a CI cycle on it — see ``MAX_CI_STALE_RERUNS``'s comment in
|
|
158
|
+
``coord/merge_queue.py``. This CLI arm was left as a disclosed scope cut
|
|
159
|
+
(opt-in, human-invoked, no budget counter) with a docstring promising a
|
|
160
|
+
"tracked follow-up" that was never filed as an issue — #3276 is that
|
|
161
|
+
follow-up. So: no candidate here is ever handed to ``rerun_for_pr``
|
|
162
|
+
anymore. Each one gets the rebase remedy on stdout instead, both under
|
|
163
|
+
``--dry-run`` and for real — the two cases are identical now because
|
|
164
|
+
nothing is actually triggered either way (#3276's acceptance: ``--dry-
|
|
165
|
+
run`` must say the same thing it would do).
|
|
157
166
|
|
|
158
167
|
Opt-in behind ``--revalidate`` exactly like :func:`_apply_revalidation`
|
|
159
|
-
— never called from auto-drain (see ``docs/DRIVE_QUEUE.md``).
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
registration gap
|
|
166
|
-
|
|
167
|
-
synthetic ``unknown`` conclusion and blocks exactly like a genuinely
|
|
168
|
-
broken CI would. :func:`coord.ci_store.wait_for_ci_settle` closes that
|
|
169
|
-
gap with a bounded poll right here, so the caller's subsequent
|
|
170
|
-
``process()`` call sees a real, resolved result — pass or fail — for the
|
|
171
|
-
common case.
|
|
172
|
-
|
|
173
|
-
Returns the ``assignment_id``s whose wait ran out the budget while STILL
|
|
174
|
-
only seeing the registration-gap symptom (never a real check) —
|
|
175
|
-
:func:`wait_for_ci_settle`'s ``registering=True`` case. The caller must
|
|
176
|
-
exclude these from the ``process()`` call that follows: evaluating the
|
|
177
|
-
gate against that exact symptom is the bug this fixes, so it must not
|
|
178
|
-
reappear at the timeout edge just because the wait gave up. The entry
|
|
179
|
-
stays ``PENDING`` with an explanatory ``entry.error`` instead — legible
|
|
180
|
-
as "come back shortly", never as "checks failed" (#1925's acceptance:
|
|
181
|
-
an ``unknown`` this command caused must not be presented identically to
|
|
182
|
-
an ``unknown`` from genuinely broken CI).
|
|
183
|
-
|
|
184
|
-
#3266 — KNOWN FOLLOW-UP, not fixed here: every candidate this selects
|
|
185
|
-
(via :func:`coord.merge_queue.ci_revalidation_candidates`) is blocked
|
|
186
|
-
*solely* on CI staleness, and the ``rerun_for_pr`` call below is a
|
|
187
|
-
same-base ``gh run rerun`` that a staleness reading, by definition,
|
|
188
|
-
can never satisfy — see ``MAX_CI_STALE_RERUNS``'s comment in
|
|
189
|
-
``coord/merge_queue.py``, which #3266 fixed identically at
|
|
190
|
-
``merge_queue.process()`` and at ``coord.commands.drive_queue.
|
|
191
|
-
_run_auto_revalidate_checks_stale`` (the unattended periodic call
|
|
192
|
-
site). This CLI arm is the one remaining caller still spending a real
|
|
193
|
-
CI cycle on that guaranteed no-op. Left unfixed here on purpose for
|
|
194
|
-
this round — it is opt-in and human-invoked, unlike the unattended
|
|
195
|
-
drive-queue path, and the misleading ``ci_stale_reason`` remedy text
|
|
196
|
-
that used to point an operator at ``--revalidate`` *for this specific
|
|
197
|
-
condition* was already removed by #3266 — but an operator who runs
|
|
198
|
-
``--revalidate`` for an unrelated reason (a genuine infra-failure
|
|
199
|
-
retry) on a PR that also happens to be ``checks_stale`` still silently
|
|
200
|
-
burns a no-op CI cycle for that PR. Tracked as a follow-up: the fix
|
|
201
|
-
would be to drop this entry from *candidates* (or from what gets
|
|
202
|
-
rerun) whenever the ONLY reason it is here is staleness, so
|
|
203
|
-
``--revalidate`` never fires `rerun_for_pr` for a condition it cannot
|
|
204
|
-
clear.
|
|
168
|
+
— never called from auto-drain (see ``docs/DRIVE_QUEUE.md``).
|
|
169
|
+
|
|
170
|
+
Returns an empty set always now — kept as a ``set[str]`` return (rather
|
|
171
|
+
than ``None``) so the two call sites' "entries this arm deferred, exclude
|
|
172
|
+
them from this pass's ``process()`` call" plumbing (#1925's ``registering``
|
|
173
|
+
case, from when this arm still triggered a rerun and had to wait out its
|
|
174
|
+
own registration gap) needs no change; there is simply never anything to
|
|
175
|
+
defer any more, since nothing is triggered.
|
|
205
176
|
"""
|
|
206
177
|
from coord import merge_queue as _mq # noqa: PLC0415
|
|
207
|
-
from coord.ci_store import wait_for_ci_settle # noqa: PLC0415
|
|
208
178
|
|
|
209
179
|
deferred: set[str] = set()
|
|
210
180
|
if ci_store is None or not ci_store.is_available:
|
|
@@ -218,61 +188,31 @@ def _apply_ci_revalidation(
|
|
|
218
188
|
return deferred
|
|
219
189
|
for entry in candidates:
|
|
220
190
|
label = f"{entry.repo_name} #{entry.issue_number} ({entry.branch})"
|
|
221
|
-
if dry_run:
|
|
222
|
-
click.echo(
|
|
223
|
-
f" --revalidate: would re-run CI for {label} "
|
|
224
|
-
f"(PR #{entry.pr_number}) — checks predate the current base"
|
|
225
|
-
)
|
|
226
|
-
continue
|
|
227
|
-
ok = ci_store.rerun_for_pr(entry.repo_github, entry.pr_number)
|
|
228
|
-
if not ok:
|
|
229
|
-
click.echo(
|
|
230
|
-
f" --revalidate: could not trigger a CI re-run for {label} "
|
|
231
|
-
f"(PR #{entry.pr_number}) — see gh output above",
|
|
232
|
-
err=True,
|
|
233
|
-
)
|
|
234
|
-
continue
|
|
235
191
|
click.echo(
|
|
236
|
-
f" --revalidate:
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
echo=click.echo, sleep=poll_sleep, clock=poll_clock,
|
|
192
|
+
f" --revalidate: skipping {label} (PR #{entry.pr_number}) — "
|
|
193
|
+
"blocked solely on stale CI checks; a re-run replays the same "
|
|
194
|
+
"run against the same base it already ran against and can "
|
|
195
|
+
"never clear this (#3276). Rebase (or push a new commit) to "
|
|
196
|
+
"get a check against the current base."
|
|
242
197
|
)
|
|
243
|
-
if result.settled:
|
|
244
|
-
click.echo(
|
|
245
|
-
f" --revalidate: CI re-run for {label} settled after "
|
|
246
|
-
f"{result.waited_seconds:.0f}s — the merge gate will "
|
|
247
|
-
"evaluate the fresh result"
|
|
248
|
-
)
|
|
249
|
-
elif result.registering:
|
|
250
|
-
entry.error = (
|
|
251
|
-
f"{label}: the CI re-run --revalidate just triggered "
|
|
252
|
-
f"(PR #{entry.pr_number}) has not registered on GitHub yet "
|
|
253
|
-
f"after {result.waited_seconds:.0f}s — this is the re-run "
|
|
254
|
-
"THIS command started, not a CI failure; re-run `coord "
|
|
255
|
-
"merge --revalidate` (or plain `coord merge`) shortly (#1925)"
|
|
256
|
-
)
|
|
257
|
-
deferred.add(entry.assignment_id)
|
|
258
|
-
click.echo(f" --revalidate: {entry.error}")
|
|
259
|
-
else:
|
|
260
|
-
click.echo(
|
|
261
|
-
f" --revalidate: CI re-run for {label} is still running "
|
|
262
|
-
f"after {result.waited_seconds:.0f}s — leaving it to the "
|
|
263
|
-
"merge gate this pass (will report as CI still running)"
|
|
264
|
-
)
|
|
265
198
|
return deferred
|
|
266
199
|
|
|
267
200
|
|
|
268
201
|
def _reload_board_after_wait(board, *, dry_run: bool):
|
|
269
|
-
"""#2143: force a fresh board read after ``
|
|
270
|
-
|
|
271
|
-
composite/solo suite runs,
|
|
202
|
+
"""#2143: force a fresh board read after ``--revalidate``'s CI-staleness
|
|
203
|
+
arm (:func:`_apply_ci_revalidation`) — which, like
|
|
204
|
+
:func:`_apply_revalidation`'s composite/solo suite runs, used to be able
|
|
205
|
+
to hold the caller for minutes via a post-rerun settle poll.
|
|
206
|
+
|
|
207
|
+
#3276: that poll is gone — :func:`_apply_ci_revalidation` no longer
|
|
208
|
+
triggers a rerun at all (see its own docstring), so it returns quickly.
|
|
209
|
+
This reload stays anyway: :func:`_apply_revalidation`'s local-suite arm,
|
|
210
|
+
called just before this in both callers, can still run for minutes, and
|
|
211
|
+
the same staleness argument below applies to it too.
|
|
272
212
|
|
|
273
213
|
``_apply_revalidation`` already refreshes the board it hands back, but
|
|
274
|
-
only when *it* recorded a new verdict; it has no way to know
|
|
275
|
-
|
|
214
|
+
only when *it* recorded a new verdict; it has no way to know what ran
|
|
215
|
+
after it. Real state can change on GitHub while either arm is running —
|
|
276
216
|
most dangerously a review approval landing, or a concurrent merge driver
|
|
277
217
|
(the drive-queue timer, another operator) merging the exact branch this
|
|
278
218
|
run is about to act on — and `merge_queue.process()` must not evaluate
|
|
@@ -283,9 +223,9 @@ def _reload_board_after_wait(board, *, dry_run: bool):
|
|
|
283
223
|
Unconditional (not "only when something looks stale"): the risk here is
|
|
284
224
|
a stale *read*, and there's no cheap way to tell "nothing changed" from
|
|
285
225
|
"something changed but we didn't notice" without just re-reading. One
|
|
286
|
-
extra ``load_board()`` is a rounding error next to the suite run(s)
|
|
287
|
-
|
|
288
|
-
|
|
226
|
+
extra ``load_board()`` is a rounding error next to the suite run(s) that
|
|
227
|
+
just happened. Under ``--dry-run`` nothing was triggered (no suite run
|
|
228
|
+
actually ran), so the board is left untouched.
|
|
289
229
|
"""
|
|
290
230
|
if dry_run:
|
|
291
231
|
return board
|
|
@@ -2392,15 +2332,16 @@ def merge(
|
|
|
2392
2332
|
only_items, board_only, cfg_only, ci_store_only, gh_ops,
|
|
2393
2333
|
dry_run=dry_run,
|
|
2394
2334
|
)
|
|
2395
|
-
# #2143:
|
|
2396
|
-
# re-read the board so the gates `process()`
|
|
2397
|
-
# whatever landed on GitHub during it, not
|
|
2335
|
+
# #2143: `_apply_revalidation`'s local-suite run just above can
|
|
2336
|
+
# run for minutes — re-read the board so the gates `process()`
|
|
2337
|
+
# runs below see whatever landed on GitHub during it, not a
|
|
2338
|
+
# pre-run snapshot. (#3276: `_apply_ci_revalidation` itself no
|
|
2339
|
+
# longer triggers a rerun, so this is no longer also covering a
|
|
2340
|
+
# CI-settle wait — see its own docstring.)
|
|
2398
2341
|
board_only = _reload_board_after_wait(board_only, dry_run=dry_run)
|
|
2399
|
-
# #1925:
|
|
2400
|
-
#
|
|
2401
|
-
#
|
|
2402
|
-
# avoid handing to the gate. It stays PENDING with the explanatory
|
|
2403
|
-
# `entry.error` _apply_ci_revalidation already set.
|
|
2342
|
+
# #1925/#3276: `deferred_ci` is always empty now that
|
|
2343
|
+
# `_apply_ci_revalidation` never triggers a rerun — kept so this
|
|
2344
|
+
# exclusion needs no change if that ever stops being true.
|
|
2404
2345
|
if only_entry.assignment_id in deferred_ci:
|
|
2405
2346
|
events_only = []
|
|
2406
2347
|
else:
|
|
@@ -2841,15 +2782,17 @@ def merge(
|
|
|
2841
2782
|
deferred_ci = _apply_ci_revalidation(
|
|
2842
2783
|
pending, board, cfg, ci_store, gh_ops, dry_run=dry_run,
|
|
2843
2784
|
)
|
|
2844
|
-
# #2143:
|
|
2845
|
-
# re-read the board so the gates `process()` runs
|
|
2846
|
-
# whatever landed on GitHub during it, not
|
|
2785
|
+
# #2143: `_apply_revalidation`'s local-suite run just above can run
|
|
2786
|
+
# for minutes — re-read the board so the gates `process()` runs
|
|
2787
|
+
# below see whatever landed on GitHub during it, not a pre-run
|
|
2788
|
+
# snapshot. (#3276: `_apply_ci_revalidation` itself no longer
|
|
2789
|
+
# triggers a rerun, so this is no longer also covering a CI-settle
|
|
2790
|
+
# wait — see its own docstring.)
|
|
2847
2791
|
board = _reload_board_after_wait(board, dry_run=dry_run)
|
|
2848
|
-
# #1925:
|
|
2849
|
-
#
|
|
2850
|
-
#
|
|
2851
|
-
#
|
|
2852
|
-
# (unfiltered) still carries them through to the save step below.
|
|
2792
|
+
# #1925/#3276: `deferred_ci` is always empty now that
|
|
2793
|
+
# `_apply_ci_revalidation` never triggers a rerun — kept so this
|
|
2794
|
+
# exclusion needs no change if that ever stops being true. `items`
|
|
2795
|
+
# (unfiltered) still carries every entry through to the save step below.
|
|
2853
2796
|
process_items = (
|
|
2854
2797
|
[x for x in items if x.assignment_id not in deferred_ci]
|
|
2855
2798
|
if deferred_ci else items
|
|
@@ -2539,9 +2539,12 @@ MAX_CI_INFRA_RERUNS = 2
|
|
|
2539
2539
|
# all. Kept defined — rather than deleted — because `QueuedMerge.
|
|
2540
2540
|
# ci_stale_reruns` still exists for rows written before this fix (see its
|
|
2541
2541
|
# own comment) and because `coord.commands.merge._apply_ci_revalidation`
|
|
2542
|
-
# (the opt-in ``--revalidate`` CLI arm) still references it
|
|
2543
|
-
#
|
|
2544
|
-
#
|
|
2542
|
+
# (the opt-in ``--revalidate`` CLI arm) still references it in its own
|
|
2543
|
+
# docstring. #3276 closed the gap #3266 left open there: that caller now
|
|
2544
|
+
# reports the rebase remedy for a staleness-only candidate instead of
|
|
2545
|
+
# calling `rerun_for_pr` for it either — the third and last of this
|
|
2546
|
+
# primitive's call sites, so nothing left in this module calls `rerun_for_pr`
|
|
2547
|
+
# for a condition it can never clear.
|
|
2545
2548
|
MAX_CI_STALE_RERUNS = 2
|
|
2546
2549
|
|
|
2547
2550
|
# #2252: at most one auto-rerun per failure streak before a genuinely-
|
|
@@ -3804,12 +3807,12 @@ def ci_revalidation_candidates(
|
|
|
3804
3807
|
`rerun_for_pr` replays the same run against the same base it already
|
|
3805
3808
|
used, so it can never see the new one. `process()`'s OWN #2197
|
|
3806
3809
|
auto-rerun for this trigger was dropped for that reason (see
|
|
3807
|
-
`MAX_CI_STALE_RERUNS`'s comment).
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3810
|
+
`MAX_CI_STALE_RERUNS`'s comment). `coord.commands.merge
|
|
3811
|
+
._apply_ci_revalidation` (the opt-in ``--revalidate`` CI arm) was the one
|
|
3812
|
+
remaining caller that still called `rerun_for_pr` on what this returns —
|
|
3813
|
+
#3276 fixed it too: it now reports the rebase remedy for every entry this
|
|
3814
|
+
function returns (all of them are staleness-only, by this function's own
|
|
3815
|
+
contract above) instead of spending a guaranteed no-op CI cycle.
|
|
3813
3816
|
|
|
3814
3817
|
#3396: `coord.commands.drive_queue._run_auto_revalidate_checks_stale`
|
|
3815
3818
|
(the unattended periodic call site) still calls this function to find
|
|
@@ -4099,12 +4102,13 @@ class QueuedMerge:
|
|
|
4099
4102
|
# this column.
|
|
4100
4103
|
#
|
|
4101
4104
|
# `coord.commands.merge._apply_ci_revalidation` (the opt-in
|
|
4102
|
-
# ``--revalidate`` CLI arm)
|
|
4103
|
-
#
|
|
4104
|
-
#
|
|
4105
|
-
#
|
|
4106
|
-
#
|
|
4107
|
-
#
|
|
4105
|
+
# ``--revalidate`` CLI arm) never touched this counter (no budget, no
|
|
4106
|
+
# cap; a human invoked it once, on purpose) but, until #3276, was the
|
|
4107
|
+
# one remaining caller of `ci_revalidation_candidates` that still called
|
|
4108
|
+
# `rerun_for_pr` for this exact unclearable condition. #3276 fixed it:
|
|
4109
|
+
# that arm now reports the rebase remedy for a staleness-only candidate
|
|
4110
|
+
# instead of re-running, so nothing in the codebase calls `rerun_for_pr`
|
|
4111
|
+
# for a block only a rebase can clear.
|
|
4108
4112
|
ci_stale_reruns: int = 0
|
|
4109
4113
|
# #2252: count of automatic `CiStore.rerun_failed_for_pr` calls
|
|
4110
4114
|
# `process()` has issued for this entry's CURRENT streak of genuinely-
|
|
@@ -197,6 +197,11 @@ def is_milestone_complete(ctx: MilestoneContext) -> bool:
|
|
|
197
197
|
|
|
198
198
|
# (repo_github, path, branch) -> True if the file exists at that ref.
|
|
199
199
|
# Injected so tests never hit `gh` — mirrors ``coord.claim``'s BranchLookup.
|
|
200
|
+
#
|
|
201
|
+
# #2973: may also raise ``coord.github_ops.GhTransientError`` — a failed
|
|
202
|
+
# read (auth, network, a GitHub rate limit) is a different claim than a
|
|
203
|
+
# confirmed 404, and callers (``gate_a_status``) must not fold the two
|
|
204
|
+
# together the way the pre-#2973 default implementation did.
|
|
200
205
|
GateAFileExists = Callable[[str, str, str], bool]
|
|
201
206
|
|
|
202
207
|
|
|
@@ -206,6 +211,11 @@ def _default_gate_a_file_exists(repo_github: str, path: str, branch: str) -> boo
|
|
|
206
211
|
try:
|
|
207
212
|
github_ops.get_repo_file(repo_github, path, branch=branch)
|
|
208
213
|
return True
|
|
214
|
+
except github_ops.GhTransientError:
|
|
215
|
+
# #2973: a rate-limited (or otherwise transient) read is NOT a
|
|
216
|
+
# confirmed absence — let it propagate so `gate_a_status` can tell
|
|
217
|
+
# the two apart, instead of silently becoming `False` here.
|
|
218
|
+
raise
|
|
209
219
|
except RuntimeError:
|
|
210
220
|
return False
|
|
211
221
|
|
|
@@ -235,17 +245,42 @@ def gate_a_status(
|
|
|
235
245
|
checking only the legacy repo-root path and reporting a false "Gate A
|
|
236
246
|
not satisfied" for a milestone whose contract already exists, just
|
|
237
247
|
somewhere else.
|
|
248
|
+
|
|
249
|
+
#2973: a candidate whose read *fails* (auth, network, a GitHub rate
|
|
250
|
+
limit — :class:`coord.github_ops.GhTransientError`) is a different claim
|
|
251
|
+
than a candidate that genuinely 404s, and only the latter justifies the
|
|
252
|
+
"run `coord acceptance mock`" remedy below — that remedy dispatches a
|
|
253
|
+
duplicate mock-author against a milestone that may already have an
|
|
254
|
+
approved contract. Mirrors :func:`coord.commands.gate_a._fetch_contract`:
|
|
255
|
+
a confirmed existence on ANY candidate wins outright (even after an
|
|
256
|
+
earlier candidate's transient failure), but a transient failure on any
|
|
257
|
+
checked candidate makes the whole read inconclusive when nothing else
|
|
258
|
+
confirms existence — reported distinctly, with no dispatch-a-mock-author
|
|
259
|
+
remedy attached.
|
|
238
260
|
"""
|
|
239
261
|
if not config.acceptance.has_driver(repo_cfg.name):
|
|
240
262
|
return None
|
|
241
263
|
|
|
264
|
+
from coord import github_ops # noqa: PLC0415
|
|
242
265
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
243
266
|
|
|
244
267
|
candidates = gate_a_contract_candidates(config, repo_cfg.name, milestone_number)
|
|
245
268
|
check = file_exists or _default_gate_a_file_exists
|
|
269
|
+
transient: github_ops.GhTransientError | None = None
|
|
246
270
|
for path in candidates:
|
|
247
|
-
|
|
248
|
-
|
|
271
|
+
try:
|
|
272
|
+
if check(repo_cfg.github, path, repo_cfg.default_branch):
|
|
273
|
+
return None
|
|
274
|
+
except github_ops.GhTransientError as e:
|
|
275
|
+
transient = transient or e
|
|
276
|
+
continue
|
|
277
|
+
if transient is not None:
|
|
278
|
+
return (
|
|
279
|
+
f"Gate A undetermined: could not read {repo_cfg.name}'s Gate-A "
|
|
280
|
+
f"contract on {repo_cfg.default_branch!r} ({transient}). This is "
|
|
281
|
+
"a failed read, not a confirmed absence — the contract may well "
|
|
282
|
+
"exist. Retry once the rate limit clears."
|
|
283
|
+
)
|
|
249
284
|
named = " or ".join(repr(p) for p in candidates)
|
|
250
285
|
return (
|
|
251
286
|
f"Gate A not satisfied: {named} does not exist yet on "
|
|
@@ -257,6 +292,17 @@ def gate_a_status(
|
|
|
257
292
|
|
|
258
293
|
# (repo_github, path, branch) -> file content, or None if it doesn't exist.
|
|
259
294
|
# Injected so tests never hit `gh` — mirrors GateAFileExists above.
|
|
295
|
+
#
|
|
296
|
+
# #2973: may also raise ``coord.github_ops.GhTransientError`` — same reason
|
|
297
|
+
# as ``GateAFileExists`` above. ``gate_a_signoff_status`` and
|
|
298
|
+
# ``issue_oracle_ready`` both build a ``GateAFileExists`` closure on top of
|
|
299
|
+
# this fetch (memoised, so the existence probe and the content read share
|
|
300
|
+
# one call), so this must propagate the same distinction they'd otherwise
|
|
301
|
+
# lose. Callers that only want *content*, never existence — the manifest/
|
|
302
|
+
# exempt reads in ``_fetch_manifest_data`` and the contract-hashing loop in
|
|
303
|
+
# ``gate_a_signoff`` — catch it locally and keep degrading to ``None``,
|
|
304
|
+
# their pre-#2973 behaviour: those reads are advisory/best-effort, not the
|
|
305
|
+
# gate whose misreporting #2973 is about.
|
|
260
306
|
ManifestFetch = Callable[[str, str, str], "str | None"]
|
|
261
307
|
|
|
262
308
|
|
|
@@ -265,6 +311,8 @@ def _default_fetch_repo_file(repo_github: str, path: str, branch: str) -> str |
|
|
|
265
311
|
|
|
266
312
|
try:
|
|
267
313
|
return github_ops.get_repo_file(repo_github, path, branch=branch)
|
|
314
|
+
except github_ops.GhTransientError:
|
|
315
|
+
raise
|
|
268
316
|
except RuntimeError:
|
|
269
317
|
return None
|
|
270
318
|
|
|
@@ -313,6 +361,7 @@ def _fetch_manifest_data(
|
|
|
313
361
|
legacy manifest and/or fragment file; a milestone's data lives under
|
|
314
362
|
exactly one, so the first root that produces anything wins.
|
|
315
363
|
"""
|
|
364
|
+
from coord import github_ops # noqa: PLC0415
|
|
316
365
|
from coord.acceptance import ( # noqa: PLC0415
|
|
317
366
|
ACCEPTANCE_DIRNAME,
|
|
318
367
|
MANIFEST_FRAGMENTS_DIRNAME,
|
|
@@ -326,7 +375,14 @@ def _fetch_manifest_data(
|
|
|
326
375
|
def _fetch_one(dir_path: str, filename_stem: str) -> "tuple[ManifestData, bool]":
|
|
327
376
|
for ext in (".yml", ".yaml", ".json"):
|
|
328
377
|
path = f"{dir_path}/{filename_stem}{ext}"
|
|
329
|
-
|
|
378
|
+
try:
|
|
379
|
+
content = fetch(repo_github, path, branch)
|
|
380
|
+
except github_ops.GhTransientError:
|
|
381
|
+
# #2973: this is an advisory manifest/exempt read, not the
|
|
382
|
+
# contract-existence gate — a transient GitHub error here
|
|
383
|
+
# degrades to "no manifest data yet" exactly like a genuine
|
|
384
|
+
# 404 always has, rather than crashing dispatch.
|
|
385
|
+
content = None
|
|
330
386
|
if content is None:
|
|
331
387
|
continue
|
|
332
388
|
try:
|
|
@@ -433,11 +489,23 @@ def gate_a_signoff(
|
|
|
433
489
|
for the common single-candidate case).
|
|
434
490
|
"""
|
|
435
491
|
from coord import gate_a as gate_a_mod # noqa: PLC0415
|
|
492
|
+
from coord import github_ops # noqa: PLC0415
|
|
436
493
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
437
494
|
|
|
438
495
|
contract_text: str | None = None
|
|
439
496
|
for path in gate_a_contract_candidates(config, repo_cfg.name, milestone_number):
|
|
440
|
-
|
|
497
|
+
try:
|
|
498
|
+
contract_text = fetch(repo_cfg.github, path, repo_cfg.default_branch)
|
|
499
|
+
except github_ops.GhTransientError:
|
|
500
|
+
# #2973: by the time this runs, `gate_a_status` has already
|
|
501
|
+
# confirmed SOME candidate exists (that's the precondition every
|
|
502
|
+
# caller of this checks first) — a transient failure re-reading
|
|
503
|
+
# a candidate here (this loop re-walks the same list, and a
|
|
504
|
+
# not-yet-memoised path can still hit a fresh rate limit) just
|
|
505
|
+
# means this particular candidate isn't the hashable one; keep
|
|
506
|
+
# walking rather than letting the read crash the signoff check.
|
|
507
|
+
contract_text = None
|
|
508
|
+
continue
|
|
441
509
|
if contract_text is not None:
|
|
442
510
|
break
|
|
443
511
|
return gate_a_mod.evaluate(
|
|
@@ -209,6 +209,40 @@ class TestGateACommand:
|
|
|
209
209
|
assert result.exit_code == 1
|
|
210
210
|
assert "coord acceptance mock" in result.output
|
|
211
211
|
|
|
212
|
+
def test_a_rate_limited_read_is_not_reported_as_a_missing_contract(
|
|
213
|
+
self, config_file: Path, coord_db
|
|
214
|
+
) -> None:
|
|
215
|
+
"""#2973: a failed contents-API read (GitHub secondary rate limit)
|
|
216
|
+
must not be folded into the same "does not exist" outcome as a
|
|
217
|
+
genuine 404 — the file was on `main` the whole time; only the read
|
|
218
|
+
failed. Reporting it as absent recommends `coord acceptance mock`,
|
|
219
|
+
which against an already-approved milestone dispatches a duplicate
|
|
220
|
+
mock-author."""
|
|
221
|
+
from coord.github_ops import GhRateLimitError
|
|
222
|
+
|
|
223
|
+
def _repo_file(repo: str, path: str, branch: str | None = None) -> str:
|
|
224
|
+
raise GhRateLimitError(
|
|
225
|
+
"gh api repos/acme/api/contents/tests/acceptance/ms-37/"
|
|
226
|
+
"contract.md?ref=main failed: API rate limit exceeded for "
|
|
227
|
+
"user ID 12345",
|
|
228
|
+
secondary=True,
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
with patch(
|
|
232
|
+
"coord.github_ops.get_issue",
|
|
233
|
+
return_value={"title": "ms-37 epic", "milestone": {"number": 37}, "labels": []},
|
|
234
|
+
), patch("coord.github_ops.get_repo_file", side_effect=_repo_file):
|
|
235
|
+
result = CliRunner().invoke(
|
|
236
|
+
main,
|
|
237
|
+
["gate-a", "--approved", "api", "900", "--config", str(config_file)],
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
assert result.exit_code == 1
|
|
241
|
+
assert "does not exist" not in result.output
|
|
242
|
+
assert "coord acceptance mock" not in result.output
|
|
243
|
+
assert "rate limit" in result.output.lower()
|
|
244
|
+
assert "retry" in result.output.lower()
|
|
245
|
+
|
|
212
246
|
def test_unknown_repo_exits_two(self, config_file: Path, coord_db) -> None:
|
|
213
247
|
result = _run(config_file, ["--approved", "nope", "900"])
|
|
214
248
|
assert result.exit_code == 2
|