code-coordinator 0.5.257__tar.gz → 0.5.258__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.257 → code_coordinator-0.5.258}/PKG-INFO +1 -1
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/release.py +26 -1
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/release_propagate.py +181 -33
- code_coordinator-0.5.258/tests/test_release_roll_between_legs_2854.py +293 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/.gitignore +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/CLAUDE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/GOAL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/LICENSE +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/MANIFEST.in +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/README.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/agent.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/audit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/block_log.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/board_service.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/brain.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/claim.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/cli.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/client.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/comments.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/config.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dao.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/db.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/deps.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/drive.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/events.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/filelock.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/freshness.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/gates.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/goal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/context.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/models.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/render.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/health/units.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/hooks.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/interactive.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/models.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/network.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/notify.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/openapi.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/parentage.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/plans.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/progress.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/release_window.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/reports.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/review.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/self_health.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/smoke.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/split_work.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/sql.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/test_author.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/test_report.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/usage.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/install-agent.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/pyproject.toml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/setup.cfg +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/__init__.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/conftest.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_config.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_db.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_events.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_init.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_models.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_network.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_session.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_split.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_state.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.257 → code_coordinator-0.5.258}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -667,6 +667,7 @@ tests/test_release_cordon_deadlock_2240.py
|
|
|
667
667
|
tests/test_release_cordon_stuck_2490.py
|
|
668
668
|
tests/test_release_propagate.py
|
|
669
669
|
tests/test_release_propagate_threshold.py
|
|
670
|
+
tests/test_release_roll_between_legs_2854.py
|
|
670
671
|
tests/test_release_roll_window_handoff.py
|
|
671
672
|
tests/test_release_unified_1242.py
|
|
672
673
|
tests/test_release_verify.py
|
{code_coordinator-0.5.257 → code_coordinator-0.5.258}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -739,6 +739,7 @@
|
|
|
739
739
|
"tests/test_release_cordon_stuck_2490.py",
|
|
740
740
|
"tests/test_release_propagate.py",
|
|
741
741
|
"tests/test_release_propagate_threshold.py",
|
|
742
|
+
"tests/test_release_roll_between_legs_2854.py",
|
|
742
743
|
"tests/test_release_roll_window_handoff.py",
|
|
743
744
|
"tests/test_release_unified_1242.py",
|
|
744
745
|
"tests/test_release_verify.py",
|
|
@@ -908,11 +908,16 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
|
|
|
908
908
|
# have happened at all). Feed the same seam so it defers like a live
|
|
909
909
|
# assignment instead of getting reaped.
|
|
910
910
|
extra_busy.extend(_confirmation_running_busy())
|
|
911
|
+
# #2854: `now` opts this run into the between-legs settle window — a
|
|
912
|
+
# drive-queue row that is `running` but has genuinely had no live
|
|
913
|
+
# assignment on its last-known host for at least the settle window rolls
|
|
914
|
+
# that host without waiting for the row to reach a terminal state.
|
|
911
915
|
quiescence = rp.assess_quiescence(
|
|
912
916
|
queue_entries=board.get("drive_queue") or [],
|
|
913
917
|
assignments=board.get("assignments") or [],
|
|
914
918
|
issues=board.get("issues") or [],
|
|
915
919
|
extra_busy=extra_busy,
|
|
920
|
+
now=time.time(),
|
|
916
921
|
)
|
|
917
922
|
record.quiescence = quiescence.to_dict()
|
|
918
923
|
if quiescence.stale:
|
|
@@ -927,6 +932,19 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
|
|
|
927
932
|
"tick --reconcile-only` to clear them for good)",
|
|
928
933
|
err=True,
|
|
929
934
|
)
|
|
935
|
+
if quiescence.settled:
|
|
936
|
+
# #2854: a `running` row whose host rolled BETWEEN LEGS — the row
|
|
937
|
+
# itself is still in flight, only the settled host is being treated
|
|
938
|
+
# as idle. Printed unconditionally, same reasoning as `stale` above:
|
|
939
|
+
# a host rolled mid-drive must leave a readable trace of why that was
|
|
940
|
+
# judged safe.
|
|
941
|
+
click.echo(
|
|
942
|
+
"note: rolling host(s) for drive-queue row(s) that are between "
|
|
943
|
+
f"legs and past the settle window: {', '.join(quiescence.settled)} "
|
|
944
|
+
"(#2854 — the row itself is still running; only the currently "
|
|
945
|
+
"idle host is being treated as quiescent)",
|
|
946
|
+
err=True,
|
|
947
|
+
)
|
|
930
948
|
|
|
931
949
|
hosts = [m.name for m in (getattr(config, "machines", ()) or ())]
|
|
932
950
|
busy_hosts = quiescence.busy_hosts()
|
|
@@ -2705,14 +2723,21 @@ def _drain(
|
|
|
2705
2723
|
rp.Busy(kind="board unreadable", subject="/board", detail=board_error)
|
|
2706
2724
|
)
|
|
2707
2725
|
extra_busy.extend(extra_busy_fetch())
|
|
2726
|
+
# #2854: same settle-window opt-in as the top-level `propagate` call
|
|
2727
|
+
# site — one clock read per poll, reused for both the settle window
|
|
2728
|
+
# and `elapsed` below, so a between-legs gap that crosses the settle
|
|
2729
|
+
# threshold mid-drain clears within THIS wait rather than only on
|
|
2730
|
+
# the next `coord release propagate` tick.
|
|
2731
|
+
poll_now = now_fn()
|
|
2708
2732
|
quiescence = rp.assess_quiescence(
|
|
2709
2733
|
queue_entries=board.get("drive_queue") or [],
|
|
2710
2734
|
assignments=board.get("assignments") or [],
|
|
2711
2735
|
issues=board.get("issues") or [],
|
|
2712
2736
|
extra_busy=extra_busy,
|
|
2737
|
+
now=poll_now,
|
|
2713
2738
|
)
|
|
2714
2739
|
busy = bool(quiescence.fleet_wide_busy) or daemon_host in quiescence.busy_hosts()
|
|
2715
|
-
elapsed =
|
|
2740
|
+
elapsed = poll_now - start
|
|
2716
2741
|
if not busy:
|
|
2717
2742
|
return rw.DrainOutcome(drained=True, elapsed_seconds=elapsed, detail="drained")
|
|
2718
2743
|
detail = quiescence.busy_reason_for_host(daemon_host) or quiescence.reason
|
|
@@ -120,6 +120,34 @@ purpose: the daemon-host gate itself (`daemon_name in busy_hosts` in
|
|
|
120
120
|
message in `coord/release_cordon.py`) lives outside this module and needs
|
|
121
121
|
its own look before any loosening — this is the finding, not the fix.
|
|
122
122
|
|
|
123
|
+
#2854 IS THE LOOK #2618 DEFERRED
|
|
124
|
+
---------------------------------
|
|
125
|
+
#2618's finding was narrow on purpose: a live drive can now survive a
|
|
126
|
+
`coord-serve` restart, so "occupied anywhere" no longer needs to defer the
|
|
127
|
+
whole fleet — but `assess_quiescence` kept charging a between-legs `running`
|
|
128
|
+
row to its host for the entry's entire remaining lifetime regardless,
|
|
129
|
+
because #2240 only ever narrowed WHICH host that charge lands on, never
|
|
130
|
+
whether it should still apply once the thing it was protecting (an
|
|
131
|
+
in-flight worker process) is gone. Measured 2026-08-27: a propagate run
|
|
132
|
+
cordoned two idle hosts because a third issue's *work* leg had started three
|
|
133
|
+
minutes earlier, with smoke, review and merge still ahead of it — on that
|
|
134
|
+
day's numbers, an hour or more of cordon for hosts with nothing running on
|
|
135
|
+
them at all.
|
|
136
|
+
|
|
137
|
+
`assess_quiescence`'s `now`/`settle_seconds` close that gap: a between-legs
|
|
138
|
+
row (no live assignment right now) whose gap has already outlasted a short
|
|
139
|
+
debounce is moved out of `busy` into `Quiescence.settled` instead — visible,
|
|
140
|
+
never a silent drop, same as `stale` above. The debounce exists because "no
|
|
141
|
+
live assignment right now" is one momentary read of a gap that is normally
|
|
142
|
+
seconds long (see #2240's section below); requiring it to have already held
|
|
143
|
+
for `settle_seconds` (default 20s, matching #2139's identical-shaped
|
|
144
|
+
idle-restart debounce) is what keeps a lucky poll from reading a gap that is
|
|
145
|
+
about to close as though it were actually open. See `assess_quiescence`'s
|
|
146
|
+
own docstring for the exact mechanics, and #2854 for the fuller risk
|
|
147
|
+
analysis (`notify.lock`, intra-issue version skew, the drive process itself
|
|
148
|
+
never updating mid-run) that this fix does not, and does not need to, change
|
|
149
|
+
anything about.
|
|
150
|
+
|
|
123
151
|
LANE ORDER ANSWERS THE SKEW QUESTION
|
|
124
152
|
------------------------------------
|
|
125
153
|
#1835 asks whether a fleet mid-roll — hosts at two versions — is safe for
|
|
@@ -534,6 +562,14 @@ NO_OP_STATUSES: frozenset[str] = frozenset(
|
|
|
534
562
|
#: must not schedule an update the agent would then refuse.
|
|
535
563
|
LIVE_ASSIGNMENT_STATUSES: frozenset[str] = frozenset({"RUNNING", "PENDING"})
|
|
536
564
|
|
|
565
|
+
#: #2854: how long a host must show NO live assignment for an in-flight
|
|
566
|
+
#: (but between-legs) drive-queue entry before that gap counts as settled
|
|
567
|
+
#: enough to roll. Mirrors the #2139 idle-restart debounce's 20s window —
|
|
568
|
+
#: same shape of problem (a momentarily-quiet host that is about to become
|
|
569
|
+
#: busy again as the next leg lands), same fix. See :func:`assess_quiescence`
|
|
570
|
+
#: for how this is spent.
|
|
571
|
+
DEFAULT_BETWEEN_LEGS_SETTLE_SECONDS = 20.0
|
|
572
|
+
|
|
537
573
|
|
|
538
574
|
# ── busy signals ─────────────────────────────────────────────────────────────
|
|
539
575
|
|
|
@@ -663,6 +699,14 @@ class Quiescence:
|
|
|
663
699
|
#: doing the same disproof on its own cadence; this is the same evidence,
|
|
664
700
|
#: re-checked on READ so a stopped timer cannot make it unfalsifiable.
|
|
665
701
|
stale: tuple[str, ...] = ()
|
|
702
|
+
#: #2854: `running` queue rows that are genuinely BETWEEN LEGS (no live
|
|
703
|
+
#: assignment right now) and have stayed that way for at least the
|
|
704
|
+
#: settle window — see :func:`assess_quiescence`'s *now*/*settle_seconds*.
|
|
705
|
+
#: Not a busy signal (the whole point is that it does NOT block); not
|
|
706
|
+
#: silent either, same reasoning as `stale` above: a host rolled while
|
|
707
|
+
#: its issue's drive-queue row is still `running` must leave a readable
|
|
708
|
+
#: trace of why that was safe, not just a quiet absence from `busy`.
|
|
709
|
+
settled: tuple[str, ...] = ()
|
|
666
710
|
|
|
667
711
|
@property
|
|
668
712
|
def reason(self) -> str:
|
|
@@ -723,6 +767,7 @@ class Quiescence:
|
|
|
723
767
|
"busy": [asdict(b) for b in self.busy],
|
|
724
768
|
"fired_holds": list(self.fired_holds),
|
|
725
769
|
"stale": list(self.stale),
|
|
770
|
+
"settled": list(self.settled),
|
|
726
771
|
}
|
|
727
772
|
|
|
728
773
|
|
|
@@ -769,22 +814,22 @@ def _live_assignment_hosts(assignments: Iterable[Mapping[str, Any]]) -> dict[str
|
|
|
769
814
|
return hosts
|
|
770
815
|
|
|
771
816
|
|
|
772
|
-
def
|
|
773
|
-
|
|
817
|
+
def _last_assignment_rows(
|
|
818
|
+
assignments: Iterable[Mapping[str, Any]],
|
|
819
|
+
) -> dict[str, Mapping[str, Any]]:
|
|
820
|
+
"""``repo#issue`` → the single MOST RECENT assignment row for that key.
|
|
774
821
|
|
|
775
|
-
Any status, terminal included
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
NOT there is a drive whose every leg fell out of retention, and such an
|
|
782
|
-
entry keeps the old unattributable reading.
|
|
822
|
+
Any status, terminal included. The shared selection behind
|
|
823
|
+
:func:`_last_assignment_hosts` (which host) and
|
|
824
|
+
:func:`_last_assignment_idle_since` (#2854: how long that host has been
|
|
825
|
+
gone) — both must agree on WHICH row is "last", or a between-legs host
|
|
826
|
+
and its settle-window clock could end up describing two different
|
|
827
|
+
assignments.
|
|
783
828
|
|
|
784
829
|
Ordered by ``dispatched_at``, with rows that carry no timestamp treated
|
|
785
830
|
as oldest — a row we cannot place in time must never displace one we can.
|
|
786
831
|
"""
|
|
787
|
-
best: dict[str, tuple[float, str]] = {}
|
|
832
|
+
best: dict[str, tuple[float, Mapping[str, Any]]] = {}
|
|
788
833
|
for row in assignments:
|
|
789
834
|
machine = str(row.get("machine_name") or row.get("machine") or "") or None
|
|
790
835
|
if not machine:
|
|
@@ -796,8 +841,59 @@ def _last_assignment_hosts(assignments: Iterable[Mapping[str, Any]]) -> dict[str
|
|
|
796
841
|
key = _queue_key(row)
|
|
797
842
|
previous = best.get(key)
|
|
798
843
|
if previous is None or when >= previous[0]:
|
|
799
|
-
best[key] = (when,
|
|
800
|
-
return {key:
|
|
844
|
+
best[key] = (when, row)
|
|
845
|
+
return {key: row for key, (_, row) in best.items()}
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
def _last_assignment_hosts(assignments: Iterable[Mapping[str, Any]]) -> dict[str, str]:
|
|
849
|
+
"""``repo#issue`` → the machine that ran its MOST RECENT assignment (#2240).
|
|
850
|
+
|
|
851
|
+
Any status, terminal included — this is deliberately the "last known
|
|
852
|
+
host" lookup, used only when :func:`_live_assignment_hosts` has nothing
|
|
853
|
+
because the entry is between legs. ``/board`` publishes terminal
|
|
854
|
+
assignment rows within its retention window
|
|
855
|
+
(``coord.dao.board_projection``'s ``_capped_assignments``), so the
|
|
856
|
+
previous leg of a drive that finished minutes ago is right there; what is
|
|
857
|
+
NOT there is a drive whose every leg fell out of retention, and such an
|
|
858
|
+
entry keeps the old unattributable reading.
|
|
859
|
+
|
|
860
|
+
See :func:`_last_assignment_rows` for the row-selection rule this reads.
|
|
861
|
+
"""
|
|
862
|
+
return {
|
|
863
|
+
key: str(row.get("machine_name") or row.get("machine") or "")
|
|
864
|
+
for key, row in _last_assignment_rows(assignments).items()
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
def _last_assignment_idle_since(
|
|
869
|
+
assignments: Iterable[Mapping[str, Any]],
|
|
870
|
+
) -> dict[str, float]:
|
|
871
|
+
"""``repo#issue`` → when its last-known host stopped running it (#2854).
|
|
872
|
+
|
|
873
|
+
``finished_at`` off the SAME row :func:`_last_assignment_hosts` already
|
|
874
|
+
picked as "most recent" (see :func:`_last_assignment_rows`) — never a
|
|
875
|
+
second, independently-selected row, which could disagree about which
|
|
876
|
+
assignment is even being described.
|
|
877
|
+
|
|
878
|
+
A key is absent from the result — not mapped to ``0.0`` or any other
|
|
879
|
+
guess — when that row carries no readable ``finished_at`` (a legacy row,
|
|
880
|
+
or one written before the field existed). :func:`assess_quiescence`
|
|
881
|
+
treats an absent entry exactly like "not yet settled": a between-legs
|
|
882
|
+
gap this function cannot measure must never be read as long enough to
|
|
883
|
+
roll on a guess, the same "missing data fails toward the conservative
|
|
884
|
+
reading" rule the rest of this module already follows (see e.g.
|
|
885
|
+
`DRIFT_UNKNOWN` in `coord/release_cordon.py`).
|
|
886
|
+
"""
|
|
887
|
+
out: dict[str, float] = {}
|
|
888
|
+
for key, row in _last_assignment_rows(assignments).items():
|
|
889
|
+
raw = row.get("finished_at")
|
|
890
|
+
if raw is None:
|
|
891
|
+
continue
|
|
892
|
+
try:
|
|
893
|
+
out[key] = float(raw)
|
|
894
|
+
except (TypeError, ValueError):
|
|
895
|
+
continue
|
|
896
|
+
return out
|
|
801
897
|
|
|
802
898
|
|
|
803
899
|
def busy_host_for_entry(
|
|
@@ -895,6 +991,8 @@ def assess_quiescence(
|
|
|
895
991
|
assignments: Iterable[Mapping[str, Any]] = (),
|
|
896
992
|
issues: Iterable[Mapping[str, Any]] = (),
|
|
897
993
|
extra_busy: Iterable[Busy] = (),
|
|
994
|
+
now: float | None = None,
|
|
995
|
+
settle_seconds: float = DEFAULT_BETWEEN_LEGS_SETTLE_SECONDS,
|
|
898
996
|
) -> Quiescence:
|
|
899
997
|
"""Is the fleet idle enough to restart every agent on it?
|
|
900
998
|
|
|
@@ -955,6 +1053,38 @@ def assess_quiescence(
|
|
|
955
1053
|
``running`` row, never retry or block one — that stays the tick's job.
|
|
956
1054
|
It closes exactly the gap that let a landed row block a roll forever
|
|
957
1055
|
with no clock and no way to contradict it.
|
|
1056
|
+
|
|
1057
|
+
#2854: ROLL BETWEEN LEGS, NOT BETWEEN ISSUES. Even after #2240 narrowed a
|
|
1058
|
+
between-legs ``running`` row from fleet-wide to its one last-known host,
|
|
1059
|
+
that host stayed charged as busy for the entry's ENTIRE remaining
|
|
1060
|
+
lifetime — work, test, review, merge — including every gap between legs
|
|
1061
|
+
where no worker process is actually running there. #2618 established
|
|
1062
|
+
that a between-legs gap has nothing an agent restart could kill (no
|
|
1063
|
+
poll in flight survives a restart uneventfully, and no unretried write
|
|
1064
|
+
is outstanding either); this is the other half — actually treating that
|
|
1065
|
+
gap as idle instead of only proving it *could* be.
|
|
1066
|
+
|
|
1067
|
+
A between-legs row (no entry in *live_assignment_hosts*) is no longer
|
|
1068
|
+
unconditionally busy for its attributed host. It stays busy — same as
|
|
1069
|
+
before — unless ALL of: *now* is given (a caller that never asks for the
|
|
1070
|
+
settle window gets the old, safer-by-default behaviour), the row's last
|
|
1071
|
+
known host can actually be named, and :func:`_last_assignment_idle_since`
|
|
1072
|
+
can prove *at least* `settle_seconds` have passed since that host's last
|
|
1073
|
+
assignment for this entry actually **finished** (``finished_at`` — not
|
|
1074
|
+
when it was dispatched, which would only ever UNDERSTATE how recently a
|
|
1075
|
+
worker was alive there). Meeting all three moves the entry into
|
|
1076
|
+
:attr:`Quiescence.settled` instead of :attr:`Quiescence.busy` — visible,
|
|
1077
|
+
exactly like `stale` above, never a silent drop.
|
|
1078
|
+
|
|
1079
|
+
The settle window itself exists because "no live assignment right now"
|
|
1080
|
+
is a single, momentary read, and the between-legs gap it is trying to
|
|
1081
|
+
catch is normally seconds long (see the module docstring's #2240
|
|
1082
|
+
section) — a read that happens to land exactly inside one is not
|
|
1083
|
+
evidence the gap will still be open by the time a roll actually acts on
|
|
1084
|
+
it. Requiring the gap to have already lasted `settle_seconds` (default
|
|
1085
|
+
:data:`DEFAULT_BETWEEN_LEGS_SETTLE_SECONDS`, the same 20s the #2139
|
|
1086
|
+
idle-restart debounce uses for an identical shape of flapping) is a
|
|
1087
|
+
debounce, not a probability judgement — same mechanism, same reason.
|
|
958
1088
|
"""
|
|
959
1089
|
queue_entries = list(queue_entries)
|
|
960
1090
|
assignments = list(assignments)
|
|
@@ -962,10 +1092,12 @@ def assess_quiescence(
|
|
|
962
1092
|
board = build_board_view({"assignments": assignments, "issues": issues})
|
|
963
1093
|
live_assignment_hosts = _live_assignment_hosts(assignments)
|
|
964
1094
|
last_assignment_hosts = _last_assignment_hosts(assignments)
|
|
1095
|
+
last_assignment_idle_since = _last_assignment_idle_since(assignments)
|
|
965
1096
|
|
|
966
1097
|
busy: list[Busy] = []
|
|
967
1098
|
fired: list[str] = []
|
|
968
1099
|
stale: list[str] = []
|
|
1100
|
+
settled: list[str] = []
|
|
969
1101
|
|
|
970
1102
|
for entry in queue_entries:
|
|
971
1103
|
state = str(entry.get("state") or "")
|
|
@@ -980,29 +1112,44 @@ def assess_quiescence(
|
|
|
980
1112
|
host = busy_host_for_entry(
|
|
981
1113
|
entry, live_assignment_hosts, last_assignment_hosts
|
|
982
1114
|
)
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
# between a signal holding one machine and one holding the
|
|
986
|
-
# fleet, and a deferral nobody can take apart is a deferral
|
|
987
|
-
# nobody can act on.
|
|
988
|
-
detail = "restarting agents now would kill it mid-flight"
|
|
989
|
-
if (
|
|
990
|
-
host
|
|
1115
|
+
between_legs = (
|
|
1116
|
+
host is not None
|
|
991
1117
|
and not entry.get("machine")
|
|
992
1118
|
and key not in live_assignment_hosts
|
|
993
|
-
):
|
|
994
|
-
detail += (
|
|
995
|
-
"; between legs — attributed to its last known host "
|
|
996
|
-
"(#2240)"
|
|
997
|
-
)
|
|
998
|
-
busy.append(
|
|
999
|
-
Busy(
|
|
1000
|
-
kind="drive-queue entry running",
|
|
1001
|
-
subject=key,
|
|
1002
|
-
detail=detail,
|
|
1003
|
-
host=host,
|
|
1004
|
-
)
|
|
1005
1119
|
)
|
|
1120
|
+
# #2854: a between-legs row whose gap has already outlasted
|
|
1121
|
+
# the settle window is treated as genuinely idle for its
|
|
1122
|
+
# host, not merely "attributed and busy anyway" — see this
|
|
1123
|
+
# function's own docstring. `idle_for` stays `None` (never
|
|
1124
|
+
# settled) whenever it cannot be PROVEN: no `now`, or no
|
|
1125
|
+
# readable `finished_at` for the last assignment.
|
|
1126
|
+
idle_for = None
|
|
1127
|
+
if between_legs and now is not None:
|
|
1128
|
+
idle_since = last_assignment_idle_since.get(key)
|
|
1129
|
+
if idle_since is not None:
|
|
1130
|
+
idle_for = now - idle_since
|
|
1131
|
+
if idle_for is not None and idle_for >= settle_seconds:
|
|
1132
|
+
settled.append(key)
|
|
1133
|
+
else:
|
|
1134
|
+
# #2240: say WHICH reading named the host. "between legs,
|
|
1135
|
+
# attributed to its last known host" is the difference
|
|
1136
|
+
# between a signal holding one machine and one holding
|
|
1137
|
+
# the fleet, and a deferral nobody can take apart is a
|
|
1138
|
+
# deferral nobody can act on.
|
|
1139
|
+
detail = "restarting agents now would kill it mid-flight"
|
|
1140
|
+
if between_legs:
|
|
1141
|
+
detail += (
|
|
1142
|
+
"; between legs — attributed to its last known "
|
|
1143
|
+
"host (#2240)"
|
|
1144
|
+
)
|
|
1145
|
+
busy.append(
|
|
1146
|
+
Busy(
|
|
1147
|
+
kind="drive-queue entry running",
|
|
1148
|
+
subject=key,
|
|
1149
|
+
detail=detail,
|
|
1150
|
+
host=host,
|
|
1151
|
+
)
|
|
1152
|
+
)
|
|
1006
1153
|
# A *fired* gate is the opposite of busy — the queue has stopped
|
|
1007
1154
|
# itself waiting for precisely this deploy. Recorded, never counted.
|
|
1008
1155
|
if str(entry.get("hold_state") or "") == HOLD_FIRED:
|
|
@@ -1034,6 +1181,7 @@ def assess_quiescence(
|
|
|
1034
1181
|
busy=tuple(busy),
|
|
1035
1182
|
fired_holds=tuple(dict.fromkeys(fired)),
|
|
1036
1183
|
stale=tuple(dict.fromkeys(stale)),
|
|
1184
|
+
settled=tuple(dict.fromkeys(settled)),
|
|
1037
1185
|
)
|
|
1038
1186
|
|
|
1039
1187
|
|