code-coordinator 0.5.501__tar.gz → 0.5.502__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.501 → code_coordinator-0.5.502}/PKG-INFO +1 -1
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/agent.py +188 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/agent_app.py +38 -36
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent.py +237 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/.gitignore +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/CLAUDE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/GOAL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/LICENSE +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/MANIFEST.in +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/README.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/audit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/backup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/block_log.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/board_service.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/brain.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/claim.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/cli.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/client.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/codegen.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/comments.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/config.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dao.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/db.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/deps.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/drive.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/events.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/filelock.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/freshness.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/gates.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/goal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/context.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/models.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/render.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/health/units.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/hooks.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/interactive.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/models.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/network.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/notify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/openapi.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/parentage.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/plans.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/progress.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/release_window.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/reports.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/review.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/self_health.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/smoke.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/split_work.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/sql.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/test_author.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/test_report.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/usage.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/install-agent.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/pyproject.toml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/setup.cfg +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/__init__.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/backends.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/conftest.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_client.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_config.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_db.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_events.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_init.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_models.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_network.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_session.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_split.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_state.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.501 → code_coordinator-0.5.502}/tests/write_parity.py +0 -0
|
@@ -450,6 +450,45 @@ HOST_SLEEP_EXIT = 127
|
|
|
450
450
|
# #2638.
|
|
451
451
|
_DEFAULT_RUNTIME_CEILING_S = 6.0 * 60.0 * 60.0 # 6 hours
|
|
452
452
|
|
|
453
|
+
# #3363: safety margin added on top of the resolved runtime ceiling before
|
|
454
|
+
# `AgentServer._phantom_age_ceiling_s` treats a PENDING/RUNNING record's
|
|
455
|
+
# timestamp as stale enough to investigate. Kept as its own constant so the
|
|
456
|
+
# margin itself doesn't have to be re-derived at both the class-default and
|
|
457
|
+
# per-instance/per-assignment call sites.
|
|
458
|
+
_PHANTOM_AGE_MARGIN_S = 60.0 * 60.0 # 1 hour
|
|
459
|
+
|
|
460
|
+
# #3363: DEFAULT max age a PENDING/RUNNING assignment record is trusted at
|
|
461
|
+
# face value before it is even a *candidate* for phantom finalization —
|
|
462
|
+
# i.e. the floor `AgentServer._phantom_age_ceiling_s` applies when neither
|
|
463
|
+
# this agent's own configured `runtime_ceiling_s` nor the assignment's own
|
|
464
|
+
# `spec.runtime_ceiling_s` raises it further. Nothing but a process restart
|
|
465
|
+
# ever clears `_assignments` — so an entry that never reaches a terminal
|
|
466
|
+
# status (worker killed out from under it, dispatch crashed between insert
|
|
467
|
+
# and spawn, a stop that didn't write back) stays "active" forever, which
|
|
468
|
+
# is exactly what makes it dangerous: every restart path (`/update`,
|
|
469
|
+
# `/rollback`, the #2139 idle watcher) refuses to act while ANY assignment
|
|
470
|
+
# looks active, so a single phantom permanently blocks the one thing — a
|
|
471
|
+
# restart — that would clear it.
|
|
472
|
+
#
|
|
473
|
+
# #3363 review: this constant alone is NOT the last word on whether a
|
|
474
|
+
# record is a phantom, for two reasons `_phantom_age_ceiling_s` and
|
|
475
|
+
# `AgentServer._active_assignment_ids` handle explicitly:
|
|
476
|
+
# 1. An operator can legitimately raise or disable the runtime ceiling
|
|
477
|
+
# per agent (`self.runtime_ceiling_s`) or per leg
|
|
478
|
+
# (`AssignmentSpec.runtime_ceiling_s`) — both documented, supported
|
|
479
|
+
# overrides (`coord/config.py:252-263`). A hardcoded module constant
|
|
480
|
+
# here would silently override that choice and finalize a real,
|
|
481
|
+
# healthy, still-running leg. `_phantom_age_ceiling_s` resolves the
|
|
482
|
+
# actual per-assignment ceiling instead of trusting this default
|
|
483
|
+
# unconditionally.
|
|
484
|
+
# 2. Age is unconfirmed death, never proof of it. `_active_assignment_ids`
|
|
485
|
+
# only finalizes a record whose process is CONFIRMED not alive
|
|
486
|
+
# (`self._processes.get(aid)` is missing or `proc.poll() is not None`)
|
|
487
|
+
# — a record whose process is still alive is left alone regardless of
|
|
488
|
+
# how stale its timestamp looks, exactly the ground-truth check
|
|
489
|
+
# `cancel()`/`_reap` already use elsewhere in this class.
|
|
490
|
+
_PHANTOM_ASSIGNMENT_MAX_AGE_S = _DEFAULT_RUNTIME_CEILING_S + _PHANTOM_AGE_MARGIN_S # 7 hours
|
|
491
|
+
|
|
453
492
|
# Minimum wall-vs-monotonic divergence measured over a SINGLE poll interval
|
|
454
493
|
# that is unambiguously a host suspend rather than ordinary thread-scheduling
|
|
455
494
|
# jitter, a GC pause, or a loaded box briefly starving this thread. Comfortably
|
|
@@ -3402,6 +3441,15 @@ class AgentAssignment:
|
|
|
3402
3441
|
spec: AssignmentSpec
|
|
3403
3442
|
status: str = PENDING
|
|
3404
3443
|
pid: int | None = None
|
|
3444
|
+
# #3363: stamped once, at construction, so a PENDING assignment (no
|
|
3445
|
+
# `started_at` yet — that's only set once it reaches RUNNING) still has
|
|
3446
|
+
# an age `active_assignment_count()`'s phantom check can measure.
|
|
3447
|
+
# Reloaded PENDING/RUNNING entries from a persisted state file never
|
|
3448
|
+
# keep this value in practice: `_load_state` already force-fails any
|
|
3449
|
+
# PENDING/RUNNING record it finds (the owning subprocess is provably
|
|
3450
|
+
# gone across a restart), so a missing/stale `created_at` on an old
|
|
3451
|
+
# state file is harmless.
|
|
3452
|
+
created_at: float = field(default_factory=time.time)
|
|
3405
3453
|
started_at: float | None = None
|
|
3406
3454
|
finished_at: float | None = None
|
|
3407
3455
|
exit_code: int | None = None
|
|
@@ -7356,6 +7404,146 @@ class AgentServer:
|
|
|
7356
7404
|
cargo_cache.write_gc_status(self.state_dir, result)
|
|
7357
7405
|
return result
|
|
7358
7406
|
|
|
7407
|
+
def active_assignment_count(self, *, now: float | None = None) -> int:
|
|
7408
|
+
"""How many assignments are genuinely still in flight right now.
|
|
7409
|
+
|
|
7410
|
+
#3363: the ONE predicate every "is this host busy" surface must
|
|
7411
|
+
call. Before this, `_idle_restart_target`, `/update`'s post-swap
|
|
7412
|
+
busy check, and `/rollback`'s busy check (all in
|
|
7413
|
+
`coord/agent_app.py`) each independently re-derived
|
|
7414
|
+
``status in (PENDING, RUNNING)`` straight off ``self._assignments``
|
|
7415
|
+
— three copies of the same question, agreeing right up until one of
|
|
7416
|
+
them needed to disagree. A PENDING/RUNNING entry that never reaches
|
|
7417
|
+
a terminal status (worker killed out from under it, a dispatch that
|
|
7418
|
+
crashed between insert and spawn, a stop that didn't write back) is
|
|
7419
|
+
"active" by that raw predicate forever, since nothing but a process
|
|
7420
|
+
restart clears ``_assignments`` — and every restart path above
|
|
7421
|
+
refuses to act while count > 0, so the phantom permanently blocks
|
|
7422
|
+
the one thing that would clear it (see #3363's six-day macmini
|
|
7423
|
+
deadlock).
|
|
7424
|
+
|
|
7425
|
+
Delegates the actual scan (and phantom finalization) to
|
|
7426
|
+
:meth:`_active_assignment_ids`.
|
|
7427
|
+
"""
|
|
7428
|
+
return len(self._active_assignment_ids(now=now))
|
|
7429
|
+
|
|
7430
|
+
def _phantom_age_ceiling_s(self, assignment: AgentAssignment) -> float:
|
|
7431
|
+
"""Resolve the phantom-age ceiling for *this specific* assignment.
|
|
7432
|
+
|
|
7433
|
+
#3363 review: the ceiling used to be the hardcoded module constant
|
|
7434
|
+
``_PHANTOM_ASSIGNMENT_MAX_AGE_S``, sized only off the compile-time
|
|
7435
|
+
``_DEFAULT_RUNTIME_CEILING_S``. That ignored an operator who
|
|
7436
|
+
legitimately raised (or disabled) the runtime ceiling — either
|
|
7437
|
+
fleet-wide (``self.runtime_ceiling_s``) or for this one leg
|
|
7438
|
+
(``AssignmentSpec.runtime_ceiling_s``), both documented, supported
|
|
7439
|
+
overrides (`coord/config.py:252-263`). Mirrors ``_reap``'s own
|
|
7440
|
+
per-leg resolution (~line 9588): a positive ``spec.runtime_ceiling_s``
|
|
7441
|
+
raises the base above this agent's own configured default, then the
|
|
7442
|
+
result is floored at ``_DEFAULT_RUNTIME_CEILING_S`` and the same
|
|
7443
|
+
margin is added — so a higher configured ceiling only ever pushes
|
|
7444
|
+
this watchdog further OUT, never in.
|
|
7445
|
+
|
|
7446
|
+
This only bounds how stale a record is allowed to look before it
|
|
7447
|
+
even becomes a *candidate* for phantom finalization — a record
|
|
7448
|
+
whose process is confirmed still alive is never finalized by
|
|
7449
|
+
``_active_assignment_ids`` regardless of this value (see there), so
|
|
7450
|
+
a leg that legitimately disables its own runtime ceiling is still
|
|
7451
|
+
protected even though this method always returns a finite number.
|
|
7452
|
+
"""
|
|
7453
|
+
base = self.runtime_ceiling_s or 0.0
|
|
7454
|
+
raw_spec_ceiling = getattr(
|
|
7455
|
+
getattr(assignment, "spec", None), "runtime_ceiling_s", None
|
|
7456
|
+
)
|
|
7457
|
+
if isinstance(raw_spec_ceiling, (int, float)) and raw_spec_ceiling > 0:
|
|
7458
|
+
base = max(base, float(raw_spec_ceiling))
|
|
7459
|
+
return max(base, _DEFAULT_RUNTIME_CEILING_S) + _PHANTOM_AGE_MARGIN_S
|
|
7460
|
+
|
|
7461
|
+
def _active_assignment_ids(self, *, now: float | None = None) -> list[str]:
|
|
7462
|
+
"""IDs of assignments still genuinely active, aging out phantoms.
|
|
7463
|
+
|
|
7464
|
+
A PENDING/RUNNING entry older than
|
|
7465
|
+
:meth:`_phantom_age_ceiling_s` (measured from ``started_at`` once
|
|
7466
|
+
RUNNING, ``created_at`` while still PENDING) is a *candidate* for
|
|
7467
|
+
being a leaked bookkeeping record rather than live work — but age
|
|
7468
|
+
alone is never proof of death (#2096: an unconfirmed verdict, in
|
|
7469
|
+
either direction, is a defect). Before finalizing, this consults
|
|
7470
|
+
the same ground truth ``cancel()``/``_reap`` already use elsewhere
|
|
7471
|
+
in this class: ``self._processes.get(aid)``. Only when the process
|
|
7472
|
+
is CONFIRMED not alive (no entry, or ``proc.poll()`` returns a real
|
|
7473
|
+
exit code) is the record excluded from the returned IDs AND
|
|
7474
|
+
finalized in place (flipped to FAILED with an explanatory
|
|
7475
|
+
``error``, ``finished_at`` stamped) so it stops looking active on
|
|
7476
|
+
every other surface too — `/status`, `coord usage`, the board
|
|
7477
|
+
reconciler — not merely in this count. A stale-looking record whose
|
|
7478
|
+
process is still confirmed alive is left completely alone (still
|
|
7479
|
+
counted active, status untouched) — force-finalizing it here would
|
|
7480
|
+
orphan the real subprocess with no WIP push, since a FAILED record
|
|
7481
|
+
no longer shows up in `/restart`'s `pending_ids` scan that would
|
|
7482
|
+
otherwise `cancel(aid, push_mode="branch")` it gracefully.
|
|
7483
|
+
|
|
7484
|
+
Logged at ERROR so it shows up in the agent's own log, since
|
|
7485
|
+
finalizing a phantom is itself a symptom worth an operator noticing
|
|
7486
|
+
(see #3363 suggested fix item 3 — persistent phantoms should
|
|
7487
|
+
eventually surface in `coord release verify`, not just here).
|
|
7488
|
+
"""
|
|
7489
|
+
now = time.time() if now is None else now
|
|
7490
|
+
active: list[str] = []
|
|
7491
|
+
# #3363 review: iterate `.items()` and key off the DICT key, not
|
|
7492
|
+
# `a.id` — a couple of existing tests plant a bare status-only stand-
|
|
7493
|
+
# in object straight into `_assignments` (no `id`/`started_at`/
|
|
7494
|
+
# `created_at` at all) to exercise the busy-veto in isolation.
|
|
7495
|
+
# `getattr(..., None)` below is the same defensiveness applied to
|
|
7496
|
+
# the timestamp reads: a stand-in with no age info reads as age 0
|
|
7497
|
+
# (never a phantom), which preserves every pre-#3363 test's
|
|
7498
|
+
# "PENDING/RUNNING always counts as busy" expectation unchanged.
|
|
7499
|
+
to_finalize: list[tuple[str, AgentAssignment, str, float]] = []
|
|
7500
|
+
with self._lock:
|
|
7501
|
+
for aid, a in self._assignments.items():
|
|
7502
|
+
if a.status not in (PENDING, RUNNING):
|
|
7503
|
+
continue
|
|
7504
|
+
age_ref = (
|
|
7505
|
+
getattr(a, "started_at", None) if a.status == RUNNING
|
|
7506
|
+
else getattr(a, "created_at", None)
|
|
7507
|
+
)
|
|
7508
|
+
age = now - age_ref if age_ref is not None else 0.0
|
|
7509
|
+
if age <= self._phantom_age_ceiling_s(a):
|
|
7510
|
+
active.append(aid)
|
|
7511
|
+
continue
|
|
7512
|
+
# #3363 review: unconfirmed death is the same anti-pattern
|
|
7513
|
+
# (epic #2096) as unconfirmed success — consult the actual
|
|
7514
|
+
# process before declaring this record dead. A live PID
|
|
7515
|
+
# here means real work is still in flight no matter how
|
|
7516
|
+
# stale the bookkeeping timestamp looks, so it stays active
|
|
7517
|
+
# and untouched; the normal `_reap` thread watching that
|
|
7518
|
+
# same process (with its own correctly-resolved runtime
|
|
7519
|
+
# ceiling) remains the one path that ever finalizes it.
|
|
7520
|
+
proc = self._processes.get(aid)
|
|
7521
|
+
if proc is not None and proc.poll() is None:
|
|
7522
|
+
active.append(aid)
|
|
7523
|
+
continue
|
|
7524
|
+
to_finalize.append((aid, a, a.status, age))
|
|
7525
|
+
for _aid, a, _prior_status, age in to_finalize:
|
|
7526
|
+
ceiling = self._phantom_age_ceiling_s(a)
|
|
7527
|
+
a.status = FAILED
|
|
7528
|
+
a.finished_at = now
|
|
7529
|
+
a.error = (
|
|
7530
|
+
f"phantom assignment (#3363): stuck in {_prior_status!r} "
|
|
7531
|
+
f"for {age / 3600.0:.1f}h with no live process behind it, "
|
|
7532
|
+
f"past the {ceiling / 3600.0:.1f}h bookkeeping ceiling "
|
|
7533
|
+
"with no terminal status update — finalized "
|
|
7534
|
+
"automatically so it stops blocking restart"
|
|
7535
|
+
)
|
|
7536
|
+
if to_finalize:
|
|
7537
|
+
for aid, a, prior_status, age in to_finalize:
|
|
7538
|
+
_log.error(
|
|
7539
|
+
"finalizing phantom assignment %s (was %s for %.0fs, "
|
|
7540
|
+
"repo=%s) so it stops blocking restart (#3363)",
|
|
7541
|
+
aid, prior_status, age,
|
|
7542
|
+
getattr(getattr(a, "spec", None), "repo_name", "?"),
|
|
7543
|
+
)
|
|
7544
|
+
self._persist()
|
|
7545
|
+
return active
|
|
7546
|
+
|
|
7359
7547
|
def list_assignments(self) -> dict:
|
|
7360
7548
|
from coord.worker_events import is_stream_json, parse_log
|
|
7361
7549
|
|
|
@@ -593,11 +593,12 @@ def _idle_restart_target(server: "AgentServer", venv_dir: Path) -> Path | None:
|
|
|
593
593
|
# or it's already running the slot the symlink points at — no swap
|
|
594
594
|
# is waiting.
|
|
595
595
|
return None
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
596
|
+
# #3363: shared predicate — see `AgentServer.active_assignment_count`'s
|
|
597
|
+
# docstring for why this must never be re-derived independently here.
|
|
598
|
+
# It also ages out (and finalizes) any phantom PENDING/RUNNING entry,
|
|
599
|
+
# so a leaked bookkeeping record can no longer keep this watcher —
|
|
600
|
+
# the deferred restart's own advertised fallback — permanently idle.
|
|
601
|
+
if server.active_assignment_count():
|
|
601
602
|
return None
|
|
602
603
|
if _host_has_live_interactive_session():
|
|
603
604
|
# #2139 blocking review fix: an interactive pane is not an
|
|
@@ -1538,12 +1539,14 @@ def build_app(
|
|
|
1538
1539
|
# started. Re-read fresh: `perform_update` above can take
|
|
1539
1540
|
# tens of seconds (venv creation, pip, smoke check), so the
|
|
1540
1541
|
# count at the top of this request is stale by now.
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1542
|
+
#
|
|
1543
|
+
# #3363: `active_assignment_count()` is the single shared
|
|
1544
|
+
# predicate (also used by `/rollback` and the idle
|
|
1545
|
+
# watcher's `_idle_restart_target`) — it ages out and
|
|
1546
|
+
# finalizes any phantom PENDING/RUNNING entry instead of
|
|
1547
|
+
# trusting raw status forever, which is what let a single
|
|
1548
|
+
# leaked assignment defer this restart for six days.
|
|
1549
|
+
still_active = server.active_assignment_count()
|
|
1547
1550
|
if still_active and not force:
|
|
1548
1551
|
payload["result"] = "staged"
|
|
1549
1552
|
payload["error"] = (
|
|
@@ -1815,12 +1818,9 @@ def build_app(
|
|
|
1815
1818
|
body = {}
|
|
1816
1819
|
force = bool(body.get("force"))
|
|
1817
1820
|
|
|
1818
|
-
with
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
for a in server._assignments.values()
|
|
1822
|
-
if a.status in (PENDING, RUNNING)
|
|
1823
|
-
)
|
|
1821
|
+
# #3363: shared predicate with `/update` and the idle watcher — see
|
|
1822
|
+
# `AgentServer.active_assignment_count`'s docstring.
|
|
1823
|
+
active_count = server.active_assignment_count()
|
|
1824
1824
|
if active_count and not force:
|
|
1825
1825
|
payload = {
|
|
1826
1826
|
"mode": "rollback",
|
|
@@ -1999,34 +1999,36 @@ def build_app(
|
|
|
1999
1999
|
cancel_timeout = float(body.get("cancel_timeout", 30))
|
|
2000
2000
|
saved_argv = list(sys.argv)
|
|
2001
2001
|
|
|
2002
|
-
with
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2002
|
+
# #3363: shared predicate with `/update`/`/rollback`/the idle
|
|
2003
|
+
# watcher — see `AgentServer.active_assignment_count`'s docstring.
|
|
2004
|
+
# A side benefit here specifically: a phantom entry gets finalized
|
|
2005
|
+
# (flipped to FAILED) the first time this is called, so it no
|
|
2006
|
+
# longer shows up in `pending_ids` below either — this restart
|
|
2007
|
+
# stops trying to `cancel()` a record with no real process behind
|
|
2008
|
+
# it.
|
|
2009
|
+
active_count = server.active_assignment_count()
|
|
2008
2010
|
|
|
2009
2011
|
def _do_restart() -> None:
|
|
2010
2012
|
# Wait for workers to drain.
|
|
2011
2013
|
deadline = time.time() + cancel_timeout
|
|
2012
2014
|
while time.time() < deadline:
|
|
2013
|
-
|
|
2014
|
-
still_active = sum(
|
|
2015
|
-
1
|
|
2016
|
-
for a in server._assignments.values()
|
|
2017
|
-
if a.status in (PENDING, RUNNING)
|
|
2018
|
-
)
|
|
2015
|
+
still_active = server.active_assignment_count()
|
|
2019
2016
|
if still_active == 0:
|
|
2020
2017
|
break
|
|
2021
2018
|
time.sleep(1)
|
|
2022
2019
|
|
|
2023
|
-
# Cancel any workers that are still running.
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2020
|
+
# Cancel any workers that are still running. #3363 review: reuse
|
|
2021
|
+
# the shared predicate rather than re-deriving PENDING/RUNNING
|
|
2022
|
+
# via a second raw scan over `server._assignments` — by now any
|
|
2023
|
+
# true phantom (confirmed-dead process, no terminal status) has
|
|
2024
|
+
# already been finalized to FAILED by the `active_assignment_count()`
|
|
2025
|
+
# polls above, so a raw scan would agree with this today, but a
|
|
2026
|
+
# second copy of the same question right next to the shared
|
|
2027
|
+
# predicate is exactly the split `active_assignment_count()` was
|
|
2028
|
+
# introduced to eliminate — and `_active_assignment_ids()` is the
|
|
2029
|
+
# one that also knows to leave a still-alive process's record
|
|
2030
|
+
# alone rather than mis-scan it as gone.
|
|
2031
|
+
pending_ids = list(server._active_assignment_ids())
|
|
2030
2032
|
for aid in pending_ids:
|
|
2031
2033
|
try:
|
|
2032
2034
|
# #1567: this is an infra-triggered restart, not an
|
|
@@ -32,6 +32,9 @@ from coord.agent import (
|
|
|
32
32
|
AgentServer,
|
|
33
33
|
AssignmentSpec,
|
|
34
34
|
_COMPLETED_HISTORY_CAP,
|
|
35
|
+
_DEFAULT_RUNTIME_CEILING_S,
|
|
36
|
+
_PHANTOM_AGE_MARGIN_S,
|
|
37
|
+
_PHANTOM_ASSIGNMENT_MAX_AGE_S,
|
|
35
38
|
_WIP_RESCUE_TYPES,
|
|
36
39
|
_ZERO_COMMIT_TYPES,
|
|
37
40
|
_base_checkout_write_guard_tools,
|
|
@@ -5536,6 +5539,240 @@ class TestCompletedHistoryCap:
|
|
|
5536
5539
|
)
|
|
5537
5540
|
|
|
5538
5541
|
|
|
5542
|
+
# ── #3363: a PENDING/RUNNING assignment that never reaches a terminal
|
|
5543
|
+
# status must not be trusted as "busy" forever — `active_assignment_count`
|
|
5544
|
+
# is the one shared predicate every restart path in `coord/agent_app.py`
|
|
5545
|
+
# now calls, and it ages out (and finalizes) any such phantom entry ─────────
|
|
5546
|
+
|
|
5547
|
+
class TestActiveAssignmentCount:
|
|
5548
|
+
def _make_spec(self, repo_path: Path) -> AssignmentSpec:
|
|
5549
|
+
return AssignmentSpec(
|
|
5550
|
+
repo_name="api",
|
|
5551
|
+
repo_path=str(repo_path),
|
|
5552
|
+
issue_number=1,
|
|
5553
|
+
issue_title="t",
|
|
5554
|
+
briefing="b",
|
|
5555
|
+
branch="main",
|
|
5556
|
+
)
|
|
5557
|
+
|
|
5558
|
+
def test_genuinely_running_assignment_counts_as_active(self, tmp_path: Path) -> None:
|
|
5559
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5560
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5561
|
+
spec = self._make_spec(repo)
|
|
5562
|
+
now = 10_000.0
|
|
5563
|
+
server._assignments["fresh"] = AgentAssignment(
|
|
5564
|
+
id="fresh", spec=spec, status=RUNNING, started_at=now - 60.0,
|
|
5565
|
+
)
|
|
5566
|
+
assert server.active_assignment_count(now=now) == 1
|
|
5567
|
+
assert server._assignments["fresh"].status == RUNNING, (
|
|
5568
|
+
"a genuinely fresh RUNNING assignment must not be touched"
|
|
5569
|
+
)
|
|
5570
|
+
|
|
5571
|
+
def test_genuinely_pending_assignment_counts_as_active(self, tmp_path: Path) -> None:
|
|
5572
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5573
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5574
|
+
spec = self._make_spec(repo)
|
|
5575
|
+
now = 10_000.0
|
|
5576
|
+
server._assignments["fresh"] = AgentAssignment(
|
|
5577
|
+
id="fresh", spec=spec, status=PENDING, created_at=now - 5.0,
|
|
5578
|
+
)
|
|
5579
|
+
assert server.active_assignment_count(now=now) == 1
|
|
5580
|
+
|
|
5581
|
+
def test_phantom_running_assignment_ages_out_and_is_finalized(
|
|
5582
|
+
self, tmp_path: Path
|
|
5583
|
+
) -> None:
|
|
5584
|
+
"""#3363: macmini's actual shape — a RUNNING record that outlived
|
|
5585
|
+
even the runtime-ceiling watchdog by a wide margin, with no
|
|
5586
|
+
terminal status ever written back. Must stop counting as busy AND
|
|
5587
|
+
get flipped to a terminal status so it stops looking active on
|
|
5588
|
+
every other surface (`/status`, `coord usage`) too — not merely
|
|
5589
|
+
excluded from this one count."""
|
|
5590
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5591
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5592
|
+
spec = self._make_spec(repo)
|
|
5593
|
+
now = 1_000_000.0
|
|
5594
|
+
stale_started_at = now - _PHANTOM_ASSIGNMENT_MAX_AGE_S - 1.0
|
|
5595
|
+
server._assignments["phantom"] = AgentAssignment(
|
|
5596
|
+
id="phantom", spec=spec, status=RUNNING, started_at=stale_started_at,
|
|
5597
|
+
)
|
|
5598
|
+
assert server.active_assignment_count(now=now) == 0
|
|
5599
|
+
|
|
5600
|
+
finalized = server._assignments["phantom"]
|
|
5601
|
+
assert finalized.status == FAILED
|
|
5602
|
+
assert finalized.finished_at == now
|
|
5603
|
+
assert "phantom assignment" in (finalized.error or "")
|
|
5604
|
+
assert "#3363" in (finalized.error or "")
|
|
5605
|
+
|
|
5606
|
+
# And the finalization must actually be durable, not just in-memory
|
|
5607
|
+
# bookkeeping this one call happened to mutate.
|
|
5608
|
+
persisted = json.loads(server.state_path.read_text())
|
|
5609
|
+
persisted_entry = next(
|
|
5610
|
+
a for a in persisted["assignments"] if a["id"] == "phantom"
|
|
5611
|
+
)
|
|
5612
|
+
assert persisted_entry["status"] == FAILED
|
|
5613
|
+
|
|
5614
|
+
def test_phantom_pending_assignment_ages_out(self, tmp_path: Path) -> None:
|
|
5615
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5616
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5617
|
+
spec = self._make_spec(repo)
|
|
5618
|
+
now = 1_000_000.0
|
|
5619
|
+
stale_created_at = now - _PHANTOM_ASSIGNMENT_MAX_AGE_S - 1.0
|
|
5620
|
+
server._assignments["phantom-pending"] = AgentAssignment(
|
|
5621
|
+
id="phantom-pending", spec=spec, status=PENDING,
|
|
5622
|
+
created_at=stale_created_at,
|
|
5623
|
+
)
|
|
5624
|
+
assert server.active_assignment_count(now=now) == 0
|
|
5625
|
+
assert server._assignments["phantom-pending"].status == FAILED
|
|
5626
|
+
|
|
5627
|
+
def test_mixed_real_and_phantom_only_counts_the_real_one(
|
|
5628
|
+
self, tmp_path: Path
|
|
5629
|
+
) -> None:
|
|
5630
|
+
"""The exact macmini shape: `coord usage`/the board show zero real
|
|
5631
|
+
work, but a phantom sat in the map — count must reflect ONLY
|
|
5632
|
+
genuine activity, never the phantom, while still finalizing it."""
|
|
5633
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5634
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5635
|
+
spec = self._make_spec(repo)
|
|
5636
|
+
now = 1_000_000.0
|
|
5637
|
+
server._assignments["real"] = AgentAssignment(
|
|
5638
|
+
id="real", spec=spec, status=RUNNING, started_at=now - 30.0,
|
|
5639
|
+
)
|
|
5640
|
+
server._assignments["phantom"] = AgentAssignment(
|
|
5641
|
+
id="phantom", spec=spec, status=RUNNING,
|
|
5642
|
+
started_at=now - _PHANTOM_ASSIGNMENT_MAX_AGE_S - 1.0,
|
|
5643
|
+
)
|
|
5644
|
+
assert server.active_assignment_count(now=now) == 1
|
|
5645
|
+
assert server._assignments["real"].status == RUNNING
|
|
5646
|
+
assert server._assignments["phantom"].status == FAILED
|
|
5647
|
+
|
|
5648
|
+
def test_assignment_right_at_the_ceiling_still_counts(self, tmp_path: Path) -> None:
|
|
5649
|
+
"""Boundary: exactly at the max age is still trusted — only
|
|
5650
|
+
strictly older is a phantom. Guards against an off-by-one flipping
|
|
5651
|
+
a worker that is running right up against its own runtime ceiling."""
|
|
5652
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5653
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5654
|
+
spec = self._make_spec(repo)
|
|
5655
|
+
now = 1_000_000.0
|
|
5656
|
+
server._assignments["boundary"] = AgentAssignment(
|
|
5657
|
+
id="boundary", spec=spec, status=RUNNING,
|
|
5658
|
+
started_at=now - _PHANTOM_ASSIGNMENT_MAX_AGE_S,
|
|
5659
|
+
)
|
|
5660
|
+
assert server.active_assignment_count(now=now) == 1
|
|
5661
|
+
|
|
5662
|
+
def test_stale_but_confirmed_alive_process_is_never_finalized(
|
|
5663
|
+
self, tmp_path: Path
|
|
5664
|
+
) -> None:
|
|
5665
|
+
"""#3363 review: a stale timestamp is not proof of death. A record
|
|
5666
|
+
whose `self._processes` entry is still alive (`proc.poll() is
|
|
5667
|
+
None`) must stay active and untouched no matter how far past the
|
|
5668
|
+
age ceiling it looks — finalizing it here would orphan the real
|
|
5669
|
+
subprocess with no WIP push (see `cancel()`'s push_mode handling),
|
|
5670
|
+
since a FAILED record no longer shows up in `/restart`'s
|
|
5671
|
+
`pending_ids` scan that would otherwise gracefully cancel it."""
|
|
5672
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5673
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5674
|
+
spec = self._make_spec(repo)
|
|
5675
|
+
now = 1_000_000.0
|
|
5676
|
+
server._assignments["stuck-but-alive"] = AgentAssignment(
|
|
5677
|
+
id="stuck-but-alive", spec=spec, status=RUNNING,
|
|
5678
|
+
started_at=now - _PHANTOM_ASSIGNMENT_MAX_AGE_S - 3600.0,
|
|
5679
|
+
)
|
|
5680
|
+
server._processes["stuck-but-alive"] = _FakeProc(alive=True)
|
|
5681
|
+
|
|
5682
|
+
assert server.active_assignment_count(now=now) == 1
|
|
5683
|
+
assert server._assignments["stuck-but-alive"].status == RUNNING, (
|
|
5684
|
+
"a confirmed-alive process must never be force-finalized"
|
|
5685
|
+
)
|
|
5686
|
+
|
|
5687
|
+
def test_stale_and_confirmed_exited_process_is_finalized(
|
|
5688
|
+
self, tmp_path: Path
|
|
5689
|
+
) -> None:
|
|
5690
|
+
"""The mirror case: a `self._processes` entry that HAS exited
|
|
5691
|
+
(`proc.poll()` returns a real code) is confirmed dead, so a stale
|
|
5692
|
+
record for it is still a genuine phantom and gets finalized exactly
|
|
5693
|
+
like the no-process-at-all case."""
|
|
5694
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5695
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5696
|
+
spec = self._make_spec(repo)
|
|
5697
|
+
now = 1_000_000.0
|
|
5698
|
+
server._assignments["dead-proc"] = AgentAssignment(
|
|
5699
|
+
id="dead-proc", spec=spec, status=RUNNING,
|
|
5700
|
+
started_at=now - _PHANTOM_ASSIGNMENT_MAX_AGE_S - 3600.0,
|
|
5701
|
+
)
|
|
5702
|
+
server._processes["dead-proc"] = _FakeProc(alive=False)
|
|
5703
|
+
|
|
5704
|
+
assert server.active_assignment_count(now=now) == 0
|
|
5705
|
+
assert server._assignments["dead-proc"].status == FAILED
|
|
5706
|
+
|
|
5707
|
+
def test_ceiling_scales_with_agent_configured_runtime_ceiling_s(
|
|
5708
|
+
self, tmp_path: Path
|
|
5709
|
+
) -> None:
|
|
5710
|
+
"""#3363 review: an operator-raised fleet-wide
|
|
5711
|
+
`runtime_ceiling_s` must raise the phantom-age ceiling to match,
|
|
5712
|
+
not get silently overridden by the hardcoded
|
|
5713
|
+
`_DEFAULT_RUNTIME_CEILING_S`. A record aged past the OLD
|
|
5714
|
+
(default-derived) ceiling but within the new, higher one must
|
|
5715
|
+
still count as active."""
|
|
5716
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5717
|
+
raised_ceiling = _DEFAULT_RUNTIME_CEILING_S * 3
|
|
5718
|
+
server = _server(tmp_path, repo_path=repo, runtime_ceiling_s=raised_ceiling)
|
|
5719
|
+
spec = self._make_spec(repo)
|
|
5720
|
+
now = 1_000_000.0
|
|
5721
|
+
# Older than the old hardcoded 7h ceiling, but well inside the
|
|
5722
|
+
# raised one — with no live process, so the only thing that could
|
|
5723
|
+
# keep it active is the ceiling resolution itself.
|
|
5724
|
+
server._assignments["long-runner"] = AgentAssignment(
|
|
5725
|
+
id="long-runner", spec=spec, status=RUNNING,
|
|
5726
|
+
started_at=now - _PHANTOM_ASSIGNMENT_MAX_AGE_S - 3600.0,
|
|
5727
|
+
)
|
|
5728
|
+
assert server.active_assignment_count(now=now) == 1
|
|
5729
|
+
assert server._assignments["long-runner"].status == RUNNING
|
|
5730
|
+
|
|
5731
|
+
# But it's still finite: well past the RAISED ceiling, it's a
|
|
5732
|
+
# phantom again.
|
|
5733
|
+
now2 = now + raised_ceiling + _PHANTOM_AGE_MARGIN_S + 3600.0
|
|
5734
|
+
assert server.active_assignment_count(now=now2) == 0
|
|
5735
|
+
assert server._assignments["long-runner"].status == FAILED
|
|
5736
|
+
|
|
5737
|
+
def test_ceiling_scales_with_per_assignment_spec_override(
|
|
5738
|
+
self, tmp_path: Path
|
|
5739
|
+
) -> None:
|
|
5740
|
+
"""Same as above, but the override comes from
|
|
5741
|
+
`AssignmentSpec.runtime_ceiling_s` (a per-leg override) rather than
|
|
5742
|
+
the agent's own default — mirroring `_reap`'s own resolution order,
|
|
5743
|
+
where a positive per-leg value wins."""
|
|
5744
|
+
repo = _init_repo(tmp_path / "repo")
|
|
5745
|
+
server = _server(tmp_path, repo_path=repo)
|
|
5746
|
+
raised_ceiling = _DEFAULT_RUNTIME_CEILING_S * 3
|
|
5747
|
+
spec = AssignmentSpec(
|
|
5748
|
+
repo_name="api",
|
|
5749
|
+
repo_path=str(repo),
|
|
5750
|
+
issue_number=1,
|
|
5751
|
+
issue_title="t",
|
|
5752
|
+
briefing="b",
|
|
5753
|
+
branch="main",
|
|
5754
|
+
runtime_ceiling_s=raised_ceiling,
|
|
5755
|
+
)
|
|
5756
|
+
now = 1_000_000.0
|
|
5757
|
+
server._assignments["long-runner"] = AgentAssignment(
|
|
5758
|
+
id="long-runner", spec=spec, status=RUNNING,
|
|
5759
|
+
started_at=now - _PHANTOM_ASSIGNMENT_MAX_AGE_S - 3600.0,
|
|
5760
|
+
)
|
|
5761
|
+
assert server.active_assignment_count(now=now) == 1
|
|
5762
|
+
assert server._assignments["long-runner"].status == RUNNING
|
|
5763
|
+
|
|
5764
|
+
|
|
5765
|
+
class _FakeProc:
|
|
5766
|
+
"""Minimal stand-in for `subprocess.Popen` exercising only `.poll()`,
|
|
5767
|
+
for `_active_assignment_ids`'s liveness check (#3363 review)."""
|
|
5768
|
+
|
|
5769
|
+
def __init__(self, *, alive: bool) -> None:
|
|
5770
|
+
self._alive = alive
|
|
5771
|
+
|
|
5772
|
+
def poll(self) -> int | None:
|
|
5773
|
+
return None if self._alive else 0
|
|
5774
|
+
|
|
5775
|
+
|
|
5539
5776
|
# ── #1421: _persist() must not race on a shared tmp file, and a corrupt
|
|
5540
5777
|
# agent_state.json must be surfaced rather than silently discarded ───────────
|
|
5541
5778
|
|
|
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.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.501 → code_coordinator-0.5.502}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|