code-coordinator 0.5.543__tar.gz → 0.5.545__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.543 → code_coordinator-0.5.545}/PKG-INFO +6 -1
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/PKG-INFO +6 -1
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/SOURCES.txt +2 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/requires.txt +8 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/scm_file_list.json +2 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/acceptance_drivers.py +94 -7
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/acceptance.py +2 -2
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/milestone.py +64 -5
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/milestone_dispatch.py +145 -20
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/milestone_order.py +13 -5
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/serve_app.py +60 -13
- code_coordinator-0.5.545/coord/tui_pty_driver.py +871 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/pyproject.toml +19 -1
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_acceptance_drivers.py +137 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_acceptance.py +1 -1
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_order.py +94 -5
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive.py +15 -4
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_milestone_dispatch.py +125 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_milestone_gate.py +96 -0
- code_coordinator-0.5.545/tests/test_tui_pty_driver.py +620 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/.gitignore +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/CLAUDE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/GOAL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/LICENSE +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/MANIFEST.in +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/README.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/agent.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/audit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/backup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/block_log.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/board_service.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/brain.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/claim.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/cli.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/client.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/codegen.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/comments.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/config.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dao.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/db.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/deps.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/drive.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/events.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/filelock.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/freshness.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/gates.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/goal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/context.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/models.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/render.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/health/units.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/hooks.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/interactive.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/models.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/network.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/notify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/openapi.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/parentage.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/plans.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/progress.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/release_window.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/reports.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/review.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/self_health.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/smoke.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/smoke_tags.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/split_work.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/sql.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/test_author.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/test_report.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/usage.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/install-agent.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/setup.cfg +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/__init__.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/backends.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/conftest.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_client.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_db.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_events.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_init.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_models.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_network.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_session.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_split.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_state.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.543 → code_coordinator-0.5.545}/tests/write_parity.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-coordinator
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.545
|
|
4
4
|
Summary: Coordinate Claude Code workers across multiple machines and repos.
|
|
5
5
|
Author-email: John Donaghy <johnfdonaghy@gmail.com>
|
|
6
6
|
License-Expression: LicenseRef-FSL-1.1-MIT
|
|
@@ -30,12 +30,17 @@ Provides-Extra: postgres
|
|
|
30
30
|
Requires-Dist: psycopg[binary]>=3.1; extra == "postgres"
|
|
31
31
|
Provides-Extra: reports-xlsx
|
|
32
32
|
Requires-Dist: openpyxl>=3.1; extra == "reports-xlsx"
|
|
33
|
+
Provides-Extra: tui-pty
|
|
34
|
+
Requires-Dist: pyte>=0.8; extra == "tui-pty"
|
|
35
|
+
Requires-Dist: pywinpty>=2.0; sys_platform == "win32" and extra == "tui-pty"
|
|
33
36
|
Provides-Extra: all
|
|
34
37
|
Requires-Dist: code-coordinator[server]; extra == "all"
|
|
35
38
|
Requires-Dist: code-coordinator[reports-xlsx]; extra == "all"
|
|
39
|
+
Requires-Dist: code-coordinator[tui-pty]; extra == "all"
|
|
36
40
|
Provides-Extra: dev
|
|
37
41
|
Requires-Dist: code-coordinator[server]; extra == "dev"
|
|
38
42
|
Requires-Dist: code-coordinator[reports-xlsx]; extra == "dev"
|
|
43
|
+
Requires-Dist: code-coordinator[tui-pty]; extra == "dev"
|
|
39
44
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
40
45
|
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
41
46
|
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-coordinator
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.545
|
|
4
4
|
Summary: Coordinate Claude Code workers across multiple machines and repos.
|
|
5
5
|
Author-email: John Donaghy <johnfdonaghy@gmail.com>
|
|
6
6
|
License-Expression: LicenseRef-FSL-1.1-MIT
|
|
@@ -30,12 +30,17 @@ Provides-Extra: postgres
|
|
|
30
30
|
Requires-Dist: psycopg[binary]>=3.1; extra == "postgres"
|
|
31
31
|
Provides-Extra: reports-xlsx
|
|
32
32
|
Requires-Dist: openpyxl>=3.1; extra == "reports-xlsx"
|
|
33
|
+
Provides-Extra: tui-pty
|
|
34
|
+
Requires-Dist: pyte>=0.8; extra == "tui-pty"
|
|
35
|
+
Requires-Dist: pywinpty>=2.0; sys_platform == "win32" and extra == "tui-pty"
|
|
33
36
|
Provides-Extra: all
|
|
34
37
|
Requires-Dist: code-coordinator[server]; extra == "all"
|
|
35
38
|
Requires-Dist: code-coordinator[reports-xlsx]; extra == "all"
|
|
39
|
+
Requires-Dist: code-coordinator[tui-pty]; extra == "all"
|
|
36
40
|
Provides-Extra: dev
|
|
37
41
|
Requires-Dist: code-coordinator[server]; extra == "dev"
|
|
38
42
|
Requires-Dist: code-coordinator[reports-xlsx]; extra == "dev"
|
|
43
|
+
Requires-Dist: code-coordinator[tui-pty]; extra == "dev"
|
|
39
44
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
40
45
|
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
41
46
|
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
@@ -163,6 +163,7 @@ coord/test_author.py
|
|
|
163
163
|
coord/test_chat.py
|
|
164
164
|
coord/test_orchestrator.py
|
|
165
165
|
coord/test_report.py
|
|
166
|
+
coord/tui_pty_driver.py
|
|
166
167
|
coord/tui_release.py
|
|
167
168
|
coord/uat_checks.py
|
|
168
169
|
coord/usage.py
|
|
@@ -858,6 +859,7 @@ tests/test_throwaway_vm.py
|
|
|
858
859
|
tests/test_tmux_host.py
|
|
859
860
|
tests/test_tmux_session.py
|
|
860
861
|
tests/test_transcript_floor.py
|
|
862
|
+
tests/test_tui_pty_driver.py
|
|
861
863
|
tests/test_uat_checks.py
|
|
862
864
|
tests/test_usage.py
|
|
863
865
|
tests/test_usage_limits.py
|
{code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/requires.txt
RENAMED
|
@@ -9,10 +9,12 @@ tzdata
|
|
|
9
9
|
[all]
|
|
10
10
|
code-coordinator[server]
|
|
11
11
|
code-coordinator[reports-xlsx]
|
|
12
|
+
code-coordinator[tui-pty]
|
|
12
13
|
|
|
13
14
|
[dev]
|
|
14
15
|
code-coordinator[server]
|
|
15
16
|
code-coordinator[reports-xlsx]
|
|
17
|
+
code-coordinator[tui-pty]
|
|
16
18
|
pytest>=8.0
|
|
17
19
|
pytest-asyncio>=0.23
|
|
18
20
|
pytest-xdist>=3.5
|
|
@@ -31,3 +33,9 @@ starlette>=0.37
|
|
|
31
33
|
uvicorn>=0.30
|
|
32
34
|
websockets>=12.0
|
|
33
35
|
psutil>=5.9
|
|
36
|
+
|
|
37
|
+
[tui-pty]
|
|
38
|
+
pyte>=0.8
|
|
39
|
+
|
|
40
|
+
[tui-pty:sys_platform == "win32"]
|
|
41
|
+
pywinpty>=2.0
|
{code_coordinator-0.5.543 → code_coordinator-0.5.545}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -290,6 +290,7 @@
|
|
|
290
290
|
"coord/test_chat.py",
|
|
291
291
|
"coord/test_orchestrator.py",
|
|
292
292
|
"coord/test_report.py",
|
|
293
|
+
"coord/tui_pty_driver.py",
|
|
293
294
|
"coord/tui_release.py",
|
|
294
295
|
"coord/uat_checks.py",
|
|
295
296
|
"coord/usage.py",
|
|
@@ -885,6 +886,7 @@
|
|
|
885
886
|
"tests/test_tmux_host.py",
|
|
886
887
|
"tests/test_tmux_session.py",
|
|
887
888
|
"tests/test_transcript_floor.py",
|
|
889
|
+
"tests/test_tui_pty_driver.py",
|
|
888
890
|
"tests/test_uat_checks.py",
|
|
889
891
|
"tests/test_usage.py",
|
|
890
892
|
"tests/test_usage_limits.py",
|
|
@@ -8,11 +8,11 @@ is the one seam that varies per medium — TUI (quadraui ``TuiDriver``), CLI
|
|
|
8
8
|
normalized list of ``{"id": str, "status": "pass"|"fail"|"skip", "message":
|
|
9
9
|
str}`` dicts (``cli-pytest`` additionally carries ``"expected"``/``"got"``
|
|
10
10
|
on a failing test — see :func:`parse_pytest_junit_xml`). ``tui-tuidriver``,
|
|
11
|
-
``cli-pytest`` (#1125), ``web-playwright`` (#1539),
|
|
12
|
-
(#3232) are implemented; other ``kind`` values are
|
|
13
|
-
``coordinator.yml`` (see :class:`coord.config.AcceptanceConfig`)
|
|
14
|
-
rejected here with a clear "not yet implemented" error until their
|
|
15
|
-
land (native).
|
|
11
|
+
``cli-pytest`` (#1125), ``web-playwright`` (#1539), ``terraform``
|
|
12
|
+
(#3232), and ``tui-pty`` (#3483) are implemented; other ``kind`` values are
|
|
13
|
+
declared in ``coordinator.yml`` (see :class:`coord.config.AcceptanceConfig`)
|
|
14
|
+
but rejected here with a clear "not yet implemented" error until their
|
|
15
|
+
issues land (native).
|
|
16
16
|
|
|
17
17
|
``cli-pytest`` parses pytest's built-in ``--junit-xml`` report (a core
|
|
18
18
|
pytest flag, not a plugin — no extra dependency required in the driven
|
|
@@ -45,6 +45,22 @@ enough to run ``validate`` at all) comes out regardless of what the driven
|
|
|
45
45
|
repo's own terraform version prints to plain stdout. This is a compile
|
|
46
46
|
check, not an acceptance oracle — see :data:`VALIDATE_ONLY_KINDS`.
|
|
47
47
|
|
|
48
|
+
``tui-pty`` (#3483, Tier 2 of the TUI acceptance ladder — ``tui-tuidriver``
|
|
49
|
+
above is Tier 1, in-process) launches the driven repo's real compiled
|
|
50
|
+
binary under a real pty/ConPTY and drives it with real terminal byte
|
|
51
|
+
sequences, rather than going through quadraui's in-process ``TuiDriver``.
|
|
52
|
+
Three real Windows TUI bugs (vimcode#1634-#1636) all passed their
|
|
53
|
+
in-process tests on 2026-09-29 — the bytes an in-process harness feeds and
|
|
54
|
+
reads are never generated by, or read back through, a real terminal, so a
|
|
55
|
+
whole class of bug is invisible to it by construction. All of the actual
|
|
56
|
+
byte-level driving, the VT emulation, and the platform-neutral YAML smoke
|
|
57
|
+
spec live in :mod:`coord.tui_pty_driver` — see that module's docstring for
|
|
58
|
+
the spec format and the ``ESC[6n`` startup-handshake lesson folded in from
|
|
59
|
+
vimcode's own ConPTY tests. This adapter (:func:`_run_tui_pty`) is a thin
|
|
60
|
+
seam: it resolves the smoke spec from the driver's ``entrypoint:`` (the
|
|
61
|
+
``tui-pty`` analogue of ``tui-tuidriver``'s own entrypoint-as-sealed-file
|
|
62
|
+
convention) and hands off to :func:`coord.tui_pty_driver.run_smoke_spec`.
|
|
63
|
+
|
|
48
64
|
``terraform`` additionally runs a deterministic policy gate (#3234, epic
|
|
49
65
|
#3230 child 3) whenever the driven repo has opted in by carrying the
|
|
50
66
|
convention files: ``tflint`` (rule-based HCL/provider checks — pinned
|
|
@@ -75,7 +91,7 @@ from pathlib import Path
|
|
|
75
91
|
# Driver kinds this module knows how to run. Keep in sync with the adapters
|
|
76
92
|
# implemented below — a kind can be *declared* in coordinator.yml ahead of its
|
|
77
93
|
# adapter landing, but running it must fail loudly rather than silently no-op.
|
|
78
|
-
SUPPORTED_KINDS = ("tui-tuidriver", "cli-pytest", "web-playwright", "terraform")
|
|
94
|
+
SUPPORTED_KINDS = ("tui-tuidriver", "cli-pytest", "web-playwright", "terraform", "tui-pty")
|
|
79
95
|
|
|
80
96
|
# #2748 (IL-2): driver kinds whose `run` produces a real pass/fail verdict
|
|
81
97
|
# but NOT yet a deterministic one, because an input they depend on hasn't
|
|
@@ -229,7 +245,7 @@ def render_run_command(run_command: str, *, ms: str | None = None) -> str:
|
|
|
229
245
|
|
|
230
246
|
def run_driver(
|
|
231
247
|
kind: str, run_command: str, cwd: str, *, timeout: int = 900, ms: str | None = None,
|
|
232
|
-
setup_command: str = "",
|
|
248
|
+
setup_command: str = "", entrypoint: str = "",
|
|
233
249
|
) -> DriverResult:
|
|
234
250
|
"""Execute *run_command* in *cwd* and parse its output for *kind*.
|
|
235
251
|
|
|
@@ -250,6 +266,13 @@ def run_driver(
|
|
|
250
266
|
before *run_command* ever executes — with a message that names it as a
|
|
251
267
|
provisioning failure so it isn't mistaken for a test failure or folded
|
|
252
268
|
into a driver's own "wrote no report" crash message.
|
|
269
|
+
|
|
270
|
+
*entrypoint* (``AcceptanceDriverConfig.entrypoint``) is only consulted
|
|
271
|
+
by ``tui-pty`` (#3483) — it names the repo-root-relative smoke-spec YAML
|
|
272
|
+
file (see :mod:`coord.tui_pty_driver`), the same way ``entrypoint``
|
|
273
|
+
already names ``tui-tuidriver``'s sealed Rust acceptance file for
|
|
274
|
+
:func:`coord.acceptance.acceptance_root_for_driver`. Every other kind
|
|
275
|
+
ignores it.
|
|
253
276
|
"""
|
|
254
277
|
if kind not in SUPPORTED_KINDS:
|
|
255
278
|
raise DriverError(
|
|
@@ -269,6 +292,8 @@ def run_driver(
|
|
|
269
292
|
return _run_web_playwright(run_command, cwd, timeout=timeout)
|
|
270
293
|
if kind == "terraform":
|
|
271
294
|
return _run_terraform(run_command, cwd, timeout=timeout)
|
|
295
|
+
if kind == "tui-pty":
|
|
296
|
+
return _run_tui_pty(run_command, cwd, entrypoint, timeout=timeout)
|
|
272
297
|
return _run_generic(run_command, cwd, timeout=timeout)
|
|
273
298
|
|
|
274
299
|
|
|
@@ -572,6 +597,68 @@ def _run_terraform_policy_gate(cwd: str, *, timeout: int) -> tuple[list[dict], s
|
|
|
572
597
|
return tests, raw_output
|
|
573
598
|
|
|
574
599
|
|
|
600
|
+
def _run_tui_pty(run_command: str, cwd: str, entrypoint: str, *, timeout: int) -> DriverResult:
|
|
601
|
+
"""The ``tui-pty`` shape (#3483): *run_command* is the shell command
|
|
602
|
+
that launches the driven repo's real compiled binary (e.g.
|
|
603
|
+
``./target/release/vcd``) — the platform-neutral smoke spec YAML that
|
|
604
|
+
drives it lives at *entrypoint* (repo-root-relative), the ``tui-pty``
|
|
605
|
+
analogue of ``tui-tuidriver``'s own ``entrypoint:``-as-sealed-file
|
|
606
|
+
convention (see the module docstring and CLAUDE.md's sealed-paths
|
|
607
|
+
section).
|
|
608
|
+
|
|
609
|
+
All the actual pty/ConPTY spawning, real terminal-byte input, and VT
|
|
610
|
+
screen assertions live in :mod:`coord.tui_pty_driver` — this function is
|
|
611
|
+
the thin seam that resolves *entrypoint* to a spec file and calls
|
|
612
|
+
:func:`coord.tui_pty_driver.run_smoke_spec`, then folds its normalized
|
|
613
|
+
``tests`` list into a :class:`DriverResult` the same way every other
|
|
614
|
+
kind in this module does.
|
|
615
|
+
|
|
616
|
+
Raises :class:`DriverError` — never a bare exception — for a missing
|
|
617
|
+
``entrypoint:``, a spec file that doesn't exist, or a malformed spec
|
|
618
|
+
(an invalid-YAML/unknown-step-type :class:`coord.tui_pty_driver.TuiPtySpecError`).
|
|
619
|
+
A child process that dies mid-run, a step that times out, or a failed
|
|
620
|
+
assertion do NOT raise here — :func:`coord.tui_pty_driver.run_smoke_spec`
|
|
621
|
+
folds those into individual failing entries in ``tests`` instead, so a
|
|
622
|
+
real regression (e.g. vimcode#1634's idle-flicker check) reads as a
|
|
623
|
+
normal failing test, not a crashed driver run.
|
|
624
|
+
"""
|
|
625
|
+
from coord.tui_pty_driver import ( # noqa: PLC0415 — see module docstring on the deferred import
|
|
626
|
+
TuiPtyRuntimeError,
|
|
627
|
+
TuiPtySpecError,
|
|
628
|
+
run_smoke_spec,
|
|
629
|
+
)
|
|
630
|
+
|
|
631
|
+
if not entrypoint:
|
|
632
|
+
raise DriverError(
|
|
633
|
+
"tui-pty driver requires an `entrypoint:` naming the smoke-spec "
|
|
634
|
+
"YAML file (repo-root-relative) — none configured"
|
|
635
|
+
)
|
|
636
|
+
spec_path = Path(cwd) / entrypoint
|
|
637
|
+
if not spec_path.is_file():
|
|
638
|
+
raise DriverError(f"tui-pty smoke spec not found: {spec_path}")
|
|
639
|
+
|
|
640
|
+
try:
|
|
641
|
+
spec_text = spec_path.read_text()
|
|
642
|
+
except OSError as e:
|
|
643
|
+
raise DriverError(f"tui-pty smoke spec could not be read: {spec_path}: {e}") from e
|
|
644
|
+
|
|
645
|
+
try:
|
|
646
|
+
tests = run_smoke_spec(
|
|
647
|
+
spec_text, launch_command=run_command, cwd=cwd, timeout=timeout,
|
|
648
|
+
)
|
|
649
|
+
except TuiPtySpecError as e:
|
|
650
|
+
raise DriverError(f"tui-pty smoke spec is invalid: {e}") from e
|
|
651
|
+
except TuiPtyRuntimeError as e:
|
|
652
|
+
raise DriverError(f"tui-pty driver could not run: {e}") from e
|
|
653
|
+
|
|
654
|
+
exit_code = 0 if tests and all(t.get("status") != "fail" for t in tests) else 1
|
|
655
|
+
raw_output = "\n".join(
|
|
656
|
+
f"{t.get('status')}: {t.get('id')} {t.get('message', '')}".rstrip()
|
|
657
|
+
for t in tests
|
|
658
|
+
)
|
|
659
|
+
return DriverResult(exit_code=exit_code, tests=tests, raw_output=raw_output)
|
|
660
|
+
|
|
661
|
+
|
|
575
662
|
def parse_test_output(output: str) -> list[dict]:
|
|
576
663
|
"""Parse a driver's stdout into normalized ``{"id", "status", "message"}``.
|
|
577
664
|
|
|
@@ -352,7 +352,7 @@ def acceptance_run(
|
|
|
352
352
|
try:
|
|
353
353
|
result = run_driver(
|
|
354
354
|
driver_cfg.kind, driver_cfg.run, cwd=str(cwd), ms=ms,
|
|
355
|
-
setup_command=driver_cfg.setup,
|
|
355
|
+
setup_command=driver_cfg.setup, entrypoint=driver_cfg.entrypoint,
|
|
356
356
|
)
|
|
357
357
|
except DriverError as e:
|
|
358
358
|
click.echo(f"error: {e}", err=True)
|
|
@@ -1019,7 +1019,7 @@ def _acceptance_record_local(
|
|
|
1019
1019
|
try:
|
|
1020
1020
|
result = run_driver(
|
|
1021
1021
|
driver_cfg.kind, driver_cfg.run, cwd=str(wt_path), ms=ms,
|
|
1022
|
-
setup_command=driver_cfg.setup,
|
|
1022
|
+
setup_command=driver_cfg.setup, entrypoint=driver_cfg.entrypoint,
|
|
1023
1023
|
)
|
|
1024
1024
|
except DriverError as e:
|
|
1025
1025
|
click.echo(f"error: {e}", err=True)
|
|
@@ -25,8 +25,10 @@ from coord.milestone_dispatch import (
|
|
|
25
25
|
MilestoneDispatchError,
|
|
26
26
|
dispatch_entry,
|
|
27
27
|
fetch_milestone_context,
|
|
28
|
+
gate_a_probe,
|
|
28
29
|
gate_a_status,
|
|
29
30
|
is_milestone_complete,
|
|
31
|
+
milestone_oracle_loop,
|
|
30
32
|
pick_machine,
|
|
31
33
|
plan_dispatch,
|
|
32
34
|
plan_queue,
|
|
@@ -1106,11 +1108,16 @@ def milestone_dispatch_cmd(
|
|
|
1106
1108
|
# #2542: under oracle-loop control (Gate A already checked above), chain
|
|
1107
1109
|
# the whole milestone's drive-queue entries so the tick can never launch
|
|
1108
1110
|
# two of them at once — see plan_queue's own docstring for why.
|
|
1111
|
+
# #2785: resolved per milestone via `milestone_oracle_loop`, not the
|
|
1112
|
+
# repo-level `has_driver` alone. `block_reason` above already confirms
|
|
1113
|
+
# this milestone's Gate-A contract exists (we'd have exited otherwise).
|
|
1109
1114
|
queue_plan = plan_queue(
|
|
1110
1115
|
ctx.work_order,
|
|
1111
1116
|
ctx.terminal_issues,
|
|
1112
1117
|
repo_entry.name,
|
|
1113
|
-
oracle_loop=
|
|
1118
|
+
oracle_loop=milestone_oracle_loop(
|
|
1119
|
+
repo_entry, cfg, gate_a_satisfied=block_reason is None
|
|
1120
|
+
),
|
|
1114
1121
|
)
|
|
1115
1122
|
|
|
1116
1123
|
if not queue_plan:
|
|
@@ -1318,10 +1325,26 @@ def milestone_drive_cmd(
|
|
|
1318
1325
|
# #2542: pass the same `oracle_loop` the gate tick itself will use, so
|
|
1319
1326
|
# this preview never shows more than the one entry the actual `work`
|
|
1320
1327
|
# gate would dispatch for an oracle-loop milestone.
|
|
1328
|
+
# #2785: resolved per milestone via `milestone_oracle_loop`, not the
|
|
1329
|
+
# repo-level `has_driver` alone.
|
|
1330
|
+
#
|
|
1331
|
+
# #2785 review (non-blocking): reads the DURABLE `record.cleared` (has
|
|
1332
|
+
# GATE_A already been stamped as cleared for this milestone?) rather
|
|
1333
|
+
# than `probes.gate_a_blocked` — that field is a fresh live Gate-A
|
|
1334
|
+
# re-probe (`probe_milestone`'s own docstring), and folding a single
|
|
1335
|
+
# transient read failure there straight into `gate_a_satisfied=False`
|
|
1336
|
+
# would cosmetically over-show this preview's ready frontier for one
|
|
1337
|
+
# invocation. `_milestone_gate_tick`'s WORK-state dispatch (the thing
|
|
1338
|
+
# this preview mirrors) already made this same durable-vs-live switch
|
|
1339
|
+
# for the identical reason — matching it here keeps the preview and the
|
|
1340
|
+
# actual tick reading the same signal instead of two that can flap
|
|
1341
|
+
# independently.
|
|
1321
1342
|
if ctx.work_order.nodes:
|
|
1322
1343
|
plan = plan_dispatch(
|
|
1323
1344
|
ctx.work_order, board, cfg, repo_entry, ctx.terminal_issues,
|
|
1324
|
-
oracle_loop=
|
|
1345
|
+
oracle_loop=milestone_oracle_loop(
|
|
1346
|
+
repo_entry, cfg, gate_a_satisfied=mg.GATE_A in record.cleared
|
|
1347
|
+
),
|
|
1325
1348
|
)
|
|
1326
1349
|
to_dispatch, skipped, waiting, deferred = (
|
|
1327
1350
|
plan.to_dispatch, plan.skipped, plan.waiting, plan.deferred,
|
|
@@ -1501,9 +1524,39 @@ def milestone_write_order_cmd(
|
|
|
1501
1524
|
# (coord-portal#122). Cheap/early check for the explicit-group case only
|
|
1502
1525
|
# — see validate_no_shared_oracle_group's docstring for what it can't
|
|
1503
1526
|
# catch.
|
|
1527
|
+
#
|
|
1528
|
+
# #2785: resolved PER MILESTONE via `milestone_oracle_loop` — NOT
|
|
1529
|
+
# `cfg.acceptance.has_driver(repo_entry.name)` alone, which is true for
|
|
1530
|
+
# every milestone in a repo that has ever declared ANY acceptance
|
|
1531
|
+
# driver and so wrongly refused #1949's (ms-60's) work order, which
|
|
1532
|
+
# shares no manifest with anything since ms-60 has no
|
|
1533
|
+
# `tests/acceptance/ms-60/` at all. No other Gate-A probe has run yet in
|
|
1534
|
+
# this command, so resolve one fresh via `gate_a_probe` — the same
|
|
1535
|
+
# existence check `coord milestone dispatch` performs.
|
|
1536
|
+
#
|
|
1537
|
+
# #2785 review: unlike `milestone_dispatch_cmd`/`milestone_drive_cmd`,
|
|
1538
|
+
# this command must NOT abort on a *confirmed*-absent contract — ms-60
|
|
1539
|
+
# has no contract at all and that is exactly the correctly-permissive
|
|
1540
|
+
# case (`gate_a_satisfied=False` -> `oracle_loop=False` -> shared groups
|
|
1541
|
+
# allowed), the whole point of this issue. Only a *transient* read
|
|
1542
|
+
# failure (`GateAResult.transient`, #2973's tri-state) must abort:
|
|
1543
|
+
# folding it into `gate_a_satisfied=False` would silently disable the
|
|
1544
|
+
# shared-group refusal for a milestone that may well be oracle-loop-
|
|
1545
|
+
# controlled, purely because of ordinary GitHub flakiness — the #2785
|
|
1546
|
+
# review's blocking finding. `gate_a_status`'s plain `str | None` can't
|
|
1547
|
+
# tell the two apart, so this uses `gate_a_probe` directly.
|
|
1548
|
+
probe = gate_a_probe(repo_entry, cfg, milestone_number)
|
|
1549
|
+
if probe.transient:
|
|
1550
|
+
click.echo(f"error: {probe.block_reason}", err=True)
|
|
1551
|
+
sys.exit(1)
|
|
1552
|
+
|
|
1504
1553
|
try:
|
|
1505
1554
|
validate_no_shared_oracle_group(
|
|
1506
|
-
work_order,
|
|
1555
|
+
work_order,
|
|
1556
|
+
oracle_loop=milestone_oracle_loop(
|
|
1557
|
+
repo_entry, cfg,
|
|
1558
|
+
gate_a_satisfied=probe.block_reason is None,
|
|
1559
|
+
),
|
|
1507
1560
|
)
|
|
1508
1561
|
except WorkOrderError as e:
|
|
1509
1562
|
click.echo(f"error: {e}", err=True)
|
|
@@ -1789,7 +1842,10 @@ def milestone_gate_c_cmd(
|
|
|
1789
1842
|
# suite dir for Gate C's "full accumulated suite" semantics.
|
|
1790
1843
|
ms = ms_dirname(ctx.milestone_number)
|
|
1791
1844
|
try:
|
|
1792
|
-
result = run_driver(
|
|
1845
|
+
result = run_driver(
|
|
1846
|
+
driver_cfg.kind, driver_cfg.run, cwd=str(repo_dir), ms=ms,
|
|
1847
|
+
entrypoint=driver_cfg.entrypoint,
|
|
1848
|
+
)
|
|
1793
1849
|
except DriverError as e:
|
|
1794
1850
|
click.echo(f"error: {e}", err=True)
|
|
1795
1851
|
sys.exit(1)
|
|
@@ -2095,7 +2151,10 @@ def milestone_ship_cmd(
|
|
|
2095
2151
|
click.echo(f"Gate C: running the full accumulated acceptance suite in {repo_dir}...")
|
|
2096
2152
|
ms = ms_dirname(ctx.milestone_number)
|
|
2097
2153
|
try:
|
|
2098
|
-
result = run_driver(
|
|
2154
|
+
result = run_driver(
|
|
2155
|
+
driver_cfg.kind, driver_cfg.run, cwd=str(repo_dir), ms=ms,
|
|
2156
|
+
entrypoint=driver_cfg.entrypoint,
|
|
2157
|
+
)
|
|
2099
2158
|
except DriverError as e:
|
|
2100
2159
|
click.echo(f"error: {e}", err=True)
|
|
2101
2160
|
sys.exit(1)
|
|
@@ -37,7 +37,7 @@ Three call sites share this module:
|
|
|
37
37
|
from __future__ import annotations
|
|
38
38
|
|
|
39
39
|
from dataclasses import dataclass, field
|
|
40
|
-
from typing import TYPE_CHECKING, Callable, Iterable
|
|
40
|
+
from typing import TYPE_CHECKING, Callable, Iterable, NamedTuple
|
|
41
41
|
|
|
42
42
|
import httpx
|
|
43
43
|
|
|
@@ -61,7 +61,10 @@ __all__ = [
|
|
|
61
61
|
"MilestoneContext",
|
|
62
62
|
"fetch_milestone_context",
|
|
63
63
|
"GateAFileExists",
|
|
64
|
+
"GateAResult",
|
|
65
|
+
"gate_a_probe",
|
|
64
66
|
"gate_a_status",
|
|
67
|
+
"milestone_oracle_loop",
|
|
65
68
|
"ManifestFetch",
|
|
66
69
|
"GateAApprovalFetch",
|
|
67
70
|
"gate_a_signoff",
|
|
@@ -220,22 +223,51 @@ def _default_gate_a_file_exists(repo_github: str, path: str, branch: str) -> boo
|
|
|
220
223
|
return False
|
|
221
224
|
|
|
222
225
|
|
|
223
|
-
|
|
226
|
+
class GateAResult(NamedTuple):
|
|
227
|
+
"""The full tri-state result of a Gate-A existence check (#2785 review).
|
|
228
|
+
|
|
229
|
+
``gate_a_status`` (below) collapses this into a plain ``str | None`` for
|
|
230
|
+
the callers that just want to abort on ANY truthy result — dispatch/drive
|
|
231
|
+
correctly treat "confirmed absent" and "read failed" identically, since
|
|
232
|
+
neither justifies dispatching. But a caller resolving
|
|
233
|
+
:func:`milestone_oracle_loop`'s ``gate_a_satisfied`` needs to tell the two
|
|
234
|
+
apart: a *confirmed* absence legitimately means "not oracle-loop, nothing
|
|
235
|
+
to race on yet" (``gate_a_satisfied=False`` is correct), while a
|
|
236
|
+
*transient* read failure means the answer is unknown and must not be
|
|
237
|
+
silently folded into the same "not oracle-loop" branch — that would
|
|
238
|
+
disable #2542's shared-group refusal for a milestone that may well be
|
|
239
|
+
under oracle-loop control, purely because of ordinary GitHub flakiness.
|
|
240
|
+
|
|
241
|
+
``block_reason`` is ``None`` when Gate A is satisfied (dispatch may
|
|
242
|
+
proceed); otherwise a human-readable message, exactly as
|
|
243
|
+
:func:`gate_a_status` returns. ``transient`` is ``True`` only when
|
|
244
|
+
``block_reason`` is set because of a failed *read* (network, auth, a
|
|
245
|
+
rate limit) rather than a confirmed 404 on every candidate path.
|
|
246
|
+
"""
|
|
247
|
+
|
|
248
|
+
block_reason: str | None
|
|
249
|
+
transient: bool = False
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
def gate_a_probe(
|
|
224
253
|
repo_cfg: Repo,
|
|
225
254
|
config: "Config",
|
|
226
255
|
milestone_number: int,
|
|
227
256
|
*,
|
|
228
257
|
file_exists: GateAFileExists | None = None,
|
|
229
|
-
) ->
|
|
258
|
+
) -> GateAResult:
|
|
230
259
|
"""Gate A (docs/ORACLE_LOOP.md, #930): a milestone's issues may not
|
|
231
260
|
dispatch until its black-box contract exists.
|
|
232
261
|
|
|
233
|
-
Returns
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
command that
|
|
262
|
+
Returns a :class:`GateAResult` whose ``block_reason`` is ``None`` when
|
|
263
|
+
dispatch may proceed — either the repo has no ``acceptance.drivers``
|
|
264
|
+
entry configured (Gate A is an oracle-loop concept; repos outside that
|
|
265
|
+
model dispatch exactly as before #930), or the contract file already
|
|
266
|
+
exists on the repo's default branch. Otherwise ``block_reason`` is a
|
|
267
|
+
human-readable message naming the missing path and the command that
|
|
268
|
+
produces it, and ``transient`` says whether that's a confirmed absence
|
|
269
|
+
or an inconclusive (failed) read — see :class:`GateAResult`'s own
|
|
270
|
+
docstring for why the distinction matters.
|
|
239
271
|
|
|
240
272
|
#2896: a bare *milestone_number* doesn't say which acceptance search
|
|
241
273
|
root its contract lives under (the shared repo-root tree, or an
|
|
@@ -259,7 +291,7 @@ def gate_a_status(
|
|
|
259
291
|
remedy attached.
|
|
260
292
|
"""
|
|
261
293
|
if not config.acceptance.has_driver(repo_cfg.name):
|
|
262
|
-
return None
|
|
294
|
+
return GateAResult(None)
|
|
263
295
|
|
|
264
296
|
from coord import github_ops # noqa: PLC0415
|
|
265
297
|
from coord.acceptance import gate_a_contract_candidates # noqa: PLC0415
|
|
@@ -270,19 +302,20 @@ def gate_a_status(
|
|
|
270
302
|
for path in candidates:
|
|
271
303
|
try:
|
|
272
304
|
if check(repo_cfg.github, path, repo_cfg.default_branch):
|
|
273
|
-
return None
|
|
305
|
+
return GateAResult(None)
|
|
274
306
|
except github_ops.GhTransientError as e:
|
|
275
307
|
transient = transient or e
|
|
276
308
|
continue
|
|
277
309
|
if transient is not None:
|
|
278
|
-
return (
|
|
310
|
+
return GateAResult(
|
|
279
311
|
f"Gate A undetermined: could not read {repo_cfg.name}'s Gate-A "
|
|
280
312
|
f"contract on {repo_cfg.default_branch!r} ({transient}). This is "
|
|
281
313
|
"a failed read, not a confirmed absence — the contract may well "
|
|
282
|
-
"exist. Retry once the rate limit clears."
|
|
314
|
+
"exist. Retry once the rate limit clears.",
|
|
315
|
+
transient=True,
|
|
283
316
|
)
|
|
284
317
|
named = " or ".join(repr(p) for p in candidates)
|
|
285
|
-
return (
|
|
318
|
+
return GateAResult(
|
|
286
319
|
f"Gate A not satisfied: {named} does not exist yet on "
|
|
287
320
|
f"{repo_cfg.default_branch!r}. Run `coord acceptance mock {repo_cfg.name} "
|
|
288
321
|
"<tracking_issue>` (docs/ORACLE_LOOP.md) to render the mock + write "
|
|
@@ -290,6 +323,81 @@ def gate_a_status(
|
|
|
290
323
|
)
|
|
291
324
|
|
|
292
325
|
|
|
326
|
+
def gate_a_status(
|
|
327
|
+
repo_cfg: Repo,
|
|
328
|
+
config: "Config",
|
|
329
|
+
milestone_number: int,
|
|
330
|
+
*,
|
|
331
|
+
file_exists: GateAFileExists | None = None,
|
|
332
|
+
) -> str | None:
|
|
333
|
+
"""Thin ``str | None`` view over :func:`gate_a_probe`, for the callers
|
|
334
|
+
(``milestone_dispatch_cmd``, ``milestone_drive_cmd``,
|
|
335
|
+
``_milestone_drain_tick``) that only need to know whether to abort —
|
|
336
|
+
they already treat a confirmed absence and a transient read failure
|
|
337
|
+
identically (abort either way, since neither justifies dispatching), so
|
|
338
|
+
dropping ``GateAResult.transient`` here is safe for them. A caller that
|
|
339
|
+
needs to tell the two apart (:func:`milestone_oracle_loop`'s
|
|
340
|
+
``gate_a_satisfied``) should call :func:`gate_a_probe` directly instead.
|
|
341
|
+
"""
|
|
342
|
+
return gate_a_probe(
|
|
343
|
+
repo_cfg, config, milestone_number, file_exists=file_exists
|
|
344
|
+
).block_reason
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
def milestone_oracle_loop(
|
|
348
|
+
repo_cfg: Repo,
|
|
349
|
+
config: "Config",
|
|
350
|
+
*,
|
|
351
|
+
gate_a_satisfied: bool,
|
|
352
|
+
) -> bool:
|
|
353
|
+
"""Whether a milestone is actually under oracle-loop control (#2785).
|
|
354
|
+
|
|
355
|
+
#2542 introduced a family of checks/behaviors keyed on "is this
|
|
356
|
+
milestone oracle-loop-controlled" (:func:`coord.milestone_order.
|
|
357
|
+
validate_no_shared_oracle_group`'s shared-group refusal,
|
|
358
|
+
:func:`plan_dispatch`'s one-entry-per-tick cap, :func:`plan_queue`'s
|
|
359
|
+
whole-milestone ``after=`` chaining) — but every one of those call sites
|
|
360
|
+
resolved the question from ``config.acceptance.has_driver(repo_cfg.
|
|
361
|
+
name)`` alone. That is a REPO-level fact (does this repo declare ANY
|
|
362
|
+
acceptance driver at all, for ANY milestone), not a per-milestone one.
|
|
363
|
+
A repo can have a driver configured and still run milestones that never
|
|
364
|
+
touch the oracle loop at all — this repo's own ms-60 (Store Service,
|
|
365
|
+
plain refactors, no ``tests/acceptance/ms-60/``) alongside ms-37/ms-65
|
|
366
|
+
(real oracle-loop milestones). Under the old resolution EVERY milestone
|
|
367
|
+
in a repo that has EVER declared a driver was treated as oracle-loop-
|
|
368
|
+
controlled — #1949 (ms-60's tracking epic) had its `## Work order`
|
|
369
|
+
become permanently un-editable, refusing shared groups that pose no
|
|
370
|
+
actual hazard, because there is no ``tests/acceptance/ms-60/manifest.
|
|
371
|
+
yml`` for anything to race on.
|
|
372
|
+
|
|
373
|
+
True only when the repo has a driver configured AND *this milestone's*
|
|
374
|
+
Gate-A contract already exists (``gate_a_satisfied`` — the caller's
|
|
375
|
+
already-resolved :func:`gate_a_status` existence probe: ``... is
|
|
376
|
+
None``, the same signal :func:`coord.acceptance.gate_a_contract_candidates`
|
|
377
|
+
checks for). A milestone with no contract yet has nothing to race on
|
|
378
|
+
either: nobody has authored a JIT acceptance slice into a manifest that
|
|
379
|
+
doesn't exist, so treating it as oracle-loop-active before Gate A is
|
|
380
|
+
even satisfied would repeat the same category of over-broad mistake
|
|
381
|
+
this replaces, just one gate later.
|
|
382
|
+
|
|
383
|
+
Deliberately takes the already-resolved ``gate_a_satisfied`` rather than
|
|
384
|
+
a bare ``milestone_number`` and re-probing GitHub itself: every caller
|
|
385
|
+
in this module and ``coord.serve_app`` already computes a Gate-A
|
|
386
|
+
existence probe on the same tick (``gate_a_status`` / ``probe_milestone
|
|
387
|
+
().gate_a_blocked``) before ever reaching an ``oracle_loop=`` call site
|
|
388
|
+
— re-deriving it here would mean a second live fetch per tick for no
|
|
389
|
+
new information. A caller with no probe in hand yet (``coord milestone
|
|
390
|
+
write-order``, which has no other reason to touch Gate A) computes one
|
|
391
|
+
fresh via ``gate_a_status(repo_cfg, config, milestone_number) is None``.
|
|
392
|
+
|
|
393
|
+
Single source of truth for this question (epic #2096, "one question,
|
|
394
|
+
one answer") — every #2542 caller should resolve ``oracle_loop``
|
|
395
|
+
through this rather than re-deriving ``has_driver`` locally, so the two
|
|
396
|
+
can never drift apart again.
|
|
397
|
+
"""
|
|
398
|
+
return config.acceptance.has_driver(repo_cfg.name) and gate_a_satisfied
|
|
399
|
+
|
|
400
|
+
|
|
293
401
|
# (repo_github, path, branch) -> file content, or None if it doesn't exist.
|
|
294
402
|
# Injected so tests never hit `gh` — mirrors GateAFileExists above.
|
|
295
403
|
#
|
|
@@ -704,6 +812,17 @@ def issue_oracle_ready(
|
|
|
704
812
|
the entry (re-checked every tick) instead of landing it in terminal
|
|
705
813
|
``blocked``, which nothing re-evaluates (#2040) — this is an explicitly
|
|
706
814
|
operator-fixable condition with a one-command remedy.
|
|
815
|
+
|
|
816
|
+
#2785 audit note: the ``has_driver`` check below is correctly
|
|
817
|
+
repo-level — it's a cheap early exit only, immediately followed by the
|
|
818
|
+
real per-milestone ``gate_a_status`` existence check a few lines down
|
|
819
|
+
(via ``effective_file_exists``). A repo with no driver at all can have
|
|
820
|
+
no oracle-loop milestone, so short-circuiting there costs nothing; a
|
|
821
|
+
repo WITH a driver still falls through to the per-milestone contract
|
|
822
|
+
check before this ever returns non-default readiness. Unlike #2542's
|
|
823
|
+
``validate_no_shared_oracle_group``/``plan_dispatch``/``plan_queue``
|
|
824
|
+
family (see :func:`milestone_oracle_loop`), this function never treated
|
|
825
|
+
``has_driver`` alone as sufficient.
|
|
707
826
|
"""
|
|
708
827
|
if milestone_number is None or not config.acceptance.has_driver(repo_cfg.name):
|
|
709
828
|
return OracleReadiness()
|
|
@@ -943,9 +1062,12 @@ def plan_dispatch(
|
|
|
943
1062
|
distinct idle machines instead of piling onto one).
|
|
944
1063
|
|
|
945
1064
|
``oracle_loop`` (#2542) — the caller's already-resolved
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
1065
|
+
:func:`milestone_oracle_loop` for *this milestone* (#2785; NOT the
|
|
1066
|
+
repo-level ``config.acceptance.has_driver(repo_cfg.name)`` alone — see
|
|
1067
|
+
that function's docstring for why the distinction matters) — caps
|
|
1068
|
+
``to_dispatch`` at **one** entry per call. Without this, two
|
|
1069
|
+
ready-frontier entries with no claim/dependency edge between them (the
|
|
1070
|
+
normal, desired fan-out above)
|
|
949
1071
|
would both dispatch in the very same tick under an oracle-loop
|
|
950
1072
|
milestone, and each independently authors its own JIT acceptance slice
|
|
951
1073
|
into the SAME ``tests/acceptance/ms-N/manifest.yml``
|
|
@@ -1039,9 +1161,12 @@ def plan_queue(
|
|
|
1039
1161
|
the defensive tail below only fires on inputs constructed outside it.
|
|
1040
1162
|
|
|
1041
1163
|
``oracle_loop`` (#2542) — the caller's already-resolved
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1164
|
+
:func:`milestone_oracle_loop` for *this milestone* (#2785; NOT the
|
|
1165
|
+
repo-level ``config.acceptance.has_driver(repo_name)`` alone — see that
|
|
1166
|
+
function's docstring for why the distinction matters) — additionally
|
|
1167
|
+
chains every entry's ``after`` to the issue immediately before it in
|
|
1168
|
+
this function's own topological order, so the drive-queue admits the
|
|
1169
|
+
WHOLE milestone
|
|
1045
1170
|
strictly one entry at a time. Without this, two entries with no declared
|
|
1046
1171
|
edge between them (different ``group``s, or neither declaring one) are
|
|
1047
1172
|
both ``waiting`` the moment their own pre-reqs land, and the
|