code-coordinator 0.5.251__tar.gz → 0.5.252__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.251 → code_coordinator-0.5.252}/PKG-INFO +1 -1
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/_common.py +101 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/drive_queue.py +56 -8
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/issues.py +4 -2
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_drive_queue.py +200 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_queue_blocked_rendering.py +17 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_queue_launch_argv.py +17 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_roll_window_handoff.py +17 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/.gitignore +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/CLAUDE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/GOAL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/LICENSE +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/MANIFEST.in +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/README.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/agent.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/audit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/block_log.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/board_service.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/brain.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/claim.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/cli.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/client.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/comments.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/config.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dao.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/db.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/deps.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/drive.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/events.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/filelock.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/freshness.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/gates.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/goal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/context.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/models.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/render.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/health/units.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/hooks.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/interactive.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/models.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/network.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/notify.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/openapi.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/parentage.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/plans.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/progress.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/release_window.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/reports.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/review.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/self_health.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/smoke.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/split_work.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/sql.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/test_author.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/test_report.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/usage.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/install-agent.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/pyproject.toml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/setup.cfg +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/__init__.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/conftest.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_config.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_db.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_events.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_init.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_models.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_network.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_session.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_split.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_state.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.251 → code_coordinator-0.5.252}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -19,6 +19,7 @@ the server stack at import time. Keep it that way:
|
|
|
19
19
|
from __future__ import annotations
|
|
20
20
|
|
|
21
21
|
import json
|
|
22
|
+
import logging
|
|
22
23
|
import socket
|
|
23
24
|
import sys
|
|
24
25
|
import time
|
|
@@ -42,6 +43,8 @@ from coord.config import (
|
|
|
42
43
|
if TYPE_CHECKING: # pragma: no cover — typing only
|
|
43
44
|
from collections.abc import Iterator
|
|
44
45
|
|
|
46
|
+
log = logging.getLogger(__name__)
|
|
47
|
+
|
|
45
48
|
# Canonical constant in coord.brain.AGENT_PORT — duplicated here as a literal
|
|
46
49
|
# so the CLI decorator default doesn't have to import the brain (and, through
|
|
47
50
|
# it, the provider stack) on every `coord` invocation.
|
|
@@ -470,6 +473,104 @@ def _apply_label_change(
|
|
|
470
473
|
click.echo(success_message)
|
|
471
474
|
|
|
472
475
|
|
|
476
|
+
# #2839: Pipeline membership label set — shared by `coord track` (the
|
|
477
|
+
# interactive "send to Pipeline" door, above) and `coord drive-queue add`
|
|
478
|
+
# (the queueing door, `coord/commands/drive_queue.py`). Enqueueing a drive is
|
|
479
|
+
# a strictly STRONGER statement than "send to Pipeline", so its label write
|
|
480
|
+
# must never be weaker than `track`'s own — kept as one literal pair so the
|
|
481
|
+
# two doors cannot drift apart.
|
|
482
|
+
PIPELINE_TRACK_LABELS_ADD = {"coord", "status:ready"}
|
|
483
|
+
PIPELINE_TRACK_LABELS_REMOVE_IF_PRESENT = {"status:refining", "status:backlog"}
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
def resolve_repo_slug_best_effort(config: Config | None, repo: str) -> str | None:
|
|
487
|
+
"""Non-fatal sibling of :func:`_resolve_repo_slug` (#2839 review).
|
|
488
|
+
|
|
489
|
+
Returns the GitHub ``OWNER/REPO`` slug for *repo*, or ``None`` when it
|
|
490
|
+
cannot be determined. Unlike ``_resolve_repo_slug`` it never calls
|
|
491
|
+
``sys.exit`` — it is for callers whose own job is not "talk to the
|
|
492
|
+
forge", where an unresolvable name must degrade rather than abort.
|
|
493
|
+
|
|
494
|
+
*config* is ``None`` when the caller could not load one at all (a thin
|
|
495
|
+
client whose board daemon is momentarily unreachable); that is a
|
|
496
|
+
legitimate, expected input, not an error.
|
|
497
|
+
"""
|
|
498
|
+
if config is not None:
|
|
499
|
+
repo_entry = config.repo(repo)
|
|
500
|
+
if repo_entry is not None:
|
|
501
|
+
return repo_entry.github
|
|
502
|
+
# Not in coordinator.yml (or no config at all): a raw `OWNER/REPO` slug is
|
|
503
|
+
# still directly usable by the forge backend — same accepted fallback
|
|
504
|
+
# `_resolve_repo_slug` validates. Anything else is a bare local name we
|
|
505
|
+
# cannot map, so say so with `None` rather than guessing.
|
|
506
|
+
if "/" in repo:
|
|
507
|
+
return repo
|
|
508
|
+
return None
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
def apply_pipeline_track_labels_best_effort(
|
|
512
|
+
repo: str, issue: int, *, config: Config | None,
|
|
513
|
+
) -> None:
|
|
514
|
+
"""Best-effort ``coord`` + ``status:ready`` label application (#2839).
|
|
515
|
+
|
|
516
|
+
Non-blocking sibling of :func:`_apply_label_change` for a caller whose
|
|
517
|
+
own job is NOT "change labels" — today, only ``coord drive-queue add``.
|
|
518
|
+
Enqueuing a drive must succeed even when GitHub is unreachable: the board
|
|
519
|
+
row is the source of truth for queue membership, and this label is only
|
|
520
|
+
a best-effort projection of it onto the Pipeline. Every failure (a
|
|
521
|
+
missing repo, an unreachable daemon, a `gh` error) is logged and
|
|
522
|
+
swallowed here — never raised — so the caller's own success can never
|
|
523
|
+
turn on this call landing.
|
|
524
|
+
|
|
525
|
+
Idempotent by construction: ``apply_issue_labels`` (and the ``gh``
|
|
526
|
+
backend underneath it) tolerates already-present ``add`` labels and
|
|
527
|
+
already-absent ``remove`` labels, so re-running this on an
|
|
528
|
+
already-tracked issue is a silent no-op, not a duplicate write.
|
|
529
|
+
|
|
530
|
+
*config* is passed IN, already loaded, rather than loaded here — the two
|
|
531
|
+
halves of the #2839 review, together:
|
|
532
|
+
|
|
533
|
+
* It must not be loaded via ``_load_config`` inside this function.
|
|
534
|
+
``_load_config`` turns a config-load failure (a thin client's
|
|
535
|
+
``fetch_remote_config`` round-trip to a momentarily-unreachable board
|
|
536
|
+
daemon; a briefly-unreadable ``coordinator.yml``) into ``sys.exit(2)``,
|
|
537
|
+
and ``SystemExit`` is a ``BaseException``, not an ``Exception``, so it
|
|
538
|
+
would blow straight through the ``except`` below and kill the whole
|
|
539
|
+
``drive-queue add`` process *after* the board row was written.
|
|
540
|
+
* But the slug must still be RESOLVED. ``coordinator.yml``'s ``name:``
|
|
541
|
+
key is routinely not the GitHub slug (this repo's own
|
|
542
|
+
``coordinator.example.yml`` documents ``name: code-coordinator`` vs
|
|
543
|
+
``github: JDonaghy/claude-coordinator``), and
|
|
544
|
+
``_apply_issue_labels_local``'s ``repo_github or repo_name`` fallback
|
|
545
|
+
would hand that bare local name to ``gh issue edit --repo``, which
|
|
546
|
+
requires ``[HOST/]OWNER/REPO`` and errors out — so the label would
|
|
547
|
+
still never land for exactly the repos #2839 was filed about, only
|
|
548
|
+
now silently.
|
|
549
|
+
|
|
550
|
+
Taking the caller's already-loaded ``Config`` satisfies both: real slug
|
|
551
|
+
resolution, no second (uncachable, per-``add``) round trip to the daemon,
|
|
552
|
+
and no ``SystemExit`` path inside a best-effort helper. ``config=None``
|
|
553
|
+
is accepted and simply degrades to the ``repo_name`` fallback.
|
|
554
|
+
"""
|
|
555
|
+
from coord.state import apply_issue_labels # noqa: PLC0415
|
|
556
|
+
|
|
557
|
+
try:
|
|
558
|
+
apply_issue_labels(
|
|
559
|
+
repo, issue,
|
|
560
|
+
add=PIPELINE_TRACK_LABELS_ADD,
|
|
561
|
+
remove=PIPELINE_TRACK_LABELS_REMOVE_IF_PRESENT,
|
|
562
|
+
repo_github=resolve_repo_slug_best_effort(config, repo),
|
|
563
|
+
)
|
|
564
|
+
except Exception as exc: # noqa: BLE001 — see docstring: must never block the enqueue
|
|
565
|
+
log.warning(
|
|
566
|
+
"drive-queue add: failed to apply Pipeline labels (coord + "
|
|
567
|
+
"status:ready) to %s#%s: %s — the queue row was still written; "
|
|
568
|
+
"the label is a projection, not the source of truth, so the "
|
|
569
|
+
"enqueue proceeds",
|
|
570
|
+
repo, issue, exc,
|
|
571
|
+
)
|
|
572
|
+
|
|
573
|
+
|
|
473
574
|
@dataclass
|
|
474
575
|
class PollOutcome:
|
|
475
576
|
"""Result of polling an agent's ``/status`` for one assignment until it
|
|
@@ -35,12 +35,12 @@ import socket
|
|
|
35
35
|
import subprocess
|
|
36
36
|
import time
|
|
37
37
|
from pathlib import Path
|
|
38
|
-
from typing import Any, Mapping
|
|
38
|
+
from typing import TYPE_CHECKING, Any, Mapping
|
|
39
39
|
|
|
40
40
|
import click
|
|
41
41
|
|
|
42
42
|
from coord.block_log import INTERVENTION_CATEGORIES, STALL_STATES
|
|
43
|
-
from coord.commands._common import _CONFIG_OPTION
|
|
43
|
+
from coord.commands._common import _CONFIG_OPTION, apply_pipeline_track_labels_best_effort
|
|
44
44
|
from coord.drive_state import WORK_LIKE
|
|
45
45
|
from coord.drive_queue import (
|
|
46
46
|
DEFAULT_MAX_ATTEMPTS,
|
|
@@ -105,6 +105,9 @@ from coord.overlap_predict import (
|
|
|
105
105
|
tally,
|
|
106
106
|
)
|
|
107
107
|
|
|
108
|
+
if TYPE_CHECKING: # pragma: no cover — typing only
|
|
109
|
+
from coord.config import Config
|
|
110
|
+
|
|
108
111
|
log = logging.getLogger(__name__)
|
|
109
112
|
|
|
110
113
|
# Wall-clock ceiling for the `coord drive --tmux` launch subprocess. The
|
|
@@ -335,12 +338,18 @@ def drive_queue_add(
|
|
|
335
338
|
existing_entries = entries_from_rows(list_drive_queue())
|
|
336
339
|
if max_fix_rounds is not None and max_fix_rounds < 1:
|
|
337
340
|
raise click.ClickException("--max-fix-rounds must be a positive integer")
|
|
341
|
+
# #2839: reused below for the Pipeline label write's slug resolution, so
|
|
342
|
+
# that best-effort projection costs no SECOND config load (a `GET /config`
|
|
343
|
+
# round trip to the board daemon on a thin client). `None` on the
|
|
344
|
+
# documented fail-open path — an unloadable config never blocks an
|
|
345
|
+
# enqueue, and never blocks the label write either.
|
|
346
|
+
cfg: Config | None = None
|
|
338
347
|
try:
|
|
339
348
|
after = parse_after_spec(after_specs, repo)
|
|
340
349
|
# #2603: reuses `--after`'s own `N` / `REPO#N` parsing — a rejected
|
|
341
350
|
# edge is named the same way an operator would name a real one.
|
|
342
351
|
reject_after = set(parse_after_spec(reject_after_specs, repo))
|
|
343
|
-
validate_config_repo(config_path, repo)
|
|
352
|
+
cfg = validate_config_repo(config_path, repo)
|
|
344
353
|
validate_hold_flags(hold_after, hold_reason, resume_when, hold_scope)
|
|
345
354
|
validate_enqueue(existing_entries, repo, issue, after)
|
|
346
355
|
except QueueError as exc:
|
|
@@ -402,6 +411,21 @@ def drive_queue_add(
|
|
|
402
411
|
max_fix_rounds=max_fix_rounds,
|
|
403
412
|
no_acceptance=no_acceptance,
|
|
404
413
|
)
|
|
414
|
+
# #2839: queueing a drive is a strictly STRONGER statement than "send to
|
|
415
|
+
# Pipeline" (`coord track`), so it must never leave the issue in a
|
|
416
|
+
# weaker label state — apply the same `coord` + `status:ready` labels
|
|
417
|
+
# `track` does, resolved through the SAME `cfg` already loaded above
|
|
418
|
+
# (coordinator.yml's `name:` is routinely not the GitHub slug, so the
|
|
419
|
+
# forge needs the resolved `github:` value, not `repo`). Best-effort/
|
|
420
|
+
# non-blocking (a GitHub outage warns and carries on; the board row above
|
|
421
|
+
# is already written and is the
|
|
422
|
+
# source of truth for queue membership) and skipped for an entry that is
|
|
423
|
+
# already `running` — #2821 was mid-drive with `coord` but no
|
|
424
|
+
# `status:*`, and re-adding `status:ready` to a running card would
|
|
425
|
+
# misrepresent it as not-yet-started. This is enqueue-time ONLY: never
|
|
426
|
+
# mirrored onto `coord drive-queue remove`, which must not untrack.
|
|
427
|
+
if previous is None or previous.state != STATE_RUNNING:
|
|
428
|
+
apply_pipeline_track_labels_best_effort(repo, issue, config=cfg)
|
|
405
429
|
if auto_after:
|
|
406
430
|
_record_overlap_prediction(repo, issue, prediction, auto_after)
|
|
407
431
|
suffix = f" after {', '.join(after)}" if after else ""
|
|
@@ -713,7 +737,12 @@ def _repo_coordinates(config_path: Path, repo: str) -> tuple[str, str] | None:
|
|
|
713
737
|
from coord.commands._common import _load_config # noqa: PLC0415
|
|
714
738
|
|
|
715
739
|
repo_cfg = _load_config(config_path).repo(repo)
|
|
716
|
-
except Exception: # noqa: BLE001 — a config that won't load
|
|
740
|
+
except (Exception, SystemExit): # noqa: BLE001 — a config that won't load
|
|
741
|
+
# means no prediction. `SystemExit` is listed for the same reason as in
|
|
742
|
+
# `validate_config_repo` (#2839 review): `_load_config` reports a
|
|
743
|
+
# `ConfigError` as `click.echo` + `sys.exit(2)`, a `BaseException`, so
|
|
744
|
+
# `except Exception` alone would abort `drive-queue add` here instead
|
|
745
|
+
# of degrading to "no overlap prediction" as documented.
|
|
717
746
|
return None
|
|
718
747
|
if repo_cfg is None:
|
|
719
748
|
return None
|
|
@@ -878,7 +907,7 @@ def validate_hold_flags(
|
|
|
878
907
|
)
|
|
879
908
|
|
|
880
909
|
|
|
881
|
-
def validate_config_repo(config_path: Path, repo: str) -> None:
|
|
910
|
+
def validate_config_repo(config_path: Path, repo: str) -> Config | None:
|
|
882
911
|
"""Refuse a repo coordinator.yml has never heard of.
|
|
883
912
|
|
|
884
913
|
`coord drive <repo> <issue>` would fail at preflight anyway
|
|
@@ -886,16 +915,29 @@ def validate_config_repo(config_path: Path, repo: str) -> None:
|
|
|
886
915
|
``add`` time turns a mysterious tick-time block into an immediate typo
|
|
887
916
|
report. Fail-OPEN on a config that won't load at all: a thin client whose
|
|
888
917
|
config cache is momentarily unreadable must still be able to queue work.
|
|
918
|
+
|
|
919
|
+
Returns the loaded ``Config`` (``None`` when it could not be loaded, i.e.
|
|
920
|
+
the fail-open path) so the caller does not have to load it a SECOND time
|
|
921
|
+
— on a thin client each load is a `GET /config` round trip to the board
|
|
922
|
+
daemon, and #2839's best-effort label write needs the same config only to
|
|
923
|
+
resolve `repo`'s GitHub slug.
|
|
924
|
+
|
|
925
|
+
``SystemExit`` is caught alongside ``Exception`` deliberately (#2839
|
|
926
|
+
review): ``_load_config`` reports a ``ConfigError`` as ``click.echo`` +
|
|
927
|
+
``sys.exit(2)``, which is a ``BaseException`` — so a bare ``except
|
|
928
|
+
Exception`` here would NOT fail open at all, it would abort `add` with
|
|
929
|
+
exit code 2, the exact opposite of this function's documented posture.
|
|
889
930
|
"""
|
|
890
931
|
try:
|
|
891
932
|
from coord.commands._common import _load_config # noqa: PLC0415
|
|
892
933
|
|
|
893
934
|
config = _load_config(config_path)
|
|
894
|
-
except Exception: # noqa: BLE001 — see the fail-open note above
|
|
895
|
-
return
|
|
935
|
+
except (Exception, SystemExit): # noqa: BLE001 — see the fail-open note above
|
|
936
|
+
return None
|
|
896
937
|
if config.repo(repo) is None:
|
|
897
938
|
known = ", ".join(sorted(r.name for r in config.repos)) or "(none)"
|
|
898
939
|
raise QueueError(f"repo {repo!r} is not in coordinator.yml (known: {known})")
|
|
940
|
+
return config
|
|
899
941
|
|
|
900
942
|
|
|
901
943
|
# ── list ─────────────────────────────────────────────────────────────────────
|
|
@@ -1413,7 +1455,13 @@ def drive_queue_log_intervention(
|
|
|
1413
1455
|
@click.argument("issue", type=int)
|
|
1414
1456
|
@_CONFIG_OPTION
|
|
1415
1457
|
def drive_queue_remove(repo: str, issue: int, config_path: Path) -> None:
|
|
1416
|
-
"""Drop REPO ISSUE from the queue (positions are renumbered dense).
|
|
1458
|
+
"""Drop REPO ISSUE from the queue (positions are renumbered dense).
|
|
1459
|
+
|
|
1460
|
+
#2839: deliberately does NOT touch the `coord`/`status:*` labels `add`
|
|
1461
|
+
applies — dropping out of the drive queue is not eviction from the
|
|
1462
|
+
Pipeline. `coord untrack` stays the only way to evict a card; do not
|
|
1463
|
+
"fix" this asymmetry by mirroring `add`'s label write here.
|
|
1464
|
+
"""
|
|
1417
1465
|
from coord.state import dequeue_drive_queue, get_drive_queue_entry # noqa: PLC0415
|
|
1418
1466
|
|
|
1419
1467
|
# #2235 Phase 0: read the row BEFORE deleting it, because `remove` on a
|
|
@@ -14,6 +14,8 @@ from coord.commands._common import (
|
|
|
14
14
|
_CONFIG_OPTION,
|
|
15
15
|
_load_config,
|
|
16
16
|
_resolve_repo_slug,
|
|
17
|
+
PIPELINE_TRACK_LABELS_ADD,
|
|
18
|
+
PIPELINE_TRACK_LABELS_REMOVE_IF_PRESENT,
|
|
17
19
|
)
|
|
18
20
|
|
|
19
21
|
|
|
@@ -783,8 +785,8 @@ def track(repo: str, issue: int, config_path: Path) -> None:
|
|
|
783
785
|
slug = _resolve_repo_slug(cfg, repo)
|
|
784
786
|
_apply_label_change(
|
|
785
787
|
repo, issue, config_path,
|
|
786
|
-
add=
|
|
787
|
-
remove_if_present=
|
|
788
|
+
add=PIPELINE_TRACK_LABELS_ADD,
|
|
789
|
+
remove_if_present=PIPELINE_TRACK_LABELS_REMOVE_IF_PRESENT,
|
|
788
790
|
success_message=(
|
|
789
791
|
f"#{issue} ({slug}) sent to Pipeline (coord + status:ready)"
|
|
790
792
|
),
|
|
@@ -38,9 +38,17 @@ from coord.drive_queue import (
|
|
|
38
38
|
QUEUE_ALERT_ISSUE,
|
|
39
39
|
QUEUE_ALERT_REPO,
|
|
40
40
|
STATE_BLOCKED,
|
|
41
|
+
STATE_RUNNING,
|
|
41
42
|
QueueEntry,
|
|
42
43
|
)
|
|
43
44
|
|
|
45
|
+
#: The genuine `coord.state.apply_issue_labels`, captured at import time —
|
|
46
|
+
#: before `_default_pipeline_labels` (autouse) replaces the module attribute
|
|
47
|
+
#: with an inert no-op. A test that needs the REAL seam chain
|
|
48
|
+
#: (state -> `_apply_issue_labels_local` -> `github_ops`) monkeypatches this
|
|
49
|
+
#: back in; see `test_add_labels_gh_with_the_resolved_slug_...`.
|
|
50
|
+
_REAL_APPLY_ISSUE_LABELS = state.apply_issue_labels
|
|
51
|
+
|
|
44
52
|
REPO = "claude-coordinator"
|
|
45
53
|
# A SECOND repo, so #1972's per-repo capacity has something to be per-repo
|
|
46
54
|
# about: the whole point is that a quadraui entry can ride alongside an
|
|
@@ -130,6 +138,33 @@ def no_tmux(monkeypatch):
|
|
|
130
138
|
monkeypatch.setattr("coord.drive.list_drive_sessions", lambda *a, **k: [])
|
|
131
139
|
|
|
132
140
|
|
|
141
|
+
@pytest.fixture(autouse=True)
|
|
142
|
+
def _default_pipeline_labels(monkeypatch):
|
|
143
|
+
"""#2839: `add` now also projects `coord`/`status:ready` onto the issue
|
|
144
|
+
via `coord.state.apply_issue_labels` — default that to an inert no-op for
|
|
145
|
+
every test in this file that doesn't care about it (the overwhelming
|
|
146
|
+
majority).
|
|
147
|
+
|
|
148
|
+
Without this, `add`'s real label write falls through to `github_ops._gh`
|
|
149
|
+
and, in any test that has ALSO mocked `subprocess.run` (the `launches`
|
|
150
|
+
fixture below, used to capture `coord drive --tmux` argvs across the
|
|
151
|
+
file), lands in that SAME capture — `subprocess.run` is one singleton
|
|
152
|
+
module attribute, so a mock installed for one caller is a mock for
|
|
153
|
+
every caller, `gh` included (see conftest's `_no_live_gh` docstring).
|
|
154
|
+
That polluted `launches` with spurious `gh issue view`/`gh issue edit`
|
|
155
|
+
entries for every test that calls `add` before asserting on `launches`.
|
|
156
|
+
|
|
157
|
+
The dedicated `labels` fixture (see the #2839 section below) requests
|
|
158
|
+
this same seam explicitly and, being function-scoped with no dependency
|
|
159
|
+
on this one, resolves after it — so its more specific mock simply
|
|
160
|
+
overrides this default for the handful of tests that actually assert on
|
|
161
|
+
the label call.
|
|
162
|
+
"""
|
|
163
|
+
monkeypatch.setattr(
|
|
164
|
+
"coord.state.apply_issue_labels", lambda *a, **k: ([], False)
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
|
|
133
168
|
@pytest.fixture(autouse=True)
|
|
134
169
|
def tick_lock(monkeypatch, tmp_path) -> Path:
|
|
135
170
|
"""Give every test its own tick lock.
|
|
@@ -272,6 +307,171 @@ def test_add_refuses_a_malformed_after_entry(cli):
|
|
|
272
307
|
assert state._list_drive_queue_local() == []
|
|
273
308
|
|
|
274
309
|
|
|
310
|
+
# ── #2839: enqueueing projects `coord` + `status:ready` onto the issue ───────
|
|
311
|
+
#
|
|
312
|
+
# Pipeline membership IS the `coord` label (`coord untrack`'s own help text)
|
|
313
|
+
# but `drive_queue_add` used to write only the board row — GitHub never heard
|
|
314
|
+
# about it, so a queued issue could sit invisible in the Pipeline until an
|
|
315
|
+
# operator ran `coord track` by hand. This mirrors `coord track`'s own label
|
|
316
|
+
# write on every `add`: idempotent (asserted via `test_add_writes_a_row...`'s
|
|
317
|
+
# sibling below re-running cleanly), non-blocking on a GitHub outage, and
|
|
318
|
+
# never re-applied to an entry that is already running (#2821 was mid-drive
|
|
319
|
+
# with `coord` but no `status:*` — forcing `status:ready` back onto it would
|
|
320
|
+
# misrepresent it as not-yet-started).
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
@pytest.fixture
|
|
324
|
+
def labels(monkeypatch):
|
|
325
|
+
"""Capture ``coord.state.apply_issue_labels`` calls instead of touching GitHub."""
|
|
326
|
+
calls: list[dict[str, Any]] = []
|
|
327
|
+
|
|
328
|
+
def _fake(repo_name, issue_number, *, add, remove, repo_github=None):
|
|
329
|
+
calls.append(
|
|
330
|
+
{
|
|
331
|
+
"repo_name": repo_name,
|
|
332
|
+
"issue_number": issue_number,
|
|
333
|
+
"add": add,
|
|
334
|
+
"remove": remove,
|
|
335
|
+
"repo_github": repo_github,
|
|
336
|
+
}
|
|
337
|
+
)
|
|
338
|
+
return (sorted(add), True)
|
|
339
|
+
|
|
340
|
+
monkeypatch.setattr("coord.state.apply_issue_labels", _fake)
|
|
341
|
+
return calls
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
def test_add_applies_coord_and_status_ready_on_a_fresh_issue(cli, labels):
|
|
345
|
+
result = cli("add", REPO, "1650")
|
|
346
|
+
assert result.exit_code == 0, result.output
|
|
347
|
+
assert len(labels) == 1
|
|
348
|
+
call = labels[0]
|
|
349
|
+
assert call["repo_name"] == REPO
|
|
350
|
+
assert call["issue_number"] == 1650
|
|
351
|
+
assert call["add"] == {"coord", "status:ready"}
|
|
352
|
+
assert call["remove"] == {"status:refining", "status:backlog"}
|
|
353
|
+
# #2839 review: the RESOLVED GitHub slug, not the bare coordinator.yml
|
|
354
|
+
# `name:`. The two diverge in `_CONFIG_YAML` above exactly as they do in
|
|
355
|
+
# this repo's own `coordinator.example.yml` (`name: code-coordinator` vs
|
|
356
|
+
# `github: JDonaghy/claude-coordinator`), and `gh issue edit --repo`
|
|
357
|
+
# requires `[HOST/]OWNER/REPO` — handing it `claude-coordinator` errors
|
|
358
|
+
# out, so the label would never land for precisely the repos #2839 was
|
|
359
|
+
# filed about.
|
|
360
|
+
assert call["repo_github"] == "john/claude-coordinator"
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
def test_add_survives_a_failing_label_write(cli, monkeypatch):
|
|
364
|
+
def _boom(*_a, **_k):
|
|
365
|
+
raise RuntimeError("gh unreachable")
|
|
366
|
+
|
|
367
|
+
monkeypatch.setattr("coord.state.apply_issue_labels", _boom)
|
|
368
|
+
result = cli("add", REPO, "1650")
|
|
369
|
+
assert result.exit_code == 0, result.output
|
|
370
|
+
assert f"{REPO}#1650" in result.output
|
|
371
|
+
# The board row is the source of truth for queue membership — it must
|
|
372
|
+
# land even though the label write (a projection of it) failed.
|
|
373
|
+
assert queued(1650) is not None
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
def test_add_labels_gh_with_the_resolved_slug_not_the_local_repo_name(cli, monkeypatch):
|
|
377
|
+
"""#2839 review (blocking): the slug that actually reaches the forge.
|
|
378
|
+
|
|
379
|
+
The `labels` fixture above stubs `coord.state.apply_issue_labels`, so it
|
|
380
|
+
can only see what the CLI *asked* for — it cannot catch a `repo_github`
|
|
381
|
+
that is wrong by the time `gh` runs. This test un-stubs that seam and
|
|
382
|
+
lets the real `apply_issue_labels` ->
|
|
383
|
+
`_apply_issue_labels_local` -> `github_ops.change_issue_labels` chain run,
|
|
384
|
+
stubbing only the last hop (which shells out to
|
|
385
|
+
`gh issue edit --repo <slug>`, and `gh` rejects anything that is not
|
|
386
|
+
`[HOST/]OWNER/REPO`).
|
|
387
|
+
|
|
388
|
+
`_CONFIG_YAML` deliberately diverges `name: claude-coordinator` from
|
|
389
|
+
`github: john/claude-coordinator`, the same way this repo's own
|
|
390
|
+
`coordinator.example.yml` does. If `add` ever regresses to passing
|
|
391
|
+
`repo_github=None`, `_apply_issue_labels_local`'s `repo_github or
|
|
392
|
+
repo_name` fallback hands `gh` the bare local name, `gh` errors, and the
|
|
393
|
+
best-effort helper silently swallows it — the #2839 label never lands,
|
|
394
|
+
only now without a traceback.
|
|
395
|
+
"""
|
|
396
|
+
seen: list[str] = []
|
|
397
|
+
|
|
398
|
+
def _fake_change_issue_labels(slug, issue_number, *, add, remove):
|
|
399
|
+
seen.append(slug)
|
|
400
|
+
return (sorted(add), True)
|
|
401
|
+
|
|
402
|
+
monkeypatch.setattr("coord.state.apply_issue_labels", _REAL_APPLY_ISSUE_LABELS)
|
|
403
|
+
monkeypatch.setattr(
|
|
404
|
+
"coord.github_ops.change_issue_labels", _fake_change_issue_labels
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
result = cli("add", REPO, "1650")
|
|
408
|
+
assert result.exit_code == 0, result.output
|
|
409
|
+
assert seen == ["john/claude-coordinator"]
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
def test_add_survives_a_config_that_will_not_load(cli, monkeypatch, labels):
|
|
413
|
+
"""#2839 review (iteration 1): a config-load failure must not kill `add`.
|
|
414
|
+
|
|
415
|
+
`_load_config` reports a `ConfigError` — a thin client's
|
|
416
|
+
`fetch_remote_config` timing out against a momentarily-unreachable board
|
|
417
|
+
daemon, a briefly-unreadable `coordinator.yml` — as `click.echo(...)` +
|
|
418
|
+
`sys.exit(2)`, i.e. `SystemExit`, which is a `BaseException` and so
|
|
419
|
+
escapes a bare `except Exception`. The enqueue must still succeed (the
|
|
420
|
+
board row is the source of truth), and the label write must still be
|
|
421
|
+
attempted, degraded to an unresolved slug rather than skipped.
|
|
422
|
+
"""
|
|
423
|
+
from coord.commands import _common
|
|
424
|
+
|
|
425
|
+
def _boom_exit(*_a, **_k):
|
|
426
|
+
raise SystemExit(2)
|
|
427
|
+
|
|
428
|
+
monkeypatch.setattr(_common, "_load_config", _boom_exit)
|
|
429
|
+
|
|
430
|
+
result = cli("add", REPO, "1650")
|
|
431
|
+
assert result.exit_code == 0, result.output
|
|
432
|
+
assert queued(1650) is not None
|
|
433
|
+
assert len(labels) == 1
|
|
434
|
+
assert labels[0]["add"] == {"coord", "status:ready"}
|
|
435
|
+
# No config to resolve `name:` -> `github:` with, and `claude-coordinator`
|
|
436
|
+
# is not itself a slug, so this degrades to the `repo_name` fallback
|
|
437
|
+
# rather than inventing one.
|
|
438
|
+
assert labels[0]["repo_github"] is None
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
@pytest.mark.parametrize(
|
|
442
|
+
("repo_arg", "expected"),
|
|
443
|
+
[
|
|
444
|
+
# Known local name -> its `github:` slug, even when the two diverge.
|
|
445
|
+
(REPO, "john/claude-coordinator"),
|
|
446
|
+
# Unknown to coordinator.yml but already a slug: usable as-is (the
|
|
447
|
+
# same fallback `_resolve_repo_slug` validates).
|
|
448
|
+
("someone/untracked-repo", "someone/untracked-repo"),
|
|
449
|
+
# Unknown AND not a slug: unresolvable, so say so instead of guessing.
|
|
450
|
+
("typo-repo", None),
|
|
451
|
+
],
|
|
452
|
+
)
|
|
453
|
+
def test_resolve_repo_slug_best_effort(config_file: Path, repo_arg, expected):
|
|
454
|
+
"""The non-fatal sibling of `_resolve_repo_slug` never calls `sys.exit`."""
|
|
455
|
+
from coord.commands._common import _load_config, resolve_repo_slug_best_effort
|
|
456
|
+
|
|
457
|
+
cfg = _load_config(config_file)
|
|
458
|
+
assert resolve_repo_slug_best_effort(cfg, repo_arg) == expected
|
|
459
|
+
# `config=None` (the fail-open path) degrades, it does not explode.
|
|
460
|
+
assert resolve_repo_slug_best_effort(None, repo_arg) == (
|
|
461
|
+
repo_arg if "/" in repo_arg else None
|
|
462
|
+
)
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
def test_add_does_not_relabel_an_already_running_entry(cli, labels):
|
|
466
|
+
assert cli("add", REPO, "1650").exit_code == 0
|
|
467
|
+
labels.clear()
|
|
468
|
+
state.update_drive_queue_entry(REPO, 1650, state=STATE_RUNNING)
|
|
469
|
+
|
|
470
|
+
result = cli("add", REPO, "1650", "--machine", "dellserver")
|
|
471
|
+
assert result.exit_code == 0, result.output
|
|
472
|
+
assert labels == []
|
|
473
|
+
|
|
474
|
+
|
|
275
475
|
# ── #2247: predicted file-overlap ordering ───────────────────────────────────
|
|
276
476
|
#
|
|
277
477
|
# The acceptance bar from the issue, driven end to end through the real CLI:
|
{code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_drive_queue_blocked_rendering.py
RENAMED
|
@@ -110,6 +110,23 @@ def no_tmux(monkeypatch):
|
|
|
110
110
|
monkeypatch.setattr("coord.drive.list_drive_sessions", lambda *a, **k: [])
|
|
111
111
|
|
|
112
112
|
|
|
113
|
+
@pytest.fixture(autouse=True)
|
|
114
|
+
def _default_pipeline_labels(monkeypatch):
|
|
115
|
+
"""#2839: `add` now also projects `coord`/`status:ready` onto the issue
|
|
116
|
+
via `coord.state.apply_issue_labels` — default that to an inert no-op
|
|
117
|
+
here. Without it, `add`'s real label write falls through to
|
|
118
|
+
`github_ops._gh` and, once a test also mocks `subprocess.run` (the
|
|
119
|
+
`launches` fixture below), lands in that SAME capture — `subprocess.run`
|
|
120
|
+
is one singleton module attribute — polluting the captured argv this
|
|
121
|
+
file asserts on with spurious `gh issue view`/`gh issue edit` entries.
|
|
122
|
+
See the identical fixture (and its longer rationale) in
|
|
123
|
+
`tests/test_cli_drive_queue.py`.
|
|
124
|
+
"""
|
|
125
|
+
monkeypatch.setattr(
|
|
126
|
+
"coord.state.apply_issue_labels", lambda *a, **k: ([], False)
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
113
130
|
@pytest.fixture(autouse=True)
|
|
114
131
|
def tick_lock(monkeypatch, tmp_path) -> Path:
|
|
115
132
|
"""Give every test its own tick lock — see test_cli_drive_queue.py's
|
|
@@ -94,6 +94,23 @@ def no_tmux(monkeypatch):
|
|
|
94
94
|
monkeypatch.setattr("coord.drive.list_drive_sessions", lambda *a, **k: [])
|
|
95
95
|
|
|
96
96
|
|
|
97
|
+
@pytest.fixture(autouse=True)
|
|
98
|
+
def _default_pipeline_labels(monkeypatch):
|
|
99
|
+
"""#2839: `add` now also projects `coord`/`status:ready` onto the issue
|
|
100
|
+
via `coord.state.apply_issue_labels` — default that to an inert no-op
|
|
101
|
+
here. Without it, `add`'s real label write falls through to
|
|
102
|
+
`github_ops._gh` and, once a test also mocks `subprocess.run` (the
|
|
103
|
+
`launches` fixture below), lands in that SAME capture — `subprocess.run`
|
|
104
|
+
is one singleton module attribute — polluting the captured argv this
|
|
105
|
+
file asserts on with spurious `gh issue view`/`gh issue edit` entries.
|
|
106
|
+
See the identical fixture (and its longer rationale) in
|
|
107
|
+
`tests/test_cli_drive_queue.py`.
|
|
108
|
+
"""
|
|
109
|
+
monkeypatch.setattr(
|
|
110
|
+
"coord.state.apply_issue_labels", lambda *a, **k: ([], False)
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
97
114
|
@pytest.fixture(autouse=True)
|
|
98
115
|
def tick_lock(monkeypatch, tmp_path) -> Path:
|
|
99
116
|
"""Give every test its own tick lock — see the identical fixture in
|
{code_coordinator-0.5.251 → code_coordinator-0.5.252}/tests/test_release_roll_window_handoff.py
RENAMED
|
@@ -163,6 +163,23 @@ def no_tmux(monkeypatch):
|
|
|
163
163
|
monkeypatch.setattr("coord.drive.list_drive_sessions", lambda *a, **k: [])
|
|
164
164
|
|
|
165
165
|
|
|
166
|
+
@pytest.fixture(autouse=True)
|
|
167
|
+
def _default_pipeline_labels(monkeypatch):
|
|
168
|
+
"""#2839: `add` now also projects `coord`/`status:ready` onto the issue
|
|
169
|
+
via `coord.state.apply_issue_labels` — default that to an inert no-op
|
|
170
|
+
here. Without it, `add`'s real label write falls through to
|
|
171
|
+
`github_ops._gh` and, once a test also mocks `subprocess.run` (the
|
|
172
|
+
`launches` fixture below), lands in that SAME capture — `subprocess.run`
|
|
173
|
+
is one singleton module attribute — polluting the captured argv this
|
|
174
|
+
file asserts on with spurious `gh issue view`/`gh issue edit` entries.
|
|
175
|
+
See the identical fixture (and its longer rationale) in
|
|
176
|
+
`tests/test_cli_drive_queue.py`.
|
|
177
|
+
"""
|
|
178
|
+
monkeypatch.setattr(
|
|
179
|
+
"coord.state.apply_issue_labels", lambda *a, **k: ([], False)
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
|
|
166
183
|
@pytest.fixture
|
|
167
184
|
def live_sessions(monkeypatch):
|
|
168
185
|
def _set(*issues: int) -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.251 → code_coordinator-0.5.252}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|