code-coordinator 0.5.238__tar.gz → 0.5.239__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.238 → code_coordinator-0.5.239}/PKG-INFO +1 -1
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/drive_queue.py +73 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/release.py +78 -15
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/status.py +47 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/confirm_test.py +57 -3
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/drive.py +174 -63
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/drive_queue.py +33 -6
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/predicate.py +41 -4
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/release_propagate.py +64 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/NOTIFIER.md +31 -1
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_drive_queue.py +2 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_release_window.py +36 -2
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_confirm_test.py +60 -1
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_drive.py +161 -55
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_drive_queue.py +78 -0
- code_coordinator-0.5.239/tests/test_drive_queue_roll_pending.py +261 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_cli.py +8 -2
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_isolation.py +6 -1
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_predicate.py +96 -13
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_service.py +67 -12
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notify.py +35 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_propagate.py +67 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/.gitignore +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/CLAUDE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/GOAL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/LICENSE +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/MANIFEST.in +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/README.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/agent.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/audit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/block_log.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/board_service.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/brain.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/claim.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/cli.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/client.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/comments.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/config.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dao.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/db.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/deps.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/events.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/filelock.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/freshness.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/gates.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/goal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/context.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/models.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/render.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/health/units.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/hooks.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/interactive.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/models.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/network.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/notify.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/openapi.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/parentage.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/plans.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/progress.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/release_window.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/reports.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/review.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/self_health.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/smoke.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/split_work.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/test_author.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/test_report.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/usage.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/install-agent.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/pyproject.toml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/setup.cfg +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/__init__.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/conftest.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_config.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_db.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_events.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_init.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_models.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_network.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_session.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_split.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_state.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.238 → code_coordinator-0.5.239}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -496,6 +496,7 @@ tests/test_dist_name.py
|
|
|
496
496
|
tests/test_done_housekeeping.py
|
|
497
497
|
tests/test_drive.py
|
|
498
498
|
tests/test_drive_queue.py
|
|
499
|
+
tests/test_drive_queue_roll_pending.py
|
|
499
500
|
tests/test_drive_state.py
|
|
500
501
|
tests/test_drive_tmux.py
|
|
501
502
|
tests/test_epic_up_capability_detection.py
|
{code_coordinator-0.5.238 → code_coordinator-0.5.239}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -568,6 +568,7 @@
|
|
|
568
568
|
"tests/test_done_housekeeping.py",
|
|
569
569
|
"tests/test_drive.py",
|
|
570
570
|
"tests/test_drive_queue.py",
|
|
571
|
+
"tests/test_drive_queue_roll_pending.py",
|
|
571
572
|
"tests/test_drive_state.py",
|
|
572
573
|
"tests/test_drive_tmux.py",
|
|
573
574
|
"tests/test_epic_up_capability_detection.py",
|
|
@@ -1111,6 +1111,79 @@ def drive_queue_status(output_json: bool, config_path: Path) -> None:
|
|
|
1111
1111
|
click.echo("alert: (none)")
|
|
1112
1112
|
|
|
1113
1113
|
|
|
1114
|
+
@drive_queue_group.command("cancel-roll")
|
|
1115
|
+
@click.option("--json", "output_json", is_flag=True, default=False,
|
|
1116
|
+
help="Emit the cancelled marker (and any cordons cleared with it) as JSON.")
|
|
1117
|
+
def drive_queue_cancel_roll(output_json: bool) -> None:
|
|
1118
|
+
"""Cancel a #2587 roll-pending marker so the queue resumes launching now.
|
|
1119
|
+
|
|
1120
|
+
#2607: every OTHER queue-blocking state has an operator override — a
|
|
1121
|
+
held deploy gate has `coord drive-queue resume`, a release cordon has
|
|
1122
|
+
`coord release cordon --clear` — but the roll-pending marker had none.
|
|
1123
|
+
It is supposed to be self-bounding (a TTL / deferral ceiling —
|
|
1124
|
+
`RollPending.expired`), but a marker that keeps getting RE-ARMED before
|
|
1125
|
+
it ever expires never reaches that bound on its own (the defect #2607
|
|
1126
|
+
fixed at the write sites); this command is the escape hatch for while
|
|
1127
|
+
that marker is still live, and for any future case a re-arm loop is not
|
|
1128
|
+
yet ruled out for. Also clears any release cordon still open for the
|
|
1129
|
+
SAME target — the cordon a stalled `coord release propagate`/
|
|
1130
|
+
`nightly-window` run can leave behind — so cancelling actually frees the
|
|
1131
|
+
queue rather than trading one hold for another.
|
|
1132
|
+
|
|
1133
|
+
Does NOT change the target: the next `coord release propagate`/
|
|
1134
|
+
`nightly-window` run re-arms a marker from scratch if the fleet is still
|
|
1135
|
+
behind. This only stops the CURRENT wait.
|
|
1136
|
+
"""
|
|
1137
|
+
from coord.machine_pause import clear_cordon, cordons as read_cordons # noqa: PLC0415
|
|
1138
|
+
|
|
1139
|
+
pending = read_roll_pending()
|
|
1140
|
+
cleared_cordons: list[str] = []
|
|
1141
|
+
if pending is not None:
|
|
1142
|
+
try:
|
|
1143
|
+
active_cordons = read_cordons()
|
|
1144
|
+
except Exception: # noqa: BLE001 — best-effort; the marker clear below is load-bearing
|
|
1145
|
+
active_cordons = {}
|
|
1146
|
+
for name, cordon in active_cordons.items():
|
|
1147
|
+
if getattr(cordon, "target_version", None) != pending.target_version:
|
|
1148
|
+
continue
|
|
1149
|
+
try:
|
|
1150
|
+
if clear_cordon(name):
|
|
1151
|
+
cleared_cordons.append(name)
|
|
1152
|
+
except Exception: # noqa: BLE001 — best-effort; never block the marker clear on this
|
|
1153
|
+
pass
|
|
1154
|
+
clear_roll_pending()
|
|
1155
|
+
|
|
1156
|
+
if output_json:
|
|
1157
|
+
click.echo(
|
|
1158
|
+
_json.dumps(
|
|
1159
|
+
{
|
|
1160
|
+
"cancelled": pending.to_dict() if pending is not None else None,
|
|
1161
|
+
"cleared_cordons": sorted(cleared_cordons),
|
|
1162
|
+
},
|
|
1163
|
+
sort_keys=True,
|
|
1164
|
+
)
|
|
1165
|
+
)
|
|
1166
|
+
return
|
|
1167
|
+
|
|
1168
|
+
if pending is None:
|
|
1169
|
+
click.echo("no roll-pending marker to cancel — the queue is not held for a roll")
|
|
1170
|
+
return
|
|
1171
|
+
click.echo(
|
|
1172
|
+
f"cancelled {pending.describe()} — the drive-queue tick resumes "
|
|
1173
|
+
"launching immediately"
|
|
1174
|
+
)
|
|
1175
|
+
if cleared_cordons:
|
|
1176
|
+
click.echo(
|
|
1177
|
+
"also cleared cordon(s) still open for this target: "
|
|
1178
|
+
+ ", ".join(sorted(cleared_cordons))
|
|
1179
|
+
)
|
|
1180
|
+
click.echo(
|
|
1181
|
+
"note: this only stops the current wait — the next `coord release "
|
|
1182
|
+
"propagate`/`nightly-window` run re-arms a fresh marker if the "
|
|
1183
|
+
"fleet is still behind"
|
|
1184
|
+
)
|
|
1185
|
+
|
|
1186
|
+
|
|
1114
1187
|
# ── block-log (#2235 Phase 0) ────────────────────────────────────────────────
|
|
1115
1188
|
|
|
1116
1189
|
|
|
@@ -431,6 +431,24 @@ def _paused_machine_busy(config) -> list:
|
|
|
431
431
|
return busy
|
|
432
432
|
|
|
433
433
|
|
|
434
|
+
def _confirmation_running_busy() -> list:
|
|
435
|
+
"""A #2464 out-of-band test confirmation in flight, as a `Busy` signal
|
|
436
|
+
(#2596).
|
|
437
|
+
|
|
438
|
+
Thin wiring around :func:`coord.release_propagate.confirmation_lock_busy`
|
|
439
|
+
— see that function's docstring for the incident and why a LOCAL,
|
|
440
|
+
non-networked lock probe is the right (and sufficient) check here. Feeds
|
|
441
|
+
the same `extra_busy` seam `_interactive_session_busy`/
|
|
442
|
+
`_paused_machine_busy` do, at both call sites that build one (the top of
|
|
443
|
+
`propagate` and `_drain`'s default `extra_busy_fetch`), so a confirmation
|
|
444
|
+
in flight defers a restart exactly like a live headless assignment does.
|
|
445
|
+
"""
|
|
446
|
+
from coord import release_propagate as rp # noqa: PLC0415
|
|
447
|
+
from coord.filelock import notify_lock_path # noqa: PLC0415
|
|
448
|
+
|
|
449
|
+
return rp.confirmation_lock_busy(notify_lock_path())
|
|
450
|
+
|
|
451
|
+
|
|
434
452
|
def _daemon_machine_name(
|
|
435
453
|
config, override: str | None, machine_health: dict | None = None
|
|
436
454
|
) -> str | None:
|
|
@@ -595,14 +613,22 @@ def _ensure_roll_pending_marker(target_version: str, *, reason: str) -> None:
|
|
|
595
613
|
:class:`coord.drive_queue.RollPending`'s docstring for the mechanism
|
|
596
614
|
this feeds.
|
|
597
615
|
|
|
598
|
-
Never overwrites an existing marker for the
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
616
|
+
Never overwrites an existing marker's ``set_at``/``deferrals`` — for the
|
|
617
|
+
SAME target this is a plain no-op (unchanged from before #2607); for a
|
|
618
|
+
DIFFERENT target the target/reason are updated in place but the clock
|
|
619
|
+
and deferral count carry over unchanged. #2607: PyPI's "latest" climbs on
|
|
620
|
+
every merge (`Auto-release on merge to main`), so a busy fleet's target
|
|
621
|
+
had almost always moved by the time this timer re-fired — treating that
|
|
622
|
+
as a "new" roll and resetting ``set_at``/``deferrals`` made the TTL/
|
|
623
|
+
deferral bound (:meth:`~coord.drive_queue.RollPending.expired`)
|
|
624
|
+
unreachable in practice, exactly the "never actually bounded" failure
|
|
625
|
+
#2587's own bound exists to prevent, and exactly how #2607's queue froze
|
|
626
|
+
for good. A re-arm — same target or not — is a continuation of the SAME
|
|
627
|
+
stuck roll, not a new operator request; only a marker set from scratch
|
|
628
|
+
(no existing one at all, e.g. right after `coord drive-queue
|
|
629
|
+
cancel-roll`) starts a new clock.
|
|
605
630
|
"""
|
|
631
|
+
import dataclasses as _dataclasses # noqa: PLC0415
|
|
606
632
|
import time as _time # noqa: PLC0415
|
|
607
633
|
|
|
608
634
|
from coord.commands.drive_queue import read_roll_pending, write_roll_pending # noqa: PLC0415
|
|
@@ -611,6 +637,11 @@ def _ensure_roll_pending_marker(target_version: str, *, reason: str) -> None:
|
|
|
611
637
|
existing = read_roll_pending()
|
|
612
638
|
if existing is not None and existing.target_version == target_version:
|
|
613
639
|
return
|
|
640
|
+
if existing is not None:
|
|
641
|
+
write_roll_pending(
|
|
642
|
+
_dataclasses.replace(existing, target_version=target_version, reason=reason)
|
|
643
|
+
)
|
|
644
|
+
return
|
|
614
645
|
write_roll_pending(
|
|
615
646
|
RollPending(target_version=target_version, set_at=_time.time(), reason=reason)
|
|
616
647
|
)
|
|
@@ -808,6 +839,13 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
|
|
|
808
839
|
# seam from the daemon-aware pause store, so an operator-paused machine
|
|
809
840
|
# defers exactly like a live assignment does instead of reading idle.
|
|
810
841
|
extra_busy.extend(_paused_machine_busy(config))
|
|
842
|
+
# #2596: nor can it see a #2464 confirmation running in the notify
|
|
843
|
+
# drain — a restart landing mid-confirmation is exactly what let a
|
|
844
|
+
# SIGTERM get read as a test failure on 2026-08-22 (the confirmation
|
|
845
|
+
# itself now refuses that read, #2527, but the restart still shouldn't
|
|
846
|
+
# have happened at all). Feed the same seam so it defers like a live
|
|
847
|
+
# assignment instead of getting reaped.
|
|
848
|
+
extra_busy.extend(_confirmation_running_busy())
|
|
811
849
|
quiescence = rp.assess_quiescence(
|
|
812
850
|
queue_entries=board.get("drive_queue") or [],
|
|
813
851
|
assignments=board.get("assignments") or [],
|
|
@@ -2510,8 +2548,15 @@ def _drain(
|
|
|
2510
2548
|
# #2174: paused/quiet-hours state, same as the top-level
|
|
2511
2549
|
# `propagate` call site — a paused daemon host must keep the
|
|
2512
2550
|
# drain from ever reading "clear" just because tmux is quiet.
|
|
2551
|
+
# #2596: same for a confirmation running under `notify.lock` —
|
|
2552
|
+
# gated on `config is not None` too, even though the check
|
|
2553
|
+
# itself needs no config, purely to keep this function's
|
|
2554
|
+
# documented "no *config* means no real filesystem I/O"
|
|
2555
|
+
# contract intact for the `config=None` unit-test path above.
|
|
2513
2556
|
extra_busy_fetch = lambda: ( # noqa: E731
|
|
2514
|
-
_interactive_session_busy(config)
|
|
2557
|
+
_interactive_session_busy(config)
|
|
2558
|
+
+ _paused_machine_busy(config)
|
|
2559
|
+
+ _confirmation_running_busy()
|
|
2515
2560
|
)
|
|
2516
2561
|
else:
|
|
2517
2562
|
extra_busy_fetch = lambda: [] # noqa: E731
|
|
@@ -2799,6 +2844,7 @@ def release_nightly_window(
|
|
|
2799
2844
|
genuinely idle is a fine moment to roll immediately. A still-busy fleet
|
|
2800
2845
|
just leaves the marker exactly as it was for the tick to keep watching.
|
|
2801
2846
|
"""
|
|
2847
|
+
import dataclasses as _dataclasses # noqa: PLC0415
|
|
2802
2848
|
import json as _json # noqa: PLC0415
|
|
2803
2849
|
import time # noqa: PLC0415
|
|
2804
2850
|
|
|
@@ -3002,18 +3048,35 @@ def release_nightly_window(
|
|
|
3002
3048
|
_finish(rw.STATUS_PROPAGATE_FAILED, prop_exit or 1)
|
|
3003
3049
|
|
|
3004
3050
|
# ── 3. set (or refresh) the marker and return immediately (#2587) ─────
|
|
3051
|
+
# #2607: a marker already pending for a DIFFERENT target is updated in
|
|
3052
|
+
# place — target_version/reason move, but set_at/deferrals carry over
|
|
3053
|
+
# unchanged. This is the exact site the incident traced back to: PyPI's
|
|
3054
|
+
# "latest" climbs on every merge, so by the time this nightly timer
|
|
3055
|
+
# re-fired the target had almost always moved, and writing a brand new
|
|
3056
|
+
# `RollPending` here reset the TTL/deferral escape hatch on every single
|
|
3057
|
+
# re-arm — the queue froze because the bound that was supposed to save it
|
|
3058
|
+
# could never be reached. Only a genuinely fresh marker (no existing one
|
|
3059
|
+
# at all) gets a new clock.
|
|
3005
3060
|
if existing is not None:
|
|
3006
3061
|
click.echo(
|
|
3007
3062
|
f"replacing stale roll-pending marker ({existing.describe()}) "
|
|
3008
|
-
f"with v{record.target_version}"
|
|
3063
|
+
f"with v{record.target_version} — preserving its original "
|
|
3064
|
+
f"set_at/deferrals (#2607: a re-arm is a continuation of the "
|
|
3065
|
+
f"same stuck roll, not a new request)"
|
|
3009
3066
|
)
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3067
|
+
write_roll_pending(
|
|
3068
|
+
_dataclasses.replace(
|
|
3069
|
+
existing, target_version=record.target_version, reason="nightly-window",
|
|
3070
|
+
)
|
|
3071
|
+
)
|
|
3072
|
+
else:
|
|
3073
|
+
write_roll_pending(
|
|
3074
|
+
RollPending(
|
|
3075
|
+
target_version=record.target_version,
|
|
3076
|
+
set_at=time.time(),
|
|
3077
|
+
reason="nightly-window",
|
|
3078
|
+
)
|
|
3015
3079
|
)
|
|
3016
|
-
)
|
|
3017
3080
|
click.echo(
|
|
3018
3081
|
f"roll pending: v{record.target_version} — the drive-queue tick will "
|
|
3019
3082
|
f"fire `coord release propagate` at the next inter-drive gap "
|
|
@@ -629,6 +629,31 @@ def status(config_path: Path, machine_filter: str | None, no_reconcile: bool, ti
|
|
|
629
629
|
if live_error:
|
|
630
630
|
click.echo(f" error: {live_error}")
|
|
631
631
|
|
|
632
|
+
# #2607: the #2587 roll-pending marker — while it is live the drive-queue
|
|
633
|
+
# tick refuses to launch anything, and #2607 found a re-arm path that
|
|
634
|
+
# could reset its own TTL/deferral escape hatch on every attempt, freezing
|
|
635
|
+
# the queue with no operator-visible sign anywhere OTHER than `coord
|
|
636
|
+
# drive-queue status`. Surfaced here too so an operator staring at plain
|
|
637
|
+
# `coord status` — the first thing anyone reaches for — sees it without
|
|
638
|
+
# having to know the marker exists. Host-local (same file the daemon
|
|
639
|
+
# host's own `coord-drive-queue.timer` reads), so skipped on a thin
|
|
640
|
+
# client exactly like the merge queue above.
|
|
641
|
+
if not svc:
|
|
642
|
+
import time as _time
|
|
643
|
+
|
|
644
|
+
from coord.commands.drive_queue import read_roll_pending
|
|
645
|
+
|
|
646
|
+
roll_pending = read_roll_pending()
|
|
647
|
+
if roll_pending is not None:
|
|
648
|
+
age = _time.time() - roll_pending.set_at
|
|
649
|
+
click.echo("")
|
|
650
|
+
click.echo(
|
|
651
|
+
f"⏸ {roll_pending.describe()} — set {age:.0f}s ago, "
|
|
652
|
+
f"{roll_pending.deferrals}/{roll_pending.max_deferrals} "
|
|
653
|
+
"deferrals — drive queue launches nothing until it fires or "
|
|
654
|
+
"expires. Cancel with `coord drive-queue cancel-roll`."
|
|
655
|
+
)
|
|
656
|
+
|
|
632
657
|
# #920: sibling-overlap warnings — approved (PENDING) queue entries that
|
|
633
658
|
# touch overlapping files and have been aging. Mirrors the merge-queue
|
|
634
659
|
# skip above: the queue is host-local, so this is a no-op on a thin
|
|
@@ -1364,6 +1389,28 @@ def doctor(
|
|
|
1364
1389
|
if is_problem:
|
|
1365
1390
|
any_problem = True
|
|
1366
1391
|
|
|
1392
|
+
# #2607: name the #2587 roll-pending marker here too, not just in `coord
|
|
1393
|
+
# drive-queue status` — an operator running `coord doctor` to ask "why
|
|
1394
|
+
# isn't the fleet doing anything" must see this without already knowing
|
|
1395
|
+
# the marker exists. Host-local (the file the daemon host's own
|
|
1396
|
+
# `coord-drive-queue.timer` reads), so this only has something to say
|
|
1397
|
+
# when run ON that host — same caveat as the release-verify section
|
|
1398
|
+
# above resolving PyPI locally.
|
|
1399
|
+
from coord.commands.drive_queue import read_roll_pending # noqa: PLC0415
|
|
1400
|
+
|
|
1401
|
+
roll_pending = read_roll_pending()
|
|
1402
|
+
if roll_pending is not None:
|
|
1403
|
+
import time as _time # noqa: PLC0415
|
|
1404
|
+
|
|
1405
|
+
age = _time.time() - roll_pending.set_at
|
|
1406
|
+
click.echo("")
|
|
1407
|
+
click.echo(
|
|
1408
|
+
f"⏸ {roll_pending.describe()} — set {age:.0f}s ago, "
|
|
1409
|
+
f"{roll_pending.deferrals}/{roll_pending.max_deferrals} deferrals "
|
|
1410
|
+
"— the drive queue on this host launches nothing until it fires "
|
|
1411
|
+
"or expires. Escape hatch: `coord drive-queue cancel-roll`."
|
|
1412
|
+
)
|
|
1413
|
+
|
|
1367
1414
|
# #1862: a quiet-hours window that removes the only machine with a
|
|
1368
1415
|
# capability makes matching work silently unroutable (`dispatch_smoke`
|
|
1369
1416
|
# already has this failure shape — #1678: it refuses to route and the
|
|
@@ -87,7 +87,14 @@ saying so:
|
|
|
87
87
|
#2527) — a negative ``returncode`` from `subprocess.run` (e.g. ``-15`` for
|
|
88
88
|
SIGTERM), most often a `coord-agent`/`coord-serve` restart landing mid-run.
|
|
89
89
|
The command never ran to completion, exactly like a timeout, so it gets the
|
|
90
|
-
identical inconclusive treatment rather than being read as "ran and failed"
|
|
90
|
+
identical inconclusive treatment rather than being read as "ran and failed";
|
|
91
|
+
* exit 126 (:data:`PERMISSION_DENIED_EXIT`, #2596) — POSIX's "found but not
|
|
92
|
+
executable", the same "toolchain problem, not a branch problem" shape as
|
|
93
|
+
exit 127's "not found";
|
|
94
|
+
* a nonzero exit with literally no captured output (:data:`KIND_NO_OUTPUT`,
|
|
95
|
+
#2596) — a crash with no message, an OOM-kill, a runner that swallowed its
|
|
96
|
+
own output. A refutation is only as good as the evidence behind it, and
|
|
97
|
+
there is nothing here to put in a fix briefing.
|
|
91
98
|
|
|
92
99
|
That asymmetry is the safety property: the worst case of a broken confirmation
|
|
93
100
|
environment is that the Test stage behaves exactly as it did before this module
|
|
@@ -197,6 +204,28 @@ _TRUTHY = frozenset({"1", "true", "yes", "on"})
|
|
|
197
204
|
#: existing ``TimeoutExpired`` carve-out and get misread as "ran and failed".
|
|
198
205
|
KIND_SIGNAL = "signal"
|
|
199
206
|
|
|
207
|
+
#: #2596: POSIX's "found but not executable" — a permission bit dropped on a
|
|
208
|
+
#: build script, an environment inconsistency, the identical "toolchain
|
|
209
|
+
#: problem, not a branch problem" shape :data:`~coord.revalidate.
|
|
210
|
+
#: SHELL_NOT_FOUND_EXIT` (127, "not found") already covers. Handled locally
|
|
211
|
+
#: here rather than folded into :func:`~coord.revalidate.
|
|
212
|
+
#: is_infrastructure_failure`: that helper is shared with ``coord merge
|
|
213
|
+
#: --revalidate``, which #2596 does not touch, and this module already keeps
|
|
214
|
+
#: its own signal-kill classification local for the same reason.
|
|
215
|
+
PERMISSION_DENIED_EXIT = 126
|
|
216
|
+
|
|
217
|
+
#: #2596: a build/test command that ran to completion, returned nonzero, and
|
|
218
|
+
#: captured NOTHING — no stdout, no stderr. A genuine failure almost always
|
|
219
|
+
#: leaves a trace (an assertion, a traceback, a compiler error); zero bytes
|
|
220
|
+
#: of output before dying nonzero is more often a crash with no message, an
|
|
221
|
+
#: OOM-kill, or a runner that silently swallowed its own output than a real,
|
|
222
|
+
#: diagnosable test failure. There is nothing here to extract into a fix
|
|
223
|
+
#: briefing (see ``coord/drive.py``'s matching #2596 guard against
|
|
224
|
+
#: dispatching a fix worker with no extracted failure), so this stays
|
|
225
|
+
#: inconclusive rather than refuting a claim we cannot back up with a
|
|
226
|
+
#: single line of evidence.
|
|
227
|
+
KIND_NO_OUTPUT = "no_output"
|
|
228
|
+
|
|
200
229
|
#: The only kinds that may overturn a PASS claim: a build or test command that
|
|
201
230
|
#: ran to completion and returned nonzero. Nothing weaker. See the module
|
|
202
231
|
#: docstring's fail-direction section — this frozenset IS that safety property.
|
|
@@ -204,7 +233,9 @@ REFUTING_KINDS = frozenset({KIND_BUILD, KIND_SUITE})
|
|
|
204
233
|
|
|
205
234
|
#: Kinds meaning "the check could not reach a verdict". The caller falls back to
|
|
206
235
|
#: the worker's own claim on any of these, which is pre-#2464 behaviour.
|
|
207
|
-
INCONCLUSIVE_KINDS = frozenset({
|
|
236
|
+
INCONCLUSIVE_KINDS = frozenset({
|
|
237
|
+
KIND_SETUP, KIND_INFRA, KIND_TIMEOUT, KIND_SIGNAL, KIND_NO_OUTPUT,
|
|
238
|
+
})
|
|
208
239
|
|
|
209
240
|
|
|
210
241
|
# ── Per-pass budget (#2464-review) ──────────────────────────────────────────
|
|
@@ -584,7 +615,9 @@ def _classify_failure(
|
|
|
584
615
|
returncode=returncode,
|
|
585
616
|
worktree=worktree,
|
|
586
617
|
)
|
|
587
|
-
infra = is_infrastructure_failure(
|
|
618
|
+
infra = returncode == PERMISSION_DENIED_EXIT or is_infrastructure_failure(
|
|
619
|
+
returncode, output,
|
|
620
|
+
)
|
|
588
621
|
baseline = not infra and is_baseline_red_failure(returncode, output)
|
|
589
622
|
if infra:
|
|
590
623
|
return ConfirmationResult(
|
|
@@ -614,6 +647,25 @@ def _classify_failure(
|
|
|
614
647
|
returncode=returncode,
|
|
615
648
|
worktree=worktree,
|
|
616
649
|
)
|
|
650
|
+
if not (output or "").strip():
|
|
651
|
+
# #2596: ran to completion, returned nonzero, and captured literally
|
|
652
|
+
# nothing — no stdout, no stderr. Same fail-direction reasoning as
|
|
653
|
+
# every other arm above: a refutation is only as good as the
|
|
654
|
+
# evidence behind it, and there is not one line of it here (a crash
|
|
655
|
+
# with no message, an OOM-kill, a runner that swallowed its own
|
|
656
|
+
# output). Never REFUTING_KINDS on evidence this thin.
|
|
657
|
+
return ConfirmationResult(
|
|
658
|
+
kind=KIND_NO_OUTPUT,
|
|
659
|
+
reason=(
|
|
660
|
+
f"the independently-run {stage} command exited nonzero (exit "
|
|
661
|
+
f"{returncode}) but produced NO captured output — there is "
|
|
662
|
+
"nothing here to diagnose as a branch failure, so this is "
|
|
663
|
+
"not treated as a refutation (#2596)"
|
|
664
|
+
),
|
|
665
|
+
command=command,
|
|
666
|
+
returncode=returncode,
|
|
667
|
+
worktree=worktree,
|
|
668
|
+
)
|
|
617
669
|
return ConfirmationResult(
|
|
618
670
|
kind=KIND_BUILD if stage == "build" else KIND_SUITE,
|
|
619
671
|
reason=(
|
|
@@ -885,8 +937,10 @@ __all__ = [
|
|
|
885
937
|
"CONFIRM_PASS_BUDGET_SECONDS",
|
|
886
938
|
"DISABLE_ENV_VAR",
|
|
887
939
|
"INCONCLUSIVE_KINDS",
|
|
940
|
+
"KIND_NO_OUTPUT",
|
|
888
941
|
"KIND_SIGNAL",
|
|
889
942
|
"NOTIFY_BASE_CLIENT_TIMEOUT_SECONDS",
|
|
943
|
+
"PERMISSION_DENIED_EXIT",
|
|
890
944
|
"REFUTING_KINDS",
|
|
891
945
|
"ConfirmationResult",
|
|
892
946
|
"begin_confirmation_pass",
|