code-coordinator 0.5.211__tar.gz → 0.5.213__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.211 → code_coordinator-0.5.213}/PKG-INFO +1 -1
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/drive_queue.py +165 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ORACLE_LOOP.md +10 -2
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_drive_queue.py +143 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_thin_client_board_audit.py +16 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/dialogs.rs +44 -7
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/pipeline.rs +630 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/tests.rs +435 -1
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/commands.rs +312 -4
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.gitignore +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/CLAUDE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/GOAL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/LICENSE +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/MANIFEST.in +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/README.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agent.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/audit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/block_log.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/board_service.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/brain.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/claim.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/cli.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/client.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/comments.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/config.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dao.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/db.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deps.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/drive.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/events.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/filelock.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/freshness.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gates.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/goal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/context.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/models.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/render.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/units.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/hooks.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/interactive.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/models.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/network.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notify.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/openapi.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/parentage.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/plans.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/progress.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_window.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/reports.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/review.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/self_health.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/smoke.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/split_work.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_author.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_report.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/usage.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/install-agent.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/pyproject.toml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/setup.cfg +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/__init__.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/conftest.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_db.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_events.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_init.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_models.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_network.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_session.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_split.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_state.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -2350,6 +2350,162 @@ def _run_merge_only_candidates(plan: TickPlan, config_path: Path | None) -> None
|
|
|
2350
2350
|
click.echo(f"merge-only: {reason}")
|
|
2351
2351
|
|
|
2352
2352
|
|
|
2353
|
+
def _run_auto_revalidate_checks_stale(config_path: Path | None) -> None:
|
|
2354
|
+
"""#2535: best-effort auto-fire of the CI-staleness rerun for merge-queue
|
|
2355
|
+
entries blocked SOLELY on stale CI checks against an already-approved
|
|
2356
|
+
review — closing the gap where nothing periodic ever calls a live
|
|
2357
|
+
``coord merge`` or ``coord merge --revalidate`` on such an entry's
|
|
2358
|
+
behalf, so it just sits until an operator notices ``--dry-run``'s
|
|
2359
|
+
``checks_stale`` line and reruns by hand (the trigger: #2530's Gate-A
|
|
2360
|
+
PR #2534 sat blocked 2026-08-21 on nothing but 210 unrelated merges
|
|
2361
|
+
having landed since its CI last ran).
|
|
2362
|
+
|
|
2363
|
+
Deliberately narrow — this is NOT ``merge.auto_drain`` reopened (that
|
|
2364
|
+
flag stays ``False`` by design; see ``docs/DRIVE_QUEUE.md`` and the
|
|
2365
|
+
2026-06-07 incident it guards against). This step never merges anything
|
|
2366
|
+
and never touches an entry blocked on review, a real CI failure, or a
|
|
2367
|
+
conflict — it only triggers a ``gh run rerun`` for the exact shape
|
|
2368
|
+
:func:`coord.merge_queue.ci_revalidation_candidates` already scopes
|
|
2369
|
+
``--revalidate``'s CI arm to (#1851/#1925): ``PENDING``, review
|
|
2370
|
+
approved, smoke fresh, CI checks green but predating the current base.
|
|
2371
|
+
|
|
2372
|
+
BOUNDED, shared with the live path. Draws from the SAME
|
|
2373
|
+
``ci_stale_reruns``/``MAX_CI_STALE_RERUNS`` budget
|
|
2374
|
+
:func:`coord.merge_queue.process`'s own #2197 auto-rerun already spends
|
|
2375
|
+
from — a live ``coord merge`` attempt and this tick share one ceiling,
|
|
2376
|
+
never two independent ones that could double the effective retry count.
|
|
2377
|
+
An entry that has already exhausted the budget (on a prior live attempt
|
|
2378
|
+
or a prior tick) is left for a human exactly as #2197 already leaves it;
|
|
2379
|
+
this function never fires a further rerun past the cap, though it does
|
|
2380
|
+
keep recording the escalation (below) for as long as the entry stays
|
|
2381
|
+
stuck, so a human watching the audit trail sees it, not just the first
|
|
2382
|
+
tick that hit the ceiling.
|
|
2383
|
+
|
|
2384
|
+
Cost-visible (#1632's posture): every triggered rerun is a real CI run
|
|
2385
|
+
on GitHub's own runners, recorded via :func:`coord.audit.record_audit`
|
|
2386
|
+
(operational tier) so an operator can see the auto-fired count — same
|
|
2387
|
+
spirit as the notifier being advisory rather than silent, never a
|
|
2388
|
+
silent background spend.
|
|
2389
|
+
|
|
2390
|
+
Deliberately NOT behind a new config flag — this reuses exactly the
|
|
2391
|
+
bound and the counter #2197 already established for "an automatic CI
|
|
2392
|
+
rerun triggered by staleness"; the only thing new here is a periodic
|
|
2393
|
+
caller for the case nothing was already about to call ``process()``
|
|
2394
|
+
live. If that judgment turns out to be wrong in practice, the fix is a
|
|
2395
|
+
``merge.auto_revalidate_stale_ci`` off-switch, not removing the
|
|
2396
|
+
dedicated budget this already shares.
|
|
2397
|
+
|
|
2398
|
+
Best-effort like every other optional step in this tick (conflict
|
|
2399
|
+
reconciliation in ``_auto_drain_tick``, the merge-only fast path above):
|
|
2400
|
+
a failure here must never abort the rest of the tick. Skipped entirely
|
|
2401
|
+
on a thin client — this daemon-host tick is the only place it ever
|
|
2402
|
+
runs, same guard :func:`_fetch_live_ci_gate`/
|
|
2403
|
+
:func:`_run_merge_only_candidates` use.
|
|
2404
|
+
"""
|
|
2405
|
+
from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
|
|
2406
|
+
|
|
2407
|
+
if resolve_board_service() is not None:
|
|
2408
|
+
return
|
|
2409
|
+
|
|
2410
|
+
try:
|
|
2411
|
+
from coord import github_ops as _gh_ops # noqa: PLC0415
|
|
2412
|
+
from coord import merge_queue as _mq # noqa: PLC0415
|
|
2413
|
+
from coord.audit import record_audit # noqa: PLC0415
|
|
2414
|
+
from coord.ci_store import build_ci_store # noqa: PLC0415
|
|
2415
|
+
from coord.commands._common import _load_config # noqa: PLC0415
|
|
2416
|
+
from coord.state import load_board as _load_board # noqa: PLC0415
|
|
2417
|
+
|
|
2418
|
+
cfg = _load_config(config_path)
|
|
2419
|
+
board = _load_board()
|
|
2420
|
+
ci_store = build_ci_store(
|
|
2421
|
+
cfg.ci_store.type, host=cfg.ci_store.host, token_env=cfg.ci_store.token_env,
|
|
2422
|
+
)
|
|
2423
|
+
if ci_store is None or not ci_store.is_available:
|
|
2424
|
+
return
|
|
2425
|
+
items = _mq.load_queue()
|
|
2426
|
+
candidates = _mq.ci_revalidation_candidates(items, board, cfg, ci_store, _gh_ops)
|
|
2427
|
+
except Exception: # noqa: BLE001 — best-effort, see docstring
|
|
2428
|
+
return
|
|
2429
|
+
|
|
2430
|
+
if not candidates:
|
|
2431
|
+
return
|
|
2432
|
+
|
|
2433
|
+
touched: list = []
|
|
2434
|
+
for entry in candidates:
|
|
2435
|
+
label = f"{entry.repo_name} #{entry.issue_number} ({entry.branch})"
|
|
2436
|
+
if entry.ci_stale_reruns >= _mq.MAX_CI_STALE_RERUNS:
|
|
2437
|
+
# Budget already spent (on a previous tick, or a previous live
|
|
2438
|
+
# `coord merge` attempt) — #2197's own terminal wording is
|
|
2439
|
+
# already on the entry from whichever call last evaluated it.
|
|
2440
|
+
# Nothing new to trigger; still worth one audit row per tick so
|
|
2441
|
+
# an operator watching the trail sees this has been sitting
|
|
2442
|
+
# exhausted, not silently forgotten.
|
|
2443
|
+
record_audit(
|
|
2444
|
+
tier="operational", category="merge",
|
|
2445
|
+
event_type="merge_checks_stale_auto_revalidate_exhausted",
|
|
2446
|
+
actor="drive-queue-tick",
|
|
2447
|
+
summary=(
|
|
2448
|
+
f"auto-revalidate: {label} still checks_stale after "
|
|
2449
|
+
f"{entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS} "
|
|
2450
|
+
"auto-reruns — needs a human (`coord merge --revalidate` "
|
|
2451
|
+
"or `coord merge --only`)"
|
|
2452
|
+
),
|
|
2453
|
+
repo=entry.repo_name, issue=entry.issue_number,
|
|
2454
|
+
assignment_id=entry.assignment_id,
|
|
2455
|
+
details={
|
|
2456
|
+
"pr_number": entry.pr_number,
|
|
2457
|
+
"ci_stale_reruns": entry.ci_stale_reruns,
|
|
2458
|
+
},
|
|
2459
|
+
)
|
|
2460
|
+
continue
|
|
2461
|
+
try:
|
|
2462
|
+
reran = ci_store.rerun_for_pr(entry.repo_github, entry.pr_number)
|
|
2463
|
+
except Exception as exc: # noqa: BLE001 — one entry's failure must not sink the rest
|
|
2464
|
+
click.echo(
|
|
2465
|
+
f"auto-revalidate: could not re-run CI for {label}: {exc}", err=True
|
|
2466
|
+
)
|
|
2467
|
+
continue
|
|
2468
|
+
entry.ci_stale_reruns += 1
|
|
2469
|
+
entry.error = (
|
|
2470
|
+
f"{_mq.CI_PENDING_PREFIX} re-run triggered for CI checks that "
|
|
2471
|
+
"predate the current base (#2535 auto-revalidate "
|
|
2472
|
+
f"{entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS} "
|
|
2473
|
+
f"{'triggered' if reran else 'failed to trigger'})"
|
|
2474
|
+
)
|
|
2475
|
+
touched.append(entry)
|
|
2476
|
+
click.echo(
|
|
2477
|
+
f"auto-revalidate: {'triggered' if reran else 'FAILED to trigger'} "
|
|
2478
|
+
f"a CI re-run for {label} (checks_stale, review already approved) "
|
|
2479
|
+
f"— {entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS}"
|
|
2480
|
+
)
|
|
2481
|
+
record_audit(
|
|
2482
|
+
tier="operational", category="merge",
|
|
2483
|
+
event_type="merge_checks_stale_auto_revalidate",
|
|
2484
|
+
actor="drive-queue-tick",
|
|
2485
|
+
summary=(
|
|
2486
|
+
f"auto-revalidate: {'triggered' if reran else 'FAILED to trigger'} "
|
|
2487
|
+
f"a CI re-run for {label} — {entry.ci_stale_reruns}/"
|
|
2488
|
+
f"{_mq.MAX_CI_STALE_RERUNS}"
|
|
2489
|
+
),
|
|
2490
|
+
repo=entry.repo_name, issue=entry.issue_number,
|
|
2491
|
+
assignment_id=entry.assignment_id,
|
|
2492
|
+
details={"pr_number": entry.pr_number, "reran": reran},
|
|
2493
|
+
)
|
|
2494
|
+
|
|
2495
|
+
if not touched:
|
|
2496
|
+
return
|
|
2497
|
+
|
|
2498
|
+
try:
|
|
2499
|
+
from coord import merge_queue as _mq # noqa: PLC0415
|
|
2500
|
+
|
|
2501
|
+
fresh = _mq.load_queue()
|
|
2502
|
+
by_id = {e.assignment_id: e for e in touched}
|
|
2503
|
+
merged = [by_id.get(item.assignment_id, item) for item in fresh]
|
|
2504
|
+
_mq.save_queue(merged)
|
|
2505
|
+
except Exception: # noqa: BLE001 — best-effort persistence; next tick recomputes
|
|
2506
|
+
pass
|
|
2507
|
+
|
|
2508
|
+
|
|
2353
2509
|
def _run_resume_probe(entry: QueueEntry) -> ProbeResult:
|
|
2354
2510
|
"""Run one entry's ``--resume-when`` probe with a hard timeout.
|
|
2355
2511
|
|
|
@@ -2730,6 +2886,15 @@ def drive_queue_tick(
|
|
|
2730
2886
|
if not reconcile_only:
|
|
2731
2887
|
_run_merge_only_candidates(plan, config_path)
|
|
2732
2888
|
|
|
2889
|
+
# #2535: independent of the drive-queue plan above (this scans the
|
|
2890
|
+
# MERGE queue directly, not drive-queue rows) — a bounded, best-effort
|
|
2891
|
+
# CI re-run for any entry blocked solely on stale-but-green checks
|
|
2892
|
+
# with an already-approved review. Same `not reconcile_only` posture
|
|
2893
|
+
# as the merge-only fast path just above: a `gh run rerun` is a real
|
|
2894
|
+
# external action that mode promises not to take.
|
|
2895
|
+
if not reconcile_only:
|
|
2896
|
+
_run_auto_revalidate_checks_stale(config_path)
|
|
2897
|
+
|
|
2733
2898
|
# #2235 Phase 0: record every entry this tick moved INTO or OUT OF
|
|
2734
2899
|
# `blocked`/`parked`, with the reason the queue stated and — for a
|
|
2735
2900
|
# release — what the release itself reveals about the true cause.
|
|
@@ -393,8 +393,16 @@ Phase 0 steps 1–2 and Phase 1 step 6 above are also reachable by right-clickin
|
|
|
393
393
|
not a live session). The CLI's own claim-detection refuses a duplicate dispatch while one is
|
|
394
394
|
already in flight. This *is* Phase 0 step 1.
|
|
395
395
|
- **"View Gate A mock (PR)"** 👁 → opens that worker's PR in the browser so a human can read
|
|
396
|
-
`contract.md`
|
|
397
|
-
|
|
396
|
+
`contract.md` and review/merge the branch. Disabled until a PR exists. **This does not show the
|
|
397
|
+
rendered mock(s)** (#2501) — GitHub's "Files changed" view renders `.html` as a source diff,
|
|
398
|
+
never a live page; use "View Gate A mock (local)" below for that. **Merging that PR does not
|
|
399
|
+
satisfy Gate A** (#2063) — it is only how you review/merge what you are signing off on.
|
|
400
|
+
- **"View Gate A mock (local)"** 👁 → the actual mock viewer (#2501). Fast-forward-pulls the local
|
|
401
|
+
checkout's default branch (never forcing, never touching a dirty or diverged tree — aborts with
|
|
402
|
+
a toast instead, same as everywhere else this repo touches git destructively) and then opens
|
|
403
|
+
`tests/acceptance/ms-NN/mocks/` from disk in the OS's default browser, where `.html` actually
|
|
404
|
+
renders. Disabled until that mocks directory exists locally. Opens `mocks/index.html` once #2512
|
|
405
|
+
ships it; falls back to opening the mocks directory itself until then.
|
|
398
406
|
- **"Approve Gate A"** ✓ → `coord gate-a --approved <repo> <tracking_issue>` — records the verdict
|
|
399
407
|
that actually satisfies Gate A. Sits directly beside the 👁 on purpose: reviewing and recording
|
|
400
408
|
are one gesture.
|
|
@@ -2166,6 +2166,149 @@ def test_a_parked_merge_only_race_falls_back_to_an_ordinary_relaunch(
|
|
|
2166
2166
|
assert len(merge_only_runs.merge) == 1, merge_only_runs.merge
|
|
2167
2167
|
|
|
2168
2168
|
|
|
2169
|
+
# ── #2535: auto-fire a CI re-run for a merge-queue entry blocked SOLELY on
|
|
2170
|
+
# stale-but-green checks with an already-approved review — no drive-queue row
|
|
2171
|
+
# needed at all, since this scans the merge queue directly. Fixtures below are
|
|
2172
|
+
# deliberately self-contained (not `live_ci_backend`, which fixes the base
|
|
2173
|
+
# timestamp to always read FRESH — the opposite of what a staleness scenario
|
|
2174
|
+
# needs, and whose fake CI stand-in has no `rerun_for_pr` to assert calls on).
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
def _seed_pending_merge_row(
|
|
2178
|
+
coord_db, issue: int, *, pr_number: int, ci_stale_reruns: int = 0
|
|
2179
|
+
) -> None:
|
|
2180
|
+
"""A bare `merge_queue` row — no drive-queue counterpart — PENDING, with
|
|
2181
|
+
a PR number (required for `ci_revalidation_candidates` to consider it at
|
|
2182
|
+
all) and an optional pre-spent `ci_stale_reruns` budget."""
|
|
2183
|
+
coord_db.execute(
|
|
2184
|
+
"INSERT INTO merge_queue "
|
|
2185
|
+
"(assignment_id, repo_name, repo_github, branch, target_branch, "
|
|
2186
|
+
" issue_number, issue_title, state, pr_number, enqueued_at, "
|
|
2187
|
+
" ci_stale_reruns) "
|
|
2188
|
+
"VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?, ?)",
|
|
2189
|
+
(
|
|
2190
|
+
f"w{issue}", REPO, "john/claude-coordinator", f"work-{issue}", "main",
|
|
2191
|
+
issue, f"issue {issue}", pr_number, time.time(), ci_stale_reruns,
|
|
2192
|
+
),
|
|
2193
|
+
)
|
|
2194
|
+
coord_db.commit()
|
|
2195
|
+
|
|
2196
|
+
|
|
2197
|
+
class _FakeStaleCi:
|
|
2198
|
+
"""Stands in for the live backend, like `live_ci_backend`'s `_FakeLiveCi`
|
|
2199
|
+
— but with a `rerun_for_pr` that records its calls (#2182's fake has
|
|
2200
|
+
none, since nothing before #2535 ever needed the tick to trigger one)."""
|
|
2201
|
+
|
|
2202
|
+
is_available = True
|
|
2203
|
+
|
|
2204
|
+
def __init__(self, rerun_calls: list) -> None:
|
|
2205
|
+
self._rerun_calls = rerun_calls
|
|
2206
|
+
|
|
2207
|
+
def list_checks_for_pr(self, repo: str, number: int) -> list:
|
|
2208
|
+
from coord.ci_store import CheckRun
|
|
2209
|
+
|
|
2210
|
+
return [CheckRun(
|
|
2211
|
+
name="build", status="completed", conclusion="success",
|
|
2212
|
+
url="", run_id="1", started_at=100.0, completed_at=160.0,
|
|
2213
|
+
)]
|
|
2214
|
+
|
|
2215
|
+
def expects_checks(self, repo: str, number: int) -> bool:
|
|
2216
|
+
return True
|
|
2217
|
+
|
|
2218
|
+
def rerun_for_pr(self, repo: str, number: int) -> bool:
|
|
2219
|
+
self._rerun_calls.append((repo, number))
|
|
2220
|
+
return True
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
@pytest.fixture
|
|
2224
|
+
def stale_ci_backend(monkeypatch):
|
|
2225
|
+
"""Fakes the #1851 staleness shape directly: a green check that
|
|
2226
|
+
`started_at` well BEFORE the base's own commit timestamp — the base
|
|
2227
|
+
moved out from under an already-green PR. Returns the list of
|
|
2228
|
+
`(repo, pr_number)` pairs `rerun_for_pr` was called with.
|
|
2229
|
+
"""
|
|
2230
|
+
import coord.ci_store as ci_store_module
|
|
2231
|
+
import coord.github_ops as github_ops
|
|
2232
|
+
|
|
2233
|
+
rerun_calls: list[tuple[str, int]] = []
|
|
2234
|
+
monkeypatch.setattr(
|
|
2235
|
+
ci_store_module, "build_ci_store", lambda t, **_kw: _FakeStaleCi(rerun_calls)
|
|
2236
|
+
)
|
|
2237
|
+
# The check above started at 100.0; the base's own commit landed at
|
|
2238
|
+
# 1000.0 — well AFTER, so `_ci_checks_are_stale` reads True.
|
|
2239
|
+
monkeypatch.setattr(
|
|
2240
|
+
github_ops, "get_branch_commit_timestamp", lambda repo, branch: 1000.0
|
|
2241
|
+
)
|
|
2242
|
+
monkeypatch.setattr(github_ops, "get_pr_commit_messages", lambda repo, n: [])
|
|
2243
|
+
monkeypatch.setattr(github_ops, "check_pr_mergeable", lambda repo, n: None)
|
|
2244
|
+
return rerun_calls
|
|
2245
|
+
|
|
2246
|
+
|
|
2247
|
+
def test_auto_revalidate_fires_a_ci_rerun_for_an_entry_blocked_solely_on_stale_checks(
|
|
2248
|
+
cli_no_gates, coord_db, stale_ci_backend,
|
|
2249
|
+
):
|
|
2250
|
+
"""The #2530/#2534 shape, unattended: a PENDING entry with a PR, review
|
|
2251
|
+
already satisfied (`cli_no_gates` disables the review requirement —
|
|
2252
|
+
the same minimal "sole blocker is CI" shape
|
|
2253
|
+
`TestCiRevalidationCandidates` uses in tests/test_merge_queue.py), and
|
|
2254
|
+
CI checks that are green but predate the current base. The tick fires
|
|
2255
|
+
the re-run itself — no drive-queue row, no operator running
|
|
2256
|
+
`coord merge --revalidate` by hand.
|
|
2257
|
+
"""
|
|
2258
|
+
_seed_pending_merge_row(coord_db, 2534, pr_number=42)
|
|
2259
|
+
|
|
2260
|
+
result = cli_no_gates("tick")
|
|
2261
|
+
assert result.exit_code == 0, result.output
|
|
2262
|
+
|
|
2263
|
+
assert stale_ci_backend == [("john/claude-coordinator", 42)]
|
|
2264
|
+
row = coord_db.execute(
|
|
2265
|
+
"SELECT ci_stale_reruns, error FROM merge_queue WHERE issue_number = ?",
|
|
2266
|
+
(2534,),
|
|
2267
|
+
).fetchone()
|
|
2268
|
+
assert row["ci_stale_reruns"] == 1
|
|
2269
|
+
assert row["error"].startswith("CI running:")
|
|
2270
|
+
assert "#2535" in row["error"]
|
|
2271
|
+
|
|
2272
|
+
from coord.audit import query_audit_log
|
|
2273
|
+
|
|
2274
|
+
entries = query_audit_log(event_type="merge_checks_stale_auto_revalidate")["entries"]
|
|
2275
|
+
assert len(entries) == 1
|
|
2276
|
+
assert entries[0]["issue"] == 2534
|
|
2277
|
+
assert entries[0]["repo"] == REPO
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
def test_auto_revalidate_never_exceeds_the_shared_budget(
|
|
2281
|
+
cli_no_gates, coord_db, stale_ci_backend,
|
|
2282
|
+
):
|
|
2283
|
+
"""Budget already spent (whether by a prior tick or a prior live
|
|
2284
|
+
`coord merge` attempt makes no difference — it's the same counter): no
|
|
2285
|
+
NEW rerun fires, but the exhaustion is still recorded so a human
|
|
2286
|
+
watching the audit trail sees it."""
|
|
2287
|
+
from coord.merge_queue import MAX_CI_STALE_RERUNS
|
|
2288
|
+
|
|
2289
|
+
_seed_pending_merge_row(
|
|
2290
|
+
coord_db, 2534, pr_number=42, ci_stale_reruns=MAX_CI_STALE_RERUNS
|
|
2291
|
+
)
|
|
2292
|
+
|
|
2293
|
+
result = cli_no_gates("tick")
|
|
2294
|
+
assert result.exit_code == 0, result.output
|
|
2295
|
+
|
|
2296
|
+
assert stale_ci_backend == [] # no new rerun triggered
|
|
2297
|
+
row = coord_db.execute(
|
|
2298
|
+
"SELECT ci_stale_reruns FROM merge_queue WHERE issue_number = ?",
|
|
2299
|
+
(2534,),
|
|
2300
|
+
).fetchone()
|
|
2301
|
+
assert row["ci_stale_reruns"] == MAX_CI_STALE_RERUNS # unchanged
|
|
2302
|
+
|
|
2303
|
+
from coord.audit import query_audit_log
|
|
2304
|
+
|
|
2305
|
+
entries = query_audit_log(
|
|
2306
|
+
event_type="merge_checks_stale_auto_revalidate_exhausted"
|
|
2307
|
+
)["entries"]
|
|
2308
|
+
assert len(entries) == 1
|
|
2309
|
+
assert entries[0]["issue"] == 2534
|
|
2310
|
+
|
|
2311
|
+
|
|
2169
2312
|
def test_a_repeatedly_dead_drive_still_reaches_blocked_and_escalates(
|
|
2170
2313
|
cli, seed, launches, coord_db
|
|
2171
2314
|
):
|
|
@@ -233,10 +233,26 @@ COMMANDS_ALLOWLIST: dict[str, set[tuple[str, str]]] = {
|
|
|
233
233
|
# (#1870), reaches it. Read-only: load_board only, no save_board, and the
|
|
234
234
|
# whole block is wrapped in a fail-soft `except Exception: return {}` whose
|
|
235
235
|
# empty result degrades to exactly the pre-#2350 `resumed` relaunch path.
|
|
236
|
+
# #2535-guarded: `_run_auto_revalidate_checks_stale` is the same shape and
|
|
237
|
+
# the same guard once more — it hands a board to
|
|
238
|
+
# `merge_queue.ci_revalidation_candidates` so the tick can fire the bounded
|
|
239
|
+
# CI re-run for a merge-queue entry blocked solely on stale-but-green
|
|
240
|
+
# checks against an already-approved review (PR #2534 sat there on nothing
|
|
241
|
+
# but 210 unrelated merges having landed since its CI last ran). The
|
|
242
|
+
# `if resolve_board_service() is not None: return` early return sits ABOVE
|
|
243
|
+
# the `from coord.state import load_board` import, so a thin client returns
|
|
244
|
+
# before the local read is even imported, let alone called; only the daemon
|
|
245
|
+
# host, where `coord drive-queue tick` runs and nowhere else (#1870),
|
|
246
|
+
# reaches it. Read-only with respect to the board: load_board only, no
|
|
247
|
+
# save_board (its one write is to the separate merge-queue table via
|
|
248
|
+
# `merge_queue.save_queue`, which the extended scan below already covers),
|
|
249
|
+
# and the whole block is wrapped in a fail-soft `except Exception: return`
|
|
250
|
+
# that degrades to exactly the pre-#2535 "wait for an operator" behaviour.
|
|
236
251
|
"drive_queue.py": {
|
|
237
252
|
("_fetch_live_ci_gate", "load_board"),
|
|
238
253
|
("_fetch_live_blocked_gate", "load_board"),
|
|
239
254
|
("_fetch_merge_only_ready", "load_board"),
|
|
255
|
+
("_run_auto_revalidate_checks_stale", "load_board"),
|
|
240
256
|
("drive_queue_diagnose", "build_board"),
|
|
241
257
|
},
|
|
242
258
|
# #1337: `coord test` no longer calls save_board at all — the verdict is
|
|
@@ -896,13 +896,32 @@ impl CoordApp {
|
|
|
896
896
|
// headlessly (an independent mock-author agent renders the
|
|
897
897
|
// viewable mock + writes tests/acceptance/ms-NN/contract.md —
|
|
898
898
|
// the CLI's own claim-detection refuses a duplicate dispatch).
|
|
899
|
-
// "View Gate A mock" opens that worker's PR in the
|
|
900
|
-
// (same mechanism as the Done-lifecycle "Open PR"
|
|
901
|
-
// human can read contract.md
|
|
902
|
-
//
|
|
903
|
-
//
|
|
904
|
-
//
|
|
905
|
-
//
|
|
899
|
+
// "View Gate A mock (PR)" opens that worker's PR in the
|
|
900
|
+
// browser (same mechanism as the Done-lifecycle "Open PR"
|
|
901
|
+
// below) so a human can read contract.md and review/merge
|
|
902
|
+
// the branch — the Test → Review → Merge round trip that
|
|
903
|
+
// constitutes sign-off — before `coord acceptance author`
|
|
904
|
+
// (out of scope here) is run against the merged contract.
|
|
905
|
+
// #2501: the PR route was NEVER a way to see the rendered
|
|
906
|
+
// mock(s) themselves — GitHub's "Files changed" view renders
|
|
907
|
+
// `.html` as a source diff, not a live page. "View Gate A
|
|
908
|
+
// mock (local)" sits beside it for that: it fast-forward-
|
|
909
|
+
// pulls the local checkout's default branch (never forcing,
|
|
910
|
+
// never touching a dirty tree — see
|
|
911
|
+
// `pull_default_branch_ff_only`) and then opens
|
|
912
|
+
// tests/acceptance/ms-NN/mocks/index.html from disk via a
|
|
913
|
+
// `file://` URL — a `.html` file IS MIME-associated with the
|
|
914
|
+
// OS's default browser, so this reliably renders there.
|
|
915
|
+
// #2512 amendment: until `mocks/index.html` exists (older
|
|
916
|
+
// checkouts, or a mock-author run predating #2512), this
|
|
917
|
+
// falls back to opening the raw `mocks/` DIRECTORY instead —
|
|
918
|
+
// a directory has no such MIME association, so on most
|
|
919
|
+
// desktops that `file://` URL opens in the OS's file
|
|
920
|
+
// manager, not the browser; the operator is one extra click
|
|
921
|
+
// (pick an `.html` file) from the rendered mock, not looking
|
|
922
|
+
// at it directly. Interim and acceptable per that amendment,
|
|
923
|
+
// but worth being precise about here rather than implying
|
|
924
|
+
// both paths land in the browser equally.
|
|
906
925
|
items.push(ContextMenuItem::action(
|
|
907
926
|
"dispatch-gate-a-mock",
|
|
908
927
|
"Dispatch Gate A mock",
|
|
@@ -912,6 +931,14 @@ impl CoordApp {
|
|
|
912
931
|
view_gate_a_item.disabled =
|
|
913
932
|
epic_issue.and_then(|iss| self.pipeline_pr_number(iss)).is_none();
|
|
914
933
|
items.push(view_gate_a_item);
|
|
934
|
+
let mut view_gate_a_local_item = ContextMenuItem::action(
|
|
935
|
+
"view-gate-a-mock-local",
|
|
936
|
+
"View Gate A mock (local)",
|
|
937
|
+
);
|
|
938
|
+
view_gate_a_local_item.disabled = !epic_issue
|
|
939
|
+
.map(|iss| self.gate_a_mocks_dir_exists_for(iss))
|
|
940
|
+
.unwrap_or(false);
|
|
941
|
+
items.push(view_gate_a_local_item);
|
|
915
942
|
// #2063: the sign-off itself, right beside the 👁 that opens
|
|
916
943
|
// the thing being signed off on — reviewing and recording are
|
|
917
944
|
// one gesture. Until now "merging that PR is what satisfies
|
|
@@ -6982,6 +7009,16 @@ impl CoordApp {
|
|
|
6982
7009
|
}
|
|
6983
7010
|
true
|
|
6984
7011
|
}
|
|
7012
|
+
// #2501: local counterpart to "view-gate-a-mock" — pulls the
|
|
7013
|
+
// local checkout's default branch (fast-forward only) and opens
|
|
7014
|
+
// the rendered mock(s) from disk, since the PR route can never
|
|
7015
|
+
// actually show them (GitHub renders `.html` as source, not a
|
|
7016
|
+
// live page). All toasting on abort/failure happens inside
|
|
7017
|
+
// `dispatch_view_gate_a_mock_local_for_selected_pipeline_row`.
|
|
7018
|
+
"view-gate-a-mock-local" => {
|
|
7019
|
+
self.dispatch_view_gate_a_mock_local_for_selected_pipeline_row();
|
|
7020
|
+
true
|
|
7021
|
+
}
|
|
6985
7022
|
// #2063: record the human Gate-A verdict. `--approved` is what
|
|
6986
7023
|
// unblocks the milestone's issues; `--changes` records a
|
|
6987
7024
|
// rejection so the refusal downstream can say what to fix
|