code-coordinator 0.5.269__tar.gz → 0.5.271__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.269 → code_coordinator-0.5.271}/PKG-INFO +1 -1
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/drive.py +97 -16
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/drive_state.py +29 -7
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/review.py +108 -2
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive.py +36 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_state.py +92 -0
- code_coordinator-0.5.271/tests/test_stale_busy_reviewer_697.py +192 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.gitignore +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/CLAUDE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/GOAL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/LICENSE +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/MANIFEST.in +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/README.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agent.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/audit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/block_log.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_service.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/brain.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/claim.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/cli.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/client.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/comments.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/config.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dao.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/db.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deps.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/events.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/filelock.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/freshness.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gates.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/goal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/context.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/models.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/render.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/units.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/hooks.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/interactive.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/models.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/network.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notify.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/openapi.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/parentage.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/plans.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/progress.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_window.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/reports.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/self_health.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/smoke.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/split_work.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/sql.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/state.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_author.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_report.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/usage.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/install-agent.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/pyproject.toml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/setup.cfg +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/__init__.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/conftest.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_db.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_events.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_init.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_models.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_network.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_session.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_split.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_state.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -714,6 +714,7 @@ tests/test_split.py
|
|
|
714
714
|
tests/test_split_work.py
|
|
715
715
|
tests/test_sql_dialect.py
|
|
716
716
|
tests/test_stage_projection.py
|
|
717
|
+
tests/test_stale_busy_reviewer_697.py
|
|
717
718
|
tests/test_stalled_pipeline.py
|
|
718
719
|
tests/test_state.py
|
|
719
720
|
tests/test_state_review_findings_daemon.py
|
{code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -786,6 +786,7 @@
|
|
|
786
786
|
"tests/test_split_work.py",
|
|
787
787
|
"tests/test_sql_dialect.py",
|
|
788
788
|
"tests/test_stage_projection.py",
|
|
789
|
+
"tests/test_stale_busy_reviewer_697.py",
|
|
789
790
|
"tests/test_stalled_pipeline.py",
|
|
790
791
|
"tests/test_state.py",
|
|
791
792
|
"tests/test_state_review_findings_daemon.py",
|
|
@@ -94,7 +94,7 @@ import sys
|
|
|
94
94
|
import time
|
|
95
95
|
from dataclasses import dataclass, field, replace
|
|
96
96
|
from pathlib import Path
|
|
97
|
-
from typing import Any, Callable, Protocol, Sequence
|
|
97
|
+
from typing import Any, Callable, NamedTuple, Protocol, Sequence
|
|
98
98
|
|
|
99
99
|
from coord.filelock import FileLock, LockBusy, notify_lock_path
|
|
100
100
|
from coord.drive_state import (
|
|
@@ -628,9 +628,34 @@ def _format_age(seconds: float) -> str:
|
|
|
628
628
|
return f"{seconds / 86400:.1f}d"
|
|
629
629
|
|
|
630
630
|
|
|
631
|
+
class RefusedPolicyStaleness(NamedTuple):
|
|
632
|
+
"""The verdict :func:`_refused_policy_staleness` reaches, plus WHY —
|
|
633
|
+
#2881: collapsing "no title resolved" and "title unchanged" to the same
|
|
634
|
+
``False`` (as the original #2871 boolean-only version did) is what let
|
|
635
|
+
the #2881 bug (``title`` missing from the daemon-host payload,
|
|
636
|
+
``coord/drive_state.py``'s ``_local_issue_rows``) hide for a whole
|
|
637
|
+
release: every real drive landed in ``uncertain`` silently, read
|
|
638
|
+
identically to a confidently-checked ``unchanged``, and the operator-
|
|
639
|
+
facing message could not tell the two apart either.
|
|
640
|
+
"""
|
|
641
|
+
|
|
642
|
+
is_stale: bool
|
|
643
|
+
uncertain: bool
|
|
644
|
+
detail: str
|
|
645
|
+
|
|
646
|
+
|
|
631
647
|
def _refused_policy_is_stale(state: IssueState) -> bool:
|
|
632
648
|
"""True when a terminal ``refused_policy`` work row no longer describes
|
|
633
|
-
the issue as it stands now (#2871).
|
|
649
|
+
the issue as it stands now (#2871). Thin bool wrapper around
|
|
650
|
+
:func:`_refused_policy_staleness` — see that function for the reasoning
|
|
651
|
+
and for the ``uncertain``/``detail`` distinction #2881 added.
|
|
652
|
+
"""
|
|
653
|
+
return _refused_policy_staleness(state).is_stale
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
def _refused_policy_staleness(state: IssueState) -> RefusedPolicyStaleness:
|
|
657
|
+
"""Does a terminal ``refused_policy`` work row still describe the issue
|
|
658
|
+
as it stands now (#2871), and how confident is that answer (#2881)?
|
|
634
659
|
|
|
635
660
|
A worker refuses pre-dispatch work exactly once, correctly, for the ask
|
|
636
661
|
it was shown — the refusal says nothing about a DIFFERENT ask on the same
|
|
@@ -639,16 +664,50 @@ def _refused_policy_is_stale(state: IssueState) -> bool:
|
|
|
639
664
|
``issue-{N}-{slugify(title)}`` at dispatch time, see
|
|
640
665
|
``coord.agent``'s ``branch_name`` construction) no longer matches what a
|
|
641
666
|
fresh dispatch would name — that mismatch is the signal a retarget
|
|
642
|
-
happened.
|
|
643
|
-
|
|
644
|
-
|
|
667
|
+
happened.
|
|
668
|
+
|
|
669
|
+
Conservative on every uncertainty (no branch recorded, no title
|
|
670
|
+
resolved): ``is_stale=False`` — i.e. still treated as blocking — rather
|
|
671
|
+
than risk waving a genuinely-unresolved refusal through. #2881: those two
|
|
672
|
+
uncertain cases are NOT the same situation as a confidently-resolved
|
|
673
|
+
"title unchanged", so ``uncertain=True`` and a specific ``detail`` come
|
|
674
|
+
back for the caller to surface — a die()/audit message that confidently
|
|
675
|
+
tells the operator "retarget the issue" is actively wrong when the code
|
|
676
|
+
could not even check, e.g. because the daemon-host board payload dropped
|
|
677
|
+
``title`` again.
|
|
645
678
|
"""
|
|
646
|
-
if not state.work_branch
|
|
647
|
-
return
|
|
679
|
+
if not state.work_branch:
|
|
680
|
+
return RefusedPolicyStaleness(
|
|
681
|
+
is_stale=False,
|
|
682
|
+
uncertain=True,
|
|
683
|
+
detail=(
|
|
684
|
+
"no branch was recorded on the refused_policy row, so "
|
|
685
|
+
"whether the issue was retargeted since could not be checked"
|
|
686
|
+
),
|
|
687
|
+
)
|
|
688
|
+
if not state.issue_title:
|
|
689
|
+
return RefusedPolicyStaleness(
|
|
690
|
+
is_stale=False,
|
|
691
|
+
uncertain=True,
|
|
692
|
+
detail=(
|
|
693
|
+
"the issue's current title did not resolve from this "
|
|
694
|
+
"drive's board payload, so whether it was retargeted since "
|
|
695
|
+
"could not be checked (#2881 — if this fires in production, "
|
|
696
|
+
"suspect the daemon-host local-DB payload again)"
|
|
697
|
+
),
|
|
698
|
+
)
|
|
648
699
|
from coord.agent import _slugify # noqa: PLC0415
|
|
649
700
|
|
|
650
701
|
expected_branch = f"issue-{state.issue}-{_slugify(state.issue_title)}"
|
|
651
|
-
|
|
702
|
+
if state.work_branch != expected_branch:
|
|
703
|
+
return RefusedPolicyStaleness(
|
|
704
|
+
is_stale=True, uncertain=False, detail="retargeted since the refusal",
|
|
705
|
+
)
|
|
706
|
+
return RefusedPolicyStaleness(
|
|
707
|
+
is_stale=False,
|
|
708
|
+
uncertain=False,
|
|
709
|
+
detail="the issue's title is unchanged since the refusal",
|
|
710
|
+
)
|
|
652
711
|
|
|
653
712
|
|
|
654
713
|
# ── oracle-loop JIT slice authoring (#1453) ─────────────────────────────────
|
|
@@ -2104,7 +2163,8 @@ def decide(
|
|
|
2104
2163
|
else None
|
|
2105
2164
|
)
|
|
2106
2165
|
age = _format_age(age_seconds) if age_seconds is not None else "unknown age"
|
|
2107
|
-
|
|
2166
|
+
staleness = _refused_policy_staleness(state)
|
|
2167
|
+
if staleness.is_stale:
|
|
2108
2168
|
bypass_summary = (
|
|
2109
2169
|
f"pre-dispatch: bypassing stale refused_policy assignment "
|
|
2110
2170
|
f"{state.work_aid} ({age} old) on issue {state.repo}#{state.issue} "
|
|
@@ -2141,17 +2201,38 @@ def decide(
|
|
|
2141
2201
|
# this exit as a transient death — the same "cannot change on retry"
|
|
2142
2202
|
# principle #1844 already applies pre-dispatch, applied here
|
|
2143
2203
|
# post-dispatch.
|
|
2204
|
+
#
|
|
2205
|
+
# #2881: `staleness.uncertain` distinguishes "checked, and the title
|
|
2206
|
+
# really is unchanged" from "could not check at all" — the original
|
|
2207
|
+
# #2871 message collapsed both to the same confident "retarget the
|
|
2208
|
+
# issue, the next drive will see it" prose, which is actively wrong
|
|
2209
|
+
# advice in the uncertain case (the operator may have ALREADY
|
|
2210
|
+
# retargeted, and the driver simply couldn't tell).
|
|
2211
|
+
if staleness.uncertain:
|
|
2212
|
+
remedy = (
|
|
2213
|
+
"Needs the coordinator: do the work directly. Retargeting "
|
|
2214
|
+
"(rewriting the issue's title) SHOULD make the next `coord "
|
|
2215
|
+
f"drive` dispatch fresh work automatically (#2871), but "
|
|
2216
|
+
f"{staleness.detail} — so THIS run could not confirm that "
|
|
2217
|
+
"either way. If a retarget was already tried and this is "
|
|
2218
|
+
"still blocking, that's worth investigating on its own "
|
|
2219
|
+
"(#2881) rather than assuming the retarget silently failed."
|
|
2220
|
+
)
|
|
2221
|
+
else:
|
|
2222
|
+
remedy = (
|
|
2223
|
+
"Needs the coordinator: do the work directly, OR retarget "
|
|
2224
|
+
"the issue (rewrite its title so the deliverable matches "
|
|
2225
|
+
"what should actually be dispatched) — the next `coord "
|
|
2226
|
+
"drive` detects the retarget and dispatches fresh work "
|
|
2227
|
+
f"automatically (#2871), so `coord drive-queue remove "
|
|
2228
|
+
f"{state.repo} {state.issue}` + `add` then genuinely clears "
|
|
2229
|
+
"this once the issue is retargeted."
|
|
2230
|
+
)
|
|
2144
2231
|
return _die(
|
|
2145
2232
|
f"pre-dispatch refusal on assignment {state.work_aid} "
|
|
2146
2233
|
f"(refused_policy, {age} old) — work refused on a standing "
|
|
2147
2234
|
"repo-rule prohibition rather than doing the dispatched work; "
|
|
2148
|
-
"the worker did the CORRECT thing (#2234).
|
|
2149
|
-
"coordinator: do the work directly, OR retarget the issue "
|
|
2150
|
-
"(rewrite its title so the deliverable matches what should "
|
|
2151
|
-
"actually be dispatched) — the next `coord drive` detects the "
|
|
2152
|
-
"retarget and dispatches fresh work automatically (#2871), so "
|
|
2153
|
-
f"`coord drive-queue remove {state.repo} {state.issue}` + `add` "
|
|
2154
|
-
"then genuinely clears this once the issue is retargeted.\n"
|
|
2235
|
+
f"the worker did the CORRECT thing (#2234). {remedy}\n"
|
|
2155
2236
|
f" inspect: coord log {state.work_aid} --machine "
|
|
2156
2237
|
f"{state.work_machine or machine}\n"
|
|
2157
2238
|
f" {POLICY_REFUSAL_MARKER}"
|
|
@@ -993,11 +993,33 @@ def _local_issue_rows() -> list[dict]:
|
|
|
993
993
|
``coord.db.get_connection()`` singleton
|
|
994
994
|
``coord.commands.drive_queue._local_issue_rows`` already uses for its own
|
|
995
995
|
(narrower — ``repo_name, number, state`` only) top-up of the same
|
|
996
|
-
standalone-payload gap; this one additionally selects ``
|
|
997
|
-
/ ``milestone_title`` / ``labels`` / ``body``
|
|
998
|
-
|
|
999
|
-
milestone_work_order_membership
|
|
1000
|
-
|
|
996
|
+
standalone-payload gap; this one additionally selects ``title`` /
|
|
997
|
+
``milestone_number`` / ``milestone_title`` / ``labels`` / ``body`` /
|
|
998
|
+
``synced_at`` — what :func:`project`'s oracle-loop resolution,
|
|
999
|
+
:func:`coord.milestone_order.milestone_work_order_membership`, and
|
|
1000
|
+
``coord.drive_queue.build_board_view``'s ``#2858`` staleness check need
|
|
1001
|
+
that the narrower query doesn't carry.
|
|
1002
|
+
|
|
1003
|
+
#2881: ``title`` was missing from this SELECT even though :func:`project`
|
|
1004
|
+
has read ``oi.get("title")`` since #2871 — so on every daemon-host drive
|
|
1005
|
+
(the ONLY host that runs `coord drive-queue tick`, i.e. every real
|
|
1006
|
+
dispatch) ``issue_title`` resolved to ``""`` for every issue, and
|
|
1007
|
+
``_refused_policy_is_stale`` in ``coord/drive.py`` hit its
|
|
1008
|
+
"uncertain ⇒ still blocking" guard unconditionally — the retarget-bypass
|
|
1009
|
+
it exists to provide could never fire in production. The HTTP `/board`
|
|
1010
|
+
path (`coord.dao.SqliteStore` → `board_schema.BoardIssue`, which DOES
|
|
1011
|
+
declare ``title``) was never broken; nothing that dispatches drives goes
|
|
1012
|
+
through it. Auditing this SELECT against ``BoardIssue`` (#2881's other
|
|
1013
|
+
ask, "the two projections drift and the hooks cannot prevent it")
|
|
1014
|
+
surfaced the identical gap one field over: ``synced_at`` was ALSO
|
|
1015
|
+
missing, silently defeating ``build_board_view``'s ``#2858``
|
|
1016
|
+
fresh-vs-stale-cache read the same way on the same daemon host — fixed
|
|
1017
|
+
here alongside ``title`` rather than filed as a follow-up, since it is
|
|
1018
|
+
the same SELECT and the same root cause. See
|
|
1019
|
+
:func:`coord.drive._refused_policy_is_stale` and
|
|
1020
|
+
``tests/test_drive_state.py::test_fetch_local_issue_rows_and_http_board_expose_the_same_issue_keys``,
|
|
1021
|
+
which guards this SELECT and the HTTP shape against drifting apart
|
|
1022
|
+
again.
|
|
1001
1023
|
|
|
1002
1024
|
Deliberately queries ``get_connection()`` rather than
|
|
1003
1025
|
``coord.dao.SqliteStore`` — see :meth:`BoardFetcher._fetch_local`'s
|
|
@@ -1014,8 +1036,8 @@ def _local_issue_rows() -> list[dict]:
|
|
|
1014
1036
|
try:
|
|
1015
1037
|
rows = sql.execute(
|
|
1016
1038
|
get_connection(),
|
|
1017
|
-
"SELECT repo_name, number, state, milestone_number,
|
|
1018
|
-
"labels, body FROM issues",
|
|
1039
|
+
"SELECT repo_name, number, title, state, milestone_number, "
|
|
1040
|
+
"milestone_title, labels, body, synced_at FROM issues",
|
|
1019
1041
|
).fetchall()
|
|
1020
1042
|
except Exception: # noqa: BLE001 — see the fail-soft note above
|
|
1021
1043
|
return []
|
|
@@ -1090,6 +1090,104 @@ class ReviewerChoice:
|
|
|
1090
1090
|
rationale: str
|
|
1091
1091
|
|
|
1092
1092
|
|
|
1093
|
+
# #697: how far past a row's OWN needs-attention threshold a `pending`/
|
|
1094
|
+
# `running` row must sit before reviewer selection stops counting its machine
|
|
1095
|
+
# as busy. One hour of margin on top of a threshold that is itself measured
|
|
1096
|
+
# in tens of minutes: comfortably longer than any reap path needs
|
|
1097
|
+
# (`coord.reconcile._reconcile_no_agent_record` on the daemon's 30s tick,
|
|
1098
|
+
# `coord.diagnose.sweep_dead_running_rows` on `coord-notify.timer`'s 5min
|
|
1099
|
+
# cadence), so a row still counted busy here is one every reaper has already
|
|
1100
|
+
# had many chances at.
|
|
1101
|
+
STALE_BUSY_BUFFER_SECONDS = 3600.0
|
|
1102
|
+
|
|
1103
|
+
# The same horizon for rows whose type has NO wall-clock threshold at all —
|
|
1104
|
+
# `PipelineConfig.attention_threshold_for` returns `inf` for the attended
|
|
1105
|
+
# chat/troubleshoot/audit family (#1133). Those are exactly the rows #697
|
|
1106
|
+
# observed at 51h and 70h, so "never expires" is not an option here; a flat,
|
|
1107
|
+
# deliberately generous day is. A human really attending a chat session for
|
|
1108
|
+
# a full day is far rarer than a tmux session that died without being reaped.
|
|
1109
|
+
STALE_BUSY_INTERACTIVE_SECONDS = 24 * 3600.0
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
def _is_stale_busy_row(a: Assignment, config: Config, now: float) -> bool:
|
|
1113
|
+
"""True when *a* is too old to still be believed as occupying its machine (#697).
|
|
1114
|
+
|
|
1115
|
+
Reviewer selection's ``busy`` set used to count **every** ``pending``/
|
|
1116
|
+
``running`` board row, which is how a zombie row broke dispatch in #697:
|
|
1117
|
+
rows whose worker had been dead for hours-to-days kept inflating the set,
|
|
1118
|
+
so real machines looked occupied and selection was pushed onto whatever
|
|
1119
|
+
candidate happened to look "free" — on #669 that was an *offline* machine,
|
|
1120
|
+
and the review could not be dispatched at all.
|
|
1121
|
+
|
|
1122
|
+
This is deliberately **not** a liveness probe, and deliberately **not** a
|
|
1123
|
+
reap. The reapers (``coord.reconcile._reconcile_no_agent_record``,
|
|
1124
|
+
``coord.interactive.reap_stale_interactive_sessions``,
|
|
1125
|
+
``coord.diagnose.sweep_dead_running_rows``) own the "is it actually dead?"
|
|
1126
|
+
question, they answer it with a positive disproof or a real tmux/agent
|
|
1127
|
+
probe, and they are the only things allowed to write a terminal status.
|
|
1128
|
+
Guessing from age alone would be #1870's mistake if it gated a *write*.
|
|
1129
|
+
|
|
1130
|
+
Here it gates only a *ranking*, where being wrong is cheap and
|
|
1131
|
+
self-correcting in both directions:
|
|
1132
|
+
|
|
1133
|
+
* Wrong about a genuinely-live row → its machine is ranked as idle and may
|
|
1134
|
+
receive the review. That is the SAME outcome fallback 1
|
|
1135
|
+
("different machine, currently busy — review will queue") already
|
|
1136
|
+
produces on a one-other-machine fleet, and a genuinely-saturated agent
|
|
1137
|
+
answers with a rejection that ``_ranked_reviewer_candidates`` already
|
|
1138
|
+
falls through on (#904).
|
|
1139
|
+
* Wrong about a dead row (age not yet reached) → status quo ante: the
|
|
1140
|
+
machine stays "busy" and merely ranks lower.
|
|
1141
|
+
|
|
1142
|
+
A row with no ``dispatched_at`` is never stale — there is nothing to
|
|
1143
|
+
compute an age from, and this path never guesses, mirroring
|
|
1144
|
+
``sweep_dead_running_rows``.
|
|
1145
|
+
"""
|
|
1146
|
+
dispatched_at = getattr(a, "dispatched_at", None)
|
|
1147
|
+
if not dispatched_at:
|
|
1148
|
+
return False
|
|
1149
|
+
try:
|
|
1150
|
+
dispatched = float(dispatched_at)
|
|
1151
|
+
except (TypeError, ValueError):
|
|
1152
|
+
return False
|
|
1153
|
+
|
|
1154
|
+
threshold = config.pipeline.attention_threshold_for(
|
|
1155
|
+
a.type or "work",
|
|
1156
|
+
provider_name=a.provider_name,
|
|
1157
|
+
review_of_assignment_id=a.review_of_assignment_id,
|
|
1158
|
+
)
|
|
1159
|
+
if threshold == float("inf"):
|
|
1160
|
+
horizon = STALE_BUSY_INTERACTIVE_SECONDS
|
|
1161
|
+
else:
|
|
1162
|
+
horizon = threshold + STALE_BUSY_BUFFER_SECONDS
|
|
1163
|
+
return (now - dispatched) > horizon
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
def busy_machine_names(
|
|
1167
|
+
board: Board,
|
|
1168
|
+
config: Config,
|
|
1169
|
+
*,
|
|
1170
|
+
now: float | None = None,
|
|
1171
|
+
) -> set[str]:
|
|
1172
|
+
"""Machines with at least one *believable* in-flight row (#697).
|
|
1173
|
+
|
|
1174
|
+
The shared ``busy`` set for :func:`pick_reviewer_machine` and
|
|
1175
|
+
:func:`_ranked_reviewer_candidates` — a ``pending``/``running`` row whose
|
|
1176
|
+
age is past :func:`_is_stale_busy_row`'s horizon is presumed dead and no
|
|
1177
|
+
longer holds its machine down. See that function for why an age-only
|
|
1178
|
+
heuristic is the right instrument *for a ranking* and the wrong one for a
|
|
1179
|
+
reap.
|
|
1180
|
+
"""
|
|
1181
|
+
if now is None:
|
|
1182
|
+
now = time.time()
|
|
1183
|
+
return {
|
|
1184
|
+
a.machine_name
|
|
1185
|
+
for a in board.active
|
|
1186
|
+
if a.status in ("pending", "running")
|
|
1187
|
+
and not _is_stale_busy_row(a, config, now)
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
|
|
1093
1191
|
def pick_reviewer_machine(
|
|
1094
1192
|
worker_machine_name: str,
|
|
1095
1193
|
repo_name: str,
|
|
@@ -1111,6 +1209,11 @@ def pick_reviewer_machine(
|
|
|
1111
1209
|
cordon blocked the review, the unreviewable entry stayed `running`, the
|
|
1112
1210
|
running entry deferred the roll, and the deferred roll left the cordon
|
|
1113
1211
|
up. Explicit pauses and quiet hours still apply.
|
|
1212
|
+
|
|
1213
|
+
#697: the ``busy`` set is :func:`busy_machine_names`, which drops
|
|
1214
|
+
``pending``/``running`` rows too old to still be believed — a zombie row
|
|
1215
|
+
used to make a real machine look occupied indefinitely and push selection
|
|
1216
|
+
onto an offline "free" candidate.
|
|
1114
1217
|
"""
|
|
1115
1218
|
from coord.machine_pause import follow_on_paused_set
|
|
1116
1219
|
paused = follow_on_paused_set(config.machines)
|
|
@@ -1121,7 +1224,7 @@ def pick_reviewer_machine(
|
|
|
1121
1224
|
if not candidates:
|
|
1122
1225
|
return None
|
|
1123
1226
|
|
|
1124
|
-
busy =
|
|
1227
|
+
busy = busy_machine_names(board, config)
|
|
1125
1228
|
|
|
1126
1229
|
different = [
|
|
1127
1230
|
m for m in candidates
|
|
@@ -1191,6 +1294,9 @@ def _ranked_reviewer_candidates(
|
|
|
1191
1294
|
literal "no eligible reviewer machine configured for repo
|
|
1192
1295
|
'claude-coordinator'" that a cordoned fleet answered every review
|
|
1193
1296
|
dispatch with for 70 minutes.
|
|
1297
|
+
|
|
1298
|
+
#697: shares :func:`busy_machine_names` with ``pick_reviewer_machine``, so
|
|
1299
|
+
tier 1 vs tier 2 here is decided on *believable* in-flight rows only.
|
|
1194
1300
|
"""
|
|
1195
1301
|
from coord.machine_pause import follow_on_paused_set # noqa: PLC0415
|
|
1196
1302
|
|
|
@@ -1202,7 +1308,7 @@ def _ranked_reviewer_candidates(
|
|
|
1202
1308
|
if not candidates:
|
|
1203
1309
|
return []
|
|
1204
1310
|
|
|
1205
|
-
busy =
|
|
1311
|
+
busy = busy_machine_names(board, config)
|
|
1206
1312
|
|
|
1207
1313
|
result: list[tuple[Machine, bool]] = []
|
|
1208
1314
|
for m in candidates:
|
|
@@ -1905,6 +1905,42 @@ def test_refused_policy_is_not_bypassed_when_the_title_is_unchanged():
|
|
|
1905
1905
|
assert action.audit_event is None
|
|
1906
1906
|
|
|
1907
1907
|
|
|
1908
|
+
def test_refused_policy_still_blocking_distinguishes_uncertain_from_confident():
|
|
1909
|
+
"""#2881: the original #2871 message collapsed "title didn't resolve
|
|
1910
|
+
from the board payload" and "title resolved but is unchanged" into the
|
|
1911
|
+
identical confident "retarget the issue, the next drive will see it"
|
|
1912
|
+
prose — which is exactly why the #2881 payload bug (``title`` missing
|
|
1913
|
+
from the daemon-host ``_local_issue_rows()`` SELECT) went unnoticed for a
|
|
1914
|
+
release cycle: every real drive silently landed in the uncertain case and
|
|
1915
|
+
nothing in the operator-facing text said so. The uncertain case (no
|
|
1916
|
+
branch recorded, or no title resolved) must say the driver could not
|
|
1917
|
+
confirm either way; the confident case (title resolved, branch
|
|
1918
|
+
unchanged) keeps the original #2871 remedy verbatim.
|
|
1919
|
+
"""
|
|
1920
|
+
uncertain = step(
|
|
1921
|
+
state(work_aid="w1", work_status="refused_policy", work_finished_at=1000.0)
|
|
1922
|
+
)
|
|
1923
|
+
assert uncertain.is_exit
|
|
1924
|
+
assert "could not confirm" in uncertain.message.lower()
|
|
1925
|
+
assert "the next `coord drive` detects the retarget" not in uncertain.message
|
|
1926
|
+
|
|
1927
|
+
from coord.agent import _slugify # noqa: PLC0415
|
|
1928
|
+
|
|
1929
|
+
title = "Exactly the title this branch was named from"
|
|
1930
|
+
confident = step(
|
|
1931
|
+
state(
|
|
1932
|
+
work_aid="w1",
|
|
1933
|
+
work_status="refused_policy",
|
|
1934
|
+
work_branch=f"issue-{ISSUE}-{_slugify(title)}",
|
|
1935
|
+
issue_title=title,
|
|
1936
|
+
work_finished_at=1000.0,
|
|
1937
|
+
)
|
|
1938
|
+
)
|
|
1939
|
+
assert confident.is_exit
|
|
1940
|
+
assert "could not confirm" not in confident.message.lower()
|
|
1941
|
+
assert "the next `coord drive` detects the retarget" in confident.message
|
|
1942
|
+
|
|
1943
|
+
|
|
1908
1944
|
def test_an_unknown_terminal_status_refuses_to_guess():
|
|
1909
1945
|
"""No terminal status may fall through to a bare wait (PR #1386)."""
|
|
1910
1946
|
action = step(state(work_aid="w1", work_status="wat"))
|
|
@@ -1490,6 +1490,98 @@ def test_fetch_tops_up_issues_and_milestone_work_orders_when_standalone(
|
|
|
1490
1490
|
assert state.milestone_tracking_issue == 1120
|
|
1491
1491
|
|
|
1492
1492
|
|
|
1493
|
+
def test_fetch_local_issue_rows_carries_title_so_project_resolves_issue_title(
|
|
1494
|
+
monkeypatch, tmp_path, coord_db
|
|
1495
|
+
):
|
|
1496
|
+
"""#2881: ``_local_issue_rows()``'s SELECT dropped ``title`` even though
|
|
1497
|
+
:func:`project` has read ``oi.get("title")`` off this exact payload since
|
|
1498
|
+
#2871 — so on the daemon host (the ONLY host that runs `coord
|
|
1499
|
+
drive-queue tick`, i.e. every real dispatch) ``issue_title`` resolved to
|
|
1500
|
+
``""`` for every issue, and ``coord.drive._refused_policy_is_stale``
|
|
1501
|
+
(keyed on ``issue_title``) hit its "uncertain ⇒ still blocking" guard
|
|
1502
|
+
unconditionally — the retarget-bypass it exists to provide could never
|
|
1503
|
+
fire in production.
|
|
1504
|
+
|
|
1505
|
+
Drives the REAL local-DB payload path end to end — ``BoardFetcher.fetch()``
|
|
1506
|
+
→ ``_local_issue_rows()`` → :func:`project` — against the ``coord_db``
|
|
1507
|
+
fixture's real schema-migrated ``:memory:`` DB, exactly like #2040's own
|
|
1508
|
+
top-up test above. A hand-built ``IssueState`` (what #2871's own tests
|
|
1509
|
+
did) cannot catch this: the bug is entirely in what the SELECT carries,
|
|
1510
|
+
not in how ``project()`` reads it once it has a title. This fails the
|
|
1511
|
+
instant ``title`` is dropped from that SELECT again.
|
|
1512
|
+
"""
|
|
1513
|
+
monkeypatch.setattr("coord.client.resolve_board_service", lambda *a, **k: None)
|
|
1514
|
+
monkeypatch.setattr("coord.board_service.read_board", lambda: "BOARD")
|
|
1515
|
+
monkeypatch.setattr("coord.client.serialize_board", lambda b: {"from": b})
|
|
1516
|
+
|
|
1517
|
+
coord_db.execute(
|
|
1518
|
+
"INSERT INTO issues (repo_name, number, title, state, labels, body) "
|
|
1519
|
+
"VALUES (?, ?, ?, ?, ?, ?)",
|
|
1520
|
+
(
|
|
1521
|
+
REPO, 916, "Composed regression test for the rebase-bounce flow",
|
|
1522
|
+
"open", "[]", "",
|
|
1523
|
+
),
|
|
1524
|
+
)
|
|
1525
|
+
coord_db.commit()
|
|
1526
|
+
|
|
1527
|
+
payload = BoardFetcher(cache_dir=tmp_path).fetch()
|
|
1528
|
+
state = project(payload, REPO, 916, make_config())
|
|
1529
|
+
|
|
1530
|
+
assert state.issue_title == "Composed regression test for the rebase-bounce flow"
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
def test_fetch_local_issue_rows_and_http_board_expose_the_same_issue_keys(
|
|
1534
|
+
tmp_path, coord_db
|
|
1535
|
+
):
|
|
1536
|
+
"""#2881: silent divergence between the HTTP ``/board`` ``issues``
|
|
1537
|
+
projection (``coord.dao.SqliteStore`` → ``board_schema.BoardIssue``) and
|
|
1538
|
+
this daemon-host standalone path (``_local_issue_rows``) has now caused
|
|
1539
|
+
three separate bugs (#2040, #2182, #2881) — a consumer starts reading a
|
|
1540
|
+
new field, the HTTP path (backed by the declared DTO) carries it, and the
|
|
1541
|
+
local-DB top-up silently doesn't, because nothing keeps the two SELECTs
|
|
1542
|
+
in sync. Rather than wait for the next consumer to discover the next
|
|
1543
|
+
gap, assert the two ``issues`` row shapes expose the same key set
|
|
1544
|
+
directly — against a REAL on-disk schema-migrated DB for the HTTP side
|
|
1545
|
+
(mirrors ``tests/test_dao.py``'s ``read_db`` fixture) and the real
|
|
1546
|
+
``coord_db`` fixture for the local side. This fails the instant one
|
|
1547
|
+
drifts from the other, regardless of which field it is.
|
|
1548
|
+
"""
|
|
1549
|
+
from coord.dao import SqliteStore
|
|
1550
|
+
from coord.db import _ensure_schema
|
|
1551
|
+
from coord.drive_state import _local_issue_rows
|
|
1552
|
+
|
|
1553
|
+
db_path = tmp_path / "coord.db"
|
|
1554
|
+
conn = sqlite3.connect(str(db_path))
|
|
1555
|
+
conn.row_factory = sqlite3.Row
|
|
1556
|
+
_ensure_schema(conn)
|
|
1557
|
+
conn.execute(
|
|
1558
|
+
"INSERT INTO issues (repo_name, number, title, state, labels, body) "
|
|
1559
|
+
"VALUES (?, ?, ?, ?, ?, ?)",
|
|
1560
|
+
(REPO, 1, "t", "open", "[]", ""),
|
|
1561
|
+
)
|
|
1562
|
+
conn.commit()
|
|
1563
|
+
conn.close()
|
|
1564
|
+
http_rows = SqliteStore(db_path).list_issues()
|
|
1565
|
+
assert len(http_rows) == 1
|
|
1566
|
+
|
|
1567
|
+
coord_db.execute(
|
|
1568
|
+
"INSERT INTO issues (repo_name, number, title, state, labels, body) "
|
|
1569
|
+
"VALUES (?, ?, ?, ?, ?, ?)",
|
|
1570
|
+
(REPO, 1, "t", "open", "[]", ""),
|
|
1571
|
+
)
|
|
1572
|
+
coord_db.commit()
|
|
1573
|
+
local_rows = _local_issue_rows()
|
|
1574
|
+
assert len(local_rows) == 1
|
|
1575
|
+
|
|
1576
|
+
assert set(local_rows[0]) == set(http_rows[0]), (
|
|
1577
|
+
"_local_issue_rows() and SqliteStore.list_issues() (the /board HTTP "
|
|
1578
|
+
"path) must expose the same issues-row keys — one side carrying a "
|
|
1579
|
+
"field the other doesn't is exactly the #2040/#2182/#2881 shape "
|
|
1580
|
+
"(a consumer added on one side silently sees None/empty on the "
|
|
1581
|
+
"daemon-host path)"
|
|
1582
|
+
)
|
|
1583
|
+
|
|
1584
|
+
|
|
1493
1585
|
def test_fetch_local_issue_rows_fail_soft_on_an_unreadable_table(monkeypatch, tmp_path):
|
|
1494
1586
|
"""Mirrors ``coord.commands.drive_queue._local_issue_rows``'s fail-soft
|
|
1495
1587
|
posture: an unreadable ``issues``/``merge_queue`` table degrades the
|