code-coordinator 0.5.658__tar.gz → 0.5.660__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.658 → code_coordinator-0.5.660}/PKG-INFO +1 -1
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/code_coordinator.egg-info/PKG-INFO +1 -1
- code_coordinator-0.5.660/code_coordinator.egg-info/scm_version.json +8 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/merge_queue.py +222 -4
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/release_propagate.py +44 -3
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/review.py +2 -2
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_merge_queue.py +496 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_propagate.py +64 -1
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review.py +58 -0
- code_coordinator-0.5.658/code_coordinator.egg-info/scm_version.json +0 -8
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/.gitignore +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/CLAUDE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/GOAL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/LICENSE +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/MANIFEST.in +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/README.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/agent.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/app_drive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/app_drive_daemon.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/audit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/backup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/block_log.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/board_service.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/brain.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/briefing_lessons.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/bugbash.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/claim.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/cli.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/client.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/codegen.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/app_drive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/bugbash.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/smoke.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/comments.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/config.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dao.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dashboard/reports.html +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/db.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-nightly-smoke.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-nightly-smoke.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/deps.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dirlink.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/drive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/events.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/filelock.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/freshness.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/gates.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/goal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/gtk_native_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/gui_lane_preflight.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/context.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/models.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/render.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/health/units.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/hooks.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/interactive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/key_spec.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/mac_native_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/models.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/native_fs_wait.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/native_pixels.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/network.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/nightly_runner.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/nightly_smoke.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/nightly_status.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/nightly_store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/notify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/openapi.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/parentage.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/plans.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/prereview_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/progress.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/release_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/release_window.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/reports.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/self_health.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/shell_exec_wrap.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/smoke.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/smoke_tags.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/split_work.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/sql.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/test_author.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/test_report.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/tui_pty_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/upstream_gaps.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/usage.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/win_native_bridge.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/win_native_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-nightly-smoke.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-nightly-smoke.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/install-agent.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/pyproject.toml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/comment_cruft.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/setup.cfg +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/__init__.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/backends.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/conftest.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_graceful_shutdown_3649.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_graph_refresh.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_app_drive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_nightly_status.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_briefing_lessons.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_bugbash.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_inject_board_less.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_issue_close_wrong_repo.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_smoke_nightly.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_smoke_nightly_sweep.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_nightly.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_client.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_comment_cruft.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_prereview_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dashboard_reports.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_db.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dirlink.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_events.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_gtk_native_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_init.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_install_agent_capabilities_3515.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_key_spec.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_mac_native_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_merge_verification.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_models.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_models_pinned_1650.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_native_fs_wait.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_native_pixels.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_network.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_nightly_runner.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_nightly_smoke.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_nightly_status.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_nightly_store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_no_eligible_host_3600.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_plain_runner_smoke_3673.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_prereview_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_gate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_report_public_export.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_session.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_smoke_plain_runner_3673.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_split.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_state.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_tui_pty_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_upstream_gaps.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_win_native_bridge.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_win_native_driver.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.658 → code_coordinator-0.5.660}/tests/write_parity.py +0 -0
|
@@ -703,6 +703,15 @@ def has_approved_review(
|
|
|
703
703
|
:func:`_backfill_branch_patch_id`'s on-demand network fetch, and a
|
|
704
704
|
caller must opt into *that* I/O independently of this one.
|
|
705
705
|
|
|
706
|
+
#3749: a third, independent escape hatch shares *ancillary_gh_ops*
|
|
707
|
+
with the one above rather than *gh_ops* — see
|
|
708
|
+
:func:`_review_delta_is_context_only`. A SHA mismatch whose base-relative
|
|
709
|
+
diff changed only in context lines (a rebase, a zero-conflict
|
|
710
|
+
base-merge) also still covers the current head, for ANY file, not just
|
|
711
|
+
a configured ancillary set. It activates behind the same opt-in as the
|
|
712
|
+
#3707 check on purpose: a caller must not be able to enable one
|
|
713
|
+
base-relative-diff check without the other.
|
|
714
|
+
|
|
706
715
|
*config*, when supplied, resolves *ancillary_files*/*ancillary_gh_ops*
|
|
707
716
|
automatically via :func:`_resolve_ancillary_config` — pass the live
|
|
708
717
|
``Config`` instead of resolving ``config.repo(entry.repo_name)
|
|
@@ -744,10 +753,24 @@ def scan_approved_reviews(
|
|
|
744
753
|
caller of this scan must answer the ancillary-rebase question the same
|
|
745
754
|
way (#2096), so prefer passing *config* over leaving a call site on the
|
|
746
755
|
pre-#3707 default of "never exempt".
|
|
756
|
+
|
|
757
|
+
#3749: *ancillary_gh_ops* also gates a second, independent
|
|
758
|
+
base-relative-diff check — see :func:`_review_delta_is_context_only` —
|
|
759
|
+
that covers a patch-id mismatch produced by context-line churn alone
|
|
760
|
+
(a rebase, a zero-conflict base-merge), for any file. It deliberately
|
|
761
|
+
shares *ancillary_gh_ops* rather than the raw *gh_ops* parameter so a
|
|
762
|
+
caller can never opt into one base-relative-diff check without the
|
|
763
|
+
other.
|
|
747
764
|
"""
|
|
748
765
|
ancillary_files, ancillary_gh_ops = _resolve_ancillary_config(
|
|
749
766
|
entry, gh_ops, config, ancillary_files, ancillary_gh_ops
|
|
750
767
|
)
|
|
768
|
+
# #3749: shared across every _review_delta_is_ancillary_only/
|
|
769
|
+
# _review_delta_is_context_only call this scan makes — both check the
|
|
770
|
+
# exact same (repo, base_branch, sha) compare, and current_sha is the
|
|
771
|
+
# same across every pool entry too, so a single dict spanning the whole
|
|
772
|
+
# scan avoids a repeat `gh api compare` round trip per loop iteration.
|
|
773
|
+
diff_cache: dict[tuple[str, str, str], str | None] = {}
|
|
751
774
|
pool = list(getattr(board, "completed", []) or []) + list(getattr(board, "active", []) or [])
|
|
752
775
|
|
|
753
776
|
branch_work_ids = _chain_work_ids(entry, pool)
|
|
@@ -824,11 +847,31 @@ def scan_approved_reviews(
|
|
|
824
847
|
getattr(entry, "target_branch", None),
|
|
825
848
|
review_sha,
|
|
826
849
|
current_sha,
|
|
850
|
+
diff_cache,
|
|
827
851
|
):
|
|
828
852
|
# #3707: the rebase delta is confined to ancillary paths
|
|
829
853
|
# (CHANGELOG.md/README.md, per repo config) — approval
|
|
830
854
|
# still covers it, same as a content-identical patch-id.
|
|
831
855
|
return ApprovalScan(approved=True, unknown_head=False, review_assignment=a)
|
|
856
|
+
if current_sha is not None and _review_delta_is_context_only(
|
|
857
|
+
ancillary_gh_ops,
|
|
858
|
+
getattr(entry, "repo_github", None),
|
|
859
|
+
getattr(entry, "target_branch", None),
|
|
860
|
+
review_sha,
|
|
861
|
+
current_sha,
|
|
862
|
+
diff_cache,
|
|
863
|
+
):
|
|
864
|
+
# #3749: the patch-id changed only because upstream churn
|
|
865
|
+
# shifted the diff's context lines (a rebase, a
|
|
866
|
+
# zero-conflict base-merge) — the reviewed hunks' own
|
|
867
|
+
# content is byte-identical, so the approval still covers
|
|
868
|
+
# the current head. No ancillary-files allow-list gates
|
|
869
|
+
# this (unlike the check above, it's sound for any file),
|
|
870
|
+
# but it shares that check's *gh_ops* argument on purpose:
|
|
871
|
+
# both base-relative-diff checks must activate behind the
|
|
872
|
+
# SAME explicit per-call opt-in, so a caller that only
|
|
873
|
+
# intends to opt into one never silently gets the other.
|
|
874
|
+
return ApprovalScan(approved=True, unknown_head=False, review_assignment=a)
|
|
832
875
|
if current_sha is None:
|
|
833
876
|
# Refused because we don't KNOW the head, not because we
|
|
834
877
|
# checked and it moved. Same (closed) gate verdict, but a
|
|
@@ -890,6 +933,11 @@ def find_scoped_review_candidate(
|
|
|
890
933
|
— :func:`has_approved_review` already carries THAT forward too, via
|
|
891
934
|
the same :func:`_review_delta_is_ancillary_only` check, so there is
|
|
892
935
|
nothing left to scope a review around either.
|
|
936
|
+
- The delta since that review changed only the diff's context lines,
|
|
937
|
+
not the reviewed hunks' own content (#3749: a rebase, a zero-conflict
|
|
938
|
+
base-merge) — :func:`has_approved_review` already carries THAT
|
|
939
|
+
forward too, via the same :func:`_review_delta_is_context_only`
|
|
940
|
+
check, so there is nothing left to scope a review around either.
|
|
893
941
|
- Either patch-id is missing (fail closed, same posture as
|
|
894
942
|
``has_approved_review``: an unconfirmable diff gets a full review,
|
|
895
943
|
never a guessed-at scoped one) — unless the ancillary-only check
|
|
@@ -898,6 +946,9 @@ def find_scoped_review_candidate(
|
|
|
898
946
|
ancillary_files, ancillary_gh_ops = _resolve_ancillary_config(
|
|
899
947
|
entry, gh_ops, config, ancillary_files, ancillary_gh_ops
|
|
900
948
|
)
|
|
949
|
+
# #3749: see the identical cache in `scan_approved_reviews` — shared
|
|
950
|
+
# across every ancillary-only/context-only compare this walk makes.
|
|
951
|
+
diff_cache: dict[tuple[str, str, str], str | None] = {}
|
|
901
952
|
pool = list(getattr(board, "completed", []) or []) + list(getattr(board, "active", []) or [])
|
|
902
953
|
branch_work_ids = _chain_work_ids(entry, pool)
|
|
903
954
|
if not branch_work_ids:
|
|
@@ -937,8 +988,18 @@ def find_scoped_review_candidate(
|
|
|
937
988
|
getattr(entry, "target_branch", None),
|
|
938
989
|
review_sha,
|
|
939
990
|
current_sha,
|
|
991
|
+
diff_cache,
|
|
940
992
|
):
|
|
941
993
|
continue # #3707: ancillary-only delta — has_approved_review already covers it
|
|
994
|
+
if _review_delta_is_context_only(
|
|
995
|
+
ancillary_gh_ops,
|
|
996
|
+
getattr(entry, "repo_github", None),
|
|
997
|
+
getattr(entry, "target_branch", None),
|
|
998
|
+
review_sha,
|
|
999
|
+
current_sha,
|
|
1000
|
+
diff_cache,
|
|
1001
|
+
):
|
|
1002
|
+
continue # #3749: context-only delta — has_approved_review already covers it
|
|
942
1003
|
if review_patch_id is None:
|
|
943
1004
|
continue # fail closed — cannot confirm scope, full review
|
|
944
1005
|
return a # approval voided ONLY by a content-changing rebase
|
|
@@ -2339,6 +2400,7 @@ def _fetch_compare_diff(
|
|
|
2339
2400
|
repo_github: str | None,
|
|
2340
2401
|
base_sha: str | None,
|
|
2341
2402
|
head_sha: str | None,
|
|
2403
|
+
cache: dict[tuple[str, str, str], str | None] | None = None,
|
|
2342
2404
|
) -> str | None:
|
|
2343
2405
|
"""Fetch the unified diff TEXT for one ``get_compare_diff(base_sha,
|
|
2344
2406
|
head_sha)`` compare, failing closed to ``None`` (never raising) exactly
|
|
@@ -2351,13 +2413,28 @@ def _fetch_compare_diff(
|
|
|
2351
2413
|
needs the text to tell "this file's content didn't change between the
|
|
2352
2414
|
two base-relative compares" apart from "this file isn't touched by
|
|
2353
2415
|
either compare", which a file-name list alone can't distinguish.
|
|
2416
|
+
|
|
2417
|
+
*cache*, when supplied, is a plain dict keyed by ``(repo_github,
|
|
2418
|
+
base_sha, head_sha)`` that the caller owns and reuses across sibling
|
|
2419
|
+
calls within one scan — :func:`_review_delta_is_ancillary_only` and
|
|
2420
|
+
:func:`_review_delta_is_context_only` fetch the exact same two
|
|
2421
|
+
base-relative compares, so a caller that runs both back-to-back (every
|
|
2422
|
+
"is this approved?" surface does, per #3749) would otherwise make the
|
|
2423
|
+
same ``gh api compare`` round trip twice. ``None`` (the default) keeps
|
|
2424
|
+
this an uncached, standalone fetch.
|
|
2354
2425
|
"""
|
|
2355
2426
|
if gh_ops is None or not repo_github or not base_sha or not head_sha:
|
|
2356
2427
|
return None
|
|
2428
|
+
key = (repo_github, base_sha, head_sha)
|
|
2429
|
+
if cache is not None and key in cache:
|
|
2430
|
+
return cache[key]
|
|
2357
2431
|
try:
|
|
2358
|
-
|
|
2432
|
+
result = gh_ops.get_compare_diff(repo_github, base_sha, head_sha)
|
|
2359
2433
|
except Exception: # noqa: BLE001 — fail-safe: unknown diff is not "ancillary-only"
|
|
2360
|
-
|
|
2434
|
+
result = None
|
|
2435
|
+
if cache is not None:
|
|
2436
|
+
cache[key] = result
|
|
2437
|
+
return result
|
|
2361
2438
|
|
|
2362
2439
|
|
|
2363
2440
|
_DIFF_GIT_HEADER_RE = re.compile(r"^diff --git a/(.*) b/(.*)$")
|
|
@@ -2400,6 +2477,7 @@ def _review_delta_is_ancillary_only(
|
|
|
2400
2477
|
base_branch: str | None,
|
|
2401
2478
|
review_sha: str | None,
|
|
2402
2479
|
current_sha: str | None,
|
|
2480
|
+
diff_cache: dict[tuple[str, str, str], str | None] | None = None,
|
|
2403
2481
|
) -> bool:
|
|
2404
2482
|
"""True when every file that changed between *review_sha* (the SHA an
|
|
2405
2483
|
existing ``approve``d review covered) and *current_sha* (the branch's
|
|
@@ -2439,11 +2517,16 @@ def _review_delta_is_ancillary_only(
|
|
|
2439
2517
|
:func:`_backfill_branch_patch_id` — callers that want this check active
|
|
2440
2518
|
must opt in explicitly, so a caller that only wants patch-id backfill
|
|
2441
2519
|
(or neither) sees no behavior change.
|
|
2520
|
+
|
|
2521
|
+
*diff_cache*, when supplied, is forwarded to :func:`_fetch_compare_diff`
|
|
2522
|
+
so a caller that also runs :func:`_review_delta_is_context_only` for the
|
|
2523
|
+
same *review_sha*/*current_sha* pair reuses the fetch instead of hitting
|
|
2524
|
+
``gh api compare`` twice (#3749).
|
|
2442
2525
|
"""
|
|
2443
2526
|
if not ancillary_files or not base_branch:
|
|
2444
2527
|
return False
|
|
2445
|
-
review_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, review_sha)
|
|
2446
|
-
current_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, current_sha)
|
|
2528
|
+
review_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, review_sha, diff_cache)
|
|
2529
|
+
current_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, current_sha, diff_cache)
|
|
2447
2530
|
if review_diff is None or current_diff is None:
|
|
2448
2531
|
return False
|
|
2449
2532
|
review_blocks = _diff_blocks_by_path(review_diff)
|
|
@@ -2464,6 +2547,141 @@ def _review_delta_is_ancillary_only(
|
|
|
2464
2547
|
return _files_are_ancillary(sorted(changed_paths), ancillary_files)
|
|
2465
2548
|
|
|
2466
2549
|
|
|
2550
|
+
def _content_lines_only(block: str) -> list[str]:
|
|
2551
|
+
"""Reduce *block* (one file's unified-diff text) to just its added/
|
|
2552
|
+
removed content lines, in order — dropping the ``diff --git``/``index``/
|
|
2553
|
+
``---``/``+++``/mode/rename header region, the ``@@`` hunk markers
|
|
2554
|
+
themselves, and unchanged context lines.
|
|
2555
|
+
|
|
2556
|
+
Tracks hunk state rather than prefix-matching every line in the block:
|
|
2557
|
+
everything before the first ``@@`` is header (``diff --git``, ``index``,
|
|
2558
|
+
the ``--- a/X`` / ``+++ b/X`` file markers, ``old mode``/``new mode``,
|
|
2559
|
+
``rename from``/``rename to``), never real content, however it's
|
|
2560
|
+
spelled; everything at or after the first ``@@`` is hunk body, where a
|
|
2561
|
+
line starting with ``+``/``-`` is real added/removed content REGARDLESS
|
|
2562
|
+
of what follows that first character. A naive ``line.startswith("---")``
|
|
2563
|
+
skip would also swallow a genuinely removed line whose content happens
|
|
2564
|
+
to start with ``--`` (a SQL/Lua/Haskell comment, a YAML/Markdown rule,
|
|
2565
|
+
a shell ``--flag \\`` continuation) — this walk never makes that
|
|
2566
|
+
mistake, because it only treats ``---``/``+++`` as header while still in
|
|
2567
|
+
the header region.
|
|
2568
|
+
|
|
2569
|
+
#3749: a diff's context lines shift whenever the base branch changes
|
|
2570
|
+
nearby — a pure rebase, a zero-conflict merge of an advanced base, an
|
|
2571
|
+
unrelated commit landing a few lines above the reviewed hunk — even
|
|
2572
|
+
though the reviewed hunk's own added/removed content is byte-identical.
|
|
2573
|
+
``git patch-id`` (:func:`coord.github_ops.compute_patch_id`) hashes
|
|
2574
|
+
those context lines too, so this kind of mechanical churn can still
|
|
2575
|
+
flip the patch-id and void an approval that covers unchanged content.
|
|
2576
|
+
Comparing only the ``+``/``-`` lines is intentionally looser than
|
|
2577
|
+
patch-id, checking only that no hunk INSERTED, REMOVED, or REORDERED a
|
|
2578
|
+
real line — it cannot see hunk *position* (the dropped ``@@`` header
|
|
2579
|
+
means two identical lines deleted at different places in the same file
|
|
2580
|
+
compare equal), so it is not a full statement of "nothing a reviewer
|
|
2581
|
+
cares about changed", only of the narrower thing it actually checks.
|
|
2582
|
+
"""
|
|
2583
|
+
out: list[str] = []
|
|
2584
|
+
in_hunk = False
|
|
2585
|
+
for line in block.splitlines():
|
|
2586
|
+
if line.startswith("@@"):
|
|
2587
|
+
in_hunk = True
|
|
2588
|
+
continue
|
|
2589
|
+
if not in_hunk:
|
|
2590
|
+
continue # file-identity header region — never content
|
|
2591
|
+
if line.startswith(("+", "-")):
|
|
2592
|
+
out.append(line)
|
|
2593
|
+
return out
|
|
2594
|
+
|
|
2595
|
+
|
|
2596
|
+
def _review_delta_is_context_only(
|
|
2597
|
+
gh_ops: "GhOps | None",
|
|
2598
|
+
repo_github: str | None,
|
|
2599
|
+
base_branch: str | None,
|
|
2600
|
+
review_sha: str | None,
|
|
2601
|
+
current_sha: str | None,
|
|
2602
|
+
diff_cache: dict[tuple[str, str, str], str | None] | None = None,
|
|
2603
|
+
) -> bool:
|
|
2604
|
+
"""True when every file that changed between *review_sha* (what an
|
|
2605
|
+
existing ``approve``d review covered) and *current_sha* (the branch's
|
|
2606
|
+
current head) changed ONLY in diff context — the reviewed hunks'
|
|
2607
|
+
actual added/removed lines are byte-identical, and what moved is purely
|
|
2608
|
+
the unchanged lines around them (#3749: a pure rebase, a zero-conflict
|
|
2609
|
+
base-merge, upstream churn landing near but not inside the reviewed
|
|
2610
|
+
diff). :func:`_review_delta_is_ancillary_only`'s patch-id carry-forward
|
|
2611
|
+
(via ``scan_approved_reviews``'s own #1475 comparison) already catches
|
|
2612
|
+
the case where context happens to be untouched too — this is the
|
|
2613
|
+
fallback for when the base moving shifted it, since ``git patch-id``
|
|
2614
|
+
hashes context lines and so cannot tell the two apart.
|
|
2615
|
+
|
|
2616
|
+
Mirrors :func:`_review_delta_is_ancillary_only`'s approach of anchoring
|
|
2617
|
+
both compares at *base_branch* (never diffing *review_sha* against
|
|
2618
|
+
*current_sha* directly — after a rebase neither is an ancestor of the
|
|
2619
|
+
other) and splitting each into per-file blocks via
|
|
2620
|
+
:func:`_diff_blocks_by_path`. Unlike that function, no
|
|
2621
|
+
*ancillary_files* allow-list gates this — a context-only delta is safe
|
|
2622
|
+
to carry forward for ANY file, not just a configured ancillary set.
|
|
2623
|
+
*gh_ops* here is deliberately the caller's resolved ``ancillary_gh_ops``
|
|
2624
|
+
(never a raw, unconditionally-available ``gh_ops``) so this check is
|
|
2625
|
+
gated behind the SAME explicit per-call opt-in as #3707 — every one of
|
|
2626
|
+
this module's "is this approved?" surfaces must activate (or not
|
|
2627
|
+
activate) both base-relative-diff checks together, never just one: the
|
|
2628
|
+
merge gate and `coord/review.py`'s scoped-review dispatch answering
|
|
2629
|
+
this question differently permanently wedges the queue row.
|
|
2630
|
+
|
|
2631
|
+
Fails closed to ``False`` when *base_branch*/*gh_ops*/*repo_github*/
|
|
2632
|
+
either SHA is missing, either compare call raises or returns ``None``,
|
|
2633
|
+
every per-file block compares byte-identical between the two diffs
|
|
2634
|
+
(which includes both diffs being completely empty — mirrors
|
|
2635
|
+
:func:`_review_delta_is_ancillary_only`'s empty-changed-path case:
|
|
2636
|
+
byte-identical base-relative diffs cannot produce two different
|
|
2637
|
+
patch-ids, so reaching this function at all with nothing differing
|
|
2638
|
+
means a patch-id read upstream was wrong, not that this is a genuine
|
|
2639
|
+
no-op the patch-id check somehow missed), a differing block yields no
|
|
2640
|
+
``+``/``-`` content lines on EITHER side (a binary-file change, an
|
|
2641
|
+
``old mode``/``new mode`` permission flip, or an empty-file add/delete
|
|
2642
|
+
— the block differs, but there is no positive evidence of what changed,
|
|
2643
|
+
only the absence of an observed hunk, which is not the same thing), or
|
|
2644
|
+
any changed path's content-only lines differ between the two diffs.
|
|
2645
|
+
|
|
2646
|
+
*diff_cache*, when supplied, is forwarded to :func:`_fetch_compare_diff`
|
|
2647
|
+
so a caller that also runs :func:`_review_delta_is_ancillary_only` for
|
|
2648
|
+
the same *review_sha*/*current_sha* pair reuses that fetch instead of
|
|
2649
|
+
hitting ``gh api compare`` twice for the exact same compare.
|
|
2650
|
+
"""
|
|
2651
|
+
if not base_branch:
|
|
2652
|
+
# Short-circuit, not a second safety net: `_fetch_compare_diff`
|
|
2653
|
+
# itself fails closed on a missing base, so this only spares the two
|
|
2654
|
+
# calls (and keeps the no-base case readable here).
|
|
2655
|
+
return False
|
|
2656
|
+
review_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, review_sha, diff_cache)
|
|
2657
|
+
current_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, current_sha, diff_cache)
|
|
2658
|
+
if review_diff is None or current_diff is None:
|
|
2659
|
+
return False
|
|
2660
|
+
review_blocks = _diff_blocks_by_path(review_diff)
|
|
2661
|
+
current_blocks = _diff_blocks_by_path(current_diff)
|
|
2662
|
+
any_block_differed = False
|
|
2663
|
+
for path in set(review_blocks) | set(current_blocks):
|
|
2664
|
+
before = review_blocks.get(path, "")
|
|
2665
|
+
after = current_blocks.get(path, "")
|
|
2666
|
+
if before == after:
|
|
2667
|
+
continue # byte-identical block — not even a context shift
|
|
2668
|
+
any_block_differed = True
|
|
2669
|
+
before_content = _content_lines_only(before)
|
|
2670
|
+
after_content = _content_lines_only(after)
|
|
2671
|
+
if not before_content and not after_content:
|
|
2672
|
+
# The block differs but neither side has a `+`/`-` hunk line to
|
|
2673
|
+
# compare — a binary blob, a mode-only change, or an
|
|
2674
|
+
# empty-file add/delete. Absence of an observed content line
|
|
2675
|
+
# is not evidence the content is unchanged.
|
|
2676
|
+
return False
|
|
2677
|
+
if before_content != after_content:
|
|
2678
|
+
return False
|
|
2679
|
+
# Nothing differed at all: byte-identical base-relative diffs cannot
|
|
2680
|
+
# produce two different patch-ids, so a patch-id read upstream of this
|
|
2681
|
+
# call was wrong rather than this being a genuine no-op. Fail closed.
|
|
2682
|
+
return any_block_differed
|
|
2683
|
+
|
|
2684
|
+
|
|
2467
2685
|
# #1851: the reason string prefix `_entry_gate_status` returns for a CI-stale
|
|
2468
2686
|
# entry. Both the wording and the eligibility check in
|
|
2469
2687
|
# :func:`ci_revalidation_candidates` key off this constant so the two can
|
|
@@ -771,7 +771,24 @@ class Busy:
|
|
|
771
771
|
return f"{base} ({self.detail})" if self.detail else base
|
|
772
772
|
|
|
773
773
|
|
|
774
|
-
|
|
774
|
+
#: How long :func:`confirmation_lock_busy` waits for `notify.lock` before
|
|
775
|
+
#: giving up and reporting Busy (#3747). `coord.notify.run_drain`'s own
|
|
776
|
+
#: periodic tick (`coord/serve_app.py::_notify_drain_tick`) holds this same
|
|
777
|
+
#: lock on EVERY pass — a ~1.3GB `coord.db` board scan measured at ~20s
|
|
778
|
+
#: bursts about once every ~65s (~35% duty cycle) — so a single instantaneous
|
|
779
|
+
#: probe (the old `timeout=0.0`) landed inside a burst roughly a third of the
|
|
780
|
+
#: time and deferred a roll into an otherwise-quiescent fleet for no reason,
|
|
781
|
+
#: AFTER `propagate` had already cordoned every host. 30s comfortably outlasts
|
|
782
|
+
#: the measured ~21s burst with margin, so a routine tick releases well
|
|
783
|
+
#: within the wait and a genuine, long-running #2464 confirmation (which can
|
|
784
|
+
#: run for the whole `coord.confirm_test.CONFIRM_PASS_BUDGET_SECONDS`) still
|
|
785
|
+
#: reports Busy once this wait elapses.
|
|
786
|
+
DRAIN_TICK_GRACE_SECONDS = 30.0
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
def confirmation_lock_busy(
|
|
790
|
+
lock_path: Path, *, timeout: float = DRAIN_TICK_GRACE_SECONDS
|
|
791
|
+
) -> list[Busy]:
|
|
775
792
|
"""A #2464 out-of-band test confirmation in flight, as a `Busy` signal
|
|
776
793
|
(#2596).
|
|
777
794
|
|
|
@@ -787,7 +804,7 @@ def confirmation_lock_busy(lock_path: Path) -> list[Busy]:
|
|
|
787
804
|
assignment already gates a restart (module docstring, "Why the cut is
|
|
788
805
|
not optional").
|
|
789
806
|
|
|
790
|
-
A LOCAL,
|
|
807
|
+
A LOCAL, bounded-wait probe of *lock_path* — in production
|
|
791
808
|
:func:`coord.filelock.notify_lock_path`, the same lock
|
|
792
809
|
`coord.notify.run_drain` holds for a confirmation's whole duration (see
|
|
793
810
|
`coord.confirm_test.CONFIRM_PASS_BUDGET_SECONDS`) — not a fleet-wide
|
|
@@ -796,6 +813,23 @@ def confirmation_lock_busy(lock_path: Path) -> list[Busy]:
|
|
|
796
813
|
notify`'s drain (and so any confirmation) actually runs on, so a network
|
|
797
814
|
probe would answer the identical local question at ten times the cost.
|
|
798
815
|
|
|
816
|
+
Bounded wait, not instantaneous: *timeout* blocks up to
|
|
817
|
+
:data:`DRAIN_TICK_GRACE_SECONDS` before concluding the lock is genuinely
|
|
818
|
+
busy, so a routine drain tick holding the lock for its ~20s board scan
|
|
819
|
+
gets a chance to release before this probe gives up on it — see
|
|
820
|
+
`DRAIN_TICK_GRACE_SECONDS`'s own docstring for the measured numbers. A
|
|
821
|
+
hold that outlasts the wait still reports Busy, from WHATEVER is holding
|
|
822
|
+
it — this function deliberately does not try to tell a routine drain
|
|
823
|
+
tick apart from a genuine confirmation once the wait has elapsed.
|
|
824
|
+
`coord.notify.run_drain` holds this same lock for its whole pass,
|
|
825
|
+
including the non-atomic `dispatch_pending_reviews` read-then-write
|
|
826
|
+
(`run_drain`'s own "Concurrency" docstring) that the lock exists to
|
|
827
|
+
serialise — so a hold that is STILL there past the grace period is, by
|
|
828
|
+
definition, not the quick, nothing-to-interrupt case the wait already
|
|
829
|
+
covers, and deferring is the only answer that keeps the gate able to
|
|
830
|
+
fail (epic #2096). The wait shrinks the race window; it does not try to
|
|
831
|
+
second-guess what is inside it.
|
|
832
|
+
|
|
799
833
|
Unattributable on purpose (``host=None``, so it blocks the WHOLE fleet,
|
|
800
834
|
not just one host — see :attr:`Busy.host`'s #2067 note): the restart this
|
|
801
835
|
protects against is specifically the DAEMON's own `coord-agent`, and the
|
|
@@ -809,12 +843,19 @@ def confirmation_lock_busy(lock_path: Path) -> list[Busy]:
|
|
|
809
843
|
(a permissions problem, a read-only home) is a local host problem this
|
|
810
844
|
call must not turn into "block the entire fleet until someone notices" —
|
|
811
845
|
it returns ``[]`` and the existing per-host/board signals still apply.
|
|
846
|
+
|
|
847
|
+
*timeout* is a real wall-clock block, so a caller that re-probes this on
|
|
848
|
+
a poll loop (e.g. `coord.commands.release._drain`'s busy-fetch) pays up
|
|
849
|
+
to the full grace period on every poll of a genuinely busy lock, roughly
|
|
850
|
+
doubling that loop's effective cadence — harmless (the loop re-probes
|
|
851
|
+
repeatedly and the deadline arithmetic is independent of it), but worth
|
|
852
|
+
knowing if that cadence ever needs to tighten.
|
|
812
853
|
"""
|
|
813
854
|
from coord.filelock import FileLock, LockBusy # noqa: PLC0415
|
|
814
855
|
|
|
815
856
|
lock = FileLock(lock_path)
|
|
816
857
|
try:
|
|
817
|
-
lock.acquire(timeout=
|
|
858
|
+
lock.acquire(timeout=timeout)
|
|
818
859
|
except LockBusy:
|
|
819
860
|
return [
|
|
820
861
|
Busy(
|
|
@@ -6102,7 +6102,7 @@ def dispatch_scoped_reviews_for_queue(
|
|
|
6102
6102
|
ancillary_files=ancillary_files,
|
|
6103
6103
|
ancillary_gh_ops=github_ops,
|
|
6104
6104
|
):
|
|
6105
|
-
continue # not stale, or a content-identical/ancillary-only rebase covers it (#1475/#3707)
|
|
6105
|
+
continue # not stale, or a content-identical/ancillary-only/context-only rebase covers it (#1475/#3707/#3749)
|
|
6106
6106
|
|
|
6107
6107
|
prior_review = mq.find_scoped_review_candidate(
|
|
6108
6108
|
entry,
|
|
@@ -6375,7 +6375,7 @@ def maybe_scoped_review_for_completed_fix(
|
|
|
6375
6375
|
ancillary_files=ancillary_files,
|
|
6376
6376
|
ancillary_gh_ops=github_ops,
|
|
6377
6377
|
):
|
|
6378
|
-
return None # nothing stale to scope a review around — or an ancillary-only delta (#3707)
|
|
6378
|
+
return None # nothing stale to scope a review around — or an ancillary-only/context-only delta (#3707/#3749)
|
|
6379
6379
|
|
|
6380
6380
|
prior_review = mq.find_scoped_review_candidate(
|
|
6381
6381
|
entry,
|