code-coordinator 0.5.524__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.524 → code_coordinator-0.5.526}/PKG-INFO +1 -1
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/ci_fix.py +85 -1
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/ci_github.py +97 -17
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/drive_queue.py +212 -41
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/drive_queue.py +112 -8
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_ci_fix.py +179 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_drive_queue.py +138 -4
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_queue.py +149 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/.gitignore +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/CLAUDE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/GOAL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/LICENSE +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/MANIFEST.in +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/README.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/agent.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/audit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/backup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/block_log.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/board_service.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/brain.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/claim.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/cli.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/client.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/codegen.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/comments.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/config.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dao.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/db.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/deps.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/drive.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/events.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/filelock.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/freshness.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/gates.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/goal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/context.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/models.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/render.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/health/units.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/hooks.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/interactive.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/models.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/network.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/notify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/openapi.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/parentage.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/plans.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/progress.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/release_window.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/reports.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/review.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/self_health.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/smoke.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/split_work.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/sql.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/test_author.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/test_report.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/usage.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/install-agent.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/pyproject.toml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/setup.cfg +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/__init__.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/backends.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/conftest.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_client.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_db.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_events.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_init.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_models.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_network.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_session.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_split.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_state.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.524 → code_coordinator-0.5.526}/tests/write_parity.py +0 -0
|
@@ -37,6 +37,7 @@ import logging
|
|
|
37
37
|
|
|
38
38
|
import httpx
|
|
39
39
|
|
|
40
|
+
from coord import github_ops
|
|
40
41
|
from coord.ci_store import CIFailureDetail
|
|
41
42
|
from coord.config import Config
|
|
42
43
|
from coord.merge_queue import QueuedMerge, _chain_work_ids
|
|
@@ -144,12 +145,87 @@ def _format_ci_failure_detail(detail: CIFailureDetail) -> list[str]:
|
|
|
144
145
|
return lines
|
|
145
146
|
|
|
146
147
|
|
|
148
|
+
# #3456: cap on the issue body threaded into a ci-fix briefing. Large
|
|
149
|
+
# enough that a typical issue description plus an operator's follow-up
|
|
150
|
+
# diagnosis both fit without truncation in the common case — only a
|
|
151
|
+
# genuinely long body (or a long back-and-forth of appended notes) hits
|
|
152
|
+
# the cap at all.
|
|
153
|
+
ISSUE_BODY_MAX_CHARS = 6000
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def _bound_issue_body(body: str) -> tuple[str, bool]:
|
|
157
|
+
"""Truncate *body* to the last :data:`ISSUE_BODY_MAX_CHARS` characters
|
|
158
|
+
when it exceeds that cap (#3456).
|
|
159
|
+
|
|
160
|
+
Keeps the TAIL, not the head: an operator's diagnosis on a CI-fix
|
|
161
|
+
streak is written INTO the issue body after the failure is understood
|
|
162
|
+
— i.e. appended below the original description (see the issue's own
|
|
163
|
+
evidence: "After the root cause was written into the issue body,
|
|
164
|
+
requeueing would have routed the next attempt through the same ci-fix
|
|
165
|
+
path"). Keeping the tail is what makes sure that operator-added
|
|
166
|
+
content survives a cut; the cost is that the original description
|
|
167
|
+
(often already echoed by the issue title anyway) is what gets dropped
|
|
168
|
+
for a body long enough to need cutting at all.
|
|
169
|
+
|
|
170
|
+
Returns ``(text, truncated)`` — mirrors
|
|
171
|
+
:func:`coord.ci_github._bound_log_excerpt`'s contract: *truncated* is
|
|
172
|
+
``True`` iff the cut actually removed content, so the caller can make
|
|
173
|
+
the cut visible in the briefing text rather than silently handing over
|
|
174
|
+
a partial body.
|
|
175
|
+
"""
|
|
176
|
+
if len(body) <= ISSUE_BODY_MAX_CHARS:
|
|
177
|
+
return body, False
|
|
178
|
+
return body[-ISSUE_BODY_MAX_CHARS:], True
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def _format_issue_body(issue_body: str) -> list[str]:
|
|
182
|
+
"""Render *issue_body* into briefing lines (#3456) — see
|
|
183
|
+
:func:`_bound_issue_body` for the truncation contract.
|
|
184
|
+
"""
|
|
185
|
+
body, truncated = _bound_issue_body(issue_body)
|
|
186
|
+
lines: list[str] = ["## Issue body", ""]
|
|
187
|
+
if truncated:
|
|
188
|
+
lines.append(
|
|
189
|
+
f"(truncated to the last {ISSUE_BODY_MAX_CHARS} characters — "
|
|
190
|
+
"operator notes are typically appended below the original "
|
|
191
|
+
"description, so keeping the tail keeps those over the part "
|
|
192
|
+
"already echoed by the issue title)"
|
|
193
|
+
)
|
|
194
|
+
lines.append("")
|
|
195
|
+
lines.append(body)
|
|
196
|
+
lines.append("")
|
|
197
|
+
return lines
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def _fetch_issue_body(entry: QueuedMerge) -> str:
|
|
201
|
+
"""Best-effort fetch of *entry*'s issue body for the ci-fix briefing
|
|
202
|
+
(#3456) — the same body a Work-stage dispatch already auto-includes
|
|
203
|
+
(``coord.commands.dispatch``'s auto-briefing, ``coord.commands.
|
|
204
|
+
dispatch_workers``' smoke briefing) but a ci-fix dispatch never did:
|
|
205
|
+
any diagnosis an operator records on the issue (e.g. after reading the
|
|
206
|
+
real CI logs by hand) was invisible to the worker most likely to need
|
|
207
|
+
it, since workers can't run ``gh`` themselves to read it any other way.
|
|
208
|
+
|
|
209
|
+
Fails soft to ``""`` on any read failure (``gh`` missing, rate-limited,
|
|
210
|
+
a network blip, a malformed response) — same posture as
|
|
211
|
+
:func:`coord.ci_github.build_ci_failure_detail`: this is enrichment,
|
|
212
|
+
never a dispatch precondition, and a body fetch failure must never
|
|
213
|
+
block or delay the actual fix dispatch.
|
|
214
|
+
"""
|
|
215
|
+
try:
|
|
216
|
+
issue_data = github_ops.get_issue(entry.repo_github, entry.issue_number)
|
|
217
|
+
except Exception: # noqa: BLE001 — best-effort, see docstring
|
|
218
|
+
return ""
|
|
219
|
+
return str(issue_data.get("body") or "")
|
|
220
|
+
|
|
221
|
+
|
|
147
222
|
def build_ci_fix_briefing(
|
|
148
223
|
*,
|
|
149
224
|
entry: QueuedMerge,
|
|
150
225
|
checks_summary: str,
|
|
151
226
|
attempt: int,
|
|
152
227
|
detail: CIFailureDetail | None = None,
|
|
228
|
+
issue_body: str | None = None,
|
|
153
229
|
) -> str:
|
|
154
230
|
"""Assemble the CI-fix worker's briefing. Pure function — testable.
|
|
155
231
|
|
|
@@ -159,6 +235,11 @@ def build_ci_fix_briefing(
|
|
|
159
235
|
empty of anything beyond the check name (see :func:`_detail_has_content`),
|
|
160
236
|
the briefing is byte-identical to before #3114, still carrying
|
|
161
237
|
``checks_summary``.
|
|
238
|
+
|
|
239
|
+
*issue_body* (#3456) is the issue's current body, fetched by
|
|
240
|
+
:func:`_fetch_issue_body` at dispatch time — optional and additive,
|
|
241
|
+
same shape as *detail*: ``None`` or blank leaves the briefing
|
|
242
|
+
byte-identical to before #3456.
|
|
162
243
|
"""
|
|
163
244
|
lines: list[str] = [
|
|
164
245
|
f"# CI failure fix: {entry.repo_github} branch `{entry.branch}`",
|
|
@@ -172,6 +253,8 @@ def build_ci_fix_briefing(
|
|
|
172
253
|
f" {checks_summary}",
|
|
173
254
|
"",
|
|
174
255
|
]
|
|
256
|
+
if issue_body is not None and issue_body.strip():
|
|
257
|
+
lines.extend(_format_issue_body(issue_body))
|
|
175
258
|
if detail is not None and _detail_has_content(detail):
|
|
176
259
|
lines.extend(_format_ci_failure_detail(detail))
|
|
177
260
|
lines += [
|
|
@@ -353,9 +436,10 @@ def dispatch_ci_fix(
|
|
|
353
436
|
return None
|
|
354
437
|
|
|
355
438
|
summary = checks_summary or entry.error or "CI checks failed"
|
|
439
|
+
issue_body = _fetch_issue_body(entry)
|
|
356
440
|
briefing = build_ci_fix_briefing(
|
|
357
441
|
entry=entry, checks_summary=summary, attempt=entry.ci_fix_dispatches + 1,
|
|
358
|
-
detail=detail,
|
|
442
|
+
detail=detail, issue_body=issue_body,
|
|
359
443
|
)
|
|
360
444
|
|
|
361
445
|
from coord.auto_loop import _dispatch_fix # noqa: PLC0415
|
|
@@ -120,19 +120,50 @@ _RUST_ERROR_RE = re.compile(r"\berror(\[E\d+\])?:")
|
|
|
120
120
|
_RUST_LOCATION_RE = re.compile(r"-->")
|
|
121
121
|
_RUST_WARNING_RE = re.compile(r"\bwarning:")
|
|
122
122
|
|
|
123
|
+
# #3456: GitHub Actions appends this EXACT line to every failing step's log,
|
|
124
|
+
# regardless of what actually failed — it is the annotation `_ERROR_
|
|
125
|
+
# ANNOTATION_RE` would otherwise happily match as tier-1 signal, and on a
|
|
126
|
+
# job whose real failure produces no OTHER `##[error]` line (e.g. a `cargo
|
|
127
|
+
# test` failure — rustc's own test-harness panic output carries no `##[
|
|
128
|
+
# error]` prefix at all), this generic wrapper line was the ONLY thing
|
|
129
|
+
# selected: "exit code 1", not the failing test. Excluded from the
|
|
130
|
+
# `annotation` tier entirely so the more specific `rust_test_failure` tier
|
|
131
|
+
# below (or, failing that, `no_diagnostics_matched`) wins instead.
|
|
132
|
+
_EXIT_CODE_ANNOTATION_RE = re.compile(r"##\[error\]Process completed with exit code \d+\.?\s*$")
|
|
133
|
+
|
|
134
|
+
# #3456: a rust test-harness failure never carries a `##[error]` prefix, so
|
|
135
|
+
# none of it was reachable by any tier before this — the harness prints a
|
|
136
|
+
# per-test `---- <test path> stdout ----` header immediately followed by the
|
|
137
|
+
# `panicked at ...` message, then (once every test has run) a `failures:`
|
|
138
|
+
# roll-up naming every failing test, then a final `test result: FAILED. ...`
|
|
139
|
+
# summary line. All four are treated as one priority tier: whichever of
|
|
140
|
+
# them shows up is unambiguously more useful than the generic exit-code
|
|
141
|
+
# annotation above.
|
|
142
|
+
_RUST_TEST_STDOUT_HEADER_RE = re.compile(r"^-+\s.*\sstdout\s-+\s*$")
|
|
143
|
+
_RUST_PANICKED_RE = re.compile(r"panicked at")
|
|
144
|
+
_RUST_TEST_RESULT_RE = re.compile(r"\btest result: FAILED\b")
|
|
145
|
+
_RUST_FAILURES_HEADER_RE = re.compile(r"^failures:\s*$")
|
|
146
|
+
|
|
123
147
|
# How many lines past a matched rust-diagnostic line to look for its `-->`
|
|
124
148
|
# location before giving up — rustc always emits it on the very next
|
|
125
149
|
# non-blank line; a small window tolerates the odd blank line without
|
|
126
150
|
# accidentally stealing a `-->` that belongs to a LATER diagnostic.
|
|
127
151
|
_RUST_LOCATION_LOOKAHEAD = 4
|
|
128
152
|
|
|
153
|
+
# How many lines past a `---- <test> stdout ----` header to sweep into the
|
|
154
|
+
# same unit — enough to capture the `thread '...' panicked at ...:LINE:COL:`
|
|
155
|
+
# line plus a short assertion message, without running so far that a SECOND
|
|
156
|
+
# test's header (or unrelated harness noise) gets swept in too.
|
|
157
|
+
_RUST_TEST_FAILURE_LOOKAHEAD = 6
|
|
158
|
+
|
|
129
159
|
|
|
130
160
|
def _select_diagnostic_units(lines: list[str]) -> tuple[
|
|
131
|
-
list[list[str]], list[list[str]], list[list[str]]
|
|
161
|
+
list[list[str]], list[list[str]], list[list[str]], list[list[str]]
|
|
132
162
|
]:
|
|
133
|
-
"""Classify *lines* into (annotation, rust_diagnostic,
|
|
134
|
-
lists, each unit a small list of original line strings
|
|
135
|
-
budget truncation never splits an `error:`/`-->` pair
|
|
163
|
+
"""Classify *lines* into (annotation, rust_test_failure, rust_diagnostic,
|
|
164
|
+
warning) unit lists, each unit a small list of original line strings
|
|
165
|
+
kept atomic so budget truncation never splits an `error:`/`-->` pair —
|
|
166
|
+
or a rust test panic header/message pair — apart (#3245, #3456).
|
|
136
167
|
|
|
137
168
|
Each source line is claimed by at most one bucket, checked in priority
|
|
138
169
|
order, so a line matching a higher-priority pattern is never
|
|
@@ -142,10 +173,47 @@ def _select_diagnostic_units(lines: list[str]) -> tuple[
|
|
|
142
173
|
|
|
143
174
|
annotation: list[list[str]] = []
|
|
144
175
|
for i, line in enumerate(lines):
|
|
176
|
+
# #3456: the generic "step failed" wrapper line is deliberately
|
|
177
|
+
# never claimed here (see `_EXIT_CODE_ANNOTATION_RE`'s comment) —
|
|
178
|
+
# left unclaimed (not even added to `claimed`) since nothing else
|
|
179
|
+
# matches it anyway.
|
|
180
|
+
if _EXIT_CODE_ANNOTATION_RE.search(line):
|
|
181
|
+
continue
|
|
145
182
|
if _ERROR_ANNOTATION_RE.search(line):
|
|
146
183
|
annotation.append([line])
|
|
147
184
|
claimed.add(i)
|
|
148
185
|
|
|
186
|
+
# #3456: rust test-harness failures — a stdout header sweeps in the
|
|
187
|
+
# panic message that follows it; a bare `panicked at`/`test result:
|
|
188
|
+
# FAILED`/`failures:` line (no preceding header, e.g. a `cargo run`
|
|
189
|
+
# panic outside the test harness) stands alone as its own unit.
|
|
190
|
+
rust_test_failure: list[list[str]] = []
|
|
191
|
+
for i, line in enumerate(lines):
|
|
192
|
+
if i in claimed:
|
|
193
|
+
continue
|
|
194
|
+
if _RUST_TEST_STDOUT_HEADER_RE.match(line.strip()):
|
|
195
|
+
claimed.add(i)
|
|
196
|
+
unit = [line]
|
|
197
|
+
end = min(i + 1 + _RUST_TEST_FAILURE_LOOKAHEAD, len(lines))
|
|
198
|
+
for j in range(i + 1, end):
|
|
199
|
+
if j in claimed:
|
|
200
|
+
break
|
|
201
|
+
candidate = lines[j]
|
|
202
|
+
if not candidate.strip() or _RUST_TEST_STDOUT_HEADER_RE.match(candidate.strip()):
|
|
203
|
+
# Blank line or the next test's header — stop before
|
|
204
|
+
# sweeping in unrelated content.
|
|
205
|
+
break
|
|
206
|
+
unit.append(candidate)
|
|
207
|
+
claimed.add(j)
|
|
208
|
+
rust_test_failure.append(unit)
|
|
209
|
+
elif (
|
|
210
|
+
_RUST_PANICKED_RE.search(line)
|
|
211
|
+
or _RUST_TEST_RESULT_RE.search(line)
|
|
212
|
+
or _RUST_FAILURES_HEADER_RE.match(line.strip())
|
|
213
|
+
):
|
|
214
|
+
claimed.add(i)
|
|
215
|
+
rust_test_failure.append([line])
|
|
216
|
+
|
|
149
217
|
rust_diag: list[list[str]] = []
|
|
150
218
|
for i, line in enumerate(lines):
|
|
151
219
|
if i in claimed or not _RUST_ERROR_RE.search(line):
|
|
@@ -173,7 +241,7 @@ def _select_diagnostic_units(lines: list[str]) -> tuple[
|
|
|
173
241
|
claimed.add(i)
|
|
174
242
|
warning.append([line])
|
|
175
243
|
|
|
176
|
-
return annotation, rust_diag, warning
|
|
244
|
+
return annotation, rust_test_failure, rust_diag, warning
|
|
177
245
|
|
|
178
246
|
|
|
179
247
|
def _extract_relevant_log_lines(text: str) -> tuple[str, bool, bool]:
|
|
@@ -189,30 +257,42 @@ def _extract_relevant_log_lines(text: str) -> tuple[str, bool, bool]:
|
|
|
189
257
|
Extraction is by relevance, in priority order, matching the issue's fix
|
|
190
258
|
shape:
|
|
191
259
|
|
|
192
|
-
1. ``##[error]`` GitHub Actions annotation lines
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
260
|
+
1. ``##[error]`` GitHub Actions annotation lines — EXCEPT the generic
|
|
261
|
+
``Process completed with exit code N.`` wrapper GitHub Actions
|
|
262
|
+
appends to every failing step regardless of cause (#3456): it
|
|
263
|
+
carries zero diagnostic value, and on a job whose real failure
|
|
264
|
+
never emits any OTHER ``##[error]`` line (a rust test panic, say),
|
|
265
|
+
it used to be the ONLY thing this function ever surfaced.
|
|
266
|
+
2. Rust test-harness failures (#3456) — a ``---- <test> stdout ----``
|
|
267
|
+
header (with the ``panicked at ...`` message that follows it), a
|
|
268
|
+
bare ``panicked at`` line, a ``failures:`` roll-up, or the final
|
|
269
|
+
``test result: FAILED`` summary line
|
|
270
|
+
3. Rust compiler diagnostics — ``error[E....]:``/``error:`` paired with
|
|
271
|
+
the ``-->`` file:line that follows
|
|
272
|
+
4. ``warning:`` lines, only if budget remains after 1-3
|
|
196
273
|
|
|
197
274
|
Everything else — including the runner's own echo of a script step's
|
|
198
|
-
source and post-job cleanup
|
|
199
|
-
only ever match one of these
|
|
200
|
-
coincidence.
|
|
275
|
+
source and post-job cleanup, and the excluded exit-code wrapper line —
|
|
276
|
+
is never a candidate, because it can only ever match one of these
|
|
277
|
+
patterns by (extremely unlikely) coincidence.
|
|
201
278
|
|
|
202
279
|
Returns ``(excerpt, truncated, matched)``:
|
|
203
280
|
|
|
204
281
|
- *matched* is ``False`` when nothing in any tier matched anywhere in
|
|
205
282
|
*text* — the caller renders an explicit "no diagnostics" note rather
|
|
206
|
-
than a misleadingly-empty excerpt.
|
|
283
|
+
than a misleadingly-empty excerpt. Note this can now be ``False`` for
|
|
284
|
+
a log whose ONLY `##[error]` line was the excluded exit-code wrapper —
|
|
285
|
+
correctly so, since that line alone told the caller nothing a
|
|
286
|
+
"no diagnostics matched" note doesn't already convey just as well.
|
|
207
287
|
- *truncated* is ``True`` when the matched units together exceed
|
|
208
288
|
:data:`CI_FIX_LOG_MAX_LINES`/:data:`CI_FIX_LOG_MAX_BYTES` and lower-
|
|
209
|
-
priority units (warnings first, then any tier
|
|
210
|
-
dropped to fit — same "make the cut visible" contract as
|
|
289
|
+
priority units (warnings first, then any earlier-tier overflow) had
|
|
290
|
+
to be dropped to fit — same "make the cut visible" contract as
|
|
211
291
|
:func:`_bound_log_excerpt`.
|
|
212
292
|
"""
|
|
213
293
|
lines = text.splitlines()
|
|
214
|
-
annotation, rust_diag, warning = _select_diagnostic_units(lines)
|
|
215
|
-
units = annotation + rust_diag + warning
|
|
294
|
+
annotation, rust_test_failure, rust_diag, warning = _select_diagnostic_units(lines)
|
|
295
|
+
units = annotation + rust_test_failure + rust_diag + warning
|
|
216
296
|
if not units:
|
|
217
297
|
return "", False, False
|
|
218
298
|
|
|
@@ -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,
|