code-coordinator 0.5.310__tar.gz → 0.5.311__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.310 → code_coordinator-0.5.311}/PKG-INFO +1 -1
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/PKG-INFO +1 -1
- code_coordinator-0.5.311/code_coordinator.egg-info/scm_version.json +8 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/drive_queue.py +100 -31
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/wedged_drive_queue.py +37 -15
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_drive_queue.py +43 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_queue.py +97 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_wedged_drive_queue.py +49 -0
- code_coordinator-0.5.310/code_coordinator.egg-info/scm_version.json +0 -8
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/.gitignore +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/CLAUDE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/GOAL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/LICENSE +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/MANIFEST.in +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/README.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/agent.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/audit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/block_log.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/board_service.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/brain.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/claim.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/cli.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/client.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/comments.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/config.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dao.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/db.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/deps.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/drive.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/events.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/filelock.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/freshness.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/gates.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/goal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/context.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/models.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/render.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/units.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/hooks.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/interactive.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/models.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/network.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/notify.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/openapi.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/parentage.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/plans.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/progress.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/release_window.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/reports.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/review.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/self_health.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/smoke.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/split_work.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/sql.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/test_author.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/test_report.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/usage.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/install-agent.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/pyproject.toml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/setup.cfg +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/__init__.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/backends.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/conftest.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_config.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_db.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_events.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_init.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_models.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_network.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_session.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_split.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_state.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/write_parity.py +0 -0
|
@@ -2302,12 +2302,20 @@ class UnreachableWait:
|
|
|
2302
2302
|
evidence a genuine transient wouldn't have, and `last_reason` is
|
|
2303
2303
|
whatever the last sweep to touch this row recorded — useful context,
|
|
2304
2304
|
never re-interpreted here.
|
|
2305
|
+
|
|
2306
|
+
`dependents` (#2978) is the count of OTHER queue entries whose `after=`
|
|
2307
|
+
names this one — computed against the full entry set the caller passed
|
|
2308
|
+
to :func:`detect_unreachable_waits`, not just the flagged subset, so it
|
|
2309
|
+
is accurate even though those dependents themselves never appear in the
|
|
2310
|
+
result (see the predicate's own docstring for why). `0` for an entry
|
|
2311
|
+
nothing is chained behind.
|
|
2305
2312
|
"""
|
|
2306
2313
|
|
|
2307
2314
|
key: str
|
|
2308
2315
|
state: str
|
|
2309
2316
|
deferrals: int
|
|
2310
2317
|
last_reason: str
|
|
2318
|
+
dependents: int = 0
|
|
2311
2319
|
|
|
2312
2320
|
|
|
2313
2321
|
def detect_unreachable_waits(
|
|
@@ -2317,35 +2325,73 @@ def detect_unreachable_waits(
|
|
|
2317
2325
|
) -> list[UnreachableWait]:
|
|
2318
2326
|
"""Entries sitting in the #2944 guaranteed-false wait.
|
|
2319
2327
|
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2328
|
+
Two independent shapes, either of which qualifies a `blocked`/`parked`
|
|
2329
|
+
entry — both provably have no branch/PR/merge-queue row for any sweep to
|
|
2330
|
+
ever form an opinion about, which is the actual invariant this predicate
|
|
2331
|
+
is checking, not "attempts == 0" as a proxy for it (#2978 found the proxy
|
|
2332
|
+
wrong for the second shape):
|
|
2333
|
+
|
|
2334
|
+
* ``attempts == 0`` and ``deferrals > min_deferrals`` — never dispatched
|
|
2335
|
+
at all. The original #2944 shape.
|
|
2336
|
+
* ``attempts > 0``, ``state == blocked``, and the entry's own
|
|
2337
|
+
`last_reason` carries #2273's "no assignment was ever created for this
|
|
2338
|
+
run" marker (:func:`_is_dispatch_failure_reason`) — every dispatch
|
|
2339
|
+
attempt died before `coord assign` produced a board-visible row, and
|
|
2340
|
+
the entry has now exhausted its retry budget (the only way to reach
|
|
2341
|
+
`blocked` with that reason: see `_reconcile_running`'s `exhausted`
|
|
2342
|
+
branch). Exhaustion is its own grace period — there is no next attempt
|
|
2343
|
+
left to wait out — so `min_deferrals` is not applied here.
|
|
2344
|
+
|
|
2345
|
+
A `blocked`/`parked` entry whose `last_reason` is instead one of
|
|
2346
|
+
`_resolve_prereqs`'s unsatisfiable-`after=` verdict shapes
|
|
2347
|
+
(:func:`_is_unsatisfiable_prereq_reason`) is excluded UNCONDITIONALLY,
|
|
2348
|
+
regardless of attempts/deferrals — #2978: that shape is
|
|
2349
|
+
:func:`_reconcile_blocked_after`'s to resolve (#2362, widened #2756),
|
|
2350
|
+
not an operator's, and flagging it here directly contradicts that
|
|
2351
|
+
function's own documented behaviour. This is what keeps a chain's
|
|
2352
|
+
dependents (each blocked with "pre-req X is queued but blocked — it will
|
|
2353
|
+
never satisfy") out of the result entirely, leaving only the root that
|
|
2354
|
+
actually needs a human.
|
|
2355
|
+
|
|
2356
|
+
Pure and cheap (a predicate over already-loaded rows, no clock, no I/O),
|
|
2357
|
+
so the same function backs both `coord drive-queue status`'s `alert:`
|
|
2358
|
+
line (`coord.commands.drive_queue._queue_alert`) and the `coord doctor`
|
|
2359
|
+
WARN (`coord.health.checks.wedged_drive_queue`) — one definition of
|
|
2360
|
+
"wedged", not two that could drift apart.
|
|
2333
2361
|
"""
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2362
|
+
entries = list(entries)
|
|
2363
|
+
dependents_of: dict[str, int] = {}
|
|
2364
|
+
for e in entries:
|
|
2365
|
+
for dep in e.after:
|
|
2366
|
+
dependents_of[dep] = dependents_of.get(dep, 0) + 1
|
|
2367
|
+
|
|
2368
|
+
waits: list[UnreachableWait] = []
|
|
2369
|
+
for e in entries:
|
|
2370
|
+
if e.state not in (STATE_BLOCKED, STATE_PARKED):
|
|
2371
|
+
continue
|
|
2372
|
+
if _is_unsatisfiable_prereq_reason(e.last_reason):
|
|
2373
|
+
continue
|
|
2374
|
+
if e.attempts == 0:
|
|
2375
|
+
if e.deferrals <= min_deferrals:
|
|
2376
|
+
continue
|
|
2377
|
+
elif not (e.state == STATE_BLOCKED and _is_dispatch_failure_reason(e.last_reason)):
|
|
2378
|
+
continue
|
|
2379
|
+
waits.append(
|
|
2380
|
+
UnreachableWait(
|
|
2381
|
+
key=e.key,
|
|
2382
|
+
state=e.state,
|
|
2383
|
+
deferrals=e.deferrals,
|
|
2384
|
+
last_reason=e.last_reason,
|
|
2385
|
+
dependents=dependents_of.get(e.key, 0),
|
|
2386
|
+
)
|
|
2337
2387
|
)
|
|
2338
|
-
|
|
2339
|
-
if e.state in (STATE_BLOCKED, STATE_PARKED)
|
|
2340
|
-
and e.attempts == 0
|
|
2341
|
-
and e.deferrals > min_deferrals
|
|
2342
|
-
]
|
|
2388
|
+
return waits
|
|
2343
2389
|
|
|
2344
2390
|
|
|
2345
2391
|
def unreachable_wait_alert(waits: Sequence[UnreachableWait]) -> QueueAlert:
|
|
2346
2392
|
"""The queue-level record #2944's predicate raises, in :func:`_hold_alert`'s
|
|
2347
|
-
shape — a message naming the entry (or entries), the
|
|
2348
|
-
|
|
2393
|
+
shape — a message naming the entry (or entries), the evidence that
|
|
2394
|
+
qualified it, and the ONE remedy that actually clears it.
|
|
2349
2395
|
|
|
2350
2396
|
``add`` alone does not clear ``blocked`` (the queue list already
|
|
2351
2397
|
documents this as a footgun elsewhere) — only ``remove`` then ``add``
|
|
@@ -2357,29 +2403,52 @@ def unreachable_wait_alert(waits: Sequence[UnreachableWait]) -> QueueAlert:
|
|
|
2357
2403
|
``gate_readings``/``details`` lines are printed) so the remedy is visible
|
|
2358
2404
|
wherever this alert's ``reason`` is, not just to a caller that also reads
|
|
2359
2405
|
the structured field.
|
|
2406
|
+
|
|
2407
|
+
#2978: each name also carries its `dependents` count when non-zero — the
|
|
2408
|
+
entries chained behind a flagged root never appear in `waits` (see
|
|
2409
|
+
`detect_unreachable_waits`), so without this an operator has no way to
|
|
2410
|
+
know a fix to the one row named here will also resolve N others they
|
|
2411
|
+
never see mentioned. Explicitly says those dependents need no remedy of
|
|
2412
|
+
their own, since #2944's original wording ("for each entry named above")
|
|
2413
|
+
read, on a real incident, as an instruction to `remove`+`add` entries
|
|
2414
|
+
that were never named — but easy to mis-generalize to "the dependents
|
|
2415
|
+
too" by an operator who does not already know #2756 self-heals them.
|
|
2360
2416
|
"""
|
|
2361
|
-
|
|
2362
|
-
f"{w.key} ({w.state}, {w.deferrals} deferrals)"
|
|
2363
|
-
|
|
2417
|
+
def _name(w: UnreachableWait) -> str:
|
|
2418
|
+
base = f"{w.key} ({w.state}, {w.deferrals} deferrals)"
|
|
2419
|
+
if w.dependents:
|
|
2420
|
+
plural = "ies" if w.dependents != 1 else "y"
|
|
2421
|
+
base += (
|
|
2422
|
+
f" — {w.dependents} dependent entr{plural} chained behind it "
|
|
2423
|
+
"will self-heal automatically once this clears (#2756), no "
|
|
2424
|
+
"remedy needed on them"
|
|
2425
|
+
)
|
|
2426
|
+
return base
|
|
2427
|
+
|
|
2428
|
+
names = ", ".join(_name(w) for w in waits[:5])
|
|
2364
2429
|
more = ", ..." if len(waits) > 5 else ""
|
|
2365
2430
|
plural = len(waits) != 1
|
|
2366
2431
|
return QueueAlert(
|
|
2367
2432
|
reason=(
|
|
2368
2433
|
f"{len(waits)} queue entr{'ies' if plural else 'y'} stuck in a "
|
|
2369
|
-
"guaranteed-false wait —
|
|
2370
|
-
|
|
2434
|
+
"guaranteed-false wait — blocked/parked with no branch/PR/"
|
|
2435
|
+
"merge-queue row any sweep could ever act on (never dispatched, "
|
|
2436
|
+
"or every dispatch attempt died before creating an assignment); "
|
|
2371
2437
|
f"no sweep can ever clear this on its own: {names}{more}. Fix: "
|
|
2372
2438
|
"coord drive-queue remove <repo> <issue> && "
|
|
2373
|
-
"coord drive-queue add <repo> <issue> for each entry named
|
|
2439
|
+
"coord drive-queue add <repo> <issue> for each ROOT entry named "
|
|
2440
|
+
"above — never on a dependent chained behind one."
|
|
2374
2441
|
),
|
|
2375
2442
|
details=tuple(
|
|
2376
2443
|
f"{w.key}: {w.state}, {w.deferrals} deferrals, "
|
|
2377
|
-
f"last_reason={w.last_reason!r}"
|
|
2444
|
+
f"dependents={w.dependents}, last_reason={w.last_reason!r}"
|
|
2378
2445
|
for w in waits
|
|
2379
2446
|
),
|
|
2380
2447
|
command=(
|
|
2381
2448
|
"coord drive-queue remove <repo> <issue> && "
|
|
2382
|
-
"coord drive-queue add <repo> <issue> — for each entry
|
|
2449
|
+
"coord drive-queue add <repo> <issue> — for each ROOT entry "
|
|
2450
|
+
"named above; any dependents chained behind it self-heal on "
|
|
2451
|
+
"their own (#2756)"
|
|
2383
2452
|
),
|
|
2384
2453
|
)
|
|
2385
2454
|
|
{code_coordinator-0.5.310 → code_coordinator-0.5.311}/coord/health/checks/wedged_drive_queue.py
RENAMED
|
@@ -19,6 +19,15 @@ so this check and that line can never say different things) — this probe
|
|
|
19
19
|
just re-derives it, live, from ``drive_queue`` state every time ``coord
|
|
20
20
|
doctor`` runs, independent of whatever the last tick happened to report.
|
|
21
21
|
|
|
22
|
+
#2978: the predicate also flags an ``attempts > 0`` entry that exhausted its
|
|
23
|
+
retry budget without ever getting a #2273 dispatch-layer death past `coord
|
|
24
|
+
assign` (same "no branch/PR ever existed" invariant, just reached a
|
|
25
|
+
different way) — and excludes an entry blocked solely on an unsatisfiable
|
|
26
|
+
``after=`` pre-req, since that one is ``_reconcile_blocked_after``'s to
|
|
27
|
+
self-heal (#2362/#2756), not an operator's. See
|
|
28
|
+
``coord.drive_queue.detect_unreachable_waits`` for the exact predicate; this
|
|
29
|
+
probe does not duplicate it, only renders its result.
|
|
30
|
+
|
|
22
31
|
This is deliberately independent of #2935 (which fixes the specific sweep
|
|
23
32
|
that produced the #2900/#2907 incident) and #2230 (the sweep's origin): both
|
|
24
33
|
are about *why* a row gets wedged this way; this check is about the row
|
|
@@ -51,16 +60,19 @@ from coord.health.registry import COST_NETWORK, check
|
|
|
51
60
|
cost=COST_NETWORK,
|
|
52
61
|
description=(
|
|
53
62
|
"Drive-queue rows in `coord.drive_queue`'s #2944 guaranteed-false "
|
|
54
|
-
"wait: `blocked`/`parked
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"`release_cordon
|
|
63
|
+
"wait: `blocked`/`parked` with no branch/PR/merge-queue row any "
|
|
64
|
+
"sweep could ever act on — either `attempts == 0` (never dispatched) "
|
|
65
|
+
"past a few ticks of grace, or `attempts > 0` with an exhausted "
|
|
66
|
+
"#2273 dispatch-layer death (#2978). Excludes an entry blocked "
|
|
67
|
+
"solely on an unsatisfiable `after=` pre-req — that one is "
|
|
68
|
+
"`_reconcile_blocked_after`'s to self-heal (#2756), not an "
|
|
69
|
+
"operator's. Reads via `coord.state.list_drive_queue`, which — per "
|
|
70
|
+
"its own docstring — routes to the daemon over HTTP when "
|
|
71
|
+
"`board_service` is set (the common case on a thin-client fleet "
|
|
72
|
+
"machine, see `release_cordon.py`) and only reads the local DB "
|
|
73
|
+
"directly otherwise; `cost=network` so `--no-network`/timer runs "
|
|
74
|
+
"and the automatic per-agent health poll skip it exactly like the "
|
|
75
|
+
"other network-costed checks, same precedent as `release_cordon`."
|
|
64
76
|
),
|
|
65
77
|
)
|
|
66
78
|
def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
|
|
@@ -92,7 +104,10 @@ def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
|
|
|
92
104
|
)
|
|
93
105
|
|
|
94
106
|
sample = ", ".join(
|
|
95
|
-
f"{w.key} ({w.state}, {w.deferrals} deferrals
|
|
107
|
+
f"{w.key} ({w.state}, {w.deferrals} deferrals"
|
|
108
|
+
+ (f", {w.dependents} dependents self-heal (#2756)" if w.dependents else "")
|
|
109
|
+
+ ")"
|
|
110
|
+
for w in waits[:5]
|
|
96
111
|
)
|
|
97
112
|
return CheckResult(
|
|
98
113
|
check_id="wedged_drive_queue",
|
|
@@ -104,11 +119,17 @@ def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
|
|
|
104
119
|
),
|
|
105
120
|
detail=(
|
|
106
121
|
f"e.g. {sample}" + (", ..." if len(waits) > 5 else "")
|
|
107
|
-
+ " —
|
|
108
|
-
"
|
|
109
|
-
"
|
|
122
|
+
+ " — no branch/PR/merge-queue row any sweep could ever act on "
|
|
123
|
+
"(never dispatched, or every dispatch attempt died before "
|
|
124
|
+
"creating an assignment); cannot clear on its own. fix (root "
|
|
125
|
+
"only — any dependents self-heal, #2756): coord drive-queue "
|
|
126
|
+
"remove <repo> <issue> && coord drive-queue add <repo> <issue>"
|
|
127
|
+
),
|
|
128
|
+
threshold=(
|
|
129
|
+
"warn when any entry is blocked/parked with no branch/PR a sweep "
|
|
130
|
+
"could ever act on: attempts=0 past a few ticks of grace, or "
|
|
131
|
+
"attempts>0 with an exhausted #2273 dispatch-layer death"
|
|
110
132
|
),
|
|
111
|
-
threshold="warn when any entry is blocked/parked, attempts=0, past a few ticks of grace",
|
|
112
133
|
values={
|
|
113
134
|
"count": len(waits),
|
|
114
135
|
"entries": [
|
|
@@ -116,6 +137,7 @@ def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
|
|
|
116
137
|
"key": w.key,
|
|
117
138
|
"state": w.state,
|
|
118
139
|
"deferrals": w.deferrals,
|
|
140
|
+
"dependents": w.dependents,
|
|
119
141
|
"last_reason": w.last_reason,
|
|
120
142
|
}
|
|
121
143
|
for w in waits
|
|
@@ -3690,6 +3690,49 @@ def test_status_alert_does_not_trip_for_a_real_merge_gate_wait(cli):
|
|
|
3690
3690
|
assert "alert: (none)" in result.output
|
|
3691
3691
|
|
|
3692
3692
|
|
|
3693
|
+
# ── #2978: a wedged root with dependents chained behind it — the alert must
|
|
3694
|
+
# name the root only, not the dependents, and the fix is remove+add on the
|
|
3695
|
+
# root alone. This is the exact claude-coordinator#2978 ms-5 incident: an
|
|
3696
|
+
# `attempts > 0` root that exhausted its budget on #2273 dispatch-layer
|
|
3697
|
+
# deaths (never got as far as creating an assignment), with eight dependents
|
|
3698
|
+
# blocked behind it on an unsatisfiable `after=` — a shape #2756's
|
|
3699
|
+
# `_reconcile_blocked_after` self-heals on its own the moment the root
|
|
3700
|
+
# clears, so it must never be named here either.
|
|
3701
|
+
|
|
3702
|
+
|
|
3703
|
+
def test_status_alert_names_the_root_only_not_the_chained_dependents(cli):
|
|
3704
|
+
cli("add", REPO, "161")
|
|
3705
|
+
state._update_drive_queue_entry_local(
|
|
3706
|
+
REPO, 161, state="blocked", attempts=2, deferrals=1,
|
|
3707
|
+
last_reason=(
|
|
3708
|
+
"drive session died without landing the work (2/2 attempts) — "
|
|
3709
|
+
"giving up — no assignment was ever created for this run "
|
|
3710
|
+
"(#2273): likely an infrastructure/dispatch-layer failure, not "
|
|
3711
|
+
"a code defect"
|
|
3712
|
+
),
|
|
3713
|
+
)
|
|
3714
|
+
root_key = f"{REPO}#161"
|
|
3715
|
+
for issue in range(162, 170):
|
|
3716
|
+
cli("add", REPO, str(issue), "--after", "161")
|
|
3717
|
+
state._update_drive_queue_entry_local(
|
|
3718
|
+
REPO, issue, state="blocked", attempts=0, deferrals=40,
|
|
3719
|
+
last_reason=(
|
|
3720
|
+
f"pre-req {root_key} is queued but blocked — it will never "
|
|
3721
|
+
"satisfy"
|
|
3722
|
+
),
|
|
3723
|
+
)
|
|
3724
|
+
|
|
3725
|
+
result = cli("status")
|
|
3726
|
+
assert result.exit_code == 0, result.output
|
|
3727
|
+
assert "alert: (none)" not in result.output
|
|
3728
|
+
assert root_key in result.output
|
|
3729
|
+
for issue in range(162, 170):
|
|
3730
|
+
assert f"{REPO}#{issue}" not in result.output
|
|
3731
|
+
assert "coord drive-queue remove" in result.output
|
|
3732
|
+
assert "coord drive-queue add" in result.output
|
|
3733
|
+
assert "self-heal" in result.output
|
|
3734
|
+
|
|
3735
|
+
|
|
3693
3736
|
# ── deploy gates (#1757) ─────────────────────────────────────────────────────
|
|
3694
3737
|
#
|
|
3695
3738
|
# The acceptance bar for `--hold-after`. `merged != live`: a queue that
|
|
@@ -5371,3 +5371,100 @@ def test_unreachable_wait_alert_names_the_entry_deferrals_and_remedy():
|
|
|
5371
5371
|
assert "207 deferrals" in alert.reason
|
|
5372
5372
|
assert "coord drive-queue remove" in alert.command
|
|
5373
5373
|
assert "coord drive-queue add" in alert.command
|
|
5374
|
+
|
|
5375
|
+
|
|
5376
|
+
# ── #2978: root-only, and the #2273-exhausted root is no longer excluded ────
|
|
5377
|
+
#
|
|
5378
|
+
# #2944's alert got today's ms-5 incident exactly backwards: it named eight
|
|
5379
|
+
# dependents that needed nothing (each blocked on an unsatisfiable `after=`
|
|
5380
|
+
# pre-req — #2756's to self-heal) and omitted the one entry — the root,
|
|
5381
|
+
# `attempts > 0` — that actually needed an operator. These tests pin both
|
|
5382
|
+
# halves of the fix plus the exact incident shape as a regression.
|
|
5383
|
+
|
|
5384
|
+
_DISPATCH_FAILURE_REASON = (
|
|
5385
|
+
"drive session died without landing the work (2/2 attempts) — giving up "
|
|
5386
|
+
"— no assignment was ever created for this run (#2273): likely an "
|
|
5387
|
+
"infrastructure/dispatch-layer failure, not a code defect"
|
|
5388
|
+
)
|
|
5389
|
+
|
|
5390
|
+
|
|
5391
|
+
def test_detect_unreachable_waits_excludes_an_unsatisfiable_after_block():
|
|
5392
|
+
"""#2756 owns this shape (`_reconcile_blocked_after` self-heals it the
|
|
5393
|
+
moment the named pre-req clears) — it must never also be a #2944
|
|
5394
|
+
target, no matter how many deferrals it has accumulated."""
|
|
5395
|
+
dep_key = entry_key(REPO, 161)
|
|
5396
|
+
dependent = entry(
|
|
5397
|
+
162,
|
|
5398
|
+
state=STATE_BLOCKED,
|
|
5399
|
+
attempts=0,
|
|
5400
|
+
deferrals=40,
|
|
5401
|
+
after=(dep_key,),
|
|
5402
|
+
last_reason=f"pre-req {dep_key} is queued but blocked — it will never satisfy",
|
|
5403
|
+
)
|
|
5404
|
+
assert detect_unreachable_waits([dependent]) == []
|
|
5405
|
+
|
|
5406
|
+
|
|
5407
|
+
def test_detect_unreachable_waits_flags_an_exhausted_dispatch_layer_root():
|
|
5408
|
+
"""#2978: an entry that exhausted its attempts without #2273's dispatch
|
|
5409
|
+
layer ever producing a board-visible assignment IS the #2944 shape —
|
|
5410
|
+
`attempts > 0` alone must no longer exclude it."""
|
|
5411
|
+
root = entry(
|
|
5412
|
+
161,
|
|
5413
|
+
state=STATE_BLOCKED,
|
|
5414
|
+
attempts=2,
|
|
5415
|
+
deferrals=1,
|
|
5416
|
+
last_reason=_DISPATCH_FAILURE_REASON,
|
|
5417
|
+
)
|
|
5418
|
+
waits = detect_unreachable_waits([root])
|
|
5419
|
+
assert [w.key for w in waits] == [entry_key(REPO, 161)]
|
|
5420
|
+
|
|
5421
|
+
|
|
5422
|
+
def test_detect_unreachable_waits_still_ignores_a_real_dispatched_attempt():
|
|
5423
|
+
"""An ordinary `blocked` entry with `attempts > 0` and a last_reason that
|
|
5424
|
+
does NOT carry #2273's dispatch-failure marker is still excluded — it
|
|
5425
|
+
was dispatched, has (or had) a real branch/PR, and is a legitimate wait,
|
|
5426
|
+
not an unreachable one."""
|
|
5427
|
+
real_attempt = entry(
|
|
5428
|
+
4, state=STATE_BLOCKED, attempts=1, deferrals=500, last_reason="CI red"
|
|
5429
|
+
)
|
|
5430
|
+
assert detect_unreachable_waits([real_attempt]) == []
|
|
5431
|
+
|
|
5432
|
+
|
|
5433
|
+
def test_detect_unreachable_waits_reproduces_the_ms5_incident_shape():
|
|
5434
|
+
"""The exact claude-coordinator#2978 incident: one root `blocked
|
|
5435
|
+
attempts=2` with a #2273 dispatch-layer death, and eight dependents
|
|
5436
|
+
chained behind it via `after=`, each blocked with the frozen
|
|
5437
|
+
unsatisfiable-pre-req caption. The alert must name the root only — none
|
|
5438
|
+
of the eight dependents, and the root's `dependents` count must be 8 so
|
|
5439
|
+
the rendered alert can tell the operator they self-heal."""
|
|
5440
|
+
root_key = entry_key(REPO, 161)
|
|
5441
|
+
root = entry(
|
|
5442
|
+
161,
|
|
5443
|
+
state=STATE_BLOCKED,
|
|
5444
|
+
attempts=2,
|
|
5445
|
+
deferrals=1,
|
|
5446
|
+
last_reason=_DISPATCH_FAILURE_REASON,
|
|
5447
|
+
)
|
|
5448
|
+
dependents = [
|
|
5449
|
+
entry(
|
|
5450
|
+
issue,
|
|
5451
|
+
state=STATE_BLOCKED,
|
|
5452
|
+
attempts=0,
|
|
5453
|
+
deferrals=40,
|
|
5454
|
+
after=(root_key,),
|
|
5455
|
+
last_reason=f"pre-req {root_key} is queued but blocked — it will never satisfy",
|
|
5456
|
+
)
|
|
5457
|
+
for issue in range(162, 170)
|
|
5458
|
+
]
|
|
5459
|
+
assert len(dependents) == 8
|
|
5460
|
+
|
|
5461
|
+
waits = detect_unreachable_waits([root, *dependents])
|
|
5462
|
+
assert [w.key for w in waits] == [root_key]
|
|
5463
|
+
assert waits[0].dependents == 8
|
|
5464
|
+
|
|
5465
|
+
alert = unreachable_wait_alert(waits)
|
|
5466
|
+
assert root_key in alert.reason
|
|
5467
|
+
for dep in dependents:
|
|
5468
|
+
assert dep.key not in alert.reason
|
|
5469
|
+
assert "8 dependent entries" in alert.reason
|
|
5470
|
+
assert "self-heal" in alert.reason
|
{code_coordinator-0.5.310 → code_coordinator-0.5.311}/tests/test_health_wedged_drive_queue.py
RENAMED
|
@@ -98,6 +98,55 @@ def test_ok_when_blocked_with_real_attempts_spent(monkeypatch) -> None:
|
|
|
98
98
|
assert result.severity == Severity.OK
|
|
99
99
|
|
|
100
100
|
|
|
101
|
+
_DISPATCH_FAILURE_REASON = (
|
|
102
|
+
"drive session died without landing the work (2/2 attempts) — giving up "
|
|
103
|
+
"— no assignment was ever created for this run (#2273): likely an "
|
|
104
|
+
"infrastructure/dispatch-layer failure, not a code defect"
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def test_warn_for_an_exhausted_dispatch_layer_root_despite_attempts_spent(
|
|
109
|
+
monkeypatch,
|
|
110
|
+
) -> None:
|
|
111
|
+
"""#2978: `attempts > 0` no longer buys an unconditional pass — an entry
|
|
112
|
+
that exhausted its retry budget without #2273's dispatch layer ever
|
|
113
|
+
producing an assignment has the identical "no branch/PR for a sweep to
|
|
114
|
+
act on" shape as the original attempts=0 case."""
|
|
115
|
+
monkeypatch.setattr(
|
|
116
|
+
"coord.state.list_drive_queue",
|
|
117
|
+
lambda: [
|
|
118
|
+
_row(161, state="blocked", attempts=2, deferrals=1, last_reason=_DISPATCH_FAILURE_REASON)
|
|
119
|
+
],
|
|
120
|
+
)
|
|
121
|
+
result = probe_wedged_drive_queue(_health_ctx())
|
|
122
|
+
assert result.severity == Severity.WARN
|
|
123
|
+
assert "claude-coordinator#161" in result.detail
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def test_ok_for_a_dependent_blocked_on_an_unsatisfiable_after_prereq(
|
|
127
|
+
monkeypatch,
|
|
128
|
+
) -> None:
|
|
129
|
+
"""#2978: a dependent chained behind a blocked root — `_reconcile_
|
|
130
|
+
blocked_after`'s to self-heal (#2756) — must never warn here, no matter
|
|
131
|
+
how many deferrals it has piled up."""
|
|
132
|
+
root_key = "claude-coordinator#161"
|
|
133
|
+
monkeypatch.setattr(
|
|
134
|
+
"coord.state.list_drive_queue",
|
|
135
|
+
lambda: [
|
|
136
|
+
_row(
|
|
137
|
+
162,
|
|
138
|
+
state="blocked",
|
|
139
|
+
attempts=0,
|
|
140
|
+
deferrals=40,
|
|
141
|
+
after_json=f'["{root_key}"]',
|
|
142
|
+
last_reason=f"pre-req {root_key} is queued but blocked — it will never satisfy",
|
|
143
|
+
)
|
|
144
|
+
],
|
|
145
|
+
)
|
|
146
|
+
result = probe_wedged_drive_queue(_health_ctx())
|
|
147
|
+
assert result.severity == Severity.OK
|
|
148
|
+
|
|
149
|
+
|
|
101
150
|
def test_unknown_when_the_queue_read_raises(monkeypatch) -> None:
|
|
102
151
|
def _boom():
|
|
103
152
|
raise RuntimeError("db is locked")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.310 → code_coordinator-0.5.311}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|