code-coordinator 0.5.536__tar.gz → 0.5.537__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.536 → code_coordinator-0.5.537}/PKG-INFO +1 -1
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/gate_a.py +51 -2
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/milestone_dispatch.py +72 -4
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_gate_a.py +34 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_milestone_dispatch.py +156 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/.gitignore +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/CLAUDE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/GOAL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/LICENSE +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/MANIFEST.in +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/README.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/agent.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/audit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/backup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/block_log.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/board_service.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/brain.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/claim.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/cli.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/client.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/codegen.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/comments.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/config.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dao.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/db.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/deps.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/drive.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/events.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/filelock.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/freshness.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/gates.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/goal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/context.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/models.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/render.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/health/units.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/hooks.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/interactive.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/models.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/network.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/notify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/openapi.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/parentage.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/plans.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/progress.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/release_window.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/reports.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/review.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/self_health.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/smoke.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/split_work.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/sql.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/test_author.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/test_report.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/usage.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/install-agent.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/pyproject.toml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/setup.cfg +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/__init__.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/backends.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/conftest.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_client.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_db.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_events.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_init.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_models.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_network.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_session.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_split.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_state.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.536 → code_coordinator-0.5.537}/tests/write_parity.py +0 -0
|
@@ -137,17 +137,46 @@ def _fetch_contract(repo_cfg, config, milestone_number: int) -> str | None:
|
|
|
137
137
|
number doesn't say whether it's a directory-discovered driver's slice
|
|
138
138
|
(shared repo-root tree) or an entrypoint-linked driver's relocated one,
|
|
139
139
|
so this checks each candidate :func:`coord.acceptance.
|
|
140
|
-
gate_a_contract_candidates` returns until one exists.
|
|
140
|
+
gate_a_contract_candidates` returns until one exists.
|
|
141
|
+
|
|
142
|
+
Returns ``None`` only when every candidate genuinely 404'd — a
|
|
143
|
+
confirmed absence. Raises :class:`coord.github_ops.GhTransientError`
|
|
144
|
+
(unchanged) when a candidate's read failed because ``gh`` classified it
|
|
145
|
+
as a GitHub rate limit (:func:`coord.github_ops._classify_rate_limit`,
|
|
146
|
+
surfaced as :class:`coord.github_ops.GhRateLimitError`) rather than a
|
|
147
|
+
404: #2973's bug was exactly this distinction getting lost — a
|
|
148
|
+
rate-limited read was folded into the same ``except RuntimeError:
|
|
149
|
+
continue`` as a real 404, so "I could not tell" silently became "it
|
|
150
|
+
does not exist". A transient failure on ANY candidate makes the whole
|
|
151
|
+
read inconclusive (a later candidate 404'ing doesn't confirm the
|
|
152
|
+
transiently-failed one is absent too), so it takes priority over a
|
|
153
|
+
clean ``None`` even if a later candidate genuinely 404s.
|
|
154
|
+
|
|
155
|
+
Narrower than it may sound: only a rate limit is currently classified
|
|
156
|
+
this way — a plain non-zero ``gh`` exit that isn't a rate limit (a bad
|
|
157
|
+
token, a genuine network failure, ``gh`` missing) still raises a plain
|
|
158
|
+
``RuntimeError``/:class:`coord.github_ops.GhError` and is still folded
|
|
159
|
+
into ``continue`` below, same as before this fix. Tracked as a
|
|
160
|
+
follow-up rather than widened here, since ``_is_transient_error``-style
|
|
161
|
+
reclassification of those cases is a broader, separately-reviewable
|
|
162
|
+
change to ``coord.github_ops._gh`` itself.
|
|
163
|
+
"""
|
|
141
164
|
from coord import github_ops # noqa: PLC0415
|
|
142
165
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
143
166
|
|
|
167
|
+
transient: github_ops.GhTransientError | None = None
|
|
144
168
|
for path in gate_a_contract_candidates(config, repo_cfg.name, milestone_number):
|
|
145
169
|
try:
|
|
146
170
|
return github_ops.get_repo_file(
|
|
147
171
|
repo_cfg.github, path, branch=repo_cfg.default_branch,
|
|
148
172
|
)
|
|
173
|
+
except github_ops.GhTransientError as e:
|
|
174
|
+
transient = transient or e
|
|
175
|
+
continue
|
|
149
176
|
except RuntimeError:
|
|
150
177
|
continue
|
|
178
|
+
if transient is not None:
|
|
179
|
+
raise transient
|
|
151
180
|
return None
|
|
152
181
|
|
|
153
182
|
|
|
@@ -216,7 +245,27 @@ def gate_a(
|
|
|
216
245
|
sys.exit(2)
|
|
217
246
|
milestone_number = int(milestone_number)
|
|
218
247
|
|
|
219
|
-
|
|
248
|
+
try:
|
|
249
|
+
contract_text = _fetch_contract(repo_cfg, cfg, milestone_number)
|
|
250
|
+
except github_ops.GhTransientError as e:
|
|
251
|
+
# #2973: a failed READ is a different claim than a confirmed
|
|
252
|
+
# ABSENCE — only the latter justifies telling the caller to
|
|
253
|
+
# dispatch `coord acceptance mock` (which, against a milestone
|
|
254
|
+
# that already has an approved contract, produces a duplicate/
|
|
255
|
+
# conflicting one). Mirror the issue-fetch path just above, which
|
|
256
|
+
# already reports this correctly: name the real cause and ask for
|
|
257
|
+
# a retry, print no remedy.
|
|
258
|
+
click.echo(
|
|
259
|
+
f"error: could not read the Gate-A contract for ms-{milestone_number} "
|
|
260
|
+
f"({repo}#{tracking_issue}): {e}",
|
|
261
|
+
err=True,
|
|
262
|
+
)
|
|
263
|
+
click.echo(
|
|
264
|
+
" This is a failed read, not a confirmed absence — the contract "
|
|
265
|
+
"may well exist. Retry once the rate limit clears.",
|
|
266
|
+
err=True,
|
|
267
|
+
)
|
|
268
|
+
sys.exit(1)
|
|
220
269
|
if contract_text is None:
|
|
221
270
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
222
271
|
|
|
@@ -197,6 +197,11 @@ def is_milestone_complete(ctx: MilestoneContext) -> bool:
|
|
|
197
197
|
|
|
198
198
|
# (repo_github, path, branch) -> True if the file exists at that ref.
|
|
199
199
|
# Injected so tests never hit `gh` — mirrors ``coord.claim``'s BranchLookup.
|
|
200
|
+
#
|
|
201
|
+
# #2973: may also raise ``coord.github_ops.GhTransientError`` — a failed
|
|
202
|
+
# read (auth, network, a GitHub rate limit) is a different claim than a
|
|
203
|
+
# confirmed 404, and callers (``gate_a_status``) must not fold the two
|
|
204
|
+
# together the way the pre-#2973 default implementation did.
|
|
200
205
|
GateAFileExists = Callable[[str, str, str], bool]
|
|
201
206
|
|
|
202
207
|
|
|
@@ -206,6 +211,11 @@ def _default_gate_a_file_exists(repo_github: str, path: str, branch: str) -> boo
|
|
|
206
211
|
try:
|
|
207
212
|
github_ops.get_repo_file(repo_github, path, branch=branch)
|
|
208
213
|
return True
|
|
214
|
+
except github_ops.GhTransientError:
|
|
215
|
+
# #2973: a rate-limited (or otherwise transient) read is NOT a
|
|
216
|
+
# confirmed absence — let it propagate so `gate_a_status` can tell
|
|
217
|
+
# the two apart, instead of silently becoming `False` here.
|
|
218
|
+
raise
|
|
209
219
|
except RuntimeError:
|
|
210
220
|
return False
|
|
211
221
|
|
|
@@ -235,17 +245,42 @@ def gate_a_status(
|
|
|
235
245
|
checking only the legacy repo-root path and reporting a false "Gate A
|
|
236
246
|
not satisfied" for a milestone whose contract already exists, just
|
|
237
247
|
somewhere else.
|
|
248
|
+
|
|
249
|
+
#2973: a candidate whose read *fails* (auth, network, a GitHub rate
|
|
250
|
+
limit — :class:`coord.github_ops.GhTransientError`) is a different claim
|
|
251
|
+
than a candidate that genuinely 404s, and only the latter justifies the
|
|
252
|
+
"run `coord acceptance mock`" remedy below — that remedy dispatches a
|
|
253
|
+
duplicate mock-author against a milestone that may already have an
|
|
254
|
+
approved contract. Mirrors :func:`coord.commands.gate_a._fetch_contract`:
|
|
255
|
+
a confirmed existence on ANY candidate wins outright (even after an
|
|
256
|
+
earlier candidate's transient failure), but a transient failure on any
|
|
257
|
+
checked candidate makes the whole read inconclusive when nothing else
|
|
258
|
+
confirms existence — reported distinctly, with no dispatch-a-mock-author
|
|
259
|
+
remedy attached.
|
|
238
260
|
"""
|
|
239
261
|
if not config.acceptance.has_driver(repo_cfg.name):
|
|
240
262
|
return None
|
|
241
263
|
|
|
264
|
+
from coord import github_ops # noqa: PLC0415
|
|
242
265
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
243
266
|
|
|
244
267
|
candidates = gate_a_contract_candidates(config, repo_cfg.name, milestone_number)
|
|
245
268
|
check = file_exists or _default_gate_a_file_exists
|
|
269
|
+
transient: github_ops.GhTransientError | None = None
|
|
246
270
|
for path in candidates:
|
|
247
|
-
|
|
248
|
-
|
|
271
|
+
try:
|
|
272
|
+
if check(repo_cfg.github, path, repo_cfg.default_branch):
|
|
273
|
+
return None
|
|
274
|
+
except github_ops.GhTransientError as e:
|
|
275
|
+
transient = transient or e
|
|
276
|
+
continue
|
|
277
|
+
if transient is not None:
|
|
278
|
+
return (
|
|
279
|
+
f"Gate A undetermined: could not read {repo_cfg.name}'s Gate-A "
|
|
280
|
+
f"contract on {repo_cfg.default_branch!r} ({transient}). This is "
|
|
281
|
+
"a failed read, not a confirmed absence — the contract may well "
|
|
282
|
+
"exist. Retry once the rate limit clears."
|
|
283
|
+
)
|
|
249
284
|
named = " or ".join(repr(p) for p in candidates)
|
|
250
285
|
return (
|
|
251
286
|
f"Gate A not satisfied: {named} does not exist yet on "
|
|
@@ -257,6 +292,17 @@ def gate_a_status(
|
|
|
257
292
|
|
|
258
293
|
# (repo_github, path, branch) -> file content, or None if it doesn't exist.
|
|
259
294
|
# Injected so tests never hit `gh` — mirrors GateAFileExists above.
|
|
295
|
+
#
|
|
296
|
+
# #2973: may also raise ``coord.github_ops.GhTransientError`` — same reason
|
|
297
|
+
# as ``GateAFileExists`` above. ``gate_a_signoff_status`` and
|
|
298
|
+
# ``issue_oracle_ready`` both build a ``GateAFileExists`` closure on top of
|
|
299
|
+
# this fetch (memoised, so the existence probe and the content read share
|
|
300
|
+
# one call), so this must propagate the same distinction they'd otherwise
|
|
301
|
+
# lose. Callers that only want *content*, never existence — the manifest/
|
|
302
|
+
# exempt reads in ``_fetch_manifest_data`` and the contract-hashing loop in
|
|
303
|
+
# ``gate_a_signoff`` — catch it locally and keep degrading to ``None``,
|
|
304
|
+
# their pre-#2973 behaviour: those reads are advisory/best-effort, not the
|
|
305
|
+
# gate whose misreporting #2973 is about.
|
|
260
306
|
ManifestFetch = Callable[[str, str, str], "str | None"]
|
|
261
307
|
|
|
262
308
|
|
|
@@ -265,6 +311,8 @@ def _default_fetch_repo_file(repo_github: str, path: str, branch: str) -> str |
|
|
|
265
311
|
|
|
266
312
|
try:
|
|
267
313
|
return github_ops.get_repo_file(repo_github, path, branch=branch)
|
|
314
|
+
except github_ops.GhTransientError:
|
|
315
|
+
raise
|
|
268
316
|
except RuntimeError:
|
|
269
317
|
return None
|
|
270
318
|
|
|
@@ -313,6 +361,7 @@ def _fetch_manifest_data(
|
|
|
313
361
|
legacy manifest and/or fragment file; a milestone's data lives under
|
|
314
362
|
exactly one, so the first root that produces anything wins.
|
|
315
363
|
"""
|
|
364
|
+
from coord import github_ops # noqa: PLC0415
|
|
316
365
|
from coord.acceptance import ( # noqa: PLC0415
|
|
317
366
|
ACCEPTANCE_DIRNAME,
|
|
318
367
|
MANIFEST_FRAGMENTS_DIRNAME,
|
|
@@ -326,7 +375,14 @@ def _fetch_manifest_data(
|
|
|
326
375
|
def _fetch_one(dir_path: str, filename_stem: str) -> "tuple[ManifestData, bool]":
|
|
327
376
|
for ext in (".yml", ".yaml", ".json"):
|
|
328
377
|
path = f"{dir_path}/{filename_stem}{ext}"
|
|
329
|
-
|
|
378
|
+
try:
|
|
379
|
+
content = fetch(repo_github, path, branch)
|
|
380
|
+
except github_ops.GhTransientError:
|
|
381
|
+
# #2973: this is an advisory manifest/exempt read, not the
|
|
382
|
+
# contract-existence gate — a transient GitHub error here
|
|
383
|
+
# degrades to "no manifest data yet" exactly like a genuine
|
|
384
|
+
# 404 always has, rather than crashing dispatch.
|
|
385
|
+
content = None
|
|
330
386
|
if content is None:
|
|
331
387
|
continue
|
|
332
388
|
try:
|
|
@@ -433,11 +489,23 @@ def gate_a_signoff(
|
|
|
433
489
|
for the common single-candidate case).
|
|
434
490
|
"""
|
|
435
491
|
from coord import gate_a as gate_a_mod # noqa: PLC0415
|
|
492
|
+
from coord import github_ops # noqa: PLC0415
|
|
436
493
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
437
494
|
|
|
438
495
|
contract_text: str | None = None
|
|
439
496
|
for path in gate_a_contract_candidates(config, repo_cfg.name, milestone_number):
|
|
440
|
-
|
|
497
|
+
try:
|
|
498
|
+
contract_text = fetch(repo_cfg.github, path, repo_cfg.default_branch)
|
|
499
|
+
except github_ops.GhTransientError:
|
|
500
|
+
# #2973: by the time this runs, `gate_a_status` has already
|
|
501
|
+
# confirmed SOME candidate exists (that's the precondition every
|
|
502
|
+
# caller of this checks first) — a transient failure re-reading
|
|
503
|
+
# a candidate here (this loop re-walks the same list, and a
|
|
504
|
+
# not-yet-memoised path can still hit a fresh rate limit) just
|
|
505
|
+
# means this particular candidate isn't the hashable one; keep
|
|
506
|
+
# walking rather than letting the read crash the signoff check.
|
|
507
|
+
contract_text = None
|
|
508
|
+
continue
|
|
441
509
|
if contract_text is not None:
|
|
442
510
|
break
|
|
443
511
|
return gate_a_mod.evaluate(
|
|
@@ -209,6 +209,40 @@ class TestGateACommand:
|
|
|
209
209
|
assert result.exit_code == 1
|
|
210
210
|
assert "coord acceptance mock" in result.output
|
|
211
211
|
|
|
212
|
+
def test_a_rate_limited_read_is_not_reported_as_a_missing_contract(
|
|
213
|
+
self, config_file: Path, coord_db
|
|
214
|
+
) -> None:
|
|
215
|
+
"""#2973: a failed contents-API read (GitHub secondary rate limit)
|
|
216
|
+
must not be folded into the same "does not exist" outcome as a
|
|
217
|
+
genuine 404 — the file was on `main` the whole time; only the read
|
|
218
|
+
failed. Reporting it as absent recommends `coord acceptance mock`,
|
|
219
|
+
which against an already-approved milestone dispatches a duplicate
|
|
220
|
+
mock-author."""
|
|
221
|
+
from coord.github_ops import GhRateLimitError
|
|
222
|
+
|
|
223
|
+
def _repo_file(repo: str, path: str, branch: str | None = None) -> str:
|
|
224
|
+
raise GhRateLimitError(
|
|
225
|
+
"gh api repos/acme/api/contents/tests/acceptance/ms-37/"
|
|
226
|
+
"contract.md?ref=main failed: API rate limit exceeded for "
|
|
227
|
+
"user ID 12345",
|
|
228
|
+
secondary=True,
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
with patch(
|
|
232
|
+
"coord.github_ops.get_issue",
|
|
233
|
+
return_value={"title": "ms-37 epic", "milestone": {"number": 37}, "labels": []},
|
|
234
|
+
), patch("coord.github_ops.get_repo_file", side_effect=_repo_file):
|
|
235
|
+
result = CliRunner().invoke(
|
|
236
|
+
main,
|
|
237
|
+
["gate-a", "--approved", "api", "900", "--config", str(config_file)],
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
assert result.exit_code == 1
|
|
241
|
+
assert "does not exist" not in result.output
|
|
242
|
+
assert "coord acceptance mock" not in result.output
|
|
243
|
+
assert "rate limit" in result.output.lower()
|
|
244
|
+
assert "retry" in result.output.lower()
|
|
245
|
+
|
|
212
246
|
def test_unknown_repo_exits_two(self, config_file: Path, coord_db) -> None:
|
|
213
247
|
result = _run(config_file, ["--approved", "nope", "900"])
|
|
214
248
|
assert result.exit_code == 2
|
|
@@ -450,6 +450,33 @@ class TestGateAStatus:
|
|
|
450
450
|
reason = gate_a_status(repo, cfg, 9)
|
|
451
451
|
assert reason is None
|
|
452
452
|
|
|
453
|
+
def test_rate_limited_read_is_not_reported_as_a_missing_contract(self) -> None:
|
|
454
|
+
"""#2973: `coord milestone dispatch`/`coord milestone gate-b` echo
|
|
455
|
+
this reason verbatim to a human. A rate-limited read must not be
|
|
456
|
+
folded into "does not exist" — that outcome recommends `coord
|
|
457
|
+
acceptance mock`, which against a milestone that already has an
|
|
458
|
+
approved contract dispatches a duplicate mock-author."""
|
|
459
|
+
from coord.github_ops import GhRateLimitError
|
|
460
|
+
|
|
461
|
+
cfg = self._cfg(with_driver=True)
|
|
462
|
+
repo = cfg.repo("api")
|
|
463
|
+
with patch(
|
|
464
|
+
"coord.github_ops.get_repo_file",
|
|
465
|
+
side_effect=GhRateLimitError(
|
|
466
|
+
"gh api repos/acme/api/contents/tests/acceptance/ms-9/"
|
|
467
|
+
"contract.md?ref=main failed: API rate limit exceeded for "
|
|
468
|
+
"user ID 12345",
|
|
469
|
+
secondary=True,
|
|
470
|
+
),
|
|
471
|
+
):
|
|
472
|
+
reason = gate_a_status(repo, cfg, 9)
|
|
473
|
+
assert reason is not None
|
|
474
|
+
assert "does not exist" not in reason
|
|
475
|
+
assert "coord acceptance mock" not in reason
|
|
476
|
+
assert "rate limit" in reason.lower()
|
|
477
|
+
assert "retry" in reason.lower()
|
|
478
|
+
|
|
479
|
+
|
|
453
480
|
|
|
454
481
|
class TestGateAStatusRelocatedSlices:
|
|
455
482
|
"""#2896: a repo with an entrypoint-linked route (the relocated
|
|
@@ -510,6 +537,53 @@ class TestGateAStatusRelocatedSlices:
|
|
|
510
537
|
assert "tests/acceptance/ms-65/contract.md" in reason
|
|
511
538
|
assert "tui/tests/acceptance/ms-65/contract.md" in reason
|
|
512
539
|
|
|
540
|
+
def test_a_later_candidate_confirming_existence_wins_over_an_earlier_rate_limit(
|
|
541
|
+
self,
|
|
542
|
+
) -> None:
|
|
543
|
+
"""#2973: mirrors `coord.commands.gate_a._fetch_contract`'s
|
|
544
|
+
precedence rule — a confirmed existence on ANY candidate wins
|
|
545
|
+
outright, even after an earlier candidate's transient failure. Only
|
|
546
|
+
when NOTHING confirms existence does the earlier transient failure
|
|
547
|
+
make the whole read inconclusive (see the next test)."""
|
|
548
|
+
from coord.github_ops import GhTransientError
|
|
549
|
+
|
|
550
|
+
cfg = self._cfg()
|
|
551
|
+
repo = cfg.repo("claude-coordinator")
|
|
552
|
+
calls: list[str] = []
|
|
553
|
+
|
|
554
|
+
def _check(repo_github: str, path: str, branch: str) -> bool:
|
|
555
|
+
calls.append(path)
|
|
556
|
+
if len(calls) == 1:
|
|
557
|
+
raise GhTransientError("secondary_rate_limit backoff active")
|
|
558
|
+
return True
|
|
559
|
+
|
|
560
|
+
assert gate_a_status(repo, cfg, 65, file_exists=_check) is None
|
|
561
|
+
assert len(calls) == 2
|
|
562
|
+
|
|
563
|
+
def test_an_unresolved_transient_failure_is_reported_distinctly_from_a_404(
|
|
564
|
+
self,
|
|
565
|
+
) -> None:
|
|
566
|
+
"""#2973: the first candidate's read fails transiently, the second
|
|
567
|
+
genuinely 404s — the transient failure must still win (it's
|
|
568
|
+
inconclusive, not a confirmed absence), and the block reason must
|
|
569
|
+
say so rather than recommending `coord acceptance mock`."""
|
|
570
|
+
from coord.github_ops import GhTransientError
|
|
571
|
+
|
|
572
|
+
cfg = self._cfg()
|
|
573
|
+
repo = cfg.repo("claude-coordinator")
|
|
574
|
+
|
|
575
|
+
def _check(repo_github: str, path: str, branch: str) -> bool:
|
|
576
|
+
if path == "tests/acceptance/ms-65/contract.md":
|
|
577
|
+
raise GhTransientError("secondary_rate_limit backoff active")
|
|
578
|
+
return False
|
|
579
|
+
|
|
580
|
+
reason = gate_a_status(repo, cfg, 65, file_exists=_check)
|
|
581
|
+
assert reason is not None
|
|
582
|
+
assert "does not exist" not in reason
|
|
583
|
+
assert "coord acceptance mock" not in reason
|
|
584
|
+
assert "rate limit" in reason.lower() or "secondary_rate_limit" in reason
|
|
585
|
+
assert "retry" in reason.lower()
|
|
586
|
+
|
|
513
587
|
|
|
514
588
|
# ── issue_oracle_ready (#1138, docs/ORACLE_LOOP.md issue-level gate) ─────────
|
|
515
589
|
|
|
@@ -928,6 +1002,55 @@ class TestIssueOracleReady:
|
|
|
928
1002
|
"acme/api", "tests/acceptance/ms-37/manifest.yml", branch="main",
|
|
929
1003
|
)
|
|
930
1004
|
|
|
1005
|
+
def test_rate_limited_default_file_exists_fails_open_without_crashing(self) -> None:
|
|
1006
|
+
"""#2973: `issue_oracle_ready`'s own docstring says a Gate-A-not-yet-
|
|
1007
|
+
satisfied outcome (confirmed 404 OR now, inconclusive) is a no-op —
|
|
1008
|
+
dispatch proceeds as if this gate doesn't apply, rather than firing
|
|
1009
|
+
a confusing refusal before the contract even exists. A rate-limited
|
|
1010
|
+
existence read must reach that same no-op WITHOUT raising through
|
|
1011
|
+
`issue_oracle_ready` — this is `coord.dispatch.
|
|
1012
|
+
enforce_oracle_readiness`'s hard gate on every Work dispatch, so an
|
|
1013
|
+
uncaught exception here would turn one rate-limited read into a
|
|
1014
|
+
fleet-wide dispatch outage, exactly the failure mode this module's
|
|
1015
|
+
fail-soft design exists to avoid."""
|
|
1016
|
+
from coord.github_ops import GhRateLimitError
|
|
1017
|
+
|
|
1018
|
+
cfg = _oracle_cfg()
|
|
1019
|
+
repo = cfg.repo("api")
|
|
1020
|
+
with patch(
|
|
1021
|
+
"coord.github_ops.get_repo_file",
|
|
1022
|
+
side_effect=GhRateLimitError("secondary_rate_limit backoff active"),
|
|
1023
|
+
):
|
|
1024
|
+
readiness = issue_oracle_ready(repo, cfg, 37, 1118)
|
|
1025
|
+
assert readiness.applies is False
|
|
1026
|
+
assert readiness.reason is None
|
|
1027
|
+
|
|
1028
|
+
def test_manifest_read_transient_error_degrades_to_no_slice_without_crashing(
|
|
1029
|
+
self,
|
|
1030
|
+
) -> None:
|
|
1031
|
+
"""#2973: once Gate A's existence check has passed, a *separate*
|
|
1032
|
+
transient failure reading the (advisory) manifest/exempt data must
|
|
1033
|
+
still degrade to "no slice authored yet" — the pre-existing
|
|
1034
|
+
fail-soft behaviour for a genuine 404 — rather than propagating as
|
|
1035
|
+
an uncaught exception."""
|
|
1036
|
+
from coord.github_ops import GhTransientError
|
|
1037
|
+
|
|
1038
|
+
cfg = _oracle_cfg()
|
|
1039
|
+
repo = cfg.repo("api")
|
|
1040
|
+
|
|
1041
|
+
def _fetch(repo_github: str, path: str, branch: str) -> str | None:
|
|
1042
|
+
if path.endswith("contract.md"):
|
|
1043
|
+
return CONTRACT
|
|
1044
|
+
raise GhTransientError("secondary_rate_limit backoff active")
|
|
1045
|
+
|
|
1046
|
+
readiness = issue_oracle_ready(
|
|
1047
|
+
repo, cfg, 37, 1118,
|
|
1048
|
+
file_exists=lambda *a: True, fetch_manifest=_fetch,
|
|
1049
|
+
fetch_gate_a_approval=_approval(),
|
|
1050
|
+
)
|
|
1051
|
+
assert readiness.applies is True
|
|
1052
|
+
assert readiness.has_slice is False
|
|
1053
|
+
|
|
931
1054
|
|
|
932
1055
|
class TestIssueOracleReadyRelocatedSlices:
|
|
933
1056
|
"""#2896: ms-65's contract/manifest live under
|
|
@@ -992,6 +1115,39 @@ class TestIssueOracleReadyRelocatedSlices:
|
|
|
992
1115
|
assert readiness.has_slice is False
|
|
993
1116
|
assert readiness.reason is not None
|
|
994
1117
|
|
|
1118
|
+
def test_transient_failure_on_one_candidate_does_not_crash_the_signoff_read(
|
|
1119
|
+
self,
|
|
1120
|
+
) -> None:
|
|
1121
|
+
"""#2973: the legacy repo-root candidate rate-limits, the relocated
|
|
1122
|
+
candidate is the real one and has content — `gate_a_status` already
|
|
1123
|
+
passes on the relocated candidate (see
|
|
1124
|
+
`TestGateAStatusRelocatedSlices`); `gate_a_signoff`'s own content
|
|
1125
|
+
read must likewise keep walking past the transient failure rather
|
|
1126
|
+
than raising through `issue_oracle_ready`."""
|
|
1127
|
+
from coord.github_ops import GhTransientError
|
|
1128
|
+
|
|
1129
|
+
cfg = self._cfg()
|
|
1130
|
+
repo = cfg.repo("claude-coordinator")
|
|
1131
|
+
mapping = {
|
|
1132
|
+
"tui/tests/acceptance/ms-65/contract.md": CONTRACT,
|
|
1133
|
+
"tui/tests/acceptance/ms-65/manifest.yml": "tests:\n ms65::a: 2282\n",
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
def fetch(repo_github: str, path: str, branch: str) -> str | None:
|
|
1137
|
+
if path == "tests/acceptance/ms-65/contract.md":
|
|
1138
|
+
raise GhTransientError("secondary_rate_limit backoff active")
|
|
1139
|
+
return mapping.get(path)
|
|
1140
|
+
|
|
1141
|
+
readiness = issue_oracle_ready(
|
|
1142
|
+
repo, cfg, 65, 2282,
|
|
1143
|
+
fetch_manifest=fetch,
|
|
1144
|
+
fetch_gate_a_approval=_approval(repo_name="claude-coordinator", milestone=65),
|
|
1145
|
+
)
|
|
1146
|
+
assert readiness.applies is True
|
|
1147
|
+
assert readiness.has_slice is True
|
|
1148
|
+
assert readiness.reason is None
|
|
1149
|
+
assert readiness.gate_a_state == "approved"
|
|
1150
|
+
|
|
995
1151
|
|
|
996
1152
|
# ── fetch_milestone_context ──────────────────────────────────────────────────
|
|
997
1153
|
|
|
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.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.536 → code_coordinator-0.5.537}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.536 → code_coordinator-0.5.537}/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
|