code-coordinator 0.5.583__tar.gz → 0.5.584__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.583 → code_coordinator-0.5.584}/PKG-INFO +1 -1
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/_common.py +38 -18
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/drive.py +174 -20
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive.py +108 -2
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/.gitignore +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/CLAUDE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/GOAL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/LICENSE +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/MANIFEST.in +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/README.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/agent.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/audit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/backup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/block_log.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/board_service.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/brain.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/bugbash.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/claim.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/cli.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/client.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/codegen.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/bugbash.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/comments.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/config.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dao.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dashboard/reports.html +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/db.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/deps.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dirlink.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/events.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/filelock.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/freshness.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/gates.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/goal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/gtk_native_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/context.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/models.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/render.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/health/units.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/hooks.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/interactive.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/mac_native_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/models.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/network.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/notify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/openapi.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/parentage.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/plans.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/progress.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/release_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/release_window.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/reports.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/review.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/self_health.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/smoke.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/smoke_tags.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/split_work.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/sql.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/test_author.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/test_report.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/tui_pty_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/usage.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/win_native_bridge.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/win_native_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/install-agent.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/pyproject.toml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/setup.cfg +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/__init__.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/backends.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/conftest.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_bugbash.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_client.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dashboard_reports.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_db.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dirlink.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_events.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_gtk_native_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_init.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_install_agent_capabilities_3515.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_mac_native_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_merge_verification.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_models.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_network.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_gate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_report_public_export.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_session.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_split.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_state.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_tui_pty_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_win_native_bridge.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_win_native_driver.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.583 → code_coordinator-0.5.584}/tests/write_parity.py +0 -0
|
@@ -330,7 +330,23 @@ def _save_config_snapshot(
|
|
|
330
330
|
pass
|
|
331
331
|
|
|
332
332
|
|
|
333
|
-
def
|
|
333
|
+
def resolve_and_load_config(path: Path | None, *, allow_thin_client: bool = True) -> Config:
|
|
334
|
+
"""Resolve *path* (thin-client aware) and parse it — the one place this
|
|
335
|
+
question is asked, so every caller that needs a *freshly loaded* config
|
|
336
|
+
(not just the one-time CLI boot in :func:`_load_config`, which also
|
|
337
|
+
writes the DB snapshot and exits the process on a parse failure) gets
|
|
338
|
+
the SAME resolution rule rather than a second, drifting copy (#2096,
|
|
339
|
+
"one question, one answer"). :func:`coord.drive.Driver`'s per-poll
|
|
340
|
+
config reload (#1654) is the other caller: unlike `_load_config`, it
|
|
341
|
+
must never call ``sys.exit`` (a bad mid-run edit must warn, not kill the
|
|
342
|
+
drive) and must never re-run ``_save_config_snapshot`` every poll (a
|
|
343
|
+
DELETE+INSERT into the shared ``machines`` table, meant for "this
|
|
344
|
+
process just booted", not "it's still running 50 polls later").
|
|
345
|
+
|
|
346
|
+
Raises :class:`ConfigError` on any resolution/parse failure — never
|
|
347
|
+
exits, never echoes. Callers that want the CLI's print-and-exit-2
|
|
348
|
+
behavior still go through :func:`_load_config`.
|
|
349
|
+
"""
|
|
334
350
|
# Resolve the default location ($COORD_CONFIG → ~/.coord/coordinator.yml →
|
|
335
351
|
# ./coordinator.yml) when no explicit --config was given, so `coord` works on
|
|
336
352
|
# a machine without a repo checkout and isn't sensitive to the CWD.
|
|
@@ -366,24 +382,28 @@ def _load_config(path: Path | None, *, allow_thin_client: bool = True) -> Config
|
|
|
366
382
|
# caller of ``_load_config`` legitimately wants thin-client resolution
|
|
367
383
|
# (they ARE clients of the daemon's board) — this flag exists so ONLY
|
|
368
384
|
# `coord serve`'s own bootstrap can opt out.
|
|
385
|
+
if allow_thin_client:
|
|
386
|
+
from coord.client import resolve_board_service # noqa: PLC0415
|
|
387
|
+
|
|
388
|
+
svc = resolve_board_service()
|
|
389
|
+
if svc is not None:
|
|
390
|
+
from coord.client import fetch_remote_config # noqa: PLC0415
|
|
391
|
+
|
|
392
|
+
try:
|
|
393
|
+
path = fetch_remote_config(svc)
|
|
394
|
+
except Exception as exc: # noqa: BLE001 — do NOT fall through to
|
|
395
|
+
# load(path): path may point at a local file that happens to
|
|
396
|
+
# exist (the exact bypass this issue closes). Fail loudly
|
|
397
|
+
# instead of silently trusting whatever is on disk.
|
|
398
|
+
raise ConfigError(
|
|
399
|
+
f"could not fetch config from {svc.url}: {exc}"
|
|
400
|
+
) from exc
|
|
401
|
+
return load(path)
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
def _load_config(path: Path | None, *, allow_thin_client: bool = True) -> Config:
|
|
369
405
|
try:
|
|
370
|
-
|
|
371
|
-
from coord.client import resolve_board_service # noqa: PLC0415
|
|
372
|
-
|
|
373
|
-
svc = resolve_board_service()
|
|
374
|
-
if svc is not None:
|
|
375
|
-
from coord.client import fetch_remote_config # noqa: PLC0415
|
|
376
|
-
|
|
377
|
-
try:
|
|
378
|
-
path = fetch_remote_config(svc)
|
|
379
|
-
except Exception as exc: # noqa: BLE001 — do NOT fall through to
|
|
380
|
-
# load(path): path may point at a local file that happens to
|
|
381
|
-
# exist (the exact bypass this issue closes). Fail loudly
|
|
382
|
-
# instead of silently trusting whatever is on disk.
|
|
383
|
-
raise ConfigError(
|
|
384
|
-
f"could not fetch config from {svc.url}: {exc}"
|
|
385
|
-
) from exc
|
|
386
|
-
cfg = load(path)
|
|
406
|
+
cfg = resolve_and_load_config(path, allow_thin_client=allow_thin_client)
|
|
387
407
|
except ConfigError as e:
|
|
388
408
|
click.echo(f"error: {e}", err=True)
|
|
389
409
|
sys.exit(2)
|
|
@@ -384,6 +384,33 @@ def _current_self_head() -> str | None:
|
|
|
384
384
|
return self_freshness(fetch=False).head_sha
|
|
385
385
|
|
|
386
386
|
|
|
387
|
+
def _load_config_for_drive(config_path: str) -> Any:
|
|
388
|
+
"""Real default for `Driver.config_loader` (#1654): re-read
|
|
389
|
+
coordinator.yml fresh — ``config_path`` empty resolves the usual
|
|
390
|
+
``$COORD_CONFIG`` → ``~/.coord/coordinator.yml`` → ``./coordinator.yml``
|
|
391
|
+
chain, AND the thin-client (board_service) redirect, exactly like the
|
|
392
|
+
construction-time load in ``coord.commands._common._load_config`` —
|
|
393
|
+
calls the SAME ``resolve_and_load_config`` helper that function now
|
|
394
|
+
wraps, so a mid-run reload can never resolve a *different* file (or
|
|
395
|
+
skip the thin-client branch an ordinary client is expected to take)
|
|
396
|
+
than the one this drive started with (#2096, "one question, one
|
|
397
|
+
answer"). Deliberately NOT ``_load_config`` itself: that one also
|
|
398
|
+
``sys.exit``s on a parse failure (a bad mid-run edit must warn, never
|
|
399
|
+
kill the drive — see ``Driver._reload_config``) and re-writes the
|
|
400
|
+
shared ``machines`` DB snapshot (meant for a one-time boot, not every
|
|
401
|
+
poll).
|
|
402
|
+
|
|
403
|
+
Imported lazily: ``coord.commands._common`` pulls in ``click``/
|
|
404
|
+
``httpx``, and every pure decision function in this module already
|
|
405
|
+
takes an already-loaded config rather than touching disk itself — this
|
|
406
|
+
keeps that true for every caller except the one that's explicitly an
|
|
407
|
+
I/O shell.
|
|
408
|
+
"""
|
|
409
|
+
from coord.commands._common import resolve_and_load_config # noqa: PLC0415
|
|
410
|
+
|
|
411
|
+
return resolve_and_load_config(Path(config_path) if config_path else None)
|
|
412
|
+
|
|
413
|
+
|
|
387
414
|
def _bounded_tail(text: str, limit: int = _CAPTURED_OUTPUT_LIMIT) -> str:
|
|
388
415
|
"""*text*, or its last *limit* characters if longer — the tail, because
|
|
389
416
|
the actionable line (a traceback's final "raise ...", a guard's remedy)
|
|
@@ -2111,6 +2138,39 @@ class Preflight:
|
|
|
2111
2138
|
warnings: tuple[str, ...] = ()
|
|
2112
2139
|
|
|
2113
2140
|
|
|
2141
|
+
def check_usage_gate(
|
|
2142
|
+
config: Any, usage_limits: PlanLimits | None,
|
|
2143
|
+
) -> str | None:
|
|
2144
|
+
"""Evaluate the usage gate — raise on ``block``, return a warn message
|
|
2145
|
+
on ``warn``, ``None`` otherwise.
|
|
2146
|
+
|
|
2147
|
+
#1654: the SOLE place this question is asked, so :func:`preflight`'s
|
|
2148
|
+
one-time call at the top of a run and :meth:`Driver._loop`'s per-poll
|
|
2149
|
+
re-check (added for #1654, since the gate's own ``mode``/thresholds can
|
|
2150
|
+
change mid-run) can never drift into two different answers for the
|
|
2151
|
+
same inputs (#2096, "one question, one answer").
|
|
2152
|
+
|
|
2153
|
+
*config* of ``None`` skips the gate entirely (no ``usage_gate`` section
|
|
2154
|
+
to consult) — mirrors every pre-#1466 caller.
|
|
2155
|
+
"""
|
|
2156
|
+
if config is None:
|
|
2157
|
+
return None
|
|
2158
|
+
gate_cfg = config.usage_gate
|
|
2159
|
+
limits = usage_limits if usage_limits is not None else PlanLimits(status="unknown")
|
|
2160
|
+
gate_result = evaluate_usage_gate(limits, gate_cfg)
|
|
2161
|
+
if gate_result.action == "block":
|
|
2162
|
+
raise DriveError(
|
|
2163
|
+
f"{gate_result.message} (usage_gate.mode: block) — refusing to "
|
|
2164
|
+
"dispatch. Wait for the window to reset, or lower urgency by "
|
|
2165
|
+
"raising the threshold / setting usage_gate.mode: warn in "
|
|
2166
|
+
"coordinator.yml.",
|
|
2167
|
+
EXIT_USAGE,
|
|
2168
|
+
)
|
|
2169
|
+
if gate_result.action == "warn":
|
|
2170
|
+
return f"{gate_result.message} (usage_gate.mode: warn — proceeding anyway)"
|
|
2171
|
+
return None
|
|
2172
|
+
|
|
2173
|
+
|
|
2114
2174
|
def preflight(
|
|
2115
2175
|
state: IssueState,
|
|
2116
2176
|
opts: DriveOptions,
|
|
@@ -2165,20 +2225,9 @@ def preflight(
|
|
|
2165
2225
|
|
|
2166
2226
|
warnings: list[str] = []
|
|
2167
2227
|
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
gate_result = evaluate_usage_gate(limits, gate_cfg)
|
|
2172
|
-
if gate_result.action == "block":
|
|
2173
|
-
raise DriveError(
|
|
2174
|
-
f"{gate_result.message} (usage_gate.mode: block) — refusing to "
|
|
2175
|
-
"dispatch. Wait for the window to reset, or lower urgency by "
|
|
2176
|
-
"raising the threshold / setting usage_gate.mode: warn in "
|
|
2177
|
-
"coordinator.yml.",
|
|
2178
|
-
EXIT_USAGE,
|
|
2179
|
-
)
|
|
2180
|
-
if gate_result.action == "warn":
|
|
2181
|
-
warnings.append(f"{gate_result.message} (usage_gate.mode: warn — proceeding anyway)")
|
|
2228
|
+
gate_warning = check_usage_gate(config, usage_limits)
|
|
2229
|
+
if gate_warning:
|
|
2230
|
+
warnings.append(gate_warning)
|
|
2182
2231
|
|
|
2183
2232
|
if not state.auto_loop:
|
|
2184
2233
|
warnings.append(
|
|
@@ -5399,6 +5448,13 @@ class Driver:
|
|
|
5399
5448
|
# without a real git checkout — same shape as *usage_prober* above.
|
|
5400
5449
|
# Defaults to the real, local-only (`fetch=False`) probe.
|
|
5401
5450
|
self_head_probe: Callable[[], str | None] = _current_self_head
|
|
5451
|
+
# #1654: injected so tests can script a fake coordinator.yml reload
|
|
5452
|
+
# sequence without real YAML I/O — same injection shape as
|
|
5453
|
+
# *usage_prober*/*self_head_probe* above. Defaults to the real loader,
|
|
5454
|
+
# re-reading ``self.opts.config_path`` (empty string resolves the usual
|
|
5455
|
+
# ``$COORD_CONFIG`` → ``~/.coord/coordinator.yml`` → ``./coordinator.yml``
|
|
5456
|
+
# chain) fresh every call — see ``_reload_config``.
|
|
5457
|
+
config_loader: Callable[[str], Any] = _load_config_for_drive
|
|
5402
5458
|
|
|
5403
5459
|
_run_log: Path | None = field(default=None, init=False, repr=False)
|
|
5404
5460
|
# #2443: this session's own on-disk `coord` HEAD, captured once by
|
|
@@ -5426,6 +5482,17 @@ class Driver:
|
|
|
5426
5482
|
# call, so it is only ever trustworthy read immediately after one, which
|
|
5427
5483
|
# is exactly how `_loop` uses it.
|
|
5428
5484
|
_last_run_output: str = field(default="", init=False, repr=False)
|
|
5485
|
+
# #1654: latches so a coordinator.yml that fails to parse mid-run (an
|
|
5486
|
+
# operator mid-edit, a truncated write) warns ONCE for the whole broken
|
|
5487
|
+
# window, not once per poll — `_reload_config` sets this on a failed
|
|
5488
|
+
# reload and clears it (with a short recovery log line) the first time a
|
|
5489
|
+
# reload succeeds again.
|
|
5490
|
+
_config_reload_broken: bool = field(default=False, init=False, repr=False)
|
|
5491
|
+
# #1654: the last usage-gate WARN message this run already printed, so a
|
|
5492
|
+
# `mode: warn` config that stays warn-worthy across many polls (the
|
|
5493
|
+
# common case — the usage window doesn't reset every poll) logs once per
|
|
5494
|
+
# DISTINCT message rather than spamming the identical line every tick.
|
|
5495
|
+
_last_usage_gate_warning: str | None = field(default=None, init=False, repr=False)
|
|
5429
5496
|
|
|
5430
5497
|
def __post_init__(self) -> None:
|
|
5431
5498
|
self.out = self.out or sys.stdout
|
|
@@ -5473,6 +5540,68 @@ class Driver:
|
|
|
5473
5540
|
except DriveStateError as exc:
|
|
5474
5541
|
raise DriveError(str(exc), EXIT_USAGE) from exc
|
|
5475
5542
|
|
|
5543
|
+
def _reload_config(self) -> None:
|
|
5544
|
+
"""Re-read coordinator.yml at the top of every poll (#1654).
|
|
5545
|
+
|
|
5546
|
+
`self.config` used to be a pure construction-time snapshot the poll
|
|
5547
|
+
loop never revisited — a ladder/usage-gate edit made while a drive
|
|
5548
|
+
was already running had no effect until the NEXT invocation, which
|
|
5549
|
+
is exactly backwards for a lever (#1649's reroute mode, a tightened
|
|
5550
|
+
threshold) most likely to be flipped reactively, mid-window, because
|
|
5551
|
+
a drive is already running and burning credits. Cheap: one YAML
|
|
5552
|
+
parse against a loop that already shells out to a `coord`
|
|
5553
|
+
subprocess (`run_coord`) every tick.
|
|
5554
|
+
|
|
5555
|
+
A config that fails to parse (an operator mid-edit, a truncated
|
|
5556
|
+
write) must never kill an otherwise-healthy run: this keeps the
|
|
5557
|
+
last-good `self.config` and only warns — exactly ONCE for the whole
|
|
5558
|
+
broken window (`_config_reload_broken` latches it), not once per
|
|
5559
|
+
poll. `self.opts` (this invocation's own identity — the CLI flags)
|
|
5560
|
+
is never touched here; only `self.config` is replaced.
|
|
5561
|
+
"""
|
|
5562
|
+
try:
|
|
5563
|
+
new_config = self.config_loader(self.opts.config_path)
|
|
5564
|
+
except Exception as exc: # noqa: BLE001 — a bad edit must never kill the drive
|
|
5565
|
+
if not self._config_reload_broken:
|
|
5566
|
+
self.warn(
|
|
5567
|
+
"coordinator.yml reload failed, keeping the last-known-"
|
|
5568
|
+
f"good config: {exc}"
|
|
5569
|
+
)
|
|
5570
|
+
self._config_reload_broken = True
|
|
5571
|
+
return
|
|
5572
|
+
if self._config_reload_broken:
|
|
5573
|
+
self.log(
|
|
5574
|
+
"coordinator.yml reload recovered — back to a fresh config"
|
|
5575
|
+
)
|
|
5576
|
+
self._config_reload_broken = False
|
|
5577
|
+
self._log_config_change(self.config, new_config)
|
|
5578
|
+
self.config = new_config
|
|
5579
|
+
|
|
5580
|
+
def _log_config_change(self, old: Any, new: Any) -> None:
|
|
5581
|
+
"""Narrate a reload that changes a decision this loop actually makes
|
|
5582
|
+
(#1654), so a mid-run behaviour change is explicable from this run's
|
|
5583
|
+
own log afterwards rather than looking like nondeterminism.
|
|
5584
|
+
|
|
5585
|
+
Deliberately narrow — only the usage gate, the one knob this loop
|
|
5586
|
+
re-consults every poll (see `check_usage_gate` below) — rather than
|
|
5587
|
+
a full recursive diff of the whole `Config` object, which would be
|
|
5588
|
+
noisy (most fields are per-repo/machine topology this driver never
|
|
5589
|
+
reads for THIS issue) and risks echoing a secret accidentally pasted
|
|
5590
|
+
into coordinator.yml into this run's log.
|
|
5591
|
+
"""
|
|
5592
|
+
old_gate, new_gate = old.usage_gate, new.usage_gate
|
|
5593
|
+
old_shape = (old_gate.mode, old_gate.session_threshold_pct, old_gate.week_threshold_pct)
|
|
5594
|
+
new_shape = (new_gate.mode, new_gate.session_threshold_pct, new_gate.week_threshold_pct)
|
|
5595
|
+
if old_shape != new_shape:
|
|
5596
|
+
self.log(
|
|
5597
|
+
"coordinator.yml reload: usage_gate changed "
|
|
5598
|
+
f"mode {old_gate.mode!r} -> {new_gate.mode!r}, "
|
|
5599
|
+
f"session_threshold_pct {old_gate.session_threshold_pct!r} -> "
|
|
5600
|
+
f"{new_gate.session_threshold_pct!r}, week_threshold_pct "
|
|
5601
|
+
f"{old_gate.week_threshold_pct!r} -> {new_gate.week_threshold_pct!r} "
|
|
5602
|
+
"— this run's next dispatch decision reflects the new config."
|
|
5603
|
+
)
|
|
5604
|
+
|
|
5476
5605
|
# ── execution ───────────────────────────────────────────────────────
|
|
5477
5606
|
def run_coord(self, args: tuple[str, ...], *, serialize_merge: bool = False) -> int:
|
|
5478
5607
|
"""Run a ``coord`` subcommand, echoing its output and appending to the log.
|
|
@@ -5751,12 +5880,15 @@ class Driver:
|
|
|
5751
5880
|
if state is None:
|
|
5752
5881
|
raise DriveError("could not read board state", EXIT_USAGE)
|
|
5753
5882
|
|
|
5754
|
-
# #1466:
|
|
5755
|
-
#
|
|
5756
|
-
#
|
|
5757
|
-
#
|
|
5758
|
-
#
|
|
5759
|
-
#
|
|
5883
|
+
# #1466: this is the ONE-TIME preflight check — raises/warns before
|
|
5884
|
+
# the loop below ever starts, using whatever config this run was
|
|
5885
|
+
# launched with. #1654 added a SECOND, per-poll re-check
|
|
5886
|
+
# (`check_usage_gate`, called again right before every RUN action
|
|
5887
|
+
# below) against `self.config` AS RELOADED THAT TICK, so a mid-run
|
|
5888
|
+
# `usage_gate.mode`/threshold edit reaches the very next dispatch —
|
|
5889
|
+
# this first call only ever decides whether the run gets to start at
|
|
5890
|
+
# all. Skipped entirely when the gate is off, so a `disabled`
|
|
5891
|
+
# config never pays the subprocess cost.
|
|
5760
5892
|
usage_limits = (
|
|
5761
5893
|
self.usage_prober() if self.config.usage_gate.mode != "disabled" else None
|
|
5762
5894
|
)
|
|
@@ -5876,6 +6008,12 @@ class Driver:
|
|
|
5876
6008
|
)
|
|
5877
6009
|
return EXIT_DEADLINE
|
|
5878
6010
|
|
|
6011
|
+
# #1654: re-read coordinator.yml before every decision this tick
|
|
6012
|
+
# makes — see `_reload_config`'s own docstring for why (a
|
|
6013
|
+
# construction-time snapshot made a mid-run ladder/usage-gate
|
|
6014
|
+
# edit invisible for the drive's entire remaining life).
|
|
6015
|
+
self._reload_config()
|
|
6016
|
+
|
|
5879
6017
|
state = self.read_state()
|
|
5880
6018
|
if state is None:
|
|
5881
6019
|
self.sleeper(self.opts.poll)
|
|
@@ -6076,6 +6214,22 @@ class Driver:
|
|
|
6076
6214
|
self.log(action.label)
|
|
6077
6215
|
|
|
6078
6216
|
if action.kind == RUN:
|
|
6217
|
+
# #1654: re-check the usage gate against THIS poll's
|
|
6218
|
+
# (possibly just-reloaded) config, not the snapshot
|
|
6219
|
+
# `preflight()` consulted once before the loop started —
|
|
6220
|
+
# `check_usage_gate` is the SAME question preflight asks, so
|
|
6221
|
+
# a mid-run `usage_gate.mode` edit (warn -> block, or a
|
|
6222
|
+
# tightened threshold) reaches the very next dispatch
|
|
6223
|
+
# instead of only the next `coord drive` invocation.
|
|
6224
|
+
usage_limits = (
|
|
6225
|
+
self.usage_prober()
|
|
6226
|
+
if self.config.usage_gate.mode != "disabled"
|
|
6227
|
+
else None
|
|
6228
|
+
)
|
|
6229
|
+
gate_warning = check_usage_gate(self.config, usage_limits)
|
|
6230
|
+
if gate_warning and gate_warning != self._last_usage_gate_warning:
|
|
6231
|
+
self.warn(gate_warning)
|
|
6232
|
+
self._last_usage_gate_warning = gate_warning
|
|
6079
6233
|
rc = self.run_coord(
|
|
6080
6234
|
action.command, serialize_merge=action.serialize_merge
|
|
6081
6235
|
)
|
|
@@ -428,6 +428,102 @@ def test_driver_loop_disabled_gate_never_calls_the_prober(driver_factory):
|
|
|
428
428
|
assert calls == []
|
|
429
429
|
|
|
430
430
|
|
|
431
|
+
# ── #1654: the poll loop re-reads coordinator.yml every tick ───────────────
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
def test_driver_loop_picks_up_a_mid_run_usage_gate_change_on_the_next_poll(
|
|
435
|
+
driver_factory, capsys,
|
|
436
|
+
):
|
|
437
|
+
"""A `usage_gate.mode` edit made WHILE a drive is already polling must
|
|
438
|
+
reach the very next dispatch decision, not just the next `coord drive`
|
|
439
|
+
invocation (#1654's motivating #1653 scenario). Scripts a config_loader
|
|
440
|
+
that hands back the construction-time (`warn`) config on the first
|
|
441
|
+
reload and a `block`-mode config on every reload after — exactly like
|
|
442
|
+
an operator editing coordinator.yml between two polls."""
|
|
443
|
+
cfg_warn = _config_with_gate(mode="warn", session_threshold_pct=50.0)
|
|
444
|
+
cfg_block = _config_with_gate(mode="block", session_threshold_pct=50.0)
|
|
445
|
+
reloads = [cfg_warn, cfg_block]
|
|
446
|
+
calls = {"n": 0}
|
|
447
|
+
|
|
448
|
+
def loader(_path):
|
|
449
|
+
idx = min(calls["n"], len(reloads) - 1)
|
|
450
|
+
calls["n"] += 1
|
|
451
|
+
return reloads[idx]
|
|
452
|
+
|
|
453
|
+
driver = driver_factory(
|
|
454
|
+
[{"assignments": []}],
|
|
455
|
+
opts=DriveOptions(machine="precision", poll=1.0, deadline_mins=10.0),
|
|
456
|
+
config=cfg_warn,
|
|
457
|
+
usage_prober=lambda: PlanLimits(status="ok", session_pct=95.0),
|
|
458
|
+
config_loader=loader,
|
|
459
|
+
)
|
|
460
|
+
with pytest.raises(DriveError) as exc:
|
|
461
|
+
driver.run()
|
|
462
|
+
assert exc.value.exit_code == EXIT_USAGE
|
|
463
|
+
assert "block" in str(exc.value)
|
|
464
|
+
# Exactly one `coord assign` reached the subprocess boundary — the FIRST
|
|
465
|
+
# poll's reload still saw `warn` (construction-time config, unchanged),
|
|
466
|
+
# so it dispatched; the SECOND poll's reload already saw `block`, so the
|
|
467
|
+
# usage gate refused before a second `coord assign` was ever spawned.
|
|
468
|
+
assert len(driver.recorded) == 1
|
|
469
|
+
captured = capsys.readouterr()
|
|
470
|
+
# The reload's own narration is informational (`self.log`, not
|
|
471
|
+
# `self.warn`) — it goes to stdout, distinct from the usage gate's own
|
|
472
|
+
# warn-level lines on stderr asserted above via `exc.value`.
|
|
473
|
+
assert "usage_gate changed" in captured.out
|
|
474
|
+
assert "'warn' -> 'block'" in captured.out
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
def test_driver_loop_survives_a_mid_run_config_parse_failure(driver_factory, capsys):
|
|
478
|
+
"""A coordinator.yml an operator is mid-editing (truncated write, a
|
|
479
|
+
YAML typo) must never kill an otherwise-healthy drive: the last-good
|
|
480
|
+
config stays in force, the drive keeps running to its deadline, and the
|
|
481
|
+
warning is printed exactly once for the whole broken window — not once
|
|
482
|
+
per poll."""
|
|
483
|
+
cfg = make_config()
|
|
484
|
+
|
|
485
|
+
def broken_loader(_path):
|
|
486
|
+
raise ValueError("while parsing a block mapping")
|
|
487
|
+
|
|
488
|
+
driver = driver_factory(
|
|
489
|
+
[board(status="running")],
|
|
490
|
+
opts=DriveOptions(machine="precision", poll=1.0, deadline_mins=2.5 / 60.0),
|
|
491
|
+
config=cfg,
|
|
492
|
+
config_loader=broken_loader,
|
|
493
|
+
)
|
|
494
|
+
assert driver.run() == EXIT_DEADLINE
|
|
495
|
+
assert driver.config is cfg # last-good snapshot, never replaced
|
|
496
|
+
err = capsys.readouterr().err
|
|
497
|
+
assert err.count("coordinator.yml reload failed") == 1
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
def test_driver_loop_config_reload_never_mutates_opts(driver_factory):
|
|
501
|
+
"""`self.opts` is this invocation's own identity (the CLI flags) — a
|
|
502
|
+
config reload must never touch it, even across several successful
|
|
503
|
+
reloads that DO change `self.config`."""
|
|
504
|
+
cfg_a = _config_with_gate(mode="warn", session_threshold_pct=50.0)
|
|
505
|
+
cfg_b = _config_with_gate(mode="disabled")
|
|
506
|
+
reloads = [cfg_a, cfg_b, cfg_a, cfg_b]
|
|
507
|
+
calls = {"n": 0}
|
|
508
|
+
|
|
509
|
+
def loader(_path):
|
|
510
|
+
idx = min(calls["n"], len(reloads) - 1)
|
|
511
|
+
calls["n"] += 1
|
|
512
|
+
return reloads[idx]
|
|
513
|
+
|
|
514
|
+
opts = DriveOptions(machine="precision", poll=1.0, deadline_mins=3.5 / 60.0)
|
|
515
|
+
driver = driver_factory(
|
|
516
|
+
[board(status="running")], opts=opts, config=cfg_a, config_loader=loader,
|
|
517
|
+
)
|
|
518
|
+
assert driver.run() == EXIT_DEADLINE
|
|
519
|
+
assert driver.opts is opts
|
|
520
|
+
assert driver.opts.machine == "precision"
|
|
521
|
+
assert driver.opts.poll == 1.0
|
|
522
|
+
# The reload really did run (and really did change self.config) —
|
|
523
|
+
# otherwise this test would trivially pass by never exercising reload.
|
|
524
|
+
assert calls["n"] >= 2
|
|
525
|
+
|
|
526
|
+
|
|
431
527
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
432
528
|
# no work yet: plan / dispatch
|
|
433
529
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -6294,7 +6390,7 @@ def driver_factory(tmp_path, monkeypatch, capsys):
|
|
|
6294
6390
|
|
|
6295
6391
|
def make(
|
|
6296
6392
|
payloads, *, opts=None, verifier=None, config=None, oracle_gate=None,
|
|
6297
|
-
usage_prober=None, self_head_probe=None, ticks=200,
|
|
6393
|
+
usage_prober=None, self_head_probe=None, config_loader=None, ticks=200,
|
|
6298
6394
|
):
|
|
6299
6395
|
clock = {"t": 0.0}
|
|
6300
6396
|
recorded: list[list[str]] = []
|
|
@@ -6305,14 +6401,24 @@ def driver_factory(tmp_path, monkeypatch, capsys):
|
|
|
6305
6401
|
|
|
6306
6402
|
monkeypatch.setattr("coord.drive.subprocess.run", fake_run)
|
|
6307
6403
|
|
|
6404
|
+
resolved_config = config or make_config()
|
|
6308
6405
|
driver = Driver(
|
|
6309
6406
|
repo=REPO,
|
|
6310
6407
|
issue=ISSUE,
|
|
6311
6408
|
opts=opts or DriveOptions(machine="precision", poll=1.0),
|
|
6312
|
-
config=
|
|
6409
|
+
config=resolved_config,
|
|
6313
6410
|
fetcher=FakeFetcher(payloads),
|
|
6314
6411
|
verifier=verifier or FakeVerifier(),
|
|
6315
6412
|
oracle_gate=oracle_gate,
|
|
6413
|
+
# #1654: default to a no-op reload (hands back the SAME config
|
|
6414
|
+
# object every poll) — a real driver re-reads coordinator.yml
|
|
6415
|
+
# from disk every tick, but defaulting to that here would make
|
|
6416
|
+
# every existing test in this module implicitly depend on
|
|
6417
|
+
# `$COORD_CONFIG`/`~/.coord/coordinator.yml` resolving
|
|
6418
|
+
# successfully (or silently latching the one-warn-only path),
|
|
6419
|
+
# neither of which is what those tests are about. Tests
|
|
6420
|
+
# exercising the reload itself pass their own.
|
|
6421
|
+
config_loader=config_loader or (lambda _path: resolved_config),
|
|
6316
6422
|
# #1466: never let a Driver test shell out to a real `claude -p
|
|
6317
6423
|
# "/usage"` — default to a stub reporting "unknown" (same as no
|
|
6318
6424
|
# probe at all), which the gate always treats as "proceed,
|
|
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
|
{code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.583 → code_coordinator-0.5.584}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.583 → code_coordinator-0.5.584}/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
|