code-coordinator 0.5.256__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.256 → code_coordinator-0.5.258}/PKG-INFO +1 -1
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/drive_queue.py +52 -16
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/release.py +26 -1
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/drive.py +9 -2
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/drive_queue.py +121 -8
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/models.py +25 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_propagate.py +181 -33
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_drive_queue.py +97 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue.py +173 -0
- code_coordinator-0.5.258/tests/test_release_roll_between_legs_2854.py +293 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.gitignore +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/CLAUDE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/GOAL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/LICENSE +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/MANIFEST.in +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/README.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agent.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/block_log.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/brain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/claim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/client.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/comments.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dao.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/db.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deps.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/filelock.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/freshness.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gates.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/goal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/context.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/models.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/render.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/units.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/hooks.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/interactive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/network.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/openapi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/parentage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/plans.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/progress.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_window.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/reports.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/self_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/smoke.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/split_work.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/sql.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_report.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/usage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/install-agent.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/pyproject.toml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/setup.cfg +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/conftest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_db.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_init.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_models.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_network.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_session.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_split.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.256 → 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.256 → 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",
|
|
@@ -3450,21 +3450,45 @@ def _fetch_live_prereq_terminal(
|
|
|
3450
3450
|
BOUNDED THE SAME WAY ITS SIBLINGS ARE. Only deps named by an entry
|
|
3451
3451
|
currently ``waiting`` or ``blocked`` with a non-empty ``after=``, and
|
|
3452
3452
|
only those the board does NOT already resolve on its own
|
|
3453
|
-
(``facts.landed``, ``facts.open``, ``facts.active_work``, or a
|
|
3454
|
-
this tick's own pre-reconcile ``states`` — i.e.
|
|
3455
|
-
make it into a live call. A queue with no
|
|
3456
|
-
costs nothing here, same as
|
|
3457
|
-
with no ``blocked`` rows.
|
|
3458
|
-
pre-tick ``state`` field
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
``
|
|
3464
|
-
|
|
3465
|
-
A false positive (a
|
|
3466
|
-
|
|
3467
|
-
|
|
3453
|
+
(``facts.landed``, ``facts.open``, ``facts.active_work``, or a
|
|
3454
|
+
``STATE_DONE`` hit in this tick's own pre-reconcile ``states`` — i.e.
|
|
3455
|
+
already known landed) make it into a live call. A queue with no
|
|
3456
|
+
unresolved ``after=`` edge costs nothing here, same as
|
|
3457
|
+
``_fetch_live_blocked_gate`` costs nothing with no ``blocked`` rows.
|
|
3458
|
+
``states`` is approximated from *entries*' pre-tick ``state`` field
|
|
3459
|
+
(cheap, no I/O) rather than threaded from ``plan_tick``'s own
|
|
3460
|
+
in-progress reconcile — a false negative here (a dep this approximation
|
|
3461
|
+
still calls a live-check target, when the tick's own authoritative
|
|
3462
|
+
``states`` would already have resolved it another way) costs one
|
|
3463
|
+
harmless extra ``gh`` read, never a wrong verdict: ``_resolve_prereqs``
|
|
3464
|
+
only ever consults this mapping in its OWN final branch, after its own
|
|
3465
|
+
``states``/``facts`` checks have already returned. A false positive (a
|
|
3466
|
+
dep this skips that the tick's real walk would have reached the final
|
|
3467
|
+
branch for) simply leaves that one dep to the pre-#2602 fallback for
|
|
3468
|
+
this tick — caught on the next one.
|
|
3469
|
+
|
|
3470
|
+
#2850 WIDENS THE BOUND, in two ways, both closing the same class of gap
|
|
3471
|
+
the incident exposed (a pre-req stuck under a stale/bogus queue row, not
|
|
3472
|
+
merely absent from the queue):
|
|
3473
|
+
|
|
3474
|
+
* a dep whose queue row IS present now still gets a live call as long as
|
|
3475
|
+
that row isn't already ``STATE_DONE`` — before #2850 any dep present
|
|
3476
|
+
in ``states`` at all (``running``, ``waiting``, ``blocked``, ...) was
|
|
3477
|
+
excluded outright, on the (pre-#2850) assumption that "still queued"
|
|
3478
|
+
meant the local row was trustworthy. A `running` row that outlived the
|
|
3479
|
+
drive it named (the #2850 incident: a drive that exited 0 having
|
|
3480
|
+
merged, requeued into a `running` row nothing else re-checks) broke
|
|
3481
|
+
that assumption; ``coord.drive_queue._resolve_prereqs``'s matching
|
|
3482
|
+
#2850 change is what actually consults this for those deps.
|
|
3483
|
+
* every ``running`` entry's OWN key is also added as a target when it
|
|
3484
|
+
has no live tmux session (``board.live_sessions``) and the board does
|
|
3485
|
+
not yet show it landed — i.e. exactly the entries
|
|
3486
|
+
``coord.drive_queue._reconcile_running`` is about to run its
|
|
3487
|
+
death/retry diagnosis on THIS tick. That function consults this same
|
|
3488
|
+
mapping, keyed by its OWN ``entry.key``, right before it would
|
|
3489
|
+
otherwise spend a requeue attempt — the "re-check before requeuing
|
|
3490
|
+
anything" half of #2850, independent of whatever (if anything) the
|
|
3491
|
+
drive's own exit reason said.
|
|
3468
3492
|
"""
|
|
3469
3493
|
states = {e.key: e.state for e in entries}
|
|
3470
3494
|
targets: set[str] = set()
|
|
@@ -3472,12 +3496,24 @@ def _fetch_live_prereq_terminal(
|
|
|
3472
3496
|
if e.state not in (STATE_WAITING, STATE_BLOCKED) or not e.after:
|
|
3473
3497
|
continue
|
|
3474
3498
|
for dep in e.after:
|
|
3475
|
-
if dep in targets or states.get(dep)
|
|
3499
|
+
if dep in targets or states.get(dep) == STATE_DONE:
|
|
3476
3500
|
continue
|
|
3477
3501
|
facts = board.facts(dep)
|
|
3478
3502
|
if facts.landed or facts.open or facts.active_work:
|
|
3479
3503
|
continue
|
|
3480
3504
|
targets.add(dep)
|
|
3505
|
+
# #2850: a RUNNING entry about to be reconciled by `_reconcile_running`'s
|
|
3506
|
+
# death/retry logic THIS tick (no live session, and the board's own
|
|
3507
|
+
# cached facts don't show it landed) gets the identical live re-check —
|
|
3508
|
+
# bounded to exactly the entries that would otherwise risk a requeue.
|
|
3509
|
+
for e in entries:
|
|
3510
|
+
if e.state != STATE_RUNNING or e.key in targets:
|
|
3511
|
+
continue
|
|
3512
|
+
if e.key in board.live_sessions:
|
|
3513
|
+
continue
|
|
3514
|
+
if board.facts(e.key).landed:
|
|
3515
|
+
continue
|
|
3516
|
+
targets.add(e.key)
|
|
3481
3517
|
if not targets:
|
|
3482
3518
|
return {}
|
|
3483
3519
|
|
|
@@ -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
|
|
@@ -116,7 +116,11 @@ from coord.failure_class import (
|
|
|
116
116
|
environmental_backoff_secs,
|
|
117
117
|
plan_usage_limit_resume,
|
|
118
118
|
)
|
|
119
|
-
from coord.models import
|
|
119
|
+
from coord.models import (
|
|
120
|
+
DELIVERABLE_ANALYSIS_LABEL,
|
|
121
|
+
MERGE_LANDED_MARKER,
|
|
122
|
+
POLICY_REFUSAL_MARKER,
|
|
123
|
+
)
|
|
120
124
|
from coord.self_health import self_freshness
|
|
121
125
|
from coord.usage_limits import PlanLimits, evaluate_usage_gate, get_plan_limits
|
|
122
126
|
# Lost in the #1584-onto-#1590 rebase: _decide_review() calls this, but the
|
|
@@ -1869,7 +1873,10 @@ def decide(
|
|
|
1869
1873
|
if state.work_status == "merged" or state.merge_status == "MERGED":
|
|
1870
1874
|
target = state.repo_default_branch or "main"
|
|
1871
1875
|
if state.work_branch and verifier.verify_merged(state):
|
|
1872
|
-
return _succeed(
|
|
1876
|
+
return _succeed(
|
|
1877
|
+
f"✓ MERGED — {state.work_branch} has landed on {target}\n"
|
|
1878
|
+
f" {MERGE_LANDED_MARKER}"
|
|
1879
|
+
)
|
|
1873
1880
|
base = opts.repo_path or f"~/src/{state.repo}"
|
|
1874
1881
|
return _die(
|
|
1875
1882
|
f"board says merged but {state.work_branch} has NOT landed on {target}\n"
|
|
@@ -100,7 +100,7 @@ from coord.merge_queue import (
|
|
|
100
100
|
is_ci_unreadable_reason,
|
|
101
101
|
is_stale_smoke_reason,
|
|
102
102
|
)
|
|
103
|
-
from coord.models import is_policy_refusal_reason
|
|
103
|
+
from coord.models import is_merge_landed_reason, is_policy_refusal_reason
|
|
104
104
|
|
|
105
105
|
# ── queue states ─────────────────────────────────────────────────────────────
|
|
106
106
|
#
|
|
@@ -1818,17 +1818,26 @@ def _resolve_prereqs(
|
|
|
1818
1818
|
_fetch_live_prereq_terminal``, the same positive-liveness test
|
|
1819
1819
|
``coord.overlap_predict``'s ``terminal_checker`` uses for the sibling
|
|
1820
1820
|
``[branch]`` half of #2602) confirms the issue is closed or its PR
|
|
1821
|
-
merged
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
queue (merged, issue closed) can outrun that cache — reading as "not
|
|
1826
|
-
queued, not merged, not open" (:data:`_UNKNOWN_PREREQ_MARKER`) even
|
|
1821
|
+
merged. This is the recovery half: the cached ``board.facts(dep)`` this
|
|
1822
|
+
function checks first is a periodic ``/board`` build, not a live read,
|
|
1823
|
+
and a pre-req that has JUST left the queue (merged, issue closed) can
|
|
1824
|
+
outrun that cache — reading as "not queued, not merged, not open" even
|
|
1827
1825
|
though the dep is, in fact, already done. Before this existed that
|
|
1828
1826
|
verdict was unconditionally unsatisfiable and permanent
|
|
1829
1827
|
(coord-portal#145/#149/#150, 2026-08-22): a dep absent here (no live
|
|
1830
1828
|
check ran, or it ran and came back inconclusive) falls through to
|
|
1831
1829
|
exactly that pre-#2602 behaviour — never a false "satisfied".
|
|
1830
|
+
|
|
1831
|
+
#2850 widens WHERE this is consulted: originally only the final branch
|
|
1832
|
+
below (*dep* absent from the queue entirely) checked it. But a dep can
|
|
1833
|
+
just as easily be PRESENT in the queue under a stale or outright bogus
|
|
1834
|
+
row — the #2850 incident: a drive that exited 0 having merged got
|
|
1835
|
+
requeued into a `running` row that never dies again on its own — and
|
|
1836
|
+
that shape used to return "waiting"/"will never satisfy" straight out
|
|
1837
|
+
of the ``dep_state is not None`` branch, never reaching this check at
|
|
1838
|
+
all. So it is now ALSO consulted there, for every ``dep_state`` other
|
|
1839
|
+
than ``STATE_DONE``: a pre-req that demonstrably landed must satisfy
|
|
1840
|
+
the dependent whatever its own queue row happens to claim.
|
|
1832
1841
|
"""
|
|
1833
1842
|
if entry.key in cycle_keys:
|
|
1834
1843
|
return _Verdict(False, True, cycle_keys[entry.key])
|
|
@@ -1863,6 +1872,20 @@ def _resolve_prereqs(
|
|
|
1863
1872
|
# flips to `done`, instead of the tick after the cache
|
|
1864
1873
|
# independently rediscovers the same fact.
|
|
1865
1874
|
continue
|
|
1875
|
+
if (live_prereq_terminal or {}).get(dep):
|
|
1876
|
+
# #2850: *dep*'s OWN queue row says it is still in play
|
|
1877
|
+
# (``running``, ``waiting``, ``blocked``, ...) — but a live
|
|
1878
|
+
# re-check taken THIS tick confirms it is, in fact, already
|
|
1879
|
+
# closed or merged. Before this, only a dep ABSENT from the
|
|
1880
|
+
# queue entirely ever reached the #2602 recovery check below;
|
|
1881
|
+
# a dep still SITTING in the queue under a stale/bogus row
|
|
1882
|
+
# (the #2850 incident: a drive that exited 0 having merged,
|
|
1883
|
+
# requeued into a bogus `running` row) short-circuited to
|
|
1884
|
+
# "waiting"/"will never satisfy" here and shadowed the very
|
|
1885
|
+
# recovery check meant to catch exactly this. A dependent
|
|
1886
|
+
# must never be blocked by a pre-req that demonstrably
|
|
1887
|
+
# landed, whatever its queue row claims.
|
|
1888
|
+
continue
|
|
1866
1889
|
if dep_state in (STATE_BLOCKED, STATE_FAILED):
|
|
1867
1890
|
return _Verdict(
|
|
1868
1891
|
False,
|
|
@@ -2757,6 +2780,7 @@ def _reconcile_running(
|
|
|
2757
2780
|
exit_reasons: Mapping[str, str] | None = None,
|
|
2758
2781
|
exit_refused: Mapping[str, bool] | None = None,
|
|
2759
2782
|
exit_dead_end: Mapping[str, bool] | None = None,
|
|
2783
|
+
live_prereq_terminal: Mapping[str, bool] | None = None,
|
|
2760
2784
|
) -> tuple[Reconcile, Blocked | None]:
|
|
2761
2785
|
"""Resolve one ``running`` entry against the board.
|
|
2762
2786
|
|
|
@@ -2848,6 +2872,35 @@ def _reconcile_running(
|
|
|
2848
2872
|
the default budget. Still finite, still ``exhausted`` → ``blocked`` with
|
|
2849
2873
|
the same diagnosis-and-recovery instructions once ITS wider ceiling is
|
|
2850
2874
|
also hit.
|
|
2875
|
+
|
|
2876
|
+
#2850 adds TWO more "already landed" signals, both checked with the SAME
|
|
2877
|
+
priority as ``facts.landed`` above — right after it, before
|
|
2878
|
+
``facts.active_work`` — because both are confirmations of terminal
|
|
2879
|
+
completion at least as strong as a cached board read, and a drive that
|
|
2880
|
+
has genuinely landed must never be requeued regardless of what
|
|
2881
|
+
``active_work``/cross-host/grace-window evidence says next:
|
|
2882
|
+
|
|
2883
|
+
* ``own_reason`` matching :func:`coord.models.is_merge_landed_reason` —
|
|
2884
|
+
the drive's OWN exit narrated a confirmed merge (``coord.drive.
|
|
2885
|
+
decide``'s "terminal: merged" branch, gated on a LIVE
|
|
2886
|
+
``verifier.verify_merged`` call, not merely the board's cached
|
|
2887
|
+
``merge_status``). Before this, ``exit_code=0`` plus a "✓ MERGED —
|
|
2888
|
+
… has landed" summary still fell all the way through to the generic
|
|
2889
|
+
"no session, no active work, nothing landed" retry logic below — the
|
|
2890
|
+
drive's own strongest evidence, sitting unread in ``own_reason``,
|
|
2891
|
+
never consulted — and got requeued and relaunched into dead air.
|
|
2892
|
+
* *live_prereq_terminal* (#2602's mechanism, reused): when the shell's
|
|
2893
|
+
bounded live re-check (:func:`coord.commands.drive_queue.
|
|
2894
|
+
_fetch_live_prereq_terminal`, widened by #2850 to also probe a
|
|
2895
|
+
``running`` entry's OWN key, not just other entries' ``after=``
|
|
2896
|
+
pre-reqs) confirms THIS key is closed or merged, that outranks
|
|
2897
|
+
``own_reason`` even existing — it catches every OTHER shape of "this
|
|
2898
|
+
entry's issue is actually done, but this run's own exit reason
|
|
2899
|
+
either says nothing about it or predates it" (a crash, a reap, a
|
|
2900
|
+
dead-end exit for an issue that merged out of band between the crash
|
|
2901
|
+
and this tick). Re-checking before ANY requeue — not only the
|
|
2902
|
+
literal MERGED-exit-text case — is what makes the class safe rather
|
|
2903
|
+
than patching just the one reported instance.
|
|
2851
2904
|
"""
|
|
2852
2905
|
facts = board.facts(entry.key)
|
|
2853
2906
|
|
|
@@ -2874,6 +2927,62 @@ def _reconcile_running(
|
|
|
2874
2927
|
None,
|
|
2875
2928
|
)
|
|
2876
2929
|
|
|
2930
|
+
# Resolved here — before `facts.active_work` and everything after it —
|
|
2931
|
+
# so the #2850 merged-exit check just below can use it; every later
|
|
2932
|
+
# branch that reads `own_reason` (gate_a/policy park, refused/dead_end,
|
|
2933
|
+
# the retry/exhausted wording) is unaffected by hoisting this, since
|
|
2934
|
+
# none of them run before this point.
|
|
2935
|
+
own_reason = (exit_reasons or {}).get(entry.key)
|
|
2936
|
+
if own_reason and is_merge_landed_reason(own_reason):
|
|
2937
|
+
# #2850: the drive's own exit already confirmed — via a LIVE
|
|
2938
|
+
# `verify_merged` check, not the board's cached `merge_status` —
|
|
2939
|
+
# that this landed. Mark it done here, before anything below gets a
|
|
2940
|
+
# chance to read the absent session / absent active-work as a death
|
|
2941
|
+
# and requeue a launch that has nothing left to do.
|
|
2942
|
+
reason = f"{own_reason} — confirmed merged (#2850), not a death"
|
|
2943
|
+
return (
|
|
2944
|
+
Reconcile(
|
|
2945
|
+
entry.key,
|
|
2946
|
+
"done",
|
|
2947
|
+
reason,
|
|
2948
|
+
occupies=False,
|
|
2949
|
+
updates={
|
|
2950
|
+
"state": STATE_DONE,
|
|
2951
|
+
"last_reason": reason,
|
|
2952
|
+
"session_name": None,
|
|
2953
|
+
},
|
|
2954
|
+
),
|
|
2955
|
+
None,
|
|
2956
|
+
)
|
|
2957
|
+
|
|
2958
|
+
if (live_prereq_terminal or {}).get(entry.key):
|
|
2959
|
+
# #2850 defence in depth: whatever THIS run's own exit reason says
|
|
2960
|
+
# (or doesn't — a crash leaves none at all), a live re-check taken
|
|
2961
|
+
# THIS tick confirms the issue is already closed or its PR merged.
|
|
2962
|
+
# That is stronger evidence than an absent tmux session and absent
|
|
2963
|
+
# board `active_work` could ever be on their own — mark done rather
|
|
2964
|
+
# than let the death-diagnosis logic below spend an attempt
|
|
2965
|
+
# relaunching a drive with nothing left to do.
|
|
2966
|
+
reason = (
|
|
2967
|
+
"drive finished — a live re-check this tick confirms the issue "
|
|
2968
|
+
"is already closed or its PR merged (#2850), independent of "
|
|
2969
|
+
"this run's own exit reason and the cached board"
|
|
2970
|
+
)
|
|
2971
|
+
return (
|
|
2972
|
+
Reconcile(
|
|
2973
|
+
entry.key,
|
|
2974
|
+
"done",
|
|
2975
|
+
reason,
|
|
2976
|
+
occupies=False,
|
|
2977
|
+
updates={
|
|
2978
|
+
"state": STATE_DONE,
|
|
2979
|
+
"last_reason": reason,
|
|
2980
|
+
"session_name": None,
|
|
2981
|
+
},
|
|
2982
|
+
),
|
|
2983
|
+
None,
|
|
2984
|
+
)
|
|
2985
|
+
|
|
2877
2986
|
if facts.active_work:
|
|
2878
2987
|
return (
|
|
2879
2988
|
Reconcile(
|
|
@@ -2916,7 +3025,10 @@ def _reconcile_running(
|
|
|
2916
3025
|
# purely for stability — the two codes are mutually exclusive by
|
|
2917
3026
|
# construction (`_drive_exit_summary` records exactly one), so the order
|
|
2918
3027
|
# is never actually load-bearing.
|
|
2919
|
-
|
|
3028
|
+
#
|
|
3029
|
+
# `own_reason` itself was already resolved above (#2850, before the
|
|
3030
|
+
# `facts.active_work` check) so the merged-exit short-circuit could use
|
|
3031
|
+
# it — reused here unchanged.
|
|
2920
3032
|
|
|
2921
3033
|
# #2063 rides the SAME evidence as `refused` below but reaches the
|
|
2922
3034
|
# OPPOSITE conclusion, so it is checked first. A Gate-A "no recorded
|
|
@@ -4121,6 +4233,7 @@ def plan_tick(
|
|
|
4121
4233
|
exit_reasons=exit_reasons,
|
|
4122
4234
|
exit_refused=exit_refused,
|
|
4123
4235
|
exit_dead_end=exit_dead_end,
|
|
4236
|
+
live_prereq_terminal=live_prereq_terminal,
|
|
4124
4237
|
)
|
|
4125
4238
|
reconciles.append(reconcile)
|
|
4126
4239
|
if reconcile.occupies:
|
|
@@ -550,6 +550,31 @@ def is_policy_refusal_reason(text: str | None) -> bool:
|
|
|
550
550
|
return bool(text) and POLICY_REFUSAL_MARKER in text
|
|
551
551
|
|
|
552
552
|
|
|
553
|
+
# #2850: the machine-readable tag `coord.drive.decide` embeds in its
|
|
554
|
+
# `_succeed()` message when the "terminal: merged" branch's own LIVE check
|
|
555
|
+
# (`MergeVerifier.verify_merged`) confirms the issue has genuinely landed —
|
|
556
|
+
# not merely that the board's cached `merge_status` claims so.
|
|
557
|
+
#
|
|
558
|
+
# Text-marker matching (not a dedicated exit code) mirrors
|
|
559
|
+
# `POLICY_REFUSAL_MARKER` immediately above: `EXIT_OK` is shared by every
|
|
560
|
+
# clean drive exit — this one, a `deliverable:analysis` 0-commit stop, and a
|
|
561
|
+
# `--no-merge` "review approved, stopping here" — so the exit code alone
|
|
562
|
+
# cannot distinguish "confirmed merged" from "stopped short of merging on
|
|
563
|
+
# purpose". `coord/drive_queue.py`'s `_reconcile_running` recognises this
|
|
564
|
+
# straight out of the drive's own `drive_exited` audit summary (`own_reason`)
|
|
565
|
+
# and marks the queue entry `done` instead of requeuing a launch that has
|
|
566
|
+
# nothing left to do — closing the #2850 failure mode: a drive that exits 0
|
|
567
|
+
# having MERGED got requeued and relaunched into dead air, with the bogus
|
|
568
|
+
# `running` row shadowing #2602's own live re-check for every dependent
|
|
569
|
+
# chained `--after` it.
|
|
570
|
+
MERGE_LANDED_MARKER = "[drive-merged #2850]"
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
def is_merge_landed_reason(text: str | None) -> bool:
|
|
574
|
+
"""Whether *text* is a #2850 confirmed-merge drive-exit reason."""
|
|
575
|
+
return bool(text) and MERGE_LANDED_MARKER in text
|
|
576
|
+
|
|
577
|
+
|
|
553
578
|
@dataclass
|
|
554
579
|
class Assignment:
|
|
555
580
|
machine_name: str
|