code-coordinator 0.5.256__tar.gz → 0.5.257__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.257}/PKG-INFO +1 -1
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/drive_queue.py +52 -16
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/drive.py +9 -2
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/drive_queue.py +121 -8
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/models.py +25 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_drive_queue.py +97 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_queue.py +173 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/.gitignore +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/CLAUDE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/GOAL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/LICENSE +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/MANIFEST.in +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/README.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/agent.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/block_log.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/board_service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/brain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/claim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/client.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/comments.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dao.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/db.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/deps.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/filelock.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/freshness.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/gates.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/goal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/context.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/models.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/render.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/health/units.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/hooks.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/interactive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/network.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/notify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/openapi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/parentage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/plans.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/progress.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/release_window.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/reports.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/self_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/smoke.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/split_work.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/sql.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/test_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/test_report.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/usage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/install-agent.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/pyproject.toml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/setup.cfg +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/__init__.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/conftest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_db.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_init.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_models.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_network.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_session.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_split.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_state.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.256 → code_coordinator-0.5.257}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -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
|
|
|
@@ -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
|
|
@@ -1338,6 +1338,56 @@ def test_a_blocked_entry_resumes_and_launches_once_a_live_recheck_confirms_its_p
|
|
|
1338
1338
|
assert len(launches) == 1, launches
|
|
1339
1339
|
|
|
1340
1340
|
|
|
1341
|
+
def test_a_dependent_is_released_when_its_prereq_is_wrongly_stuck_running(
|
|
1342
|
+
cli, seed, launches, monkeypatch,
|
|
1343
|
+
):
|
|
1344
|
+
"""#2850 end-to-end: the reported vimcode#536/#673 incident shape. The
|
|
1345
|
+
pre-req (1650) sits in the queue under a BOGUS `running` row — exactly
|
|
1346
|
+
what a drive that exited 0 having merged and then got requeued anyway
|
|
1347
|
+
looks like — while the cached board's `issues` row for it still reads
|
|
1348
|
+
"open" (the sync that would flip it hasn't caught up yet). Before this
|
|
1349
|
+
fix, `_resolve_prereqs` read `states[dep] == "running"` and returned
|
|
1350
|
+
"waiting on ... (queued, running)" unconditionally — the `running` row
|
|
1351
|
+
shadowed the SAME live re-check that already resolves a pre-req merely
|
|
1352
|
+
ABSENT from the queue (`test_a_blocked_entry_resumes_...` above) — so
|
|
1353
|
+
the dependent (1654) sat blocked for as long as the bogus row
|
|
1354
|
+
persisted. A live `github_ops.work_is_terminal` re-check taken THIS
|
|
1355
|
+
tick must release the dependent regardless of what the pre-req's own
|
|
1356
|
+
queue row claims."""
|
|
1357
|
+
seed(issues={1650: "open", 1654: "open"})
|
|
1358
|
+
cli("add", REPO, "1650")
|
|
1359
|
+
cli("add", REPO, "1654", "--after", "1650")
|
|
1360
|
+
|
|
1361
|
+
# Simulate the bogus post-merge `running` row directly — a drive that
|
|
1362
|
+
# exited 0 having merged and was requeued, exactly the #2850 symptom
|
|
1363
|
+
# fixes 1/2 (in `coord.drive_queue`) now prevent from ever happening;
|
|
1364
|
+
# this test pins the DEPENDENT side even if some other cause ever
|
|
1365
|
+
# leaves a pre-req wrongly `running` again.
|
|
1366
|
+
state._update_drive_queue_entry_local(REPO, 1650, state="running", attempts=1)
|
|
1367
|
+
|
|
1368
|
+
import coord.github_ops as github_ops
|
|
1369
|
+
|
|
1370
|
+
monkeypatch.setattr(
|
|
1371
|
+
github_ops,
|
|
1372
|
+
"work_is_terminal",
|
|
1373
|
+
lambda repo_github, issue_number, branch, **_kw: (
|
|
1374
|
+
repo_github == "john/claude-coordinator" and issue_number == 1650
|
|
1375
|
+
),
|
|
1376
|
+
)
|
|
1377
|
+
|
|
1378
|
+
result = cli("tick")
|
|
1379
|
+
assert result.exit_code == 0, result.output
|
|
1380
|
+
dependent = queued(1654)
|
|
1381
|
+
assert dependent["state"] == "running" # launched, not blocked/deferred
|
|
1382
|
+
assert len(launches) == 1, launches
|
|
1383
|
+
|
|
1384
|
+
# #2850 fix 1/2: the pre-req's own bogus `running` row is ALSO
|
|
1385
|
+
# corrected in the SAME tick — reconciled to `done`, not left standing
|
|
1386
|
+
# to requeue yet another dead-air relaunch.
|
|
1387
|
+
prereq = queued(1650)
|
|
1388
|
+
assert prereq["state"] == "done"
|
|
1389
|
+
|
|
1390
|
+
|
|
1341
1391
|
def test_list_with_no_after_is_unaffected_by_the_2183_diagnosis(cli):
|
|
1342
1392
|
"""A `blocked` entry that never declared any `after=` at all keeps
|
|
1343
1393
|
rendering exactly as it always has — no board dependency, no remedy
|
|
@@ -1990,6 +2040,53 @@ def test_a_permanent_dispatch_refusal_blocks_on_the_first_tick_no_attempt_spent(
|
|
|
1990
2040
|
assert state._get_drive_escalation_local(REPO, 1762) is not None
|
|
1991
2041
|
|
|
1992
2042
|
|
|
2043
|
+
def test_a_confirmed_merge_exit_marks_done_and_never_relaunches(
|
|
2044
|
+
cli, seed, launches,
|
|
2045
|
+
):
|
|
2046
|
+
"""#2850, end-to-end: the reported vimcode#536 incident. A drive that
|
|
2047
|
+
exits 0 having genuinely MERGED (its own `drive_exited` audit summary
|
|
2048
|
+
carries `coord.models.MERGE_LANDED_MARKER`, exactly what
|
|
2049
|
+
`coord.drive.decide`'s "terminal: merged" branch now writes) must mark
|
|
2050
|
+
the queue entry `done` on the very first tick that observes it — NOT
|
|
2051
|
+
fall through to the generic death diagnosis and requeue a second launch
|
|
2052
|
+
for work that is already finished. Before this fix the tick's own log
|
|
2053
|
+
read `exit_code=0: ✓ MERGED … has landed` and STILL requeued it
|
|
2054
|
+
"(attempt 1/2)" and relaunched — a bogus `running` row that then
|
|
2055
|
+
shadowed every `--after` dependent chained onto it.
|
|
2056
|
+
"""
|
|
2057
|
+
from coord.audit import record_audit
|
|
2058
|
+
from coord.models import MERGE_LANDED_MARKER
|
|
2059
|
+
|
|
2060
|
+
seed(issues={1762: "open"})
|
|
2061
|
+
cli("add", REPO, "1762")
|
|
2062
|
+
cli("tick")
|
|
2063
|
+
assert len(launches) == 1, launches
|
|
2064
|
+
|
|
2065
|
+
merged_reason = (
|
|
2066
|
+
"drive exited for claude-coordinator#1762 (exit_code=0): ✓ MERGED "
|
|
2067
|
+
f"— issue-1762-example has landed on develop\n {MERGE_LANDED_MARKER}"
|
|
2068
|
+
)
|
|
2069
|
+
launched_at = queued(1762)["launched_at"]
|
|
2070
|
+
_backdate(1762, DRIVE_STARTUP_GRACE_SECONDS + 60)
|
|
2071
|
+
record_audit(
|
|
2072
|
+
tier="business", category="drive", event_type="drive_exited",
|
|
2073
|
+
actor="drive", summary=merged_reason, repo=REPO, issue=1762,
|
|
2074
|
+
ts=launched_at + 5,
|
|
2075
|
+
details={"exit_code": 0, "reason": merged_reason},
|
|
2076
|
+
)
|
|
2077
|
+
|
|
2078
|
+
result = cli("tick")
|
|
2079
|
+
assert result.exit_code == 0, result.output
|
|
2080
|
+
assert "done" in result.output.lower()
|
|
2081
|
+
# NOT the retry path: no second launch was ever spawned for this issue.
|
|
2082
|
+
assert len(launches) == 1, launches
|
|
2083
|
+
|
|
2084
|
+
entry = queued(1762)
|
|
2085
|
+
assert entry["state"] == "done"
|
|
2086
|
+
assert entry["attempts"] == 0 # never spent — this was never a death
|
|
2087
|
+
assert MERGE_LANDED_MARKER in (entry["last_reason"] or "")
|
|
2088
|
+
|
|
2089
|
+
|
|
1993
2090
|
# ── #1891: `parked` — a missing CI verdict must not consume merge budget ────
|
|
1994
2091
|
#
|
|
1995
2092
|
# Black-box per this repo's CLAUDE.md: drives the queue through a simulated
|
|
@@ -49,6 +49,7 @@ from coord.drive_queue import (
|
|
|
49
49
|
render_plan,
|
|
50
50
|
validate_enqueue,
|
|
51
51
|
)
|
|
52
|
+
from coord.models import MERGE_LANDED_MARKER
|
|
52
53
|
|
|
53
54
|
REPO = "claude-coordinator"
|
|
54
55
|
|
|
@@ -2738,6 +2739,178 @@ def test_a_policy_refusal_still_reconciles_to_done_if_it_lands_by_hand():
|
|
|
2738
2739
|
assert reconcile.updates["state"] == STATE_DONE
|
|
2739
2740
|
|
|
2740
2741
|
|
|
2742
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
2743
|
+
# #2850: a drive that exits 0 having MERGED must reconcile straight to
|
|
2744
|
+
# `done`, never `retry` — before this fix, `own_reason` carried the drive's
|
|
2745
|
+
# own "✓ MERGED — … has landed" text but `_reconcile_running` never read it
|
|
2746
|
+
# for anything but the gate_a/policy/refused/dead_end special cases, so a
|
|
2747
|
+
# confirmed-landed drive fell all the way through to the generic "no
|
|
2748
|
+
# session, no active work, nothing landed" death diagnosis and got
|
|
2749
|
+
# requeued — the reported vimcode#536 incident. Two independent recoveries,
|
|
2750
|
+
# reproduced separately: `own_reason` naming a confirmed merge (#2850 fix 1),
|
|
2751
|
+
# and a live re-check confirming landed independent of `own_reason` (#2850
|
|
2752
|
+
# fix 2) — and, on the DEPENDENT side, a pre-req's queue row no longer
|
|
2753
|
+
# shadowing that same live re-check just because it is present and not yet
|
|
2754
|
+
# `done` (#2850 fix 3).
|
|
2755
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
2756
|
+
|
|
2757
|
+
MERGED_OWN_REASON = (
|
|
2758
|
+
"drive exited for claude-coordinator#1650 (exit_code=0): ✓ MERGED — "
|
|
2759
|
+
f"issue-1650-example has landed on develop\n {MERGE_LANDED_MARKER}"
|
|
2760
|
+
)
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
def test_an_own_reason_confirming_merge_reconciles_to_done_not_retry():
|
|
2764
|
+
"""#2850 fix 1, the literal reported shape: exit_code=0, `own_reason`
|
|
2765
|
+
narrates a confirmed merge — must mark `done` on the FIRST tick that
|
|
2766
|
+
observes it, not spend a retry attempt requeuing a launch with nothing
|
|
2767
|
+
left to do."""
|
|
2768
|
+
entries = [entry(1650, position=3, state=STATE_RUNNING, attempts=0)]
|
|
2769
|
+
plan = plan_tick(
|
|
2770
|
+
entries, board(), capacity=1,
|
|
2771
|
+
exit_reasons={entry_key(REPO, 1650): MERGED_OWN_REASON},
|
|
2772
|
+
)
|
|
2773
|
+
reconcile = plan.reconciles[0]
|
|
2774
|
+
assert reconcile.outcome == "done"
|
|
2775
|
+
assert reconcile.updates["state"] == STATE_DONE
|
|
2776
|
+
assert "attempts" not in reconcile.updates # never spent
|
|
2777
|
+
assert plan.blocked == ()
|
|
2778
|
+
assert plan.launch is None
|
|
2779
|
+
|
|
2780
|
+
|
|
2781
|
+
def test_a_merge_landed_own_reason_wins_even_deep_into_the_attempt_budget():
|
|
2782
|
+
entries = [
|
|
2783
|
+
entry(1650, state=STATE_RUNNING, attempts=DEFAULT_MAX_ATTEMPTS - 1)
|
|
2784
|
+
]
|
|
2785
|
+
plan = plan_tick(
|
|
2786
|
+
entries, board(), capacity=1,
|
|
2787
|
+
exit_reasons={entry_key(REPO, 1650): MERGED_OWN_REASON},
|
|
2788
|
+
)
|
|
2789
|
+
assert plan.reconciles[0].outcome == "done" # not "exhausted"
|
|
2790
|
+
assert plan.blocked == ()
|
|
2791
|
+
|
|
2792
|
+
|
|
2793
|
+
def test_an_own_reason_that_merely_mentions_merge_without_the_marker_still_retries():
|
|
2794
|
+
"""The marker, not the human-readable "MERGED" text, is what decides
|
|
2795
|
+
this — a reason that talks ABOUT a merge (e.g. a merge-gate failure
|
|
2796
|
+
diagnosis) without #2850's `MERGE_LANDED_MARKER` must not be
|
|
2797
|
+
misread as a confirmed landing."""
|
|
2798
|
+
entries = [
|
|
2799
|
+
entry(
|
|
2800
|
+
1650,
|
|
2801
|
+
state=STATE_RUNNING,
|
|
2802
|
+
attempts=0,
|
|
2803
|
+
launched_at=NOW - DRIVE_STARTUP_GRACE_SECONDS - 1,
|
|
2804
|
+
)
|
|
2805
|
+
]
|
|
2806
|
+
own_reason = (
|
|
2807
|
+
"drive exited for claude-coordinator#1650 (exit_code=1): merge "
|
|
2808
|
+
"attempted 3 times without landing."
|
|
2809
|
+
)
|
|
2810
|
+
plan = plan_tick(
|
|
2811
|
+
entries, board(), capacity=1, now=NOW,
|
|
2812
|
+
exit_reasons={entry_key(REPO, 1650): own_reason},
|
|
2813
|
+
)
|
|
2814
|
+
assert plan.reconciles[0].outcome == "retry"
|
|
2815
|
+
|
|
2816
|
+
|
|
2817
|
+
def test_a_live_recheck_marks_a_dead_running_entry_done_with_no_own_reason_at_all():
|
|
2818
|
+
"""#2850 fix 2: `live_prereq_terminal` is now ALSO consulted for a
|
|
2819
|
+
`running` entry's OWN key, independent of whatever (if anything) its
|
|
2820
|
+
`own_reason` says — a crash that left no exit reason at all, or an exit
|
|
2821
|
+
reason unrelated to landing, must still be caught if a live re-check
|
|
2822
|
+
this tick confirms the issue already closed or merged."""
|
|
2823
|
+
entries = [
|
|
2824
|
+
entry(
|
|
2825
|
+
1650,
|
|
2826
|
+
state=STATE_RUNNING,
|
|
2827
|
+
attempts=0,
|
|
2828
|
+
launched_at=NOW - DRIVE_STARTUP_GRACE_SECONDS - 1,
|
|
2829
|
+
)
|
|
2830
|
+
]
|
|
2831
|
+
plan = plan_tick(
|
|
2832
|
+
entries, board(), capacity=1, now=NOW,
|
|
2833
|
+
live_prereq_terminal={entry_key(REPO, 1650): True},
|
|
2834
|
+
)
|
|
2835
|
+
reconcile = plan.reconciles[0]
|
|
2836
|
+
assert reconcile.outcome == "done"
|
|
2837
|
+
assert reconcile.updates["state"] == STATE_DONE
|
|
2838
|
+
assert plan.blocked == ()
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
def test_a_dependent_is_released_when_its_queued_but_not_done_prereq_has_live_landed():
|
|
2842
|
+
"""#2850 fix 3: `_resolve_prereqs`'s `dep_state is not None` branch used
|
|
2843
|
+
to return "waiting on {dep} (queued, {dep_state})" unconditionally for
|
|
2844
|
+
any state short of `done` — never consulting `live_prereq_terminal`,
|
|
2845
|
+
unlike its own final branch for a dep absent from the queue altogether
|
|
2846
|
+
(#2602). A pre-req sitting in the queue under ANY other state must
|
|
2847
|
+
release its dependent the moment a live re-check confirms it actually
|
|
2848
|
+
landed. Position 0 goes to the DEPENDENT (not the pre-req) so a passing
|
|
2849
|
+
assertion on ``plan.launch`` is unambiguous — `plan_tick` launches at
|
|
2850
|
+
most one entry per tick, position order first, so a `STATE_WAITING`
|
|
2851
|
+
pre-req sitting at an earlier position would otherwise win the single
|
|
2852
|
+
launch slot on its own unrelated eligibility and mask the very thing
|
|
2853
|
+
under test."""
|
|
2854
|
+
entries = [
|
|
2855
|
+
entry(1654, position=0, after=(entry_key(REPO, 1650),)),
|
|
2856
|
+
entry(1650, position=1, state=STATE_WAITING),
|
|
2857
|
+
]
|
|
2858
|
+
plan = plan_tick(
|
|
2859
|
+
entries, board(), capacity=2,
|
|
2860
|
+
live_prereq_terminal={entry_key(REPO, 1650): True},
|
|
2861
|
+
)
|
|
2862
|
+
assert plan.launch is not None
|
|
2863
|
+
assert plan.launch.issue == 1654
|
|
2864
|
+
|
|
2865
|
+
|
|
2866
|
+
def test_a_dependent_is_released_when_its_prereq_is_wrongly_stuck_running():
|
|
2867
|
+
"""The exact reported incident, reproduced end to end: a pre-req sits in
|
|
2868
|
+
a bogus `running` row (a drive that exited 0 having merged, requeued —
|
|
2869
|
+
the shape #2850 fixes 1/2 now prevent, but this pins the DEPENDENT side
|
|
2870
|
+
even if some other cause ever leaves a pre-req wrongly `running` again).
|
|
2871
|
+
A live re-check confirming the pre-req landed must release the
|
|
2872
|
+
dependent on THIS tick, whatever the pre-req's own row still claims —
|
|
2873
|
+
and the pre-req's own bogus `running` row is corrected in the SAME
|
|
2874
|
+
tick, not requeued into yet another relaunch."""
|
|
2875
|
+
entries = [
|
|
2876
|
+
entry(1650, position=0, state=STATE_RUNNING),
|
|
2877
|
+
entry(1654, position=1, after=(entry_key(REPO, 1650),)),
|
|
2878
|
+
]
|
|
2879
|
+
plan = plan_tick(
|
|
2880
|
+
entries, board(), capacity=2,
|
|
2881
|
+
live_prereq_terminal={entry_key(REPO, 1650): True},
|
|
2882
|
+
)
|
|
2883
|
+
assert plan.launch is not None
|
|
2884
|
+
assert plan.launch.issue == 1654
|
|
2885
|
+
prereq_reconcile = next(
|
|
2886
|
+
r for r in plan.reconciles if r.key == entry_key(REPO, 1650)
|
|
2887
|
+
)
|
|
2888
|
+
assert prereq_reconcile.outcome == "done"
|
|
2889
|
+
|
|
2890
|
+
|
|
2891
|
+
def test_a_dependent_is_released_when_its_prereq_is_blocked_but_live_landed():
|
|
2892
|
+
"""Fix 3 pinned in ISOLATION from fix 2: a `blocked` pre-req never goes
|
|
2893
|
+
through `_reconcile_running`'s step-1 walk at all (that loop only
|
|
2894
|
+
touches `STATE_RUNNING` rows), so `states[dep]` stays `STATE_BLOCKED`
|
|
2895
|
+
for the whole tick — the ONLY thing that can release the dependent here
|
|
2896
|
+
is `_resolve_prereqs` itself consulting `live_prereq_terminal`. Before
|
|
2897
|
+
#2850 this branch (`dep_state in (STATE_BLOCKED, STATE_FAILED)`)
|
|
2898
|
+
returned "it will never satisfy" unconditionally, matching #2055's own
|
|
2899
|
+
rationale for re-checking a `blocked` pre-req's OWN row — a human can
|
|
2900
|
+
merge a blocked issue's work out of band just as easily as a running
|
|
2901
|
+
one's."""
|
|
2902
|
+
entries = [
|
|
2903
|
+
entry(1654, position=0, after=(entry_key(REPO, 1650),)),
|
|
2904
|
+
entry(1650, position=1, state=STATE_BLOCKED, attempts=2),
|
|
2905
|
+
]
|
|
2906
|
+
plan = plan_tick(
|
|
2907
|
+
entries, board(), capacity=1,
|
|
2908
|
+
live_prereq_terminal={entry_key(REPO, 1650): True},
|
|
2909
|
+
)
|
|
2910
|
+
assert plan.launch is not None
|
|
2911
|
+
assert plan.launch.issue == 1654
|
|
2912
|
+
|
|
2913
|
+
|
|
2741
2914
|
# ── #2055: `blocked`/`failed` re-checked against the board too ─────────────
|
|
2742
2915
|
#
|
|
2743
2916
|
# #1891's landed re-check above was `parked`-only. `blocked`/`failed` got no
|
|
File without changes
|