code-coordinator 0.5.525__tar.gz → 0.5.526__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.525 → code_coordinator-0.5.526}/PKG-INFO +1 -1
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/drive_queue.py +212 -41
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/drive_queue.py +112 -8
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_drive_queue.py +138 -4
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_queue.py +149 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/.gitignore +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/CLAUDE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/GOAL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/LICENSE +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/MANIFEST.in +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/README.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/agent.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/audit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/backup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/block_log.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/board_service.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/brain.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/claim.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/cli.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/client.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/codegen.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/comments.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/config.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dao.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/db.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/deps.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/drive.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/events.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/filelock.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/freshness.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/gates.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/goal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/context.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/models.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/render.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/health/units.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/hooks.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/interactive.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/models.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/network.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/notify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/openapi.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/parentage.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/plans.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/progress.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/release_window.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/reports.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/review.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/self_health.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/smoke.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/split_work.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/sql.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/test_author.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/test_report.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/usage.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/install-agent.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/pyproject.toml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/setup.cfg +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/__init__.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/backends.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/conftest.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_client.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_db.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_events.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_init.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_models.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_network.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_session.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_split.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_state.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.525 → code_coordinator-0.5.526}/tests/write_parity.py +0 -0
|
@@ -4815,13 +4815,122 @@ def _index_merge_queue_by_key(rows: list, board: Any) -> dict[str, Any]:
|
|
|
4815
4815
|
return indexed
|
|
4816
4816
|
|
|
4817
4817
|
|
|
4818
|
+
def _resolve_winning_work_row_for_blocked_entry(
|
|
4819
|
+
board: Any, repo_name: str, issue_number: int
|
|
4820
|
+
) -> Any | None:
|
|
4821
|
+
"""The same-branch "winner" (:func:`coord.merge_queue.
|
|
4822
|
+
group_branch_candidates`) among *board*'s completed work for
|
|
4823
|
+
``(repo_name, issue_number)`` — resolved the same way :func:`coord.gates.
|
|
4824
|
+
build_gate_report`/:func:`_index_merge_queue_by_key` resolve an
|
|
4825
|
+
acceptance-slice's epic-keyed row (#3012): a match on the row's own
|
|
4826
|
+
``issue_number`` OR its :func:`~coord.models.effective_issue_number`.
|
|
4827
|
+
|
|
4828
|
+
``None`` when *board* carries no matching :data:`~coord.models.
|
|
4829
|
+
WORK_LIKE_TYPES` ``done`` row at all — the caller's signal that there is
|
|
4830
|
+
genuinely nothing here to evaluate (#3460).
|
|
4831
|
+
"""
|
|
4832
|
+
from coord.models import WORK_LIKE_TYPES, effective_issue_number # noqa: PLC0415
|
|
4833
|
+
|
|
4834
|
+
from coord import merge_queue as _mq # noqa: PLC0415
|
|
4835
|
+
|
|
4836
|
+
completed = list(getattr(board, "completed", None) or [])
|
|
4837
|
+
matches = [
|
|
4838
|
+
a for a in completed
|
|
4839
|
+
if getattr(a, "repo_name", None) == repo_name
|
|
4840
|
+
and getattr(a, "type", None) in WORK_LIKE_TYPES
|
|
4841
|
+
and getattr(a, "status", None) == "done"
|
|
4842
|
+
and (
|
|
4843
|
+
getattr(a, "issue_number", None) == issue_number
|
|
4844
|
+
or effective_issue_number(a) == issue_number
|
|
4845
|
+
)
|
|
4846
|
+
]
|
|
4847
|
+
if not matches:
|
|
4848
|
+
return None
|
|
4849
|
+
groups = _mq.group_branch_candidates(matches)
|
|
4850
|
+
if not groups:
|
|
4851
|
+
return None
|
|
4852
|
+
# #3460: matches are already scoped to one (repo, issue) pair, so every
|
|
4853
|
+
# group here is on the SAME branch in the overwhelming common case; the
|
|
4854
|
+
# rare "the issue's work moved branches across relaunches" shape just
|
|
4855
|
+
# picks the first (oldest-seen) branch group's own winner rather than
|
|
4856
|
+
# inventing a cross-branch tie-break this sweep has no stake in.
|
|
4857
|
+
winner, _superseded = groups[0]
|
|
4858
|
+
return winner
|
|
4859
|
+
|
|
4860
|
+
|
|
4861
|
+
def _evaluate_blocked_entry_without_a_queue_row(
|
|
4862
|
+
e: Any, board: Any, cfg: Any, gh_ops: Any
|
|
4863
|
+
) -> tuple[bool, str] | None:
|
|
4864
|
+
"""#3460's no-queue-row fallback: when neither the queue nor the #2806
|
|
4865
|
+
self-heal produced a row for *e*, this is the difference between an
|
|
4866
|
+
honest "unreadable" (there is truly nothing to read) and the false one
|
|
4867
|
+
the #3460 incident reported — a gate that was, in fact, genuinely still
|
|
4868
|
+
shut (quadraui#1081: review request-changes outstanding, Test failed,
|
|
4869
|
+
fix rounds exhausted, and — because ``enqueue_approved_work``'s own
|
|
4870
|
+
self-heal drops any row that fails the review/smoke gates,
|
|
4871
|
+
``coord/merge_queue.py:4973`` — NO queue row will EVER exist for it).
|
|
4872
|
+
|
|
4873
|
+
Resolves the branch's winning work row directly
|
|
4874
|
+
(:func:`_resolve_winning_work_row_for_blocked_entry`) and evaluates it
|
|
4875
|
+
with the exact gates :func:`coord.merge_queue.enqueue_approved_work`
|
|
4876
|
+
itself checks — :func:`coord.merge_queue.live_gate_entry` (the #2085
|
|
4877
|
+
live-anchored synthetic entry) + :func:`coord.merge_queue.
|
|
4878
|
+
merge_gate_failures` (the reason-carrying twin of ``passes_merge_gates``,
|
|
4879
|
+
#946) — so this can never disagree with what ``enqueue_approved_work``
|
|
4880
|
+
itself would have concluded.
|
|
4881
|
+
|
|
4882
|
+
Returns ``(True, reason)`` — CONFIRMED still shut, *reason* naming every
|
|
4883
|
+
failing gate — when :func:`merge_gate_failures` finds any. Returns
|
|
4884
|
+
``(False, reason)`` when it finds none: the winning row clears every
|
|
4885
|
+
gate this sweep can check without a PR (CI is per-PR only, #1150), which
|
|
4886
|
+
mirrors exactly what would make ``enqueue_approved_work`` enqueue it —
|
|
4887
|
+
confirmed CLEAR, not "unreadable" (there is nothing left unresolved).
|
|
4888
|
+
Returns ``None`` — genuinely nothing to report — only when there is no
|
|
4889
|
+
winning work row at all (:func:`_resolve_winning_work_row_for_blocked_entry`
|
|
4890
|
+
returns ``None``) or this evaluation itself raises; the caller falls
|
|
4891
|
+
back to its own "no merge-queue row" unreadable note for either.
|
|
4892
|
+
"""
|
|
4893
|
+
from coord import merge_queue as _mq # noqa: PLC0415
|
|
4894
|
+
|
|
4895
|
+
winner = _resolve_winning_work_row_for_blocked_entry(board, e.repo, e.issue)
|
|
4896
|
+
if winner is None:
|
|
4897
|
+
return None
|
|
4898
|
+
repo_cfg = cfg.repo(e.repo)
|
|
4899
|
+
if repo_cfg is None:
|
|
4900
|
+
return None
|
|
4901
|
+
from coord.branch_model import resolve_base_branch_for_issue_number # noqa: PLC0415
|
|
4902
|
+
|
|
4903
|
+
target_branch = resolve_base_branch_for_issue_number(
|
|
4904
|
+
repo_cfg, repo_cfg.github, getattr(winner, "issue_number", 0)
|
|
4905
|
+
)
|
|
4906
|
+
gate_entry = _mq.live_gate_entry(winner, repo_cfg.github, target_branch, gh_ops)
|
|
4907
|
+
failures = _mq.merge_gate_failures(gate_entry, cfg, board, gh_ops=gh_ops)
|
|
4908
|
+
if failures:
|
|
4909
|
+
return True, _mq.describe_merge_gate_failures(failures)
|
|
4910
|
+
return (
|
|
4911
|
+
False,
|
|
4912
|
+
"the branch's winning work row clears review/smoke/uat with no "
|
|
4913
|
+
"merge-queue row yet to check CI against (#3460)",
|
|
4914
|
+
)
|
|
4915
|
+
|
|
4916
|
+
|
|
4818
4917
|
def _fetch_live_blocked_gate(
|
|
4819
4918
|
entries: list, config_path: Path | None
|
|
4820
|
-
) -> tuple[dict[str, bool], dict[str, str]]:
|
|
4821
|
-
"""``({entry_key: still_blocked}, {entry_key:
|
|
4822
|
-
every RE-EVALUABLE ``blocked``
|
|
4823
|
-
:func:`_fetch_live_ci_gate` above:
|
|
4824
|
-
different queue state.
|
|
4919
|
+
) -> tuple[dict[str, bool], dict[str, str], dict[str, str]]:
|
|
4920
|
+
"""``({entry_key: still_blocked}, {entry_key: gate_reason},
|
|
4921
|
+
{entry_key: unreadable_reason})`` for every RE-EVALUABLE ``blocked``
|
|
4922
|
+
entry (#2230) — the counterpart of :func:`_fetch_live_ci_gate` above:
|
|
4923
|
+
same mechanism, same bound, a different queue state.
|
|
4924
|
+
|
|
4925
|
+
THE SECOND DICT (#3460) is *live_ci_gate*/*live_ci_gate_reason*'s own
|
|
4926
|
+
split, mirrored here: whatever reason text produced the first dict's
|
|
4927
|
+
bool — from a direct :func:`coord.merge_queue.entry_gate_status` read
|
|
4928
|
+
when a queue row exists, or from :func:`
|
|
4929
|
+
_evaluate_blocked_entry_without_a_queue_row` when none does — so a
|
|
4930
|
+
CONFIRMED still-shut reading is never reported gate-reason-less the way
|
|
4931
|
+
the #3460 incident's "unconfirmed probe failure" text was. Present for
|
|
4932
|
+
every key also present in the first dict (whichever way it reads);
|
|
4933
|
+
absent otherwise, exactly like its CI-gate sibling.
|
|
4825
4934
|
|
|
4826
4935
|
THE GAP THIS CLOSES. `blocked` used to be terminal: once
|
|
4827
4936
|
`_reconcile_running` exhausted an entry's attempts, nothing ever asked
|
|
@@ -4872,32 +4981,49 @@ def _fetch_live_blocked_gate(
|
|
|
4872
4981
|
every such target is looked up again against the refreshed queue before
|
|
4873
4982
|
this function concedes it has nothing.
|
|
4874
4983
|
|
|
4875
|
-
#2806 VISIBILITY. `_fetch_live_ci_gate`'s sibling docstring, and
|
|
4876
|
-
one before #2806, both
|
|
4877
|
-
it is actually
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4984
|
+
#2806/#3460 VISIBILITY. `_fetch_live_ci_gate`'s sibling docstring, and
|
|
4985
|
+
this one before #2806, both described "a key ABSENT" as if it were one
|
|
4986
|
+
thing — it is actually several (no work row at all behind a missing
|
|
4987
|
+
queue row, that row's own evaluation raising, a queue row whose CI
|
|
4988
|
+
can't be confirmed without a PR, `entry_gate_status` raising, or the
|
|
4989
|
+
whole fetch failing closed before any entry is even tried) and NONE of
|
|
4990
|
+
them used to be logged anywhere, so a run of them looked, from the
|
|
4991
|
+
tick's own output, identical to the gate genuinely still being shut.
|
|
4992
|
+
Every one is now (a) logged here, so `journalctl` names the actual
|
|
4993
|
+
cause instead of silence, and (b) surfaced in the THIRD returned dict,
|
|
4994
|
+
keyed by entry, with a short human-readable reason — :func:`coord.
|
|
4995
|
+
drive_queue._reconcile_blocked_unreadable` turns a present key there
|
|
4996
|
+
into a distinct, operator-visible "could not read this gate" outcome
|
|
4997
|
+
instead of folding it into "still shut" the way an absent key from the
|
|
4998
|
+
FIRST dict alone always has and still does (see that function's
|
|
4999
|
+
docstring for why the two must never render identically).
|
|
5000
|
+
|
|
5001
|
+
#3460's fix is entirely about SHRINKING this third dict's population in
|
|
5002
|
+
favour of the first two: the #3460 incident (quadraui#1081) was exactly
|
|
5003
|
+
a confirmed-still-shut gate — review request-changes outstanding, Test
|
|
5004
|
+
failed — reported as "unreadable" purely because ``enqueue_approved_
|
|
5005
|
+
work``'s #2806 self-heal above can never produce a queue row for a work
|
|
5006
|
+
row that fails the review/smoke gates (that self-heal enqueues ONLY
|
|
5007
|
+
gate-clear work — `coord/merge_queue.py:4973`), and a queue row without
|
|
5008
|
+
a PR number used to be conceded unreadable outright even though every
|
|
5009
|
+
gate but CI is answerable without one. Both shapes now get a direct
|
|
5010
|
+
evaluation first (:func:`_evaluate_blocked_entry_without_a_queue_row`
|
|
5011
|
+
for the former; a direct :func:`coord.merge_queue.entry_gate_status`
|
|
5012
|
+
call for the latter, since that function only *skips* its CI/epic-
|
|
5013
|
+
keyword checks without a PR — #1150 — it doesn't refuse to run without
|
|
5014
|
+
one) — "unreadable" is now reserved for when that evaluation itself
|
|
5015
|
+
finds genuinely nothing, or raises.
|
|
4890
5016
|
|
|
4891
5017
|
Same fail-open-per-entry, fail-closed-overall contract as
|
|
4892
5018
|
`_fetch_live_ci_gate` otherwise: a key ABSENT from the FIRST dict (no
|
|
4893
|
-
|
|
4894
|
-
leaves that entry to `plan_tick`'s cheap board-only
|
|
4895
|
-
(`IssueFacts.merge_gate_status`, populated for free on a thin
|
|
4896
|
-
live `/board`) — which on the daemon-host tick (the only host
|
|
4897
|
-
actually runs on, `docs/DRIVE_QUEUE.md` §2) has no `merge_plan`
|
|
4898
|
-
to read at all, so an absent key there means "no evidence,
|
|
4899
|
-
blocked, but distinctly reported as unreadable when the
|
|
4900
|
-
says why" (`_reconcile_blocked` never guesses at a gate reading).
|
|
5019
|
+
work row behind a missing queue row, a `ci_store` that failed to build,
|
|
5020
|
+
any exception) leaves that entry to `plan_tick`'s cheap board-only
|
|
5021
|
+
fallback (`IssueFacts.merge_gate_status`, populated for free on a thin
|
|
5022
|
+
client's live `/board`) — which on the daemon-host tick (the only host
|
|
5023
|
+
this actually runs on, `docs/DRIVE_QUEUE.md` §2) has no `merge_plan`
|
|
5024
|
+
section to read at all, so an absent key there means "no evidence,
|
|
5025
|
+
stays blocked, but distinctly reported as unreadable when the third
|
|
5026
|
+
dict says why" (`_reconcile_blocked` never guesses at a gate reading).
|
|
4901
5027
|
"""
|
|
4902
5028
|
targets = [
|
|
4903
5029
|
e for e in entries
|
|
@@ -4905,12 +5031,12 @@ def _fetch_live_blocked_gate(
|
|
|
4905
5031
|
and not is_permanent_block_reason(getattr(e, "last_reason", "") or "")
|
|
4906
5032
|
]
|
|
4907
5033
|
if not targets:
|
|
4908
|
-
return {}, {}
|
|
5034
|
+
return {}, {}, {}
|
|
4909
5035
|
|
|
4910
5036
|
from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
|
|
4911
5037
|
|
|
4912
5038
|
if resolve_board_service() is not None:
|
|
4913
|
-
return {}, {}
|
|
5039
|
+
return {}, {}, {}
|
|
4914
5040
|
|
|
4915
5041
|
try:
|
|
4916
5042
|
from coord import github_ops as _gh_ops # noqa: PLC0415
|
|
@@ -4932,7 +5058,7 @@ def _fetch_live_blocked_gate(
|
|
|
4932
5058
|
"back to the board-only reading, unreadable: %r",
|
|
4933
5059
|
len(targets), "y" if len(targets) == 1 else "ies", exc,
|
|
4934
5060
|
)
|
|
4935
|
-
return {}, {}
|
|
5061
|
+
return {}, {}, {}
|
|
4936
5062
|
|
|
4937
5063
|
# #2806 self-heal: mirror `coord merge --only`'s #1845 fix — a target
|
|
4938
5064
|
# with no queue row yet may simply not have been enqueued by
|
|
@@ -4950,10 +5076,38 @@ def _fetch_live_blocked_gate(
|
|
|
4950
5076
|
)
|
|
4951
5077
|
|
|
4952
5078
|
overrides: dict[str, bool] = {}
|
|
5079
|
+
reasons: dict[str, str] = {}
|
|
4953
5080
|
unreadable: dict[str, str] = {}
|
|
4954
5081
|
for e in targets:
|
|
4955
5082
|
q = queue_by_key.get(e.key)
|
|
4956
5083
|
if q is None:
|
|
5084
|
+
# #3460: the self-heal above never produces a row for a work row
|
|
5085
|
+
# that fails the review/smoke gates (`enqueue_approved_work`
|
|
5086
|
+
# only enqueues gate-clear work) — exactly the shape this sweep
|
|
5087
|
+
# most needs to confirm. Evaluate the branch's winning work row
|
|
5088
|
+
# directly before conceding "unreadable".
|
|
5089
|
+
resolved = None
|
|
5090
|
+
if not is_pre_dispatch_block_reason(getattr(e, "last_reason", "") or ""):
|
|
5091
|
+
try:
|
|
5092
|
+
resolved = _evaluate_blocked_entry_without_a_queue_row(
|
|
5093
|
+
e, board, cfg, _gh_ops
|
|
5094
|
+
)
|
|
5095
|
+
except Exception as exc: # noqa: BLE001 — falls to "unreadable" below
|
|
5096
|
+
log.warning(
|
|
5097
|
+
"blocked-gate sweep (#3460): %s — evaluating the "
|
|
5098
|
+
"winning work row directly raised: %r", e.key, exc,
|
|
5099
|
+
)
|
|
5100
|
+
resolved = None
|
|
5101
|
+
if resolved is not None:
|
|
5102
|
+
shut, reason = resolved
|
|
5103
|
+
overrides[e.key] = shut
|
|
5104
|
+
reasons[e.key] = reason
|
|
5105
|
+
log.info(
|
|
5106
|
+
"blocked-gate sweep (#3460): %s — no merge-queue row, "
|
|
5107
|
+
"but its winning work row evaluates directly: %s",
|
|
5108
|
+
e.key, reason,
|
|
5109
|
+
)
|
|
5110
|
+
continue
|
|
4957
5111
|
reason = "no merge-queue row for this entry, even after the self-heal enqueue attempt"
|
|
4958
5112
|
# #2589/#2635: a genuinely pre-dispatch cause (no branch/PR was
|
|
4959
5113
|
# EVER created) will never have a merge-queue row, forever — that
|
|
@@ -4971,20 +5125,36 @@ def _fetch_live_blocked_gate(
|
|
|
4971
5125
|
unreadable[e.key] = reason
|
|
4972
5126
|
log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
|
|
4973
5127
|
continue
|
|
4974
|
-
if not q.pr_number:
|
|
4975
|
-
reason = "merge-queue row has no PR number yet"
|
|
4976
|
-
unreadable[e.key] = reason
|
|
4977
|
-
log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
|
|
4978
|
-
continue
|
|
4979
5128
|
try:
|
|
4980
|
-
status,
|
|
5129
|
+
status, gate_reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
|
|
4981
5130
|
except Exception as exc: # noqa: BLE001 — leave this one entry to the fallback
|
|
4982
5131
|
reason = f"entry_gate_status raised: {exc!r}"
|
|
4983
5132
|
unreadable[e.key] = reason
|
|
4984
5133
|
log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
|
|
4985
5134
|
continue
|
|
4986
|
-
|
|
4987
|
-
|
|
5135
|
+
if status == _mq.PLAN_BLOCKED:
|
|
5136
|
+
# #3460: confirmed still shut regardless of whether *q* carries
|
|
5137
|
+
# a PR yet — `entry_gate_status` only *skips* its CI/epic-
|
|
5138
|
+
# keyword checks without one (#1150: CI is checked per-PR), it
|
|
5139
|
+
# never refuses to evaluate the review/smoke/uat gates that
|
|
5140
|
+
# already produced this BLOCKED verdict.
|
|
5141
|
+
overrides[e.key] = True
|
|
5142
|
+
if gate_reason:
|
|
5143
|
+
reasons[e.key] = gate_reason
|
|
5144
|
+
continue
|
|
5145
|
+
# status == PLAN_READY. Confirmed clear only when a PR exists to
|
|
5146
|
+
# confirm CI against — without one, "ready" only means "every gate
|
|
5147
|
+
# this call could check without a PR is clear", which is NOT the
|
|
5148
|
+
# same claim `_blocked_gate_reading`'s `False` makes to the resume
|
|
5149
|
+
# path (#1150 applies to `enqueue_approved_work`'s own enqueue
|
|
5150
|
+
# decision, not to promising a live merge would succeed).
|
|
5151
|
+
if not q.pr_number:
|
|
5152
|
+
reason = "merge-queue row has no PR number yet (CI unverifiable without a PR)"
|
|
5153
|
+
unreadable[e.key] = reason
|
|
5154
|
+
log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
|
|
5155
|
+
continue
|
|
5156
|
+
overrides[e.key] = False
|
|
5157
|
+
return overrides, reasons, unreadable
|
|
4988
5158
|
|
|
4989
5159
|
|
|
4990
5160
|
def _fetch_live_prereq_terminal(
|
|
@@ -6556,8 +6726,8 @@ def drive_queue_tick(
|
|
|
6556
6726
|
# entries — see `_fetch_live_blocked_gate`'s docstring for the gap
|
|
6557
6727
|
# this closes (quadraui#309 sat `blocked` ~11h on a merge that was
|
|
6558
6728
|
# landable for most of that window, and nothing ever looked again).
|
|
6559
|
-
live_blocked_gate, live_blocked_unreadable =
|
|
6560
|
-
entries, config_path
|
|
6729
|
+
live_blocked_gate, live_blocked_gate_reason, live_blocked_unreadable = (
|
|
6730
|
+
_fetch_live_blocked_gate(entries, config_path)
|
|
6561
6731
|
)
|
|
6562
6732
|
|
|
6563
6733
|
# #2350: for every entry the two live re-checks above just found
|
|
@@ -6618,6 +6788,7 @@ def drive_queue_tick(
|
|
|
6618
6788
|
live_ci_gate=live_ci_gate,
|
|
6619
6789
|
live_ci_gate_reason=live_ci_gate_reason,
|
|
6620
6790
|
live_blocked_gate=live_blocked_gate,
|
|
6791
|
+
live_blocked_gate_reason=live_blocked_gate_reason,
|
|
6621
6792
|
live_blocked_unreadable=live_blocked_unreadable,
|
|
6622
6793
|
editable_drift=editable_drift,
|
|
6623
6794
|
merge_only_ready=merge_only_ready,
|
|
@@ -5327,6 +5327,44 @@ def _blocked_gate_reading(
|
|
|
5327
5327
|
return None
|
|
5328
5328
|
|
|
5329
5329
|
|
|
5330
|
+
# #3460: the separator this module uses whenever it needs to layer a
|
|
5331
|
+
# fresh, THIS-TICK-ONLY note (the #2806 "could not be read" verdict below,
|
|
5332
|
+
# or :func:`_reconcile_blocked`'s own "confirmed still shut" gate detail) on
|
|
5333
|
+
# top of a `blocked` entry's ORIGINAL block cause, without ever destroying
|
|
5334
|
+
# that cause the way a bare ``last_reason: reason`` overwrite used to
|
|
5335
|
+
# (claude-coordinator#3460, quadraui#1081: the #2806 write below replaced a
|
|
5336
|
+
# #2972 fix-round-ceiling give-up's own text outright, and every later
|
|
5337
|
+
# tick's `is_permanent_block_reason`/`is_fix_round_ceiling_reason`/
|
|
5338
|
+
# `is_pre_dispatch_block_reason` classification — which reads ONLY
|
|
5339
|
+
# `last_reason` — could then never recognise the row again).
|
|
5340
|
+
# :func:`_strip_blocked_gate_probe_note` removes any note a PREVIOUS tick
|
|
5341
|
+
# appended this same way before a new one is computed, so an unchanged
|
|
5342
|
+
# verdict across many ticks rewrites the identical string rather than
|
|
5343
|
+
# growing it forever.
|
|
5344
|
+
_BLOCKED_GATE_PROBE_NOTE_SEP = " — this tick's merge-gate probe: "
|
|
5345
|
+
|
|
5346
|
+
|
|
5347
|
+
def _strip_blocked_gate_probe_note(text: str | None) -> str:
|
|
5348
|
+
"""*text* with any :data:`_BLOCKED_GATE_PROBE_NOTE_SEP`-delimited note a
|
|
5349
|
+
previous tick appended (via :func:`_with_blocked_gate_probe_note`)
|
|
5350
|
+
removed, leaving only the entry's original block cause."""
|
|
5351
|
+
base, _sep, _note = (text or "").partition(_BLOCKED_GATE_PROBE_NOTE_SEP)
|
|
5352
|
+
return base.rstrip()
|
|
5353
|
+
|
|
5354
|
+
|
|
5355
|
+
def _with_blocked_gate_probe_note(original: str | None, note: str) -> str:
|
|
5356
|
+
"""*original* (an entry's ``last_reason``) with *note* — this tick's
|
|
5357
|
+
gate-probe finding — appended, after first stripping any note an
|
|
5358
|
+
earlier tick appended the same way (see :data:`_BLOCKED_GATE_PROBE_NOTE_SEP`).
|
|
5359
|
+
|
|
5360
|
+
The entry's own original cause is NEVER discarded: when there is one,
|
|
5361
|
+
*note* is layered on top of it, never in place of it; when there is
|
|
5362
|
+
none (``original`` empty), *note* stands alone.
|
|
5363
|
+
"""
|
|
5364
|
+
base = _strip_blocked_gate_probe_note(original)
|
|
5365
|
+
return f"{base}{_BLOCKED_GATE_PROBE_NOTE_SEP}{note}" if base else note
|
|
5366
|
+
|
|
5367
|
+
|
|
5330
5368
|
def _reconcile_blocked_unreadable(
|
|
5331
5369
|
entry: QueueEntry, live_blocked_unreadable: Mapping[str, str] | None
|
|
5332
5370
|
) -> Reconcile | None:
|
|
@@ -5374,15 +5412,27 @@ def _reconcile_blocked_unreadable(
|
|
|
5374
5412
|
`oscillating` outcome's own channel — #2230's "no second alert channel"
|
|
5375
5413
|
posture) every tick the condition holds, the same posture `oscillating`
|
|
5376
5414
|
already takes for its own distinct-from-silence signal.
|
|
5415
|
+
|
|
5416
|
+
#3460: this write no longer REPLACES `last_reason` wholesale — it
|
|
5417
|
+
layers the probe note on top of whatever cause was already recorded
|
|
5418
|
+
(:func:`_with_blocked_gate_probe_note`), so a #2972 fix-round-ceiling
|
|
5419
|
+
give-up (or any other marker/classifier text a later tick needs to
|
|
5420
|
+
recognise this row by) survives an unreadable probe intact. Before this,
|
|
5421
|
+
the incident's own root cause — the #2806 self-heal above can never
|
|
5422
|
+
enqueue a row whose Work fails the review/smoke gates, so exactly the
|
|
5423
|
+
entries most worth confirming "still shut" were the ones perpetually
|
|
5424
|
+
reported "unreadable" — compounded with a SECOND bug: every such tick
|
|
5425
|
+
also erased the real cause it was reporting on.
|
|
5377
5426
|
"""
|
|
5378
5427
|
note = (live_blocked_unreadable or {}).get(entry.key)
|
|
5379
5428
|
if not note:
|
|
5380
5429
|
return None
|
|
5381
|
-
|
|
5430
|
+
probe_note = (
|
|
5382
5431
|
f"{entry.key}'s merge gate could not be read this tick ({note}) — "
|
|
5383
5432
|
f"this is {_UNCONFIRMED_BLOCK_MARKER}; "
|
|
5384
5433
|
"#2230's sweep will try again next tick rather than guessing (#2806)"
|
|
5385
5434
|
)
|
|
5435
|
+
reason = _with_blocked_gate_probe_note(entry.last_reason, probe_note)
|
|
5386
5436
|
return Reconcile(
|
|
5387
5437
|
entry.key,
|
|
5388
5438
|
"gate_unreadable",
|
|
@@ -5398,14 +5448,16 @@ def _reconcile_blocked(
|
|
|
5398
5448
|
live_blocked_gate: Mapping[str, bool] | None,
|
|
5399
5449
|
merge_only_ready: Mapping[str, bool] | None = None,
|
|
5400
5450
|
live_blocked_unreadable: Mapping[str, str] | None = None,
|
|
5451
|
+
live_blocked_gate_reason: Mapping[str, str] | None = None,
|
|
5401
5452
|
) -> Reconcile | None:
|
|
5402
5453
|
"""Re-examine ONE `blocked` entry against the current gate reading.
|
|
5403
5454
|
|
|
5404
5455
|
Returns ``None`` — nothing to report, nothing to write — in every case
|
|
5405
|
-
except a CONFIRMED-clear reading
|
|
5406
|
-
(#2806),
|
|
5407
|
-
|
|
5408
|
-
|
|
5456
|
+
except a CONFIRMED-clear reading, a probe that came back unreadable
|
|
5457
|
+
(#2806), or a CONFIRMED-still-shut reading that ALSO carries a fresh
|
|
5458
|
+
*live_blocked_gate_reason* (#3460), which is deliberate: a `blocked`
|
|
5459
|
+
entry this sweep cannot say anything NEW about must render EXACTLY as it
|
|
5460
|
+
did before #2230 existed. Four ways to land on plain ``None``:
|
|
5409
5461
|
|
|
5410
5462
|
* the block is PERMANENT (:func:`is_permanent_block_reason`) — #1844's
|
|
5411
5463
|
guard refusal or #2019's dead end — neither of which any amount of
|
|
@@ -5428,8 +5480,12 @@ def _reconcile_blocked(
|
|
|
5428
5480
|
nothing this sweep can cheaply re-check, and guessing would be
|
|
5429
5481
|
exactly the "worse than nothing" sweep the issue warns a naive
|
|
5430
5482
|
"retry everything" pass would be;
|
|
5431
|
-
* the gate is CONFIRMED still shut
|
|
5432
|
-
|
|
5483
|
+
* the gate is CONFIRMED still shut, but *live_blocked_gate_reason*
|
|
5484
|
+
carries no fresh reason for it (either the reading came off the
|
|
5485
|
+
cached board's own `facts.merge_gate_status`/`merge_ci_pending`, or
|
|
5486
|
+
the shell's live re-check simply had nothing new to say) — the
|
|
5487
|
+
common, honest outcome for a `blocked` entry that has not in fact
|
|
5488
|
+
recovered yet, with nothing new worth writing.
|
|
5433
5489
|
|
|
5434
5490
|
#2806: when there is no evidence either way BUT the shell's live probe
|
|
5435
5491
|
was actually attempted against this entry and came back empty (as
|
|
@@ -5438,6 +5494,20 @@ def _reconcile_blocked(
|
|
|
5438
5494
|
folded into "still shut". See its own docstring for why the two must
|
|
5439
5495
|
not render identically to an operator.
|
|
5440
5496
|
|
|
5497
|
+
#3460: when the gate IS confirmed still shut AND *live_blocked_gate_
|
|
5498
|
+
reason* carries a fresh reason for this key — the shell's live
|
|
5499
|
+
``entry_gate_status``/direct-evaluation read named WHICH gate(s) are
|
|
5500
|
+
still failing and why — this writes `last_reason` too, layering that
|
|
5501
|
+
reason on top of the entry's existing cause
|
|
5502
|
+
(:func:`_with_blocked_gate_probe_note`, never replacing it). Before
|
|
5503
|
+
this, a confirmed-still-shut reading was reported identically to "no
|
|
5504
|
+
evidence at all" (plain silence), which is how the #3460 incident's
|
|
5505
|
+
root cause hid: the SHELL was misclassifying a genuinely
|
|
5506
|
+
confirmed-still-shut gate as an unconfirmed probe failure, and once
|
|
5507
|
+
fixed there, this half makes the correct classification visible on
|
|
5508
|
+
`coord drive-queue list`/`status` too, instead of leaving the entry's
|
|
5509
|
+
possibly-stale original `last_reason` as the only thing shown.
|
|
5510
|
+
|
|
5441
5511
|
Only a confirmed-clear reading does anything else, and even then only up
|
|
5442
5512
|
to :data:`MAX_BLOCKED_RESUMES` — past that ceiling the entry stays
|
|
5443
5513
|
`blocked`, but its `last_reason` is rewritten to say so out loud (the
|
|
@@ -5514,7 +5584,28 @@ def _reconcile_blocked(
|
|
|
5514
5584
|
if reading is None:
|
|
5515
5585
|
return _reconcile_blocked_unreadable(entry, live_blocked_unreadable)
|
|
5516
5586
|
if reading:
|
|
5517
|
-
|
|
5587
|
+
# #3460: confirmed still shut. Silent (render exactly as before
|
|
5588
|
+
# #2230/#2806) unless the shell's live re-check also named WHY —
|
|
5589
|
+
# see the docstring above and `_with_blocked_gate_probe_note` for
|
|
5590
|
+
# why this layers the reason on top of `last_reason` rather than
|
|
5591
|
+
# replacing it.
|
|
5592
|
+
live_reason = (live_blocked_gate_reason or {}).get(entry.key)
|
|
5593
|
+
if not live_reason:
|
|
5594
|
+
return None
|
|
5595
|
+
probe_note = (
|
|
5596
|
+
f"{entry.key}'s merge gate is confirmed still shut this tick: "
|
|
5597
|
+
f"{live_reason} (#3460)"
|
|
5598
|
+
)
|
|
5599
|
+
reason = _with_blocked_gate_probe_note(entry.last_reason, probe_note)
|
|
5600
|
+
if reason == entry.last_reason:
|
|
5601
|
+
return None
|
|
5602
|
+
return Reconcile(
|
|
5603
|
+
entry.key,
|
|
5604
|
+
"gate_confirmed_shut",
|
|
5605
|
+
reason,
|
|
5606
|
+
occupies=False,
|
|
5607
|
+
updates={"last_reason": reason},
|
|
5608
|
+
)
|
|
5518
5609
|
|
|
5519
5610
|
if entry.resumes >= MAX_BLOCKED_RESUMES:
|
|
5520
5611
|
reason = (
|
|
@@ -5975,6 +6066,7 @@ def plan_tick(
|
|
|
5975
6066
|
live_ci_gate: Mapping[str, bool] | None = None,
|
|
5976
6067
|
live_ci_gate_reason: Mapping[str, str] | None = None,
|
|
5977
6068
|
live_blocked_gate: Mapping[str, bool] | None = None,
|
|
6069
|
+
live_blocked_gate_reason: Mapping[str, str] | None = None,
|
|
5978
6070
|
live_blocked_unreadable: Mapping[str, str] | None = None,
|
|
5979
6071
|
editable_drift: tuple[str, str] | None = None,
|
|
5980
6072
|
merge_only_ready: Mapping[str, bool] | None = None,
|
|
@@ -6137,6 +6229,17 @@ def plan_tick(
|
|
|
6137
6229
|
beats the cached board's `IssueFacts.merge_gate_status`; absent falls
|
|
6138
6230
|
through to it. See :func:`_blocked_gate_reading`.
|
|
6139
6231
|
|
|
6232
|
+
*live_blocked_gate_reason* (#3460) is *live_blocked_gate*'s own
|
|
6233
|
+
`live_ci_gate_reason` counterpart: the reason text behind whichever way
|
|
6234
|
+
the SAME fresh read came back, for a key also present in
|
|
6235
|
+
*live_blocked_gate*. Used only when that reading is CONFIRMED still
|
|
6236
|
+
shut (`True`) — :func:`_reconcile_blocked` surfaces it so a `blocked`
|
|
6237
|
+
entry whose gate the #3460 incident's sweep bug used to misreport as an
|
|
6238
|
+
"unconfirmed probe failure" now shows the real cause (which gate, and
|
|
6239
|
+
why) instead, without discarding the entry's own original block reason.
|
|
6240
|
+
A key ABSENT here changes nothing: exactly the pre-#3460 silent
|
|
6241
|
+
"confirmed shut, nothing new to say" rendering.
|
|
6242
|
+
|
|
6140
6243
|
*live_blocked_unreadable* (#2806) maps a `blocked` entry's key to a
|
|
6141
6244
|
short human-readable reason the shell's live probe for THAT entry was
|
|
6142
6245
|
attempted this tick but came back with no evidence at all — a key
|
|
@@ -6526,6 +6629,7 @@ def plan_tick(
|
|
|
6526
6629
|
live_blocked_gate,
|
|
6527
6630
|
merge_only_ready,
|
|
6528
6631
|
live_blocked_unreadable,
|
|
6632
|
+
live_blocked_gate_reason,
|
|
6529
6633
|
)
|
|
6530
6634
|
if blocked_reconcile is not None:
|
|
6531
6635
|
reconciles.append(blocked_reconcile)
|