code-coordinator 0.5.490__tar.gz → 0.5.491__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.490 → code_coordinator-0.5.491}/PKG-INFO +1 -1
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/diagnose.py +164 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/state.py +30 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_diagnose.py +153 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_state.py +40 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/.gitignore +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/CLAUDE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/GOAL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/LICENSE +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/MANIFEST.in +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/README.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/agent.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/audit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/backup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/block_log.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/board_service.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/brain.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/claim.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/cli.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/client.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/codegen.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/comments.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/config.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dao.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/db.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/deps.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/drive.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/events.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/filelock.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/freshness.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/gates.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/goal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/context.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/models.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/render.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/health/units.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/hooks.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/interactive.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/models.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/network.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/notify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/openapi.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/parentage.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/plans.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/progress.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/release_window.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/reports.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/review.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/self_health.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/smoke.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/split_work.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/sql.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/test_author.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/test_report.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/usage.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/install-agent.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/pyproject.toml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/setup.cfg +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/__init__.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/backends.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/conftest.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_client.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_config.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_db.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_events.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_init.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_models.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_network.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_session.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_split.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.490 → code_coordinator-0.5.491}/tests/write_parity.py +0 -0
|
@@ -735,6 +735,22 @@ def diagnose_stage(
|
|
|
735
735
|
latest = _latest(assignments)
|
|
736
736
|
|
|
737
737
|
if latest is None:
|
|
738
|
+
# #3383: a `review_claims` row held for a work assignment with ZERO
|
|
739
|
+
# review/test-author/mock-author rows (never dispatched, or all
|
|
740
|
+
# deleted) is unreachable from `_recover_review` below — that
|
|
741
|
+
# function only ever runs once `latest` above is non-None. Before
|
|
742
|
+
# this, `--stage review` hit this exact branch and reported the
|
|
743
|
+
# stage healthy while `dispatch_review` was permanently wedged
|
|
744
|
+
# behind the leaked claim (#3206's failure one state earlier — see
|
|
745
|
+
# `_leaked_review_claim_without_row`'s docstring). Checked BEFORE
|
|
746
|
+
# the "no review assignment" finding below, on claim state rather
|
|
747
|
+
# than on row existence, exactly as #3206 already does once a row
|
|
748
|
+
# exists.
|
|
749
|
+
if stage == "review" and _leaked_review_claim_without_row(
|
|
750
|
+
board, repo_name, issue_number, res, reset=reset, dry_run=dry_run,
|
|
751
|
+
):
|
|
752
|
+
_cleanup_issue(board, config, repo_name, issue_number, res, dry_run=dry_run, reset=reset)
|
|
753
|
+
return res
|
|
738
754
|
res.findings.append(f"no {stage} assignment on the board for #{issue_number}")
|
|
739
755
|
res.recovered = True # nothing wedged
|
|
740
756
|
# Still run the issue-wide cleanup below.
|
|
@@ -818,6 +834,154 @@ def diagnose_stage(
|
|
|
818
834
|
return res
|
|
819
835
|
|
|
820
836
|
|
|
837
|
+
# #3383: a claim taken by `claim_review_dispatch` shortly before its caller
|
|
838
|
+
# inserts the review row it's claiming for looks, from a single read,
|
|
839
|
+
# identical to a genuinely leaked claim — the same false-positive window
|
|
840
|
+
# `_recover_review` below already documents for the terminal-row case
|
|
841
|
+
# (#3206). Below this age the claim is reported but NOT offered for release;
|
|
842
|
+
# above it, treated as leaked.
|
|
843
|
+
#
|
|
844
|
+
# NOT short on purpose — `dispatch_review` (coord/review.py) claims at
|
|
845
|
+
# `claim_review_dispatch` (~line 3070) and does NOT insert the review's
|
|
846
|
+
# `assignments` row until `record_dispatched_assignment` (~line 3763); its
|
|
847
|
+
# own `except Exception` handler at ~line 3815 calls the ~500 lines between
|
|
848
|
+
# those two points "pr_lookup, briefing assembly, JSON handling of
|
|
849
|
+
# agent_response, ...". That gap includes several sequential GitHub API
|
|
850
|
+
# calls (`work_is_terminal`, `branch_commits_ahead`, `pr_lookup`,
|
|
851
|
+
# `branch_exists_on_remote`, `pr_diff`, `get_compare_files`,
|
|
852
|
+
# `get_compare_diff`, `get_pr_commit_messages`, an issue-body fetch) and then
|
|
853
|
+
# a candidate loop that POSTs to each reviewer machine's `/assign` with
|
|
854
|
+
# `timeout=ASSIGN_POST_TIMEOUT_SECS` (`coord/dispatch.py` — 60.0s),
|
|
855
|
+
# falling through to the next candidate on rejection/timeout/unreachability.
|
|
856
|
+
# A single slow/unreachable first-choice reviewer machine alone can burn the
|
|
857
|
+
# full 60s before a second candidate is even tried, and there is no hard cap
|
|
858
|
+
# on candidate count — so this has to clear that whole chain, not one
|
|
859
|
+
# network round trip. Picked as a small multiple of minutes so it
|
|
860
|
+
# comfortably outlasts a worst-case multi-candidate dispatch plus GitHub API
|
|
861
|
+
# latency, while still being short enough that a *genuinely* leaked claim
|
|
862
|
+
# doesn't sit unrecoverable for long once someone runs `--reset`.
|
|
863
|
+
_REVIEW_CLAIM_LEAK_GRACE_SECS = 600.0
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
def _leaked_review_claim_without_row(
|
|
867
|
+
board: "Board",
|
|
868
|
+
repo_name: str,
|
|
869
|
+
issue_number: int,
|
|
870
|
+
res: DiagnoseResult,
|
|
871
|
+
*,
|
|
872
|
+
reset: bool,
|
|
873
|
+
dry_run: bool,
|
|
874
|
+
) -> bool:
|
|
875
|
+
"""#3383: detect (and, under ``--reset``, release) a leaked
|
|
876
|
+
``review_claims`` row for a work assignment that has NO review /
|
|
877
|
+
test-author / mock-author row at all — the one shape `_recover_review`
|
|
878
|
+
can never see, because `diagnose_stage` only calls it once
|
|
879
|
+
`stage_assignments(..., "review")` finds a row. A claim can be (and, per
|
|
880
|
+
the issue that reported this, was) taken and never released when the
|
|
881
|
+
work assignment it's keyed on was dispatched to review, that review
|
|
882
|
+
never got as far as inserting its own `assignments` row (or its row was
|
|
883
|
+
later deleted, e.g. by an earlier `--reset`), and the claim outlived it.
|
|
884
|
+
Every future `dispatch_review` for that work assignment then denies
|
|
885
|
+
forever with the misleading #3113 "lost the atomic dispatch-claim race"
|
|
886
|
+
reason — while `coord diagnose --stage review` (which hit the
|
|
887
|
+
`latest is None` "no review assignment" branch before this function
|
|
888
|
+
existed) reported the stage healthy.
|
|
889
|
+
|
|
890
|
+
Checked against the WORK assignment's id — `claim_review_dispatch` is
|
|
891
|
+
keyed on the id of the assignment BEING reviewed, never on a review
|
|
892
|
+
row's own id (see `_recover_review`'s `work_assignment_id` resolution).
|
|
893
|
+
|
|
894
|
+
Returns ``True`` when a claim was found (whether or not it could be
|
|
895
|
+
released yet — see the grace-period case) and this function has already
|
|
896
|
+
appended the appropriate finding(s); ``False`` when there is nothing to
|
|
897
|
+
report, in which case the caller's own "no review assignment" message
|
|
898
|
+
is the correct (healthy) diagnosis.
|
|
899
|
+
"""
|
|
900
|
+
from coord.state import ( # noqa: PLC0415
|
|
901
|
+
has_review_claim,
|
|
902
|
+
release_review_dispatch_claim,
|
|
903
|
+
review_claim_age_secs,
|
|
904
|
+
)
|
|
905
|
+
|
|
906
|
+
# Narrowing, acknowledged: this only checks the NEWEST `work`-type row
|
|
907
|
+
# for the issue, whereas `claim_review_dispatch` is keyed on whatever
|
|
908
|
+
# work-assignment id `dispatch_review` was actually called with. If the
|
|
909
|
+
# issue ever accumulates more than one `work` row (e.g. a rework/retry
|
|
910
|
+
# dispatched after the original work assignment that leaked the claim),
|
|
911
|
+
# a claim held on the *older* id is invisible here because this checks
|
|
912
|
+
# only the *newest* one. `_recover_review` avoids this by reading the
|
|
913
|
+
# exact id off the review row's own `review_of_assignment_id` FK — there
|
|
914
|
+
# is no review row here to read that FK from, so this has to guess.
|
|
915
|
+
# Probably rare, and the issue's own "worth also considering" `coord
|
|
916
|
+
# doctor` suggestion is the more complete fix; left as a known gap
|
|
917
|
+
# rather than iterating over every `work` row here.
|
|
918
|
+
work_rows = stage_assignments(board, repo_name, issue_number, "work")
|
|
919
|
+
work_latest = _latest(work_rows)
|
|
920
|
+
if work_latest is None or not work_latest.assignment_id:
|
|
921
|
+
return False
|
|
922
|
+
work_assignment_id = work_latest.assignment_id
|
|
923
|
+
if not has_review_claim(work_assignment_id):
|
|
924
|
+
return False
|
|
925
|
+
|
|
926
|
+
age = review_claim_age_secs(work_assignment_id)
|
|
927
|
+
if age is not None and age < _REVIEW_CLAIM_LEAK_GRACE_SECS:
|
|
928
|
+
# Too fresh to distinguish from an in-flight `dispatch_review` call
|
|
929
|
+
# that has taken the claim but not yet inserted its review row —
|
|
930
|
+
# report it, but don't offer to release something that might still
|
|
931
|
+
# be a live, wanted dispatch.
|
|
932
|
+
res.findings.append(
|
|
933
|
+
f"work assignment {work_assignment_id} holds a review-dispatch "
|
|
934
|
+
f"claim taken {age:.1f}s ago with no review row yet — likely an "
|
|
935
|
+
"in-flight dispatch_review, not a leak; re-run diagnose again "
|
|
936
|
+
"shortly if this persists"
|
|
937
|
+
)
|
|
938
|
+
res.recovered = True
|
|
939
|
+
return True
|
|
940
|
+
|
|
941
|
+
res.findings.append(
|
|
942
|
+
f"no review assignment exists for #{issue_number}, but work "
|
|
943
|
+
f"assignment {work_assignment_id} still holds a review-dispatch "
|
|
944
|
+
"claim (leaked review_claims row, #3383 — the #3206 class one state "
|
|
945
|
+
"earlier) — every future dispatch_review for this work assignment "
|
|
946
|
+
"will deny with the misleading #3113 'lost the atomic dispatch-claim "
|
|
947
|
+
"race' reason until it is released. Re-run with --reset to release it."
|
|
948
|
+
)
|
|
949
|
+
res.recovered = False
|
|
950
|
+
res.needs_reset = True
|
|
951
|
+
|
|
952
|
+
if reset:
|
|
953
|
+
if dry_run:
|
|
954
|
+
res.findings.append(
|
|
955
|
+
"(dry-run) would release the leaked review-dispatch claim"
|
|
956
|
+
)
|
|
957
|
+
return True
|
|
958
|
+
release_review_dispatch_claim(work_assignment_id)
|
|
959
|
+
if has_review_claim(work_assignment_id):
|
|
960
|
+
res.findings.append(
|
|
961
|
+
f"release requested for {work_assignment_id}'s "
|
|
962
|
+
"review-dispatch claim, but it is still present on re-read "
|
|
963
|
+
"— the release did NOT persist"
|
|
964
|
+
)
|
|
965
|
+
else:
|
|
966
|
+
res.actions_taken.append(
|
|
967
|
+
"released leaked review-dispatch claim for work assignment "
|
|
968
|
+
f"{work_assignment_id} — dispatch_review is now re-dispatchable"
|
|
969
|
+
)
|
|
970
|
+
res.reset_performed = True
|
|
971
|
+
res.recovered = True
|
|
972
|
+
res.branch_preserved = True
|
|
973
|
+
# Matches `_do_reset`'s (#3206) convention: a successful release
|
|
974
|
+
# must clear the `needs_reset=True` set a few lines above, or
|
|
975
|
+
# `to_json_dict()` — documented as read by the TUI without
|
|
976
|
+
# scraping human-readable lines — carries the internally
|
|
977
|
+
# contradictory `recovered=true needs_reset=true
|
|
978
|
+
# reset_performed=true` even though the plain-text CLI's "still
|
|
979
|
+
# wedged" warning happens to be gated on `not reset` and so never
|
|
980
|
+
# shows it.
|
|
981
|
+
res.needs_reset = False
|
|
982
|
+
return True
|
|
983
|
+
|
|
984
|
+
|
|
821
985
|
def _recover_review(
|
|
822
986
|
board, config, latest, state, res: DiagnoseResult, *, dry_run: bool
|
|
823
987
|
) -> None:
|
|
@@ -2388,6 +2388,36 @@ def has_review_claim(of_assignment_id: str) -> bool:
|
|
|
2388
2388
|
return row is not None
|
|
2389
2389
|
|
|
2390
2390
|
|
|
2391
|
+
def review_claim_age_secs(of_assignment_id: str) -> float | None:
|
|
2392
|
+
"""Seconds since *of_assignment_id*'s ``review_claims`` row was taken, or
|
|
2393
|
+
``None`` when no claim is held (#3383).
|
|
2394
|
+
|
|
2395
|
+
Sibling read to :func:`has_review_claim`, used by ``coord diagnose
|
|
2396
|
+
--stage review`` to gate a claim release on age: a claim taken
|
|
2397
|
+
microseconds ago by an in-flight :func:`claim_review_dispatch` call that
|
|
2398
|
+
has not yet inserted its review ``assignments`` row is indistinguishable,
|
|
2399
|
+
from a single read, from a genuinely leaked claim — exactly the
|
|
2400
|
+
false-positive window already documented on the terminal-review-row path
|
|
2401
|
+
in ``diagnose._recover_review`` (#3206). Comparing ``claimed_at`` against
|
|
2402
|
+
a short grace period lets the caller tell "just claimed, dispatch still
|
|
2403
|
+
running" apart from "claimed a long time ago, nothing is coming".
|
|
2404
|
+
|
|
2405
|
+
Same local-DB-only caveat as :func:`has_review_claim` — reads the local
|
|
2406
|
+
connection, not the daemon, so it undercounts on a thin client.
|
|
2407
|
+
"""
|
|
2408
|
+
if not of_assignment_id:
|
|
2409
|
+
return None
|
|
2410
|
+
conn = get_connection()
|
|
2411
|
+
row = sql.execute(
|
|
2412
|
+
conn,
|
|
2413
|
+
"SELECT claimed_at FROM review_claims WHERE of_assignment_id=?",
|
|
2414
|
+
(of_assignment_id,),
|
|
2415
|
+
).fetchone()
|
|
2416
|
+
if row is None or row[0] is None:
|
|
2417
|
+
return None
|
|
2418
|
+
return time.time() - row[0]
|
|
2419
|
+
|
|
2420
|
+
|
|
2391
2421
|
def release_review_dispatch_claim(of_assignment_id: str) -> None:
|
|
2392
2422
|
"""Release a claim taken by :func:`claim_review_dispatch`.
|
|
2393
2423
|
|
|
@@ -1220,6 +1220,24 @@ def _record(a: Assignment) -> None:
|
|
|
1220
1220
|
conn.commit()
|
|
1221
1221
|
|
|
1222
1222
|
|
|
1223
|
+
def _backdate_review_claim(of_assignment_id: str, *, seconds_ago: float) -> None:
|
|
1224
|
+
"""Push a `review_claims` row's `claimed_at` into the past — used to put
|
|
1225
|
+
a claim outside #3383's grace period (real claims in these tests are
|
|
1226
|
+
taken via `state.claim_review_dispatch`, which stamps `time.time()`;
|
|
1227
|
+
without this every test claim looks "just taken", which is exactly the
|
|
1228
|
+
fresh-claim case the grace period is meant to protect)."""
|
|
1229
|
+
import time as _time
|
|
1230
|
+
|
|
1231
|
+
from coord.db import get_connection
|
|
1232
|
+
|
|
1233
|
+
conn = get_connection()
|
|
1234
|
+
conn.execute(
|
|
1235
|
+
"UPDATE review_claims SET claimed_at=? WHERE of_assignment_id=?",
|
|
1236
|
+
(_time.time() - seconds_ago, of_assignment_id),
|
|
1237
|
+
)
|
|
1238
|
+
conn.commit()
|
|
1239
|
+
|
|
1240
|
+
|
|
1223
1241
|
def test_reset_review_real_db_deletes_review_when_latest_is_the_review_row(
|
|
1224
1242
|
monkeypatch, config, coord_db
|
|
1225
1243
|
) -> None:
|
|
@@ -1381,6 +1399,141 @@ def test_diagnose_review_healthy_when_no_claim_leaked(
|
|
|
1381
1399
|
assert any("healthy" in f for f in res.findings)
|
|
1382
1400
|
|
|
1383
1401
|
|
|
1402
|
+
def test_diagnose_review_detects_leaked_claim_with_no_review_rows(
|
|
1403
|
+
monkeypatch, config, coord_db
|
|
1404
|
+
) -> None:
|
|
1405
|
+
"""#3383 regression: a `review_claims` row held for a work assignment
|
|
1406
|
+
that has NO review/test-author/mock-author row AT ALL (the state one
|
|
1407
|
+
step earlier than #3206's terminal-row case) used to be unreachable —
|
|
1408
|
+
`stage_assignments(..., "review")` finds nothing, `latest is None`, and
|
|
1409
|
+
`diagnose_stage` took the "no review assignment on the board" early
|
|
1410
|
+
return before ever calling `_recover_review` (which is the only place
|
|
1411
|
+
that cross-checked `review_claims`). This left the claim permanently
|
|
1412
|
+
wedged with `coord diagnose --stage review --reset` reporting the stage
|
|
1413
|
+
healthy AND doing nothing. This reproduces against unfixed `main`: the
|
|
1414
|
+
old early return set `recovered=True` unconditionally with no claim
|
|
1415
|
+
check at all.
|
|
1416
|
+
"""
|
|
1417
|
+
from coord import state
|
|
1418
|
+
|
|
1419
|
+
_stub(monkeypatch, session="dead")
|
|
1420
|
+
_record(_assign(
|
|
1421
|
+
aid="w1", typ="work", status="done", review_state="dispatched",
|
|
1422
|
+
dispatched_at=100.0,
|
|
1423
|
+
))
|
|
1424
|
+
# Simulate the leak: a claim was taken (e.g. by a `dispatch_review` call
|
|
1425
|
+
# whose review row never landed, or was later deleted) and never
|
|
1426
|
+
# released — no review row exists to cross-check it against. Backdated
|
|
1427
|
+
# well past the #3383 grace period so it isn't mistaken for a claim an
|
|
1428
|
+
# in-flight `dispatch_review` just took (see the fresh-claim test below).
|
|
1429
|
+
assert state.claim_review_dispatch("w1") is True
|
|
1430
|
+
_backdate_review_claim("w1", seconds_ago=3600.0)
|
|
1431
|
+
|
|
1432
|
+
board = Board(completed=[_assign(aid="w1", typ="work", status="done", dispatched_at=100.0)])
|
|
1433
|
+
|
|
1434
|
+
res = diagnose.diagnose_stage(board, config, "api", 42, "review", dry_run=True)
|
|
1435
|
+
|
|
1436
|
+
assert res.recovered is False
|
|
1437
|
+
assert res.needs_reset is True
|
|
1438
|
+
assert any("review_claims" in f or "review-dispatch claim" in f for f in res.findings)
|
|
1439
|
+
# A dry-run must not touch the claim.
|
|
1440
|
+
assert state.claim_review_dispatch("w1") is False
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
def test_reset_review_releases_leaked_claim_with_no_review_rows(
|
|
1444
|
+
monkeypatch, config, coord_db
|
|
1445
|
+
) -> None:
|
|
1446
|
+
"""#3383: `--reset` must actually clear the leaked claim detected above
|
|
1447
|
+
so `coord review <work-assignment-id>` becomes dispatchable again — the
|
|
1448
|
+
whole point of the issue (there was previously NO operator CLI path at
|
|
1449
|
+
all to clear this)."""
|
|
1450
|
+
from coord import state
|
|
1451
|
+
|
|
1452
|
+
_stub(monkeypatch, session="dead")
|
|
1453
|
+
_record(_assign(
|
|
1454
|
+
aid="w1", typ="work", status="done", review_state="dispatched",
|
|
1455
|
+
dispatched_at=100.0,
|
|
1456
|
+
))
|
|
1457
|
+
assert state.claim_review_dispatch("w1") is True
|
|
1458
|
+
_backdate_review_claim("w1", seconds_ago=3600.0)
|
|
1459
|
+
|
|
1460
|
+
board = Board(completed=[_assign(aid="w1", typ="work", status="done", dispatched_at=100.0)])
|
|
1461
|
+
|
|
1462
|
+
res = diagnose.diagnose_stage(board, config, "api", 42, "review", reset=True)
|
|
1463
|
+
|
|
1464
|
+
assert res.reset_performed is True
|
|
1465
|
+
assert res.recovered is True
|
|
1466
|
+
# The claim is gone — a fresh claim attempt for "w1" must succeed again,
|
|
1467
|
+
# exactly like `dispatch_review` would need for a real re-dispatch.
|
|
1468
|
+
assert state.claim_review_dispatch("w1") is True
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
def test_reset_review_reports_leaked_claim_delete_failure_when_row_survives(
|
|
1472
|
+
monkeypatch, config, coord_db
|
|
1473
|
+
) -> None:
|
|
1474
|
+
"""#3383 non-blocking review gap: `_leaked_review_claim_without_row`'s
|
|
1475
|
+
own release path has the same "trust the write, not a re-read" risk that
|
|
1476
|
+
`_do_reset`'s analogous #3206 terminal-row path already guards against
|
|
1477
|
+
(see `test_reset_review_reports_delete_failure_when_row_survives`
|
|
1478
|
+
above) — but nothing exercised it for this no-review-row shape. Simulate
|
|
1479
|
+
`release_review_dispatch_claim` reporting success while the claim is
|
|
1480
|
+
still present on re-read (mirrors the coord-tui#49 non-persisting write)
|
|
1481
|
+
and assert the action line is honest about it rather than claiming the
|
|
1482
|
+
claim is gone."""
|
|
1483
|
+
from coord import state
|
|
1484
|
+
|
|
1485
|
+
_stub(monkeypatch, session="dead")
|
|
1486
|
+
_record(_assign(
|
|
1487
|
+
aid="w1", typ="work", status="done", review_state="dispatched",
|
|
1488
|
+
dispatched_at=100.0,
|
|
1489
|
+
))
|
|
1490
|
+
assert state.claim_review_dispatch("w1") is True
|
|
1491
|
+
_backdate_review_claim("w1", seconds_ago=3600.0)
|
|
1492
|
+
|
|
1493
|
+
# Simulate a release call that reports success but never actually
|
|
1494
|
+
# removes the row — `has_review_claim` still finds it on re-read.
|
|
1495
|
+
monkeypatch.setattr(state, "release_review_dispatch_claim", lambda *a, **k: None)
|
|
1496
|
+
|
|
1497
|
+
board = Board(completed=[_assign(aid="w1", typ="work", status="done", dispatched_at=100.0)])
|
|
1498
|
+
|
|
1499
|
+
res = diagnose.diagnose_stage(board, config, "api", 42, "review", reset=True)
|
|
1500
|
+
|
|
1501
|
+
assert res.reset_performed is False
|
|
1502
|
+
assert res.recovered is False
|
|
1503
|
+
assert res.needs_reset is True
|
|
1504
|
+
assert any(
|
|
1505
|
+
"did NOT persist" in f
|
|
1506
|
+
for f in res.findings
|
|
1507
|
+
)
|
|
1508
|
+
# Still held — the release never actually took.
|
|
1509
|
+
assert state.claim_review_dispatch("w1") is False
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
def test_diagnose_review_fresh_claim_without_row_not_treated_as_leaked(
|
|
1513
|
+
monkeypatch, config, coord_db
|
|
1514
|
+
) -> None:
|
|
1515
|
+
"""Sibling of the two tests above: a claim taken only moments ago, with
|
|
1516
|
+
no review row yet, is indistinguishable from an in-flight
|
|
1517
|
+
`dispatch_review` call that has claimed but not yet inserted its review
|
|
1518
|
+
row — the same false-positive window `_recover_review` already
|
|
1519
|
+
documents for the terminal-row case (#3206), one state earlier. Must be
|
|
1520
|
+
reported but NOT offered for release while this fresh."""
|
|
1521
|
+
from coord import state
|
|
1522
|
+
|
|
1523
|
+
_stub(monkeypatch, session="dead")
|
|
1524
|
+
_record(_assign(aid="w1", typ="work", status="done", dispatched_at=100.0))
|
|
1525
|
+
assert state.claim_review_dispatch("w1") is True # claimed "just now"
|
|
1526
|
+
|
|
1527
|
+
board = Board(completed=[_assign(aid="w1", typ="work", status="done", dispatched_at=100.0)])
|
|
1528
|
+
|
|
1529
|
+
res = diagnose.diagnose_stage(board, config, "api", 42, "review", dry_run=True)
|
|
1530
|
+
|
|
1531
|
+
assert res.needs_reset is False
|
|
1532
|
+
assert any("in-flight dispatch_review" in f for f in res.findings)
|
|
1533
|
+
# Untouched — still held.
|
|
1534
|
+
assert state.claim_review_dispatch("w1") is False
|
|
1535
|
+
|
|
1536
|
+
|
|
1384
1537
|
def test_reset_review_reports_delete_failure_when_row_survives(
|
|
1385
1538
|
monkeypatch, config, coord_db
|
|
1386
1539
|
) -> None:
|
|
@@ -4645,6 +4645,46 @@ class TestHasReviewClaim:
|
|
|
4645
4645
|
assert state.has_review_claim("") is False
|
|
4646
4646
|
|
|
4647
4647
|
|
|
4648
|
+
class TestReviewClaimAgeSecs:
|
|
4649
|
+
"""`review_claim_age_secs` (#3383): sibling read to `has_review_claim`
|
|
4650
|
+
used by `coord diagnose --stage review` to gate a claim release on age
|
|
4651
|
+
— a claim taken microseconds ago by an in-flight `claim_review_dispatch`
|
|
4652
|
+
call that hasn't inserted its review row yet must not be released as if
|
|
4653
|
+
it were a leak (the same false-positive window #3206 documents for the
|
|
4654
|
+
terminal-row case)."""
|
|
4655
|
+
|
|
4656
|
+
def test_small_positive_age_while_freshly_claimed(self, coord_db) -> None:
|
|
4657
|
+
assert state.claim_review_dispatch("w1") is True
|
|
4658
|
+
age = state.review_claim_age_secs("w1")
|
|
4659
|
+
assert age is not None
|
|
4660
|
+
assert 0.0 <= age < 5.0
|
|
4661
|
+
|
|
4662
|
+
def test_none_when_never_claimed(self, coord_db) -> None:
|
|
4663
|
+
assert state.review_claim_age_secs("never-claimed") is None
|
|
4664
|
+
|
|
4665
|
+
def test_none_after_release(self, coord_db) -> None:
|
|
4666
|
+
assert state.claim_review_dispatch("w1") is True
|
|
4667
|
+
state.release_review_dispatch_claim("w1")
|
|
4668
|
+
assert state.review_claim_age_secs("w1") is None
|
|
4669
|
+
|
|
4670
|
+
def test_none_for_empty_id(self, coord_db) -> None:
|
|
4671
|
+
assert state.review_claim_age_secs("") is None
|
|
4672
|
+
|
|
4673
|
+
def test_reflects_a_backdated_claim(self, coord_db) -> None:
|
|
4674
|
+
from coord.db import get_connection
|
|
4675
|
+
|
|
4676
|
+
assert state.claim_review_dispatch("w1") is True
|
|
4677
|
+
conn = get_connection()
|
|
4678
|
+
conn.execute(
|
|
4679
|
+
"UPDATE review_claims SET claimed_at=? WHERE of_assignment_id=?",
|
|
4680
|
+
(time.time() - 3600.0, "w1"),
|
|
4681
|
+
)
|
|
4682
|
+
conn.commit()
|
|
4683
|
+
age = state.review_claim_age_secs("w1")
|
|
4684
|
+
assert age is not None
|
|
4685
|
+
assert age >= 3599.0
|
|
4686
|
+
|
|
4687
|
+
|
|
4648
4688
|
class TestMarkNotifiedReleasesLeakedReviewClaim:
|
|
4649
4689
|
"""#3206 root-cause regression: a review assignment reaped by
|
|
4650
4690
|
`AgentServer._reap`'s SIGKILL max-wait ceiling writes its terminal
|
|
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.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.490 → code_coordinator-0.5.491}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|