code-coordinator 0.5.296__tar.gz → 0.5.297__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.296 → code_coordinator-0.5.297}/PKG-INFO +1 -1
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/agent.py +59 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/install-agent.sh +43 -5
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/coord-test-runner.sh +20 -2
- code_coordinator-0.5.297/tests/test_coord_test_runner_acceptance_toolchain_2936.py +181 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worker_env_venv_isolation.py +87 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/.gitignore +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/CLAUDE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/GOAL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/LICENSE +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/MANIFEST.in +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/README.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/audit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/block_log.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/board_service.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/brain.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/claim.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/cli.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/client.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/comments.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/config.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dao.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/db.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/deps.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/drive.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/events.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/filelock.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/freshness.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/gates.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/goal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/context.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/models.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/render.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/health/units.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/hooks.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/interactive.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/models.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/network.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/notify.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/openapi.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/parentage.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/plans.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/progress.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/release_window.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/reports.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/review.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/self_health.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/smoke.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/split_work.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/sql.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/test_author.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/test_report.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/usage.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/pyproject.toml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/setup.cfg +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/__init__.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/backends.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/conftest.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_config.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_db.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_events.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_init.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_models.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_network.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_session.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_split.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_state.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/write_parity.py +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.296 → code_coordinator-0.5.297}/tui/tests/acceptance.rs +0 -0
|
@@ -508,6 +508,7 @@ tests/test_conflict_fix.py
|
|
|
508
508
|
tests/test_conflict_fix_semantic.py
|
|
509
509
|
tests/test_coord_log_daemon_fallback_2547.py
|
|
510
510
|
tests/test_coord_test.py
|
|
511
|
+
tests/test_coord_test_runner_acceptance_toolchain_2936.py
|
|
511
512
|
tests/test_coord_test_runner_baseline.py
|
|
512
513
|
tests/test_coord_test_runner_populated_home.py
|
|
513
514
|
tests/test_coord_test_runner_routing.py
|
{code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -534,6 +534,7 @@
|
|
|
534
534
|
"tests/test_conflict_fix_semantic.py",
|
|
535
535
|
"tests/test_coord_log_daemon_fallback_2547.py",
|
|
536
536
|
"tests/test_coord_test.py",
|
|
537
|
+
"tests/test_coord_test_runner_acceptance_toolchain_2936.py",
|
|
537
538
|
"tests/test_coord_test_runner_baseline.py",
|
|
538
539
|
"tests/test_coord_test_runner_populated_home.py",
|
|
539
540
|
"tests/test_coord_test_runner_routing.py",
|
|
@@ -1742,6 +1742,53 @@ def _worker_subprocess_env(
|
|
|
1742
1742
|
return env
|
|
1743
1743
|
|
|
1744
1744
|
|
|
1745
|
+
def worker_coord_reachable(base_env: dict[str, str] | None = None) -> tuple[bool, str]:
|
|
1746
|
+
"""#2936: does ``coord`` resolve on a WORKER's PATH — not this agent
|
|
1747
|
+
process's own?
|
|
1748
|
+
|
|
1749
|
+
Built on the exact env a real worker is spawned into
|
|
1750
|
+
(:func:`_worker_subprocess_env`, whose #402/#2569 strip removes the
|
|
1751
|
+
fleet's pinned ``~/.coord-venv/bin`` from PATH). A worker that cannot
|
|
1752
|
+
resolve ``coord`` can run its entire suite, PASS, and be structurally
|
|
1753
|
+
unable to record that verdict (``coord test <id> --passed``) — the
|
|
1754
|
+
missing verdict then reads as a TEST FAILURE and walks the
|
|
1755
|
+
``models.escalation`` ladder, re-dispatching already-correct work on a
|
|
1756
|
+
more expensive model for a PATH gap, not a weak one (#2897 cost one
|
|
1757
|
+
instance of this an extra opus rerun on top of an already-passing
|
|
1758
|
+
sonnet leg).
|
|
1759
|
+
|
|
1760
|
+
Before this, the gap was discovered only when a smoke worker's own
|
|
1761
|
+
final-turn transcript happened to mention it (as #2897's did) — this
|
|
1762
|
+
function exists so the agent can say so ITSELF, at startup, in
|
|
1763
|
+
``journalctl --user -u coord-agent``, mirroring #1671's PATH diagnostics
|
|
1764
|
+
for capability probes.
|
|
1765
|
+
|
|
1766
|
+
Returns ``(ok, message)`` rather than logging directly, so the check is
|
|
1767
|
+
testable with a synthetic *base_env* with no mocking of ``shutil.which``
|
|
1768
|
+
or the logging module required. ``base_env=None`` (the production
|
|
1769
|
+
default) resolves against this process's real ``os.environ``, exactly
|
|
1770
|
+
like :func:`_worker_subprocess_env` itself.
|
|
1771
|
+
"""
|
|
1772
|
+
worker_path = _worker_subprocess_env(base_env).get("PATH", "")
|
|
1773
|
+
resolved = shutil.which("coord", path=worker_path)
|
|
1774
|
+
if resolved:
|
|
1775
|
+
return True, (
|
|
1776
|
+
f"coord agent: worker PATH check OK — 'coord' resolves at {resolved} "
|
|
1777
|
+
"(a smoke/test worker on this machine can record its verdict, #2936)"
|
|
1778
|
+
)
|
|
1779
|
+
return False, (
|
|
1780
|
+
"coord agent: WARNING 'coord' does NOT resolve on a WORKER's PATH — "
|
|
1781
|
+
f"searched: {worker_path!r}. A smoke/test worker on this machine can "
|
|
1782
|
+
"run its whole suite, PASS, and be structurally unable to record the "
|
|
1783
|
+
"verdict via `coord test <id> --passed`; the missing verdict then "
|
|
1784
|
+
"reads as a TEST FAILURE and escalates the model for an "
|
|
1785
|
+
"infrastructure gap, not a weak one (#2936). Fix: re-run "
|
|
1786
|
+
"install-agent.sh on this machine so ~/.local/bin/coord exists and "
|
|
1787
|
+
"symlinks to $HOME/.coord-venv/bin/coord (the blue/green symlink "
|
|
1788
|
+
"itself, never a resolved .blue/.green path)."
|
|
1789
|
+
)
|
|
1790
|
+
|
|
1791
|
+
|
|
1745
1792
|
def _slugify(text: str, max_len: int = 40) -> str:
|
|
1746
1793
|
"""Convert *text* to a URL/branch-safe slug."""
|
|
1747
1794
|
slug = re.sub(r"[^a-z0-9]+", "-", text.lower()).strip("-")
|
|
@@ -5444,6 +5491,18 @@ class AgentServer:
|
|
|
5444
5491
|
self.log_dir.mkdir(parents=True, exist_ok=True)
|
|
5445
5492
|
self._load_state()
|
|
5446
5493
|
|
|
5494
|
+
# #2936: verify AT STARTUP — not a suite-run later — that a worker
|
|
5495
|
+
# this agent spawns will be able to resolve `coord` on its own PATH
|
|
5496
|
+
# to record a test/smoke verdict. Only the failure case is logged:
|
|
5497
|
+
# this file configures no logging handler of its own (`coord agent`
|
|
5498
|
+
# never calls `configure_daemon_logging`, unlike `coord serve` —
|
|
5499
|
+
# #2862), so a bare `_log.info` here would be a silent no-op on the
|
|
5500
|
+
# real daemon while `_log.warning` reaches `journalctl` via Python's
|
|
5501
|
+
# stderr handler-of-last-resort with zero configuration needed.
|
|
5502
|
+
_coord_reachable, _coord_reachable_msg = worker_coord_reachable()
|
|
5503
|
+
if not _coord_reachable:
|
|
5504
|
+
_log.warning(_coord_reachable_msg)
|
|
5505
|
+
|
|
5447
5506
|
# ── #2299: hot config reload ────────────────────────────────────────────
|
|
5448
5507
|
|
|
5449
5508
|
#: Config-derived state that a reload refreshes, versus the state it must
|
|
@@ -109,14 +109,52 @@ echo "Installed: $("$VENV_DIR/bin/coord" version)"
|
|
|
109
109
|
|
|
110
110
|
# The venv is now fully installed and verified working (coord version printed
|
|
111
111
|
# above). Disarm the cleanup trap here: everything from this point on
|
|
112
|
-
# (machine-name detection, the systemd unit, node shims,
|
|
113
|
-
# loginctl) is unrelated to venv creation, and a failure in any of
|
|
114
|
-
# NOT delete a venv that already works — that would poison the retry
|
|
115
|
-
# from-scratch pip re-install just to get back to the same later
|
|
116
|
-
# (#2911 review).
|
|
112
|
+
# (machine-name detection, the systemd unit, the coord CLI shim, node shims,
|
|
113
|
+
# systemctl, loginctl) is unrelated to venv creation, and a failure in any of
|
|
114
|
+
# it must NOT delete a venv that already works — that would poison the retry
|
|
115
|
+
# with a from-scratch pip re-install just to get back to the same later
|
|
116
|
+
# failure (#2911 review).
|
|
117
117
|
trap - EXIT
|
|
118
118
|
CREATED_VENV=0
|
|
119
119
|
|
|
120
|
+
# --- coord CLI shim (#2936) --------------------------------------------------
|
|
121
|
+
# Workers are spawned with THIS agent's own venv stripped from PATH (#402,
|
|
122
|
+
# hardened by #2569's PIP_REQUIRE_VIRTUALENV after an 11h fleet outage — see
|
|
123
|
+
# coord/agent.py's `_worker_subprocess_env`). That strip is correct and must
|
|
124
|
+
# stay: a worker's bare `pip install -e .` must never land in the fleet's
|
|
125
|
+
# live $VENV_DIR. But nothing else guarantees a worker's PATH resolves
|
|
126
|
+
# `coord` itself — and when it doesn't, a smoke/test worker can run its
|
|
127
|
+
# whole suite, pass, and be structurally unable to record the verdict via
|
|
128
|
+
# `coord test <id> --passed`. The missing verdict then reads as a TEST
|
|
129
|
+
# FAILURE and walks the model-escalation ladder for an infrastructure gap,
|
|
130
|
+
# never a weak model (#2936; one instance cost an extra opus rerun of an
|
|
131
|
+
# already-passing sonnet leg).
|
|
132
|
+
#
|
|
133
|
+
# $HOME/.local/bin is (a) already put on the coord-agent unit's PATH below
|
|
134
|
+
# and (b) NOT stripped from a worker's PATH — #2569's strip matches
|
|
135
|
+
# $VENV_DIR/bin by name/realpath only, never $HOME/.local/bin. A plain
|
|
136
|
+
# symlink there closes the gap for every worker this agent spawns.
|
|
137
|
+
#
|
|
138
|
+
# MUST point at $VENV_DIR itself — the blue/green symlink `coord agent
|
|
139
|
+
# update` repoints atomically on every release (docs/AGENT_OPERATIONS.md) —
|
|
140
|
+
# NOT at a `readlink -f`-resolved `.blue`/`.green` path. Resolving it here
|
|
141
|
+
# would freeze the shim on whichever side happens to be live at install
|
|
142
|
+
# time and silently go stale on the very next blue/green swap.
|
|
143
|
+
COORD_SHIM_DIR="$HOME/.local/bin"
|
|
144
|
+
COORD_SHIM_TARGET="$VENV_DIR/bin/coord"
|
|
145
|
+
COORD_SHIM_LINK="$COORD_SHIM_DIR/coord"
|
|
146
|
+
mkdir -p "$COORD_SHIM_DIR"
|
|
147
|
+
if [ -L "$COORD_SHIM_LINK" ] && [ "$(readlink "$COORD_SHIM_LINK")" = "$COORD_SHIM_TARGET" ]; then
|
|
148
|
+
: # already ours, and already pointed at the unresolved blue/green symlink
|
|
149
|
+
elif [ -e "$COORD_SHIM_LINK" ] || [ -L "$COORD_SHIM_LINK" ]; then
|
|
150
|
+
echo "warning: $COORD_SHIM_LINK exists and is not the coord shim — left as-is"
|
|
151
|
+
echo " A smoke/test worker on this machine cannot record its verdict via"
|
|
152
|
+
echo " 'coord test <id> --passed' unless 'coord' resolves on ITS PATH (#2936)."
|
|
153
|
+
else
|
|
154
|
+
ln -s "$COORD_SHIM_TARGET" "$COORD_SHIM_LINK"
|
|
155
|
+
echo "Installed coord shim: $COORD_SHIM_LINK -> $COORD_SHIM_TARGET"
|
|
156
|
+
fi
|
|
157
|
+
|
|
120
158
|
# Detect machine name if not provided
|
|
121
159
|
if [ -z "$MACHINE_NAME" ]; then
|
|
122
160
|
MACHINE_NAME=$(hostname -s)
|
|
@@ -648,15 +648,33 @@ run_python_acceptance_ci() {
|
|
|
648
648
|
local ci_home="$WT/.coord-ci-home"
|
|
649
649
|
mkdir -p "$ci_home"
|
|
650
650
|
log "running: coord acceptance run --all --ci (cli-pytest route, ms-37)"
|
|
651
|
-
|
|
651
|
+
local rc=0
|
|
652
|
+
(env -u COORD_SERVICE_URL -u COORD_TOKEN -u COORD_CONFIG \
|
|
652
653
|
HOME="$ci_home" PATH="$venv/bin:$PATH" \
|
|
653
654
|
"$venv/bin/coord" acceptance run \
|
|
654
655
|
--repo claude-coordinator --all --ci \
|
|
655
656
|
--config "$WT/.github/coord-ci-acceptance.yml" \
|
|
656
|
-
--for-path coord/cli.py --path "$WT") >"$acc_out" 2>&1
|
|
657
|
+
--for-path coord/cli.py --path "$WT") >"$acc_out" 2>&1 || rc=$?
|
|
658
|
+
if [[ "$rc" -eq 0 ]]; then
|
|
657
659
|
say "PASS(python): ordinary suite + sealed acceptance suite (ms-37, cli-pytest) both green"
|
|
658
660
|
return 0
|
|
659
661
|
fi
|
|
662
|
+
# #2936: 127 is the shell's "command not found" for `$venv/bin/coord`
|
|
663
|
+
# itself — the SAME infrastructure class as the missing-python3/missing-
|
|
664
|
+
# fallback-command cases above (#1814), NOT a red suite. This venv is the
|
|
665
|
+
# one `run_python` just built (or found already usable) and successfully
|
|
666
|
+
# ran the ordinary pytest suite from moments ago, so a missing
|
|
667
|
+
# `$venv/bin/coord` here means this package's own console-script entry
|
|
668
|
+
# point never landed in it — an environment problem, not something the
|
|
669
|
+
# branch under test can be blamed for. Before this check, "coord:
|
|
670
|
+
# command not found" (#2936 — a smoke worker unable to resolve `coord` at
|
|
671
|
+
# all) and a genuinely red sealed suite were indistinguishable here, and
|
|
672
|
+
# the missing binary silently laundered into `RESULT: FAIL`.
|
|
673
|
+
if [[ "$rc" -eq 127 ]]; then
|
|
674
|
+
toolchain_missing coord python-acceptance-cli "\$venv/bin ($venv/bin), then \$PATH"
|
|
675
|
+
tail -n 20 "$acc_out" | sed 's/^/ /'
|
|
676
|
+
return 1
|
|
677
|
+
fi
|
|
660
678
|
say "FAIL(python): sealed acceptance suite (cli-pytest route, ms-37) failed under --ci — either a test-id NOT listed in expected_red failed for real, or one listed in expected_red unexpectedly passed (see .github/workflows/test.yml's 'A red result here is attributable, not a mystery' step for the two-cause triage)"
|
|
661
679
|
tail -n 40 "$acc_out" | sed 's/^/ /'
|
|
662
680
|
return 1
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"""Regression tests for #2936 — `run_python_acceptance_ci`'s ``coord`` call
|
|
2
|
+
in scripts/coord-test-runner.sh must never launder "the binary could not run
|
|
3
|
+
at all" into a red sealed-acceptance suite.
|
|
4
|
+
|
|
5
|
+
BACKGROUND. #2897's smoke worker on dell64 could not resolve `coord` on ITS
|
|
6
|
+
OWN path at all (no `~/.local/bin/coord` shim on that machine) and said so in
|
|
7
|
+
its own final turn — it printed the PASS marker but had no way to record the
|
|
8
|
+
verdict via `coord test <id> --passed`. The missing verdict then read as a
|
|
9
|
+
TEST FAILURE and walked the model-escalation ladder for a PATH gap, not a
|
|
10
|
+
weak model: an already-correct sonnet leg was re-run on opus for no reason.
|
|
11
|
+
|
|
12
|
+
THIS FILE'S SLICE OF #2936. `run_python_acceptance_ci` (the ms-37 cli-pytest
|
|
13
|
+
acceptance route, #2180) is the one place left in this script that shells out
|
|
14
|
+
to `coord` at all — the Rust/cargo arm that used to carry a similar risk left
|
|
15
|
+
with the crate in #2899. Before this fix, that call's `if ... ; then PASS
|
|
16
|
+
... fi` collapsed exit 127 ("$venv/bin/coord: No such file or directory" —
|
|
17
|
+
the shell's own "command not found", the same class #1814 already guards for
|
|
18
|
+
python3/cargo/the fallback command) into the same `FAIL(python)` a genuinely
|
|
19
|
+
red sealed suite gets. The two must never share a verdict: one says "the
|
|
20
|
+
branch broke something", the other says "the environment could not tell us
|
|
21
|
+
anything" (#1814's whole point).
|
|
22
|
+
|
|
23
|
+
HOW THIS RUNS IN MILLISECONDS. Same technique as
|
|
24
|
+
`tests/test_coord_test_runner_populated_home.py`: fake interpreters are
|
|
25
|
+
planted at the exact paths the runner probes (`$WT/.venv/bin/python`,
|
|
26
|
+
`$WT/.venv/bin/coord`) so no real venv is built and no real pytest/coord CLI
|
|
27
|
+
runs. The fake `coord` exits with whatever `FAKE_COORD_EXIT` says, which is
|
|
28
|
+
indistinguishable to the runner (and to a real "command not found") from
|
|
29
|
+
`$?` alone — the runner never looks past the exit code, so faking THAT is a
|
|
30
|
+
faithful stand-in for a truly-missing binary.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
from __future__ import annotations
|
|
34
|
+
|
|
35
|
+
import os
|
|
36
|
+
import stat
|
|
37
|
+
import subprocess
|
|
38
|
+
from pathlib import Path
|
|
39
|
+
|
|
40
|
+
import pytest
|
|
41
|
+
|
|
42
|
+
from .conftest import POSIX_BASH
|
|
43
|
+
|
|
44
|
+
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
45
|
+
SCRIPT = REPO_ROOT / "scripts" / "coord-test-runner.sh"
|
|
46
|
+
|
|
47
|
+
#: Answers just enough pytest invocation shapes to get the ordinary suite to
|
|
48
|
+
#: PASS and reach `run_python_post_arms` — `-c` probes (xdist detection) and
|
|
49
|
+
#: the full-suite `-m pytest ... --ignore=tests/acceptance` run. Nothing here
|
|
50
|
+
#: needs to answer a flake/baseline re-run (`::` node ids) or the
|
|
51
|
+
#: populated-home arm's bare test-file invocation: the fixture repo's diff
|
|
52
|
+
#: touches no python test files, so that arm SKIPs on its own before either
|
|
53
|
+
#: shape would be needed.
|
|
54
|
+
_FAKE_PYTHON = r"""#!/usr/bin/env bash
|
|
55
|
+
if [[ "$1" == "-c" ]]; then
|
|
56
|
+
exit 1 # no xdist -> serial
|
|
57
|
+
fi
|
|
58
|
+
if [[ "$1" == "-m" && "$2" == "pytest" ]]; then
|
|
59
|
+
printf '1 passed\n'
|
|
60
|
+
exit 0
|
|
61
|
+
fi
|
|
62
|
+
exit 0
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
#: A stand-in for `coord` at `$WT/.venv/bin/coord`, where
|
|
66
|
+
#: `run_python_acceptance_ci` looks for it once the ordinary suite is green.
|
|
67
|
+
#: `FAKE_COORD_EXIT` stands in for whatever exit code a real invocation would
|
|
68
|
+
#: have produced — 127 for "command not found", anything else for a real
|
|
69
|
+
#: pass/fail.
|
|
70
|
+
_FAKE_COORD = r"""#!/usr/bin/env bash
|
|
71
|
+
exit "${FAKE_COORD_EXIT:-0}"
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _git(cwd: Path, *args: str) -> str:
|
|
76
|
+
return subprocess.run(
|
|
77
|
+
["git", *args],
|
|
78
|
+
cwd=str(cwd),
|
|
79
|
+
capture_output=True,
|
|
80
|
+
text=True,
|
|
81
|
+
encoding="utf-8",
|
|
82
|
+
check=True,
|
|
83
|
+
).stdout.strip()
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _executable(path: Path, text: str) -> None:
|
|
87
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
88
|
+
path.write_text(text, encoding="utf-8")
|
|
89
|
+
path.chmod(path.stat().st_mode | stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@pytest.fixture
|
|
93
|
+
def repo(tmp_path: Path) -> Path:
|
|
94
|
+
"""A repo shaped like an ordinary code-coordinator Test leg: the diff
|
|
95
|
+
touches only ``coord/**`` (routes to pytest, no python test files, so the
|
|
96
|
+
populated-home arm SKIPs itself and does not need its own fake)."""
|
|
97
|
+
r = tmp_path / "repo"
|
|
98
|
+
(r / "coord").mkdir(parents=True)
|
|
99
|
+
_git(r, "init", "-q", "-b", "main")
|
|
100
|
+
_git(r, "config", "user.email", "t@t.com")
|
|
101
|
+
_git(r, "config", "user.name", "Test")
|
|
102
|
+
(r / "coord" / "foo.py").write_text("x = 1\n", encoding="utf-8")
|
|
103
|
+
(r / "README.md").write_text("init\n", encoding="utf-8")
|
|
104
|
+
_git(r, "add", "-A")
|
|
105
|
+
_git(r, "commit", "-qm", "initial")
|
|
106
|
+
_git(r, "tag", "base")
|
|
107
|
+
|
|
108
|
+
(r / "coord" / "foo.py").write_text("x = 2\n", encoding="utf-8")
|
|
109
|
+
_git(r, "add", "-A")
|
|
110
|
+
_git(r, "commit", "-qm", "branch change")
|
|
111
|
+
|
|
112
|
+
_executable(r / ".venv" / "bin" / "python", _FAKE_PYTHON)
|
|
113
|
+
_executable(r / ".venv" / "bin" / "coord", _FAKE_COORD)
|
|
114
|
+
return r
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def _run(repo: Path, **fake_env: str) -> subprocess.CompletedProcess[str]:
|
|
118
|
+
env = dict(os.environ)
|
|
119
|
+
env.update(fake_env)
|
|
120
|
+
return subprocess.run(
|
|
121
|
+
[POSIX_BASH, str(SCRIPT), str(repo), "--base-ref", "base", "--repo", "code-coordinator"],
|
|
122
|
+
capture_output=True,
|
|
123
|
+
text=True,
|
|
124
|
+
encoding="utf-8",
|
|
125
|
+
timeout=120,
|
|
126
|
+
env=env,
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def test_a_green_acceptance_run_still_passes(repo: Path) -> None:
|
|
131
|
+
"""Sanity baseline: with no injected fault, the branch is green end to end."""
|
|
132
|
+
result = _run(repo, FAKE_COORD_EXIT="0")
|
|
133
|
+
|
|
134
|
+
assert result.returncode == 0, (result.stdout, result.stderr)
|
|
135
|
+
assert "RESULT: PASS" in result.stdout
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def test_missing_coord_binary_is_infrastructure_not_a_failed_suite(repo: Path) -> None:
|
|
139
|
+
"""The #2936 core guard: exit 127 ("command not found") from the `coord`
|
|
140
|
+
call must read as INFRA, never as a red sealed suite.
|
|
141
|
+
|
|
142
|
+
Asserting the ABSENCE of the failure wording matters as much as the
|
|
143
|
+
presence of the new one — `RESULT: FAIL` here is exactly what would
|
|
144
|
+
walk the model-escalation ladder for a PATH gap (#2897's dell64 cost).
|
|
145
|
+
"""
|
|
146
|
+
result = _run(repo, FAKE_COORD_EXIT="127")
|
|
147
|
+
|
|
148
|
+
out = result.stdout + result.stderr
|
|
149
|
+
assert result.returncode == 3, out
|
|
150
|
+
assert "TOOLCHAIN MISSING(python-acceptance-cli)" in out
|
|
151
|
+
assert "coord" in out
|
|
152
|
+
assert "RESULT: INFRA" in out
|
|
153
|
+
|
|
154
|
+
assert "FAIL(python)" not in out
|
|
155
|
+
assert "RESULT: FAIL" not in out
|
|
156
|
+
assert "sealed acceptance suite (cli-pytest route, ms-37) failed" not in out
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def test_missing_coord_binary_message_is_actionable(repo: Path) -> None:
|
|
160
|
+
"""Matches the #1814 bar every other TOOLCHAIN MISSING message meets:
|
|
161
|
+
which tool, where it looked, and that this is not a test verdict."""
|
|
162
|
+
result = _run(repo, FAKE_COORD_EXIT="127")
|
|
163
|
+
out = result.stdout + result.stderr
|
|
164
|
+
|
|
165
|
+
assert "INFRASTRUCTURE failure" in out
|
|
166
|
+
assert "python-acceptance-cli suite never ran" in out
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def test_a_genuinely_failing_acceptance_suite_is_still_a_failure(repo: Path) -> None:
|
|
170
|
+
"""The other half of the distinction: a real red sealed suite (any
|
|
171
|
+
non-127 non-zero exit) must not be laundered into an infrastructure
|
|
172
|
+
error by this change."""
|
|
173
|
+
result = _run(repo, FAKE_COORD_EXIT="3")
|
|
174
|
+
|
|
175
|
+
out = result.stdout + result.stderr
|
|
176
|
+
assert result.returncode == 1, out
|
|
177
|
+
assert "FAIL(python)" in out
|
|
178
|
+
assert "sealed acceptance suite (cli-pytest route, ms-37) failed" in out
|
|
179
|
+
assert "RESULT: FAIL" in out
|
|
180
|
+
assert "TOOLCHAIN MISSING" not in out
|
|
181
|
+
assert "RESULT: INFRA" not in out
|
{code_coordinator-0.5.296 → code_coordinator-0.5.297}/tests/test_worker_env_venv_isolation.py
RENAMED
|
@@ -24,6 +24,7 @@ from coord.agent import (
|
|
|
24
24
|
_pinned_venv_bin_dirs,
|
|
25
25
|
_strip_venv_bins_from_path,
|
|
26
26
|
_worker_subprocess_env,
|
|
27
|
+
worker_coord_reachable,
|
|
27
28
|
)
|
|
28
29
|
|
|
29
30
|
# #2684: every PATH fixture below must be joined/split on `os.pathsep`
|
|
@@ -179,3 +180,89 @@ def test_no_worker_env_ever_carries_pinned_venv_on_path(path_value: str) -> None
|
|
|
179
180
|
base_prefix="/usr",
|
|
180
181
|
)
|
|
181
182
|
assert "/home/john/.coord-venv/bin" not in env["PATH"].split(os.pathsep)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
# ── #2936: `worker_coord_reachable` — the shim gap, caught at agent startup ──
|
|
186
|
+
#
|
|
187
|
+
# #402/#2569's strip above is correct and must stay (the whole point of this
|
|
188
|
+
# file). But it also means a worker's PATH no longer carries `coord` unless
|
|
189
|
+
# SOMETHING ELSE puts it there (the `~/.local/bin/coord` shim install-agent.sh
|
|
190
|
+
# now installs). dell64 had no such shim: a smoke worker there ran its whole
|
|
191
|
+
# suite, passed, and had no way to call `coord test <id> --passed` — the
|
|
192
|
+
# missing verdict read as a TEST FAILURE and escalated the model for a PATH
|
|
193
|
+
# gap (#2897). These tests are about the DETECTION this function adds, not
|
|
194
|
+
# the strip itself — see the tests above for that.
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def _touch_executable(path: Path) -> None:
|
|
198
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
199
|
+
path.write_text("#!/bin/sh\nexit 0\n", encoding="utf-8")
|
|
200
|
+
path.chmod(0o755)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def test_worker_coord_reachable_true_when_a_shim_is_on_the_stripped_path(
|
|
204
|
+
tmp_path: Path,
|
|
205
|
+
) -> None:
|
|
206
|
+
"""The success case: `~/.local/bin/coord` (install-agent.sh's shim, or
|
|
207
|
+
any other non-pinned-venv location) survives the #2569 strip and is what
|
|
208
|
+
a real worker would resolve `coord` to."""
|
|
209
|
+
home = tmp_path
|
|
210
|
+
shim_dir = home / ".local" / "bin"
|
|
211
|
+
_touch_executable(shim_dir / "coord")
|
|
212
|
+
|
|
213
|
+
ok, msg = worker_coord_reachable(
|
|
214
|
+
{
|
|
215
|
+
"HOME": str(home),
|
|
216
|
+
"PATH": _path(f"{home}/.coord-venv/bin", str(shim_dir), "/usr/bin"),
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
assert ok is True
|
|
221
|
+
assert str(shim_dir / "coord") in msg
|
|
222
|
+
assert "WARNING" not in msg
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def test_worker_coord_reachable_false_when_only_the_pinned_venv_has_it(
|
|
226
|
+
tmp_path: Path,
|
|
227
|
+
) -> None:
|
|
228
|
+
"""The #2936/dell64 failure mode: `coord` exists ONLY inside the fleet's
|
|
229
|
+
pinned venv, which #2569's strip removes from every worker's PATH — so a
|
|
230
|
+
worker can never resolve it at all, exactly like dell64 with no
|
|
231
|
+
`~/.local/bin/coord` shim."""
|
|
232
|
+
home = tmp_path
|
|
233
|
+
pinned_bin = home / ".coord-venv" / "bin"
|
|
234
|
+
_touch_executable(pinned_bin / "coord")
|
|
235
|
+
|
|
236
|
+
ok, msg = worker_coord_reachable(
|
|
237
|
+
{"HOME": str(home), "PATH": _path(str(pinned_bin), "/usr/bin")}
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
assert ok is False
|
|
241
|
+
assert "WARNING" in msg
|
|
242
|
+
assert "does NOT resolve on a WORKER's PATH" in msg
|
|
243
|
+
assert "/usr/bin" in msg # the (stripped) PATH actually searched
|
|
244
|
+
assert "#2936" in msg
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def test_worker_coord_reachable_false_message_names_the_fix(tmp_path: Path) -> None:
|
|
248
|
+
"""The message must be actionable, matching the bar #1671's PATH
|
|
249
|
+
diagnostics already set for this codebase: what broke, and how to fix
|
|
250
|
+
it — not just that it broke."""
|
|
251
|
+
home = tmp_path
|
|
252
|
+
ok, msg = worker_coord_reachable({"HOME": str(home), "PATH": "/usr/bin"})
|
|
253
|
+
|
|
254
|
+
assert ok is False
|
|
255
|
+
assert "coord test <id> --passed" in msg
|
|
256
|
+
assert "install-agent.sh" in msg
|
|
257
|
+
assert "~/.local/bin/coord" in msg
|
|
258
|
+
assert "blue/green" in msg
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def test_worker_coord_reachable_defaults_to_this_processs_environ() -> None:
|
|
262
|
+
"""`base_env=None` (the production call shape) must resolve against the
|
|
263
|
+
real environment, exactly like `_worker_subprocess_env` itself — not
|
|
264
|
+
silently no-op or require a caller to always pass one explicitly."""
|
|
265
|
+
ok, msg = worker_coord_reachable()
|
|
266
|
+
|
|
267
|
+
assert isinstance(ok, bool)
|
|
268
|
+
assert "coord agent:" in msg
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.296 → code_coordinator-0.5.297}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|